@qwen-code/qwen-code 0.22.2-preview.1 → 0.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/bundled/computer-use/SKILL.md +3 -3
  2. package/bundled/goal-draft/SKILL.md +109 -0
  3. package/bundled/qc-helper/docs/configuration/settings.md +37 -36
  4. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  5. package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
  6. package/bundled/qc-helper/docs/features/channels/overview.md +34 -3
  7. package/bundled/qc-helper/docs/features/code-review.md +3 -3
  8. package/bundled/qc-helper/docs/features/commands.md +2 -1
  9. package/bundled/qc-helper/docs/features/computer-use.md +2 -2
  10. package/bundled/qc-helper/docs/features/goals.md +58 -0
  11. package/bundled/qc-helper/docs/features/headless.md +13 -11
  12. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  13. package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
  14. package/bundled/qc-helper/docs/qwen-serve.md +1 -1
  15. package/bundled/review/SKILL.md +81 -31
  16. package/bundled/review/references/persistence.md +7 -3
  17. package/bundled/review/references/posting.md +10 -4
  18. package/chunks/MaxSizedBox-X42SXBJH.js +110 -0
  19. package/chunks/{StandaloneSessionPicker-5D2L22SF.js → StandaloneSessionPicker-2FJAOLGG.js} +81 -83
  20. package/chunks/{acpAgent-4DCKLA32.js → acpAgent-2ZMIJAFV.js} +1153 -357
  21. package/chunks/{agent-B4AFZL6H.js → agent-X5WX3L2I.js} +44 -46
  22. package/chunks/agent-headless-IZM25LJA.js +85 -0
  23. package/chunks/{anthropicContentGenerator-U76GTVB6.js → anthropicContentGenerator-YVTB6QX7.js} +46 -50
  24. package/chunks/{artifact-tool-XDJCZZCF.js → artifact-tool-XSMPHZBT.js} +11 -3
  25. package/chunks/{askUserQuestion-ZXXERLEV.js → askUserQuestion-4SWJY65V.js} +2 -2
  26. package/chunks/bridge-ME6QXZNA.js +119 -0
  27. package/chunks/{channel-management-service-HXXS3HOZ.js → channel-management-service-HQ6KDS7C.js} +6 -6
  28. package/chunks/channel-settings-store-PEOI7XCG.js +120 -0
  29. package/chunks/{channel-worker-group-EVDC2P4K.js → channel-worker-group-6NA6BBZV.js} +8 -7
  30. package/chunks/{channel-worker-manager-IJJZHGEI.js → channel-worker-manager-NEZ2J6RK.js} +10 -8
  31. package/chunks/{channel-worker-supervisor-YSKB5GVB.js → channel-worker-supervisor-FKU7DIHJ.js} +6 -5
  32. package/chunks/{chunk-7QGEJI7M.js → chunk-23RFD54N.js} +1 -1
  33. package/chunks/{chunk-JLU3FPQR.js → chunk-2HYKTO7V.js} +5 -5
  34. package/chunks/chunk-2LNNVAUV.js +1584 -0
  35. package/chunks/{chunk-FJAITR4L.js → chunk-2OBKDPZZ.js} +2 -2
  36. package/chunks/{chunk-JSY43GMI.js → chunk-2OUD5T67.js} +185 -174
  37. package/chunks/{chunk-LJP2BBMK.js → chunk-2SXSLSQE.js} +4 -4
  38. package/chunks/chunk-2TNL5KPM.js +49 -0
  39. package/chunks/{chunk-XMSMTU6H.js → chunk-2YOHKHYR.js} +4 -4
  40. package/chunks/{chunk-MCKJTBZN.js → chunk-36GSQ3MM.js} +2 -2
  41. package/chunks/chunk-36LGBEM6.js +130 -0
  42. package/chunks/{chunk-ZWKGZB2K.js → chunk-3JXM2CVW.js} +3 -3
  43. package/chunks/{chunk-X3XGCJ32.js → chunk-3SZC4VP4.js} +28 -111
  44. package/chunks/{chunk-ILPXSKGQ.js → chunk-3WK3QDNV.js} +2 -2
  45. package/chunks/{chunk-IKN3IUJP.js → chunk-3XKLXHGK.js} +17 -9
  46. package/chunks/{chunk-ZLTEQYNC.js → chunk-42IDLQWS.js} +26 -20
  47. package/chunks/chunk-4CMJKUND.js +95 -0
  48. package/chunks/{chunk-77TOMRBG.js → chunk-4K7KNVWH.js} +3 -3
  49. package/chunks/{chunk-SQPOJ4ZI.js → chunk-4NDLQAY2.js} +27 -270
  50. package/chunks/{chunk-V3GINY6K.js → chunk-4QHPPXK2.js} +16 -8
  51. package/chunks/{chunk-VBF4KZRQ.js → chunk-4TT3IVGA.js} +1 -1
  52. package/chunks/{chunk-IOGKXPL3.js → chunk-4VPCTGH6.js} +6 -6
  53. package/chunks/chunk-4VQBQLIZ.js +293 -0
  54. package/chunks/{chunk-UCSV2IZW.js → chunk-62GQFYID.js} +3 -3
  55. package/chunks/{chunk-SLEWBQWM.js → chunk-6DIGWMGT.js} +2 -2
  56. package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
  57. package/chunks/{chunk-PVBT5QPD.js → chunk-6PJOTWAN.js} +1 -1
  58. package/chunks/{chunk-WZ3QKPMQ.js → chunk-6X7EU5TI.js} +19 -31
  59. package/chunks/{chunk-KQYW2GB5.js → chunk-6ZPDLGHN.js} +6 -6
  60. package/chunks/{chunk-AKQA3WCH.js → chunk-734C6JGI.js} +723 -3399
  61. package/chunks/{chunk-F7M6ZFGU.js → chunk-73RM4POK.js} +8 -8
  62. package/chunks/{chunk-ELY4QVIB.js → chunk-7EQQR46F.js} +1 -1
  63. package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
  64. package/chunks/chunk-7J6OTNGO.js +424 -0
  65. package/chunks/{chunk-LWLEPXKK.js → chunk-7LOELM2I.js} +19 -2
  66. package/chunks/{chunk-DIMEPKCW.js → chunk-7S226YTK.js} +1 -1
  67. package/chunks/{chunk-AWFZDYSD.js → chunk-7T52W4SW.js} +1 -1
  68. package/chunks/{chunk-3JKUX4PB.js → chunk-7VMIMAVB.js} +9 -9
  69. package/chunks/{chunk-2MHGD7EE.js → chunk-A3LWD5MK.js} +1 -1
  70. package/chunks/{chunk-E4I5MVBR.js → chunk-ABS25QER.js} +1 -1
  71. package/chunks/{chunk-TDQBVEPK.js → chunk-AIAOIFY4.js} +10 -8
  72. package/chunks/{chunk-NEZZHGEI.js → chunk-AYFA7MZV.js} +6 -6
  73. package/chunks/{chunk-FVDQ5E67.js → chunk-B466ZSHZ.js} +3 -3
  74. package/chunks/{chunk-6US7BF3G.js → chunk-B5PHIJGI.js} +183 -5
  75. package/chunks/{chunk-4TPAG3O7.js → chunk-BFPESSTR.js} +1 -1
  76. package/chunks/{chunk-WBT3STGU.js → chunk-BKWNKLZB.js} +20 -20
  77. package/chunks/{chunk-T45CL2NT.js → chunk-BOWFGCEU.js} +3 -3
  78. package/chunks/{chunk-IPQA4SR5.js → chunk-BWORX6FA.js} +1 -1
  79. package/chunks/{chunk-BKDAF7ES.js → chunk-BXDAPVQU.js} +2 -2
  80. package/chunks/{chunk-ZEADBZLO.js → chunk-C2X7KY45.js} +3 -3
  81. package/chunks/{chunk-PTQF7WRA.js → chunk-C3PEFRKD.js} +6 -6
  82. package/chunks/{chunk-7OBH4AM2.js → chunk-CAJTKR6W.js} +5 -5
  83. package/chunks/{chunk-2FN2HNTI.js → chunk-CFJY4DGX.js} +2 -2
  84. package/chunks/{chunk-SUE2ZMUH.js → chunk-CIZCL2MW.js} +49 -31
  85. package/chunks/{chunk-W2WRNJKX.js → chunk-CLWO3B77.js} +6 -6
  86. package/chunks/{chunk-U45D46O5.js → chunk-CMHFCLBU.js} +1 -1
  87. package/chunks/{chunk-LRKMQPMD.js → chunk-CQH5KTKC.js} +1 -1
  88. package/chunks/{chunk-JECO75XD.js → chunk-D5LUXLUH.js} +2 -2
  89. package/chunks/chunk-DJBQCO2E.js +842 -0
  90. package/chunks/{chunk-BQBUZDDH.js → chunk-DJECZIJX.js} +42 -42
  91. package/chunks/{chunk-GTUZ3R6I.js → chunk-DJEZ55D4.js} +351 -113
  92. package/chunks/{chunk-HPECDZ6X.js → chunk-DJPASAUV.js} +3866 -1077
  93. package/chunks/{chunk-VYWCFWI5.js → chunk-DMLVSW7L.js} +542 -654
  94. package/chunks/{chunk-EB4VDXNI.js → chunk-DYXFD5RO.js} +182 -3
  95. package/chunks/{chunk-ZKAZP2ZG.js → chunk-EB6QRGHM.js} +3 -3
  96. package/chunks/{chunk-UWICO5KN.js → chunk-EFWRMA2I.js} +3 -3
  97. package/chunks/{chunk-3UZCLCXR.js → chunk-EKSCLBBF.js} +3 -3
  98. package/chunks/{chunk-ALTQLFEG.js → chunk-EQSBPBZ3.js} +5 -194
  99. package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
  100. package/chunks/{chunk-4K44OMLI.js → chunk-FROAFEFB.js} +3 -3
  101. package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
  102. package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
  103. package/chunks/{chunk-ZJG323IA.js → chunk-G6FECKTJ.js} +7 -5
  104. package/chunks/{chunk-TMGAS5TO.js → chunk-GBJBJ4HX.js} +26 -4
  105. package/chunks/{chunk-UCQOSV6A.js → chunk-GPGU4S2N.js} +3 -3
  106. package/chunks/{chunk-BHTJAO36.js → chunk-GVIVASYK.js} +7 -7
  107. package/chunks/chunk-H72BQNM3.js +645 -0
  108. package/chunks/{chunk-Z4X5MTRT.js → chunk-HCOBAG2L.js} +2 -4
  109. package/chunks/{chunk-FCSWZAS3.js → chunk-HP5LR5HL.js} +5 -5
  110. package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
  111. package/chunks/{chunk-OI2DR6QB.js → chunk-I6LYRJPB.js} +3 -3
  112. package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
  113. package/chunks/{chunk-PAJGKZAA.js → chunk-ISKH4QX3.js} +14 -12
  114. package/chunks/{chunk-AYVIGUUK.js → chunk-JB4JIVTJ.js} +1 -1
  115. package/chunks/{chunk-FN5C6C7G.js → chunk-JHYH6PYQ.js} +192 -478
  116. package/chunks/{chunk-T6OODF2U.js → chunk-JWALNCLT.js} +1 -1
  117. package/chunks/{chunk-SKNVVYIJ.js → chunk-K5KXUXWC.js} +3 -3
  118. package/chunks/{chunk-XUX6O2ZT.js → chunk-KID24ZFN.js} +4 -1
  119. package/chunks/{chunk-I6DY753S.js → chunk-KJO2LBUK.js} +944 -18
  120. package/chunks/{chunk-5T4LWWNX.js → chunk-KYWTPLBJ.js} +18 -21
  121. package/chunks/{chunk-CZFQ62RM.js → chunk-LHBUKJG2.js} +4 -4
  122. package/chunks/{chunk-TOF4UZHH.js → chunk-LUEHOUHM.js} +3 -3
  123. package/chunks/{chunk-2YDYDDE2.js → chunk-M3QRM3DE.js} +3 -3
  124. package/chunks/{chunk-GNMJNDZE.js → chunk-M6FOJXW3.js} +1 -1
  125. package/chunks/{chunk-ZGWDHSUM.js → chunk-MF7HCQWZ.js} +4 -4
  126. package/chunks/{chunk-66GIFJ63.js → chunk-MK2GIB46.js} +1 -1
  127. package/chunks/{chunk-TFV4RXPU.js → chunk-MO3FC2WT.js} +1 -1
  128. package/chunks/{chunk-TR7G7XFQ.js → chunk-MPNBVAEU.js} +5 -5
  129. package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
  130. package/chunks/{chunk-3WBMPR3S.js → chunk-MSBO7X2W.js} +1 -1
  131. package/chunks/{chunk-5PA6UEYA.js → chunk-MZCJWS5Y.js} +1 -1
  132. package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
  133. package/chunks/{chunk-27ONXAFY.js → chunk-NIFYWDYN.js} +1 -1
  134. package/chunks/{chunk-AP7WZONS.js → chunk-NMOD2FXQ.js} +19 -9
  135. package/chunks/{chunk-IJVDHPKD.js → chunk-NU7RKEZR.js} +2 -2
  136. package/chunks/{chunk-5URK47RN.js → chunk-NV55WWD6.js} +11595 -10375
  137. package/chunks/{chunk-HABT2Z7R.js → chunk-OU5APVWO.js} +4 -4
  138. package/chunks/{chunk-QR4AHMGQ.js → chunk-P2G476QN.js} +13 -13
  139. package/chunks/{chunk-5SM2AK65.js → chunk-PADPMMYM.js} +5 -5
  140. package/chunks/{chunk-RRKNX553.js → chunk-PDQGMSZK.js} +1 -1
  141. package/chunks/{chunk-GTUKW3I6.js → chunk-PPKZ7JOE.js} +1 -1
  142. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  143. package/chunks/{chunk-XIRDDFRS.js → chunk-PZ66FRIC.js} +2644 -2296
  144. package/chunks/{chunk-H3HZ4AWW.js → chunk-Q2MSPKIJ.js} +1 -1
  145. package/chunks/{chunk-WEGXPP5E.js → chunk-QFCDF5PL.js} +1 -1
  146. package/chunks/{chunk-OF2DPXUS.js → chunk-QYMAKPY5.js} +119 -24
  147. package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
  148. package/chunks/chunk-RKFGE7JH.js +93 -0
  149. package/chunks/{chunk-CPPYZHBN.js → chunk-RU7BK6B3.js} +1 -1
  150. package/chunks/chunk-SEONHUS3.js +275 -0
  151. package/chunks/{chunk-DEYPMJPD.js → chunk-SMPR7SPO.js} +1 -1
  152. package/chunks/chunk-SS4MRMKE.js +3525 -0
  153. package/chunks/{chunk-BPMVPWBT.js → chunk-SS5SDCD3.js} +6 -6
  154. package/chunks/{chunk-J3CBIEDS.js → chunk-ST5MDGH3.js} +32 -15
  155. package/chunks/{chunk-J5352S3S.js → chunk-ST5V3ZOC.js} +3 -3
  156. package/chunks/{chunk-7CWEZQ6T.js → chunk-STUJ7IMZ.js} +0 -77
  157. package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
  158. package/chunks/{chunk-TWSKM647.js → chunk-T7KMERIX.js} +1 -1
  159. package/chunks/{chunk-5CMWFBML.js → chunk-TEBDFQBZ.js} +1 -1
  160. package/chunks/{chunk-EC5BONC3.js → chunk-TPI7O7HR.js} +1 -1
  161. package/chunks/{chunk-T2CRBIDJ.js → chunk-TTX2JUE6.js} +1 -1
  162. package/chunks/{chunk-VOEMVOM4.js → chunk-TVC6HQ2U.js} +2 -2
  163. package/chunks/{chunk-WXDZZFH3.js → chunk-TZBSGJ6C.js} +6 -6
  164. package/chunks/chunk-U54AYGEC.js +337 -0
  165. package/chunks/{chunk-2NNTE2ED.js → chunk-UHQFIS7N.js} +15 -0
  166. package/chunks/{chunk-76WGY6LW.js → chunk-URE3QBBB.js} +3 -3
  167. package/chunks/{chunk-KOJ6MHD5.js → chunk-UTLCH2FK.js} +1 -1
  168. package/chunks/{chunk-7DPKPBOQ.js → chunk-V2NDP3I4.js} +2 -2
  169. package/chunks/{chunk-FJWICLG7.js → chunk-V4264FEG.js} +9 -9
  170. package/chunks/{chunk-XR7OIAQF.js → chunk-V5J4J5TP.js} +2 -2
  171. package/chunks/{chunk-7UJTY5V3.js → chunk-V7EESTJV.js} +1 -1
  172. package/chunks/{chunk-Z6L3C4VF.js → chunk-VBCPNIQD.js} +39 -39
  173. package/chunks/{chunk-ATLGYSYH.js → chunk-VGIFXISB.js} +4 -4
  174. package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
  175. package/chunks/{chunk-XJS54K4A.js → chunk-VTHREBQM.js} +2 -2
  176. package/chunks/{chunk-AA7VBRBG.js → chunk-W3JH33JE.js} +8 -8
  177. package/chunks/{chunk-FPH6TXD3.js → chunk-WAOIHTJS.js} +1 -1
  178. package/chunks/{chunk-CDUN63IN.js → chunk-WGY3AVGM.js} +3 -3
  179. package/chunks/{chunk-JLGFGPZJ.js → chunk-WNPDGUJO.js} +22 -3
  180. package/chunks/{chunk-O3BUXIPM.js → chunk-WXEA74YB.js} +3 -3
  181. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  182. package/chunks/{chunk-VL4YX3FH.js → chunk-XF63PKEN.js} +1 -1
  183. package/chunks/{chunk-R7G7GKOX.js → chunk-XHF7WQ6B.js} +3 -3
  184. package/chunks/{chunk-3FSBMAYD.js → chunk-XQFT3QUF.js} +1 -1
  185. package/chunks/{chunk-3D6PDLNJ.js → chunk-XSG6G3G6.js} +49 -32
  186. package/chunks/{chunk-5JCZ3UKB.js → chunk-Y5S7LBOZ.js} +44 -7
  187. package/chunks/{chunk-OLS3MAXQ.js → chunk-YLSQLSH7.js} +15 -9
  188. package/chunks/{chunk-2SERYG4T.js → chunk-YTDVNSUQ.js} +1 -1
  189. package/chunks/{chunk-KPF2K55D.js → chunk-ZEYFMJQA.js} +39 -8
  190. package/chunks/{chunk-OT4YKUUV.js → chunk-ZU4UDIWX.js} +2 -2
  191. package/chunks/chunk-ZWJDJ6RU.js +2597 -0
  192. package/chunks/{chunk-R3T33BG5.js → chunk-ZYMLPEZQ.js} +3 -3
  193. package/chunks/{chunk-DID6IRGC.js → chunk-ZZMSC3RG.js} +56 -39
  194. package/chunks/{chunk-L436XFLJ.js → chunk-ZZUKP7HV.js} +1 -1
  195. package/chunks/config-utils-R6M3TA34.js +113 -0
  196. package/chunks/contextCommand-ZCAP23J6.js +106 -0
  197. package/chunks/{core-runtime-CEJRHCRF.js → core-runtime-AXB6SK5D.js} +59 -61
  198. package/chunks/{create-sub-session-RVHSWVAP.js → create-sub-session-23ITIELI.js} +3 -3
  199. package/chunks/{create-sub-session-DFZVIG56.js → create-sub-session-4QNE64MR.js} +164 -85
  200. package/chunks/{cron-create-IJGVR5R2.js → cron-create-KJ4IY6PP.js} +57 -10
  201. package/chunks/{cron-delete-4N5BI6GL.js → cron-delete-MBLQCAYY.js} +4 -4
  202. package/chunks/{cron-list-2CATIPUX.js → cron-list-DWH2PQ47.js} +4 -4
  203. package/chunks/{daemon-NAYK4XXU.js → daemon-3GNHB3M2.js} +523 -8
  204. package/chunks/{daemon-git-worktree-guard-L6ZUFKF7.js → daemon-git-worktree-guard-IVAJJWYK.js} +56 -58
  205. package/chunks/daemon-status-provider-K3SJ5C2U.js +117 -0
  206. package/chunks/daemon-trust-policy-DOR3YG62.js +112 -0
  207. package/chunks/{daemon-trust-policy-monitor-2G3EKQEU.js → daemon-trust-policy-monitor-KGGROSIV.js} +64 -66
  208. package/chunks/deferred-core-runtime-WOYLUQQ7.js +114 -0
  209. package/chunks/{display-image-6KHQNEAE.js → display-image-BE7I6ZB6.js} +5 -5
  210. package/chunks/{dist-DJBNNPLN.js → dist-4WXLCBDR.js} +1 -1
  211. package/chunks/{dist-TJUDJTCB.js → dist-5VXFRTWU.js} +280 -48
  212. package/chunks/{dist-6H6RZ5H6.js → dist-6BPYWHVD.js} +89 -65
  213. package/chunks/{dist-ZBVOXSKF.js → dist-GFN5DCBX.js} +74 -65
  214. package/chunks/{dist-SATKXKUR.js → dist-HZNT6GQS.js} +1 -1
  215. package/chunks/{dist-FVJZSIO4.js → dist-LVZCXVPF.js} +72 -20
  216. package/chunks/{dist-7CKN54NL.js → dist-N6W6E753.js} +71 -64
  217. package/chunks/{dist-4Q7NTUNB.js → dist-NSV4NBPK.js} +31 -14
  218. package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
  219. package/chunks/earlyInputCapture-OHBEVO4K.js +107 -0
  220. package/chunks/{edit-ZERGX3RV.js → edit-LEQLAGPZ.js} +45 -47
  221. package/chunks/{en-6MDBWMTG.js → en-YLXBXM4Z.js} +2 -1
  222. package/chunks/{enter-worktree-UOZ6ZTP7.js → enter-worktree-35QCAAFP.js} +7 -7
  223. package/chunks/{enterPlanMode-W2RP3P5B.js → enterPlanMode-ONQN3WHE.js} +47 -49
  224. package/chunks/{environment-ZBJ23YVR.js → environment-UANTR7A4.js} +60 -62
  225. package/chunks/errors-WAK6KFBC.js +113 -0
  226. package/chunks/{exit-worktree-G2QATUCV.js → exit-worktree-XQD6D543.js} +7 -7
  227. package/chunks/exitPlanMode-UEYBG6P5.js +83 -0
  228. package/chunks/{fast-path-4MWBCEUF.js → fast-path-WUL7UZ6H.js} +7 -7
  229. package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-XH426LUU.js} +3 -3
  230. package/chunks/{glob-DKTNG32L.js → glob-Y54QUWDY.js} +44 -46
  231. package/chunks/{goal-tools-CNVXMSZD.js → goal-tools-PTD3MBA7.js} +10 -8
  232. package/chunks/{grep-3NLSS32D.js → grep-5GPICQBU.js} +6 -6
  233. package/chunks/handleAutoUpdate-FP3NWNSG.js +109 -0
  234. package/chunks/i18n-INIU5X7A.js +124 -0
  235. package/chunks/{image-gen-63NN2H5N.js → image-gen-J6FDGUZP.js} +8 -10
  236. package/chunks/initializer-TYODV6GE.js +113 -0
  237. package/chunks/installationInfo-AAPKYDSZ.js +107 -0
  238. package/chunks/{keychain-token-storage-3MGFRYGM.js → keychain-token-storage-37XPR34V.js} +2 -2
  239. package/chunks/list-TUODDN6J.js +116 -0
  240. package/chunks/{list-agents-EXRSHIDJ.js → list-agents-DI3YFTDT.js} +2 -2
  241. package/chunks/{gemini-X5GQHQYF.js → llm-NSAVK5V3.js} +117 -114
  242. package/chunks/{geminiContentGenerator-UDSWXZXL.js → llm-content-generator-AY2QKXHE.js} +29 -29
  243. package/chunks/loadedSettingsAdapter-KJCLZ3C4.js +110 -0
  244. package/chunks/{loggingContentGenerator-73C7TKDK.js → loggingContentGenerator-DSFQHXIF.js} +328 -37
  245. package/chunks/{loop-wakeup-XBPB2BRO.js → loop-wakeup-XJFONSQ7.js} +5 -5
  246. package/chunks/{ls-WFONAND2.js → ls-3VAT2J7A.js} +4 -4
  247. package/chunks/{lsp-DUKPDUXN.js → lsp-5W7IRUBH.js} +2 -2
  248. package/chunks/{managed-npm-update-H2KOLQZU.js → managed-npm-update-TSWENTK5.js} +57 -59
  249. package/chunks/mcp-MWSAPFOL.js +110 -0
  250. package/chunks/{monitor-TGCMNJJH.js → monitor-RW4GWJHB.js} +44 -46
  251. package/chunks/nonInteractiveCli-JXKL343Q.js +185 -0
  252. package/chunks/{notebook-edit-YEUNZYDX.js → notebook-edit-CQNYS5OR.js} +45 -47
  253. package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-YN3QZHVM.js} +1 -1
  254. package/chunks/{openaiContentGenerator-J7LD4VSL.js → openaiContentGenerator-J6QIF7EX.js} +26 -28
  255. package/chunks/pidfile-QOIQZFT2.js +111 -0
  256. package/chunks/process-registry-OAEG6WGC.js +662 -0
  257. package/chunks/{processUtils-ZHFC7CSL.js → processUtils-GPHNANKZ.js} +2 -2
  258. package/chunks/prompt-terminal-ledger-FOMFTYOM.js +105 -0
  259. package/chunks/{qwenContentGenerator-YEWWK3JQ.js → qwenContentGenerator-WWDXPYQI.js} +49 -51
  260. package/chunks/{qwenOAuth2-JIYAWXTW.js → qwenOAuth2-OF5WRBQT.js} +7 -9
  261. package/chunks/{read-file-ZQI3WPVK.js → read-file-FQUQHC6N.js} +13 -13
  262. package/chunks/{read-mcp-resource-7A7NFSFL.js → read-mcp-resource-XD257PGJ.js} +2 -2
  263. package/chunks/{record-artifact-CPJ4IJSD.js → record-artifact-VW23GS4F.js} +4 -4
  264. package/chunks/{report-findings-VFM5DENC.js → report-findings-AO5VYFLR.js} +9 -5
  265. package/chunks/{request-shutdown-6IW46GD7.js → request-shutdown-BCLA3JV2.js} +7 -7
  266. package/chunks/resumeHistoryUtils-NSGF3UCB.js +118 -0
  267. package/chunks/ripGrep-4CAT6SKV.js +39 -0
  268. package/chunks/{run-qwen-serve-WHWU7NZ6.js → run-qwen-serve-5X6IDZER.js} +371 -357
  269. package/chunks/{runtime-E7BSPWQP.js → runtime-HK27GMPF.js} +69 -71
  270. package/chunks/scheduled-tasks-MN2ZZ5P6.js +127 -0
  271. package/chunks/{scheduler-TJPATFOM.js → scheduler-WD4MHMO5.js} +58 -60
  272. package/chunks/{sdk-exporters-http-XXSKBD2C.js → sdk-exporters-http-TTU2CHBU.js} +2 -2
  273. package/chunks/{sdk-impl-VPNBLV7I.js → sdk-impl-UUMVYMAL.js} +11 -5
  274. package/chunks/{send-message-OXZK6USO.js → send-message-AJ4OCUBV.js} +25 -9
  275. package/chunks/serve-2XCHPPGG.js +118 -0
  276. package/chunks/{server-AXCN7QBJ.js → server-GO2N5DH7.js} +6080 -4964
  277. package/chunks/{session-HO4US3AG.js → session-IFNHTUBT.js} +112 -112
  278. package/chunks/session-pr-refresh-I3UBWMVP.js +364 -0
  279. package/chunks/{settings-B2PFJJN4.js → settings-L6N54CU6.js} +63 -65
  280. package/chunks/{shell-7XMSANI3.js → shell-4Y5LLW6N.js} +44 -46
  281. package/chunks/{skill-NL3VH562.js → skill-YOWTRAKQ.js} +68 -24
  282. package/chunks/skill-settings-ZL4JY5UE.js +118 -0
  283. package/chunks/spawnChannel-ZST6XJVJ.js +112 -0
  284. package/chunks/standalone-update-THVU3OKY.js +118 -0
  285. package/chunks/{startInteractiveUI-G2XKSCQ7.js → startInteractiveUI-XDFSHBZD.js} +3076 -2475
  286. package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
  287. package/chunks/{syntheticOutput-5AJ444QT.js → syntheticOutput-ML43GEFN.js} +3 -3
  288. package/chunks/{task-create-TY7P6UHG.js → task-create-QN4LYRSE.js} +11 -11
  289. package/chunks/{task-list-BELMPA75.js → task-list-JPLGK45U.js} +5 -5
  290. package/chunks/{task-stop-U3S3KZG2.js → task-stop-CXEH5L2D.js} +2 -2
  291. package/chunks/{task-update-O4IGDPCK.js → task-update-IWEOJFV2.js} +11 -11
  292. package/chunks/{team-create-IYBUOORE.js → team-create-OOPXCDBA.js} +44 -46
  293. package/chunks/{team-delete-YWFXX77L.js → team-delete-RZVVSGCY.js} +5 -5
  294. package/chunks/{team-plan-approval-YKU57LBM.js → team-plan-approval-DSX5EWAT.js} +44 -46
  295. package/chunks/terminal-image-renderer-KS25G33E.js +114 -0
  296. package/chunks/theme-manager-YMZNG45F.js +102 -0
  297. package/chunks/{todoWrite-435EO2CS.js → todoWrite-WDJNQEMW.js} +43 -25
  298. package/chunks/{tool-search-4Q3KASIQ.js → tool-search-J5Q6U7DN.js} +22 -22
  299. package/chunks/total-session-admission-PVN64JVV.js +114 -0
  300. package/chunks/trustedFolders-FATSC4YI.js +122 -0
  301. package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
  302. package/chunks/{update-relaunch-4DC2KKFS.js → update-relaunch-SIKHLHVR.js} +6 -6
  303. package/chunks/updateCheck-D3YG2WCD.js +118 -0
  304. package/chunks/useAutoAcceptIndicator-ILINOSAS.js +120 -0
  305. package/chunks/{validateNonInterActiveAuth-YAE4YPO3.js → validateNonInterActiveAuth-JUDQP6V4.js} +105 -105
  306. package/chunks/{version-QFP7OGWX.js → version-C63GDDWN.js} +1 -1
  307. package/chunks/{web-fetch-6T23IK6Q.js → web-fetch-FOQZMNSC.js} +16 -18
  308. package/chunks/{web-search-WBWTCZK2.js → web-search-PUJTBFUC.js} +9 -11
  309. package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-HNB4FDOE.js} +2 -2
  310. package/chunks/{workflow-FMAA3D4R.js → workflow-Y5IPINVH.js} +128 -94
  311. package/chunks/workspace-providers-status-IJ4VHFMB.js +114 -0
  312. package/chunks/{workspace-registration-store-CMMX7EPX.js → workspace-registration-store-SMJWI2AI.js} +1 -1
  313. package/chunks/workspace-registry-BTGZIMPK.js +123 -0
  314. package/chunks/workspace-service-SIN67ITC.js +126 -0
  315. package/chunks/workspace-skills-status-F3RKCUIX.js +113 -0
  316. package/chunks/{workspace-trust-reconciler-PJDQUTJL.js → workspace-trust-reconciler-PLIDLJZX.js} +72 -72
  317. package/chunks/write-file-PAIGB33C.js +88 -0
  318. package/chunks/{zh-TW-MV4FWFB6.js → zh-TW-RPTMRTHG.js} +2 -1
  319. package/chunks/{zh-X3WGU6SI.js → zh-UNY63FR3.js} +2 -1
  320. package/chunks/{zoom-image-WVYVFRXF.js → zoom-image-LYQD7BQA.js} +13 -13
  321. package/cli.js +16 -16
  322. package/locales/en.js +2 -0
  323. package/locales/zh-TW.js +2 -0
  324. package/locales/zh.js +2 -0
  325. package/package.json +3 -3
  326. package/web-shell/assets/{abnfDiagram-VCTEODGH-d-8xa8uz.js → abnfDiagram-VCTEODGH-TRCMSA_6.js} +1 -1
  327. package/web-shell/assets/{arc-BhB7CrGK.js → arc-D9Uls5b3.js} +1 -1
  328. package/web-shell/assets/{architectureDiagram-5GKGNRK7-BDCd_IcJ.js → architectureDiagram-5GKGNRK7-Bwb8jPXg.js} +1 -1
  329. package/web-shell/assets/{blockDiagram-NRAW4CY4-C-AHu6mi.js → blockDiagram-NRAW4CY4-DHj71TSX.js} +1 -1
  330. package/web-shell/assets/{c4Diagram-UCG6FXSJ-CFjQt0vl.js → c4Diagram-UCG6FXSJ-uKBBdbyr.js} +1 -1
  331. package/web-shell/assets/channel-CXjVLaBa.js +1 -0
  332. package/web-shell/assets/{chunk-2Q5K7J3B-DRjwqaDq.js → chunk-2Q5K7J3B-BZd0Phrl.js} +1 -1
  333. package/web-shell/assets/{chunk-5VM5RSS4-eHM9noJE.js → chunk-5VM5RSS4-7KNeNBqN.js} +1 -1
  334. package/web-shell/assets/{chunk-F27PBJKO-CcSWUYn1.js → chunk-F27PBJKO-BeboS7Fi.js} +1 -1
  335. package/web-shell/assets/{chunk-G27WJ6UU-DNr-RF5S.js → chunk-G27WJ6UU-RV3JONoj.js} +1 -1
  336. package/web-shell/assets/{chunk-JWPE2WC7-rVJHoNF8.js → chunk-JWPE2WC7-Yw9FCFsP.js} +1 -1
  337. package/web-shell/assets/{chunk-LCL6LL3I-B2aX0Gzy.js → chunk-LCL6LL3I-GIMnydDe.js} +1 -1
  338. package/web-shell/assets/{chunk-POPQ4Y6H-DVp07n32.js → chunk-POPQ4Y6H-Cfrux7bL.js} +1 -1
  339. package/web-shell/assets/{chunk-SVP7TREG-C6QB_KUr.js → chunk-SVP7TREG-BlvIN0CO.js} +1 -1
  340. package/web-shell/assets/{chunk-XXDRQBXY-CLVxDNCy.js → chunk-XXDRQBXY-DMs7Rr4t.js} +1 -1
  341. package/web-shell/assets/classDiagram-DTDB5LWJ-DANEijO3.js +1 -0
  342. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DANEijO3.js +1 -0
  343. package/web-shell/assets/{cose-bilkent-JH36ORCC-B_aKX3A3.js → cose-bilkent-JH36ORCC-DNGqTNwI.js} +1 -1
  344. package/web-shell/assets/{cynefin-OW5HDTMX-BBw2pPUa.js → cynefin-OW5HDTMX-CojMpaoH.js} +1 -1
  345. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-WWPiBTwk.js → cynefinDiagram-5FMLGOSQ-DF07YXGo.js} +1 -1
  346. package/web-shell/assets/{dagre-3AP2YEHR-CPtIdka-.js → dagre-3AP2YEHR-17-4WtCH.js} +1 -1
  347. package/web-shell/assets/{diagram-S7CK7UJ4-Dj5og1Xi.js → diagram-S7CK7UJ4-G3Wuyz9m.js} +1 -1
  348. package/web-shell/assets/{diagram-UQ7AKVKN-CC_x70YC.js → diagram-UQ7AKVKN-nyWIKZ8P.js} +1 -1
  349. package/web-shell/assets/{diagram-VSXAHHWV-rXMfsO4n.js → diagram-VSXAHHWV-tKHhmYSC.js} +1 -1
  350. package/web-shell/assets/{diagram-VX7I27RA-DEmLYQbh.js → diagram-VX7I27RA-CpDf1hYk.js} +1 -1
  351. package/web-shell/assets/{diagram-Z3DM3KII-B0ys6Vxx.js → diagram-Z3DM3KII-Cah2IFXG.js} +1 -1
  352. package/web-shell/assets/{ebnfDiagram-PWID7BFC-Bq6y6lKH.js → ebnfDiagram-PWID7BFC-DNaCkgxy.js} +1 -1
  353. package/web-shell/assets/{erDiagram-SSCWMZ5O-l69JeBZ4.js → erDiagram-SSCWMZ5O-CAdRgcf1.js} +1 -1
  354. package/web-shell/assets/{flowDiagram-A5DVABFB-Cm-EzGY4.js → flowDiagram-A5DVABFB-CMUJAShL.js} +1 -1
  355. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BRS9ZOp7.js → ganttDiagram-EL5Y4UJY-o-_MUNey.js} +1 -1
  356. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DAMRKgLk.js → gitGraphDiagram-WWUBYQGX-_aG-2Z7O.js} +1 -1
  357. package/web-shell/assets/{index-Bncx8E8M.js → index-BK_NKxiJ.js} +1 -1
  358. package/web-shell/assets/index-Ci-z4zWY.js +1913 -0
  359. package/web-shell/assets/index-LDlXZRHA.css +36 -0
  360. package/web-shell/assets/{infoDiagram-RXCK75RN-DasffaZp.js → infoDiagram-RXCK75RN-qJPeZbGP.js} +1 -1
  361. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CmRUt3C-.js → ishikawaDiagram-5VMMS53U-7Om4vNo1.js} +1 -1
  362. package/web-shell/assets/{journeyDiagram-EYS64GPL-DzhE_c1Z.js → journeyDiagram-EYS64GPL-BNtXqmBW.js} +1 -1
  363. package/web-shell/assets/{kanban-definition-3QL26DDD-BH5b6nn3.js → kanban-definition-3QL26DDD-COgFec8P.js} +1 -1
  364. package/web-shell/assets/{layout-BxoLK-LY.js → layout-B9n81PC9.js} +1 -1
  365. package/web-shell/assets/{linear-CqDPvVI7.js → linear-Bb6nXZQq.js} +1 -1
  366. package/web-shell/assets/{mermaid.core-DBoN4plo.js → mermaid.core-Cgrm3JVT.js} +6 -6
  367. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DJJtXPEM.js → mindmap-definition-FBJOCRG2-TKwLTjnG.js} +1 -1
  368. package/web-shell/assets/{pegDiagram-XKGWAZYB-DmgPXP5l.js → pegDiagram-XKGWAZYB-BJPuvlpi.js} +1 -1
  369. package/web-shell/assets/{pieDiagram-E7YTZNPT-1ezjzcI5.js → pieDiagram-E7YTZNPT-D01VkNsW.js} +1 -1
  370. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-ChKARz3k.js → quadrantDiagram-AXDQQJYC-C4hHsiv-.js} +1 -1
  371. package/web-shell/assets/{railroadDiagram-O6MQD6OU-k7mNB_QT.js → railroadDiagram-O6MQD6OU-CuEO4xK2.js} +1 -1
  372. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-B0XFsii0.js → requirementDiagram-EFPCY7ZU-D5J_vIo5.js} +1 -1
  373. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-repJ2Ukk.js → sankeyDiagram-P5KCCOFB-DQKY223V.js} +1 -1
  374. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-D0gUSKGu.js → sequenceDiagram-WJ2MYXX4-D27YV_cm.js} +1 -1
  375. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CE463F74.js → sizeCapture-X5ZJPWSS-TJg8UcwV.js} +1 -1
  376. package/web-shell/assets/{stateDiagram-HBIQ2CUA-003zYtJa.js → stateDiagram-HBIQ2CUA-CmnPzUIx.js} +1 -1
  377. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DNKPyrDc.js +1 -0
  378. package/web-shell/assets/{swimlanes-XN3QIQJK-DBj8MFpu.js → swimlanes-XN3QIQJK-ByeP3_Nu.js} +1 -1
  379. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ZL1HPC6w.js +8 -0
  380. package/web-shell/assets/{timeline-definition-24CTP7MA-D2aCh4a9.js → timeline-definition-24CTP7MA-BsFA5juR.js} +1 -1
  381. package/web-shell/assets/{vennDiagram-4TSXK5OY-BHMfWBpl.js → vennDiagram-4TSXK5OY-DREP2ECo.js} +1 -1
  382. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-RdHAj66j.js → wardleyDiagram-VM6X3IG4-iyd9lKi2.js} +1 -1
  383. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-BgJWOvq0.js → xychartDiagram-S5SC5T6Z-CVr1_j9q.js} +1 -1
  384. package/web-shell/index.html +3 -3
  385. package/chunks/MaxSizedBox-BFVLZP2E.js +0 -112
  386. package/chunks/agent-headless-UCBCS4V4.js +0 -87
  387. package/chunks/bridge-FRNYLYY7.js +0 -119
  388. package/chunks/channel-settings-store-IV4KDL7N.js +0 -117
  389. package/chunks/chunk-I6VVOZDK.js +0 -202
  390. package/chunks/chunk-JS73NNWF.js +0 -30
  391. package/chunks/chunk-K2OJUPOE.js +0 -78
  392. package/chunks/chunk-P3QQPMQA.js +0 -19
  393. package/chunks/chunk-SDVF6A42.js +0 -945
  394. package/chunks/chunk-VGHZT6JR.js +0 -51
  395. package/chunks/config-utils-PMX4QZ5Y.js +0 -113
  396. package/chunks/contextCommand-NZRLVAFC.js +0 -108
  397. package/chunks/daemon-status-provider-FTTYZEKN.js +0 -118
  398. package/chunks/daemon-trust-policy-WMGFPA3Z.js +0 -114
  399. package/chunks/deferred-core-runtime-BUFEFYNA.js +0 -116
  400. package/chunks/earlyInputCapture-ROPLMXA7.js +0 -109
  401. package/chunks/errors-U5KNAADB.js +0 -115
  402. package/chunks/exitPlanMode-VFJ5R5DD.js +0 -85
  403. package/chunks/handleAutoUpdate-W4BUYFT7.js +0 -111
  404. package/chunks/i18n-KX7FEKJJ.js +0 -126
  405. package/chunks/initializer-SNVVLS7Y.js +0 -115
  406. package/chunks/installationInfo-D4XGQNHJ.js +0 -109
  407. package/chunks/list-WYECMLXZ.js +0 -118
  408. package/chunks/loadedSettingsAdapter-5WZBXBCR.js +0 -112
  409. package/chunks/mcp-CBWAROY3.js +0 -112
  410. package/chunks/nonInteractiveCli-O232UUV7.js +0 -185
  411. package/chunks/pidfile-MSPQ255Y.js +0 -113
  412. package/chunks/process-registry-PMJOA5CO.js +0 -172
  413. package/chunks/prompt-terminal-ledger-YPGMNDXT.js +0 -107
  414. package/chunks/resumeHistoryUtils-35D4KAVT.js +0 -120
  415. package/chunks/ripGrep-46N4FLOS.js +0 -39
  416. package/chunks/serve-WQ54UIYG.js +0 -120
  417. package/chunks/skill-settings-SKMN5YXC.js +0 -120
  418. package/chunks/spawnChannel-NE43EEO3.js +0 -113
  419. package/chunks/standalone-update-XOCWGXAH.js +0 -120
  420. package/chunks/terminal-image-renderer-NREKYTAD.js +0 -116
  421. package/chunks/theme-manager-IJS6OICX.js +0 -104
  422. package/chunks/total-session-admission-L5RPEFZ2.js +0 -114
  423. package/chunks/trustedFolders-OILZCHRD.js +0 -124
  424. package/chunks/updateCheck-AK4COHNK.js +0 -120
  425. package/chunks/useAutoAcceptIndicator-O2N2Q6KG.js +0 -122
  426. package/chunks/workspace-providers-status-OCFEWIPQ.js +0 -116
  427. package/chunks/workspace-registry-WJLZPRTG.js +0 -123
  428. package/chunks/workspace-service-5ZOBMMIB.js +0 -131
  429. package/chunks/workspace-skills-status-B6NJZD4B.js +0 -115
  430. package/chunks/write-file-B2RNX6SU.js +0 -90
  431. package/web-shell/assets/channel-CU-Zyv0r.js +0 -1
  432. package/web-shell/assets/classDiagram-DTDB5LWJ-C0J2_LKs.js +0 -1
  433. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C0J2_LKs.js +0 -1
  434. package/web-shell/assets/index-C-XlQn24.css +0 -5
  435. package/web-shell/assets/index-gdvMN4J1.js +0 -1860
  436. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-2uACDdJN.js +0 -1
  437. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C4JJkavU.js +0 -8
@@ -1,8 +1,12 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ isUserPromptSubmitContextPartText,
5
+ projectUserTranscriptForDisplay
6
+ } from "./chunk-7J6OTNGO.js";
3
7
  import {
4
8
  runSideQuery
5
- } from "./chunk-IPQA4SR5.js";
9
+ } from "./chunk-BWORX6FA.js";
6
10
  import {
7
11
  init_esbuild_shims
8
12
  } from "./chunk-5O2XNYP6.js";
@@ -23,8 +27,17 @@ var GOAL_EVIDENCE_CATALOG_EXHAUSTED_REASON = "The current Goal revision exceeded
23
27
  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
28
  var GOAL_CHECKPOINT_STALL_LIMIT = 3;
25
29
  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.";
30
+ var GOAL_DEFAULT_TOKEN_BUDGET = 3e7;
31
+ function goalTokenBudgetReason(tokenBudget) {
32
+ return `The Goal spent its autonomous token budget (${tokenBudget.toLocaleString("en-US")} tokens). Resume the Goal to authorize another budget window, or clear it.`;
33
+ }
34
+ __name(goalTokenBudgetReason, "goalTokenBudgetReason");
35
+ function isGoalTokenBudgetSpent(goal) {
36
+ return goal.tokenBudget !== void 0 && goal.tokensUsed >= goal.tokenBudget;
37
+ }
38
+ __name(isGoalTokenBudgetSpent, "isGoalTokenBudgetSpent");
26
39
  function isGoalLimitKind(value) {
27
- return value === "evidence_catalog" || value === "checkpoint_request";
40
+ return value === "evidence_catalog" || value === "checkpoint_request" || value === "token_budget";
28
41
  }
29
42
  __name(isGoalLimitKind, "isGoalLimitKind");
30
43
  function goalLimitKindForReason(reason) {
@@ -51,9 +64,10 @@ function goalRequiresExactPermit(snapshot) {
51
64
  }
52
65
  __name(goalRequiresExactPermit, "goalRequiresExactPermit");
53
66
  function isRepeatedBlockerProposal(proposal) {
54
- return proposal.status === "blocked" && proposal.blockerKind !== "authority" && proposal.blockerKind !== "external";
67
+ return proposal.status === "blocked" && proposal.blockerKind !== "authority" && proposal.blockerKind !== "external" && proposal.blockerKind !== "infeasible";
55
68
  }
56
69
  __name(isRepeatedBlockerProposal, "isRepeatedBlockerProposal");
70
+ 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
71
  function validateGoalProposalReason(reason) {
58
72
  if (!reason.trim()) return "Goal proposal reason must not be empty";
59
73
  if ([...reason].length > GOAL_PROPOSAL_REASON_MAX_CHARACTERS) {
@@ -66,404 +80,6 @@ function validateGoalProposalReason(reason) {
66
80
  }
67
81
  __name(validateGoalProposalReason, "validateGoalProposalReason");
68
82
 
69
- // packages/core/src/utils/transcript-records.ts
70
- init_esbuild_shims();
71
- var USER_PROMPT_SUBMIT_CONTEXT_OPEN = "<qwen:user-prompt-submit-context>";
72
- var USER_PROMPT_SUBMIT_CONTEXT_CLOSE = "</qwen:user-prompt-submit-context>";
73
- var TranscriptRecordPreparationError = class extends TypeError {
74
- constructor(code, message) {
75
- super(message);
76
- this.code = code;
77
- this.name = "TranscriptRecordPreparationError";
78
- }
79
- static {
80
- __name(this, "TranscriptRecordPreparationError");
81
- }
82
- };
83
- var RECORD_TYPES = /* @__PURE__ */ new Set([
84
- "user",
85
- "assistant",
86
- "tool_result",
87
- "system"
88
- ]);
89
- var ARTIFACT_RECORD_SUBTYPES = /* @__PURE__ */ new Set([
90
- "session_artifact_event",
91
- "session_artifact_snapshot"
92
- ]);
93
- var KNOWN_RECORD_SUBTYPES = /* @__PURE__ */ new Set([
94
- "chat_compression",
95
- "slash_command",
96
- "ui_telemetry",
97
- "at_command",
98
- "attribution_snapshot",
99
- "notification",
100
- "cron",
101
- "mid_turn_user_message",
102
- "realtime_message",
103
- "custom_title",
104
- "parent_session",
105
- "rewind",
106
- "agent_bootstrap",
107
- "agent_launch_prompt",
108
- "agent_retry",
109
- "file_history_snapshot",
110
- "session_source",
111
- "session_model",
112
- "branch_checkpoint",
113
- "goal_state",
114
- "goal_runtime",
115
- "turn_result",
116
- ...ARTIFACT_RECORD_SUBTYPES
117
- ]);
118
- function isObjectRecord(value) {
119
- return typeof value === "object" && value !== null && !Array.isArray(value);
120
- }
121
- __name(isObjectRecord, "isObjectRecord");
122
- function wrapUserPromptSubmitContext(context) {
123
- return `${USER_PROMPT_SUBMIT_CONTEXT_OPEN}
124
- ${context}
125
- ${USER_PROMPT_SUBMIT_CONTEXT_CLOSE}`;
126
- }
127
- __name(wrapUserPromptSubmitContext, "wrapUserPromptSubmitContext");
128
- function isUserPromptSubmitContextPartText(text) {
129
- const trimmed = text.trim();
130
- const prefix = `${USER_PROMPT_SUBMIT_CONTEXT_OPEN}
131
- `;
132
- const suffix = `
133
- ${USER_PROMPT_SUBMIT_CONTEXT_CLOSE}`;
134
- if (!trimmed.startsWith(prefix) || !trimmed.endsWith(suffix)) {
135
- return false;
136
- }
137
- const body = trimmed.slice(prefix.length, -suffix.length);
138
- return !body.includes(USER_PROMPT_SUBMIT_CONTEXT_OPEN) && !body.includes(USER_PROMPT_SUBMIT_CONTEXT_CLOSE);
139
- }
140
- __name(isUserPromptSubmitContextPartText, "isUserPromptSubmitContextPartText");
141
- function isUserPromptSubmitContextPart(part) {
142
- return isObjectRecord(part) && typeof part["text"] === "string" && isUserPromptSubmitContextPartText(part["text"]);
143
- }
144
- __name(isUserPromptSubmitContextPart, "isUserPromptSubmitContextPart");
145
- function projectUserTranscriptForDisplay(record) {
146
- const parts = record.message?.parts ?? [];
147
- const hasFinalHookContextPart = parts.length > 1 && isUserPromptSubmitContextPart(parts[parts.length - 1]);
148
- const payload = isObjectRecord(record.systemPayload) ? record.systemPayload : void 0;
149
- const isUserPromptPayload = payload && (typeof payload["hookContext"] === "string" || hasFinalHookContextPart);
150
- const displayText = isUserPromptPayload && typeof payload["displayText"] === "string" ? payload["displayText"] : void 0;
151
- if (displayText !== void 0) {
152
- const visibleParts = parts.filter(
153
- (part) => !isObjectRecord(part) || typeof part["text"] !== "string"
154
- );
155
- return { displayText, parts: visibleParts };
156
- }
157
- if (payload === void 0 && hasFinalHookContextPart) {
158
- return { displayText: void 0, parts: parts.slice(0, -1) };
159
- }
160
- return { displayText: void 0, parts };
161
- }
162
- __name(projectUserTranscriptForDisplay, "projectUserTranscriptForDisplay");
163
- function diagnostic(code, message, affectsCompleteness, fields = {}, severity = affectsCompleteness ? "warning" : "info") {
164
- return {
165
- code,
166
- severity,
167
- message,
168
- affectsCompleteness,
169
- ...fields
170
- };
171
- }
172
- __name(diagnostic, "diagnostic");
173
- function isTranscriptConversationRecord(record) {
174
- return !isTranscriptArtifactRecord(record);
175
- }
176
- __name(isTranscriptConversationRecord, "isTranscriptConversationRecord");
177
- function isTranscriptArtifactRecord(record) {
178
- return record.type === "system" && typeof record.subtype === "string" && ARTIFACT_RECORD_SUBTYPES.has(record.subtype);
179
- }
180
- __name(isTranscriptArtifactRecord, "isTranscriptArtifactRecord");
181
- function validateTranscriptRecord(value, recordIndex) {
182
- const diagnostics = [];
183
- if (!isObjectRecord(value)) {
184
- diagnostics.push(
185
- diagnostic(
186
- "invalid_record",
187
- "Skipped a transcript record that is not an object.",
188
- true,
189
- { recordIndex }
190
- )
191
- );
192
- return { diagnostics };
193
- }
194
- const uuid = value["uuid"];
195
- const parentUuid = value["parentUuid"];
196
- const sessionId = value["sessionId"];
197
- const type = value["type"];
198
- const recordId = typeof uuid === "string" ? uuid : void 0;
199
- if (typeof uuid !== "string" || uuid.length === 0 || typeof parentUuid !== "string" && parentUuid !== null || typeof sessionId !== "string" || sessionId.length === 0) {
200
- diagnostics.push(
201
- diagnostic(
202
- "invalid_record",
203
- "Skipped a transcript record with invalid identity fields.",
204
- true,
205
- { recordIndex, recordId }
206
- )
207
- );
208
- return { diagnostics };
209
- }
210
- if (typeof type !== "string" || !RECORD_TYPES.has(type)) {
211
- diagnostics.push(
212
- diagnostic(
213
- "unknown_record_or_part",
214
- "Skipped a transcript record with an unknown record type.",
215
- true,
216
- { recordIndex, recordId }
217
- )
218
- );
219
- return { diagnostics };
220
- }
221
- const timestamp = value["timestamp"];
222
- if (timestamp !== void 0 && (typeof timestamp !== "string" || !Number.isFinite(new Date(timestamp).getTime()))) {
223
- diagnostics.push(
224
- diagnostic(
225
- "invalid_timestamp",
226
- "Ignored an invalid transcript record timestamp.",
227
- false,
228
- { recordIndex, recordId, path: "timestamp" }
229
- )
230
- );
231
- }
232
- const subtype = value["subtype"];
233
- if (subtype !== void 0 && (typeof subtype !== "string" || !KNOWN_RECORD_SUBTYPES.has(subtype))) {
234
- diagnostics.push(
235
- diagnostic(
236
- "unknown_record_or_part",
237
- "The transcript record has an unknown subtype.",
238
- true,
239
- { recordIndex, recordId, path: "subtype" }
240
- )
241
- );
242
- }
243
- let message;
244
- if (value["message"] !== void 0) {
245
- if (!isObjectRecord(value["message"])) {
246
- diagnostics.push(
247
- diagnostic(
248
- "malformed_part",
249
- "Ignored a malformed transcript message payload.",
250
- true,
251
- { recordIndex, recordId, path: "message" }
252
- )
253
- );
254
- } else {
255
- const parts = value["message"]["parts"];
256
- if (parts !== void 0 && !Array.isArray(parts)) {
257
- diagnostics.push(
258
- diagnostic(
259
- "malformed_part",
260
- "Ignored malformed transcript message parts.",
261
- true,
262
- { recordIndex, recordId, path: "message.parts" }
263
- )
264
- );
265
- }
266
- message = {
267
- ...typeof value["message"]["role"] === "string" ? { role: value["message"]["role"] } : {},
268
- ...Array.isArray(parts) ? { parts } : {}
269
- };
270
- }
271
- }
272
- return {
273
- record: {
274
- ...value,
275
- uuid,
276
- parentUuid,
277
- sessionId,
278
- type,
279
- ...typeof subtype === "string" ? { subtype } : { subtype: void 0 },
280
- ...typeof timestamp === "string" && Number.isFinite(new Date(timestamp).getTime()) ? { timestamp } : { timestamp: void 0 },
281
- ...message ? { message } : { message: void 0 }
282
- },
283
- diagnostics
284
- };
285
- }
286
- __name(validateTranscriptRecord, "validateTranscriptRecord");
287
- function selectTranscriptLeaf(records, leafUuid) {
288
- if (leafUuid !== void 0) {
289
- return records.some(
290
- (record) => record.uuid === leafUuid && isTranscriptConversationRecord(record)
291
- ) ? leafUuid : void 0;
292
- }
293
- for (let index = records.length - 1; index >= 0; index -= 1) {
294
- const record = records[index];
295
- if (record && isTranscriptConversationRecord(record)) return record.uuid;
296
- }
297
- return void 0;
298
- }
299
- __name(selectTranscriptLeaf, "selectTranscriptLeaf");
300
- function walkTranscriptUuidChain(leafUuid, lookup) {
301
- const uuids = [];
302
- const gaps = [];
303
- const visited = /* @__PURE__ */ new Set();
304
- let currentUuid = leafUuid;
305
- let cycleUuid;
306
- while (currentUuid) {
307
- if (visited.has(currentUuid)) {
308
- cycleUuid = currentUuid;
309
- break;
310
- }
311
- visited.add(currentUuid);
312
- const record = lookup(currentUuid);
313
- if (!record) break;
314
- uuids.push(currentUuid);
315
- if (!record.parentUuid) break;
316
- if (!lookup(record.parentUuid)) {
317
- gaps.push({
318
- childUuid: currentUuid,
319
- missingParentUuid: record.parentUuid
320
- });
321
- break;
322
- }
323
- currentUuid = record.parentUuid;
324
- }
325
- uuids.reverse();
326
- return { uuids, gaps, ...cycleUuid ? { cycleUuid } : {} };
327
- }
328
- __name(walkTranscriptUuidChain, "walkTranscriptUuidChain");
329
- function aggregateTranscriptRecordFragments(records) {
330
- const first = records[0];
331
- if (!first) {
332
- throw new Error("Cannot aggregate empty transcript record array");
333
- }
334
- const base = { ...first };
335
- let message = first.message ? { ...first.message, parts: [...first.message.parts ?? []] } : void 0;
336
- for (let index = 1; index < records.length; index += 1) {
337
- const record = records[index];
338
- if (record.message !== void 0) {
339
- message = message ? {
340
- role: message.role,
341
- parts: [...message.parts ?? [], ...record.message.parts ?? []]
342
- } : { ...record.message, parts: [...record.message.parts ?? []] };
343
- }
344
- if (record.usageMetadata) base["usageMetadata"] = record.usageMetadata;
345
- if (record.toolCallResult && !base["toolCallResult"]) {
346
- base["toolCallResult"] = record.toolCallResult;
347
- }
348
- if (record.model && !base["model"]) base["model"] = record.model;
349
- if (record.timestamp && (!base["timestamp"] || record.timestamp > String(base["timestamp"]))) {
350
- base["timestamp"] = record.timestamp;
351
- }
352
- }
353
- base["message"] = message;
354
- return base;
355
- }
356
- __name(aggregateTranscriptRecordFragments, "aggregateTranscriptRecordFragments");
357
- function prepareTranscriptRecords(values, options = {}) {
358
- if (!Array.isArray(values)) {
359
- throw new TranscriptRecordPreparationError(
360
- "invalid_records",
361
- "Transcript records must be an array."
362
- );
363
- }
364
- const diagnostics = [];
365
- const records = [];
366
- const sourceIndexByRecord = /* @__PURE__ */ new Map();
367
- for (let index = 0; index < values.length; index += 1) {
368
- const validated = validateTranscriptRecord(values[index], index);
369
- diagnostics.push(...validated.diagnostics);
370
- if (validated.record) {
371
- records.push(validated.record);
372
- sourceIndexByRecord.set(validated.record, index);
373
- }
374
- }
375
- const sessionIds = new Set(records.map((record) => record.sessionId));
376
- if (sessionIds.size > 1) {
377
- throw new TranscriptRecordPreparationError(
378
- "mixed_session_ids",
379
- "Transcript records contain multiple session ids."
380
- );
381
- }
382
- const leafUuid = selectTranscriptLeaf(records, options.leafUuid);
383
- if (options.leafUuid !== void 0 && leafUuid === void 0) {
384
- throw new TranscriptRecordPreparationError(
385
- "leaf_not_found",
386
- "The requested transcript leaf was not found."
387
- );
388
- }
389
- if (!leafUuid) {
390
- if (records.length > 0) {
391
- diagnostics.push(
392
- diagnostic(
393
- "artifact_only",
394
- "The input contains no conversation records.",
395
- false
396
- )
397
- );
398
- }
399
- return {
400
- ...sessionIds.size === 1 ? { sessionId: records[0].sessionId } : {},
401
- records: [],
402
- gaps: [],
403
- diagnostics
404
- };
405
- }
406
- const fragmentsByUuid = /* @__PURE__ */ new Map();
407
- const firstByUuid = /* @__PURE__ */ new Map();
408
- for (const record of records) {
409
- if (!isTranscriptConversationRecord(record)) continue;
410
- const fragments = fragmentsByUuid.get(record.uuid);
411
- if (fragments) {
412
- if (fragments[0].parentUuid !== record.parentUuid) {
413
- diagnostics.push(
414
- diagnostic(
415
- "conflicting_parent_uuid",
416
- "Duplicate transcript record fragments disagree on parentUuid.",
417
- true,
418
- {
419
- recordIndex: sourceIndexByRecord.get(record),
420
- recordId: record.uuid,
421
- path: "parentUuid"
422
- }
423
- )
424
- );
425
- }
426
- fragments.push(record);
427
- } else {
428
- fragmentsByUuid.set(record.uuid, [record]);
429
- firstByUuid.set(record.uuid, record);
430
- }
431
- }
432
- const chain = walkTranscriptUuidChain(
433
- leafUuid,
434
- (uuid) => firstByUuid.get(uuid)
435
- );
436
- for (const gap of chain.gaps) {
437
- diagnostics.push(
438
- diagnostic(
439
- "history_gap",
440
- "The active transcript chain is missing a parent record.",
441
- true,
442
- { recordId: gap.childUuid }
443
- )
444
- );
445
- }
446
- if (chain.cycleUuid) {
447
- diagnostics.push(
448
- diagnostic(
449
- "parent_cycle",
450
- "The active transcript chain contains a parent cycle.",
451
- true,
452
- { recordId: chain.cycleUuid }
453
- )
454
- );
455
- }
456
- return {
457
- ...sessionIds.size === 1 ? { sessionId: records[0].sessionId } : {},
458
- records: chain.uuids.map(
459
- (uuid) => aggregateTranscriptRecordFragments(fragmentsByUuid.get(uuid) ?? [])
460
- ),
461
- gaps: chain.gaps,
462
- diagnostics
463
- };
464
- }
465
- __name(prepareTranscriptRecords, "prepareTranscriptRecords");
466
-
467
83
  // packages/core/src/goals/goal-evidence.ts
468
84
  init_esbuild_shims();
469
85
  var CATALOG_PREVIEW_LIMIT = 240;
@@ -1056,7 +672,13 @@ function repeatedBlockerCoverageCatalogued(analysis) {
1056
672
  __name(repeatedBlockerCoverageCatalogued, "repeatedBlockerCoverageCatalogued");
1057
673
  function validateBlockerCoverage(proposal, citedRecords, analysis) {
1058
674
  if (proposal.status !== "blocked") return;
1059
- if (proposal.blockerKind === "authority" || proposal.blockerKind === "external") {
675
+ if (proposal.blockerKind === "infeasible" && !citedRecords.some(({ proofKind }) => proofKind === "external_fact")) {
676
+ throw new InvalidGoalEvidenceReferenceError(
677
+ "infeasible_blocker_external_fact_required",
678
+ "An infeasible blocker requires cited external tool evidence of the fact that makes the objective unsatisfiable."
679
+ );
680
+ }
681
+ if (proposal.blockerKind === "authority" || proposal.blockerKind === "external" || proposal.blockerKind === "infeasible") {
1060
682
  if (!citedRecords.some(
1061
683
  ({ proofKind }) => proofKind === "user_input" || proofKind === "external_fact"
1062
684
  )) {
@@ -1372,7 +994,8 @@ function reduceGoalControl(current, transition) {
1372
994
  transition.nextGoalId,
1373
995
  normalizeObjective(request.objective, snapshotOf(null)),
1374
996
  transition.now,
1375
- transition.cursor
997
+ transition.cursor,
998
+ transition.tokenBudgetGrant
1376
999
  );
1377
1000
  }
1378
1001
  assertExpectedVersion(
@@ -1386,7 +1009,8 @@ function reduceGoalControl(current, transition) {
1386
1009
  transition.nextGoalId,
1387
1010
  normalizeObjective(request.objective, snapshotOf(current)),
1388
1011
  transition.now,
1389
- transition.cursor
1012
+ transition.cursor,
1013
+ transition.tokenBudgetGrant
1390
1014
  );
1391
1015
  }
1392
1016
  if (request.action === "edit") {
@@ -1402,6 +1026,7 @@ function reduceGoalControl(current, transition) {
1402
1026
  evidenceCursor: copyCursor(transition.cursor),
1403
1027
  evidenceCheckpoint: void 0,
1404
1028
  checkpointStalls: void 0,
1029
+ ...rearmedTokenBudget(current, transition.tokenBudgetGrant),
1405
1030
  lastReason: void 0,
1406
1031
  limitKind: void 0
1407
1032
  });
@@ -1427,6 +1052,14 @@ function reduceGoalControl(current, transition) {
1427
1052
  snapshotOf(current)
1428
1053
  );
1429
1054
  }
1055
+ if (request.action === "resume" && current.status === "usage_limited" && current.limitKind === "token_budget") {
1056
+ return transitionGoal(current, transition.now, {
1057
+ status: "active",
1058
+ ...rearmedTokenBudget(current, transition.tokenBudgetGrant),
1059
+ lastReason: void 0,
1060
+ limitKind: void 0
1061
+ });
1062
+ }
1430
1063
  if (request.action !== "resume") {
1431
1064
  return assertNever(request, snapshotOf(current));
1432
1065
  }
@@ -1439,12 +1072,14 @@ function reduceGoalControl(current, transition) {
1439
1072
  // a different one, so carrying it over would spend the new window's
1440
1073
  // allowance on the old window's failures.
1441
1074
  checkpointStalls: void 0,
1075
+ ...rearmedTokenBudget(current, transition.tokenBudgetGrant),
1442
1076
  lastReason: void 0,
1443
1077
  limitKind: void 0
1444
1078
  });
1445
1079
  }
1446
1080
  return transitionGoal(current, transition.now, {
1447
- status: "active"
1081
+ status: "active",
1082
+ ...rearmedTokenBudget(current, transition.tokenBudgetGrant)
1448
1083
  });
1449
1084
  }
1450
1085
  __name(reduceGoalControl, "reduceGoalControl");
@@ -1458,7 +1093,8 @@ function reduceGoalTurnFinished(current, transition) {
1458
1093
  return transitionGoal(current, transition.now, {
1459
1094
  turnCount: current.turnCount + 1,
1460
1095
  tokensUsed: current.tokensUsed + Math.max(0, transition.tokensUsed ?? 0),
1461
- ...transition.lastReason === void 0 ? {} : { lastReason: transition.lastReason }
1096
+ ...transition.lastReason === void 0 ? {} : { lastReason: transition.lastReason },
1097
+ ...transition.windDownTurnId === void 0 ? {} : { windDownTurnId: transition.windDownTurnId }
1462
1098
  });
1463
1099
  }
1464
1100
  __name(reduceGoalTurnFinished, "reduceGoalTurnFinished");
@@ -1561,7 +1197,7 @@ function parseGoalStateCause(value) {
1561
1197
  return isGoalStateCause(value) ? value : void 0;
1562
1198
  }
1563
1199
  __name(parseGoalStateCause, "parseGoalStateCause");
1564
- function createGoal(goalId, objective, now, cursor) {
1200
+ function createGoal(goalId, objective, now, cursor, tokenBudget) {
1565
1201
  return {
1566
1202
  goalId,
1567
1203
  revision: 1,
@@ -1571,6 +1207,9 @@ function createGoal(goalId, objective, now, cursor) {
1571
1207
  turnCount: 0,
1572
1208
  activeTimeMs: 0,
1573
1209
  tokensUsed: 0,
1210
+ // A non-finite grant (a host opting out) arms nothing: `Infinity` would
1211
+ // not survive the JSON journal, so "unbounded" is spelled as no field.
1212
+ ...tokenBudget !== void 0 && Number.isFinite(tokenBudget) ? { tokenBudget } : {},
1574
1213
  createdAt: now,
1575
1214
  updatedAt: now
1576
1215
  };
@@ -1594,16 +1233,30 @@ function normalizeObjective(objective, current) {
1594
1233
  }
1595
1234
  __name(normalizeObjective, "normalizeObjective");
1596
1235
  function isEvidenceLimited(goal) {
1597
- return goal.limitKind !== void 0 || goal.lastReason !== void 0 && goalLimitKindForReason(goal.lastReason) !== void 0;
1236
+ return goal.limitKind === "evidence_catalog" || goal.limitKind === "checkpoint_request" || goal.lastReason !== void 0 && goalLimitKindForReason(goal.lastReason) !== void 0;
1598
1237
  }
1599
1238
  __name(isEvidenceLimited, "isEvidenceLimited");
1239
+ function rearmedTokenBudget(current, grant) {
1240
+ if (grant === void 0 || !isGoalTokenBudgetSpent(current)) {
1241
+ return {};
1242
+ }
1243
+ return Number.isFinite(grant) ? { tokenBudget: current.tokensUsed + grant, windDownTurnId: void 0 } : { tokenBudget: void 0, windDownTurnId: void 0 };
1244
+ }
1245
+ __name(rearmedTokenBudget, "rearmedTokenBudget");
1600
1246
  function transitionGoal(goal, now, changes) {
1601
- return {
1247
+ const transitioned = {
1602
1248
  ...goal,
1603
1249
  ...changes,
1604
1250
  activeTimeMs: elapsedActiveTime(goal, now),
1605
1251
  updatedAt: now
1606
1252
  };
1253
+ if ("tokenBudget" in changes && changes.tokenBudget === void 0) {
1254
+ delete transitioned.tokenBudget;
1255
+ }
1256
+ if ("windDownTurnId" in changes && changes.windDownTurnId === void 0) {
1257
+ delete transitioned.windDownTurnId;
1258
+ }
1259
+ return transitioned;
1607
1260
  }
1608
1261
  __name(transitionGoal, "transitionGoal");
1609
1262
  function snapshotOf(goal) {
@@ -1634,13 +1287,15 @@ function parseGoalRecord(value) {
1634
1287
  "turnCount",
1635
1288
  "activeTimeMs",
1636
1289
  "tokensUsed",
1290
+ "tokenBudget",
1291
+ "windDownTurnId",
1637
1292
  "createdAt",
1638
1293
  "updatedAt",
1639
1294
  "evidenceCheckpoint",
1640
1295
  "checkpointStalls",
1641
1296
  "lastReason",
1642
1297
  "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")) {
1298
+ ]) || 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
1299
  return void 0;
1645
1300
  }
1646
1301
  if (value["evidenceCheckpoint"] && value["evidenceCursor"].recordId !== value["evidenceCheckpoint"].checkpointId) {
@@ -1656,6 +1311,9 @@ function parseGoalRecord(value) {
1656
1311
  activeTimeMs: value["activeTimeMs"],
1657
1312
  // Goals persisted before `tokensUsed` existed carry no spend to restore.
1658
1313
  tokensUsed: value["tokensUsed"] ?? 0,
1314
+ // And no budget: a Goal from before budgets existed stays unbounded.
1315
+ ...value["tokenBudget"] === void 0 ? {} : { tokenBudget: value["tokenBudget"] },
1316
+ ...value["windDownTurnId"] === void 0 ? {} : { windDownTurnId: value["windDownTurnId"] },
1659
1317
  createdAt: value["createdAt"],
1660
1318
  updatedAt: value["updatedAt"],
1661
1319
  ...value["evidenceCheckpoint"] === void 0 ? {} : {
@@ -2069,7 +1727,7 @@ function recoverLegacyGoal(records) {
2069
1727
  }
2070
1728
  for (let itemIndex = payload.outputHistoryItems.length - 1; itemIndex >= 0; itemIndex -= 1) {
2071
1729
  const value = payload.outputHistoryItems[itemIndex];
2072
- if (!isObjectRecord2(value) || value["type"] !== "goal_status") continue;
1730
+ if (!isObjectRecord(value) || value["type"] !== "goal_status") continue;
2073
1731
  const kind = value["kind"];
2074
1732
  const condition = value["condition"];
2075
1733
  if (typeof kind !== "string" || typeof condition !== "string") {
@@ -2113,7 +1771,7 @@ function normalizeGoalRecoveryRecord(record) {
2113
1771
  return void 0;
2114
1772
  }
2115
1773
  const goalStatusItems = payload.outputHistoryItems.filter(
2116
- (value) => isObjectRecord2(value) && value["type"] === "goal_status"
1774
+ (value) => isObjectRecord(value) && value["type"] === "goal_status"
2117
1775
  );
2118
1776
  if (goalStatusItems.length === 0) return void 0;
2119
1777
  return {
@@ -2134,7 +1792,7 @@ function isGoalRecoveryCandidate(record) {
2134
1792
  }
2135
1793
  const payload = record.systemPayload;
2136
1794
  return payload?.phase === "result" && Array.isArray(payload.outputHistoryItems) && payload.outputHistoryItems.some(
2137
- (value) => isObjectRecord2(value) && value["type"] === "goal_status"
1795
+ (value) => isObjectRecord(value) && value["type"] === "goal_status"
2138
1796
  );
2139
1797
  }
2140
1798
  __name(isGoalRecoveryCandidate, "isGoalRecoveryCandidate");
@@ -2145,10 +1803,10 @@ function unsupportedLegacy(recordUuid) {
2145
1803
  };
2146
1804
  }
2147
1805
  __name(unsupportedLegacy, "unsupportedLegacy");
2148
- function isObjectRecord2(value) {
1806
+ function isObjectRecord(value) {
2149
1807
  return typeof value === "object" && value !== null && !Array.isArray(value);
2150
1808
  }
2151
- __name(isObjectRecord2, "isObjectRecord");
1809
+ __name(isObjectRecord, "isObjectRecord");
2152
1810
  function createMigratedGoalState(input) {
2153
1811
  const objective = input.objective.trim();
2154
1812
  if (!objective) {
@@ -2218,6 +1876,9 @@ function createGoalRuntime(options) {
2218
1876
  let currentTurnKey;
2219
1877
  let queuedTurnKey;
2220
1878
  let continuationQueued = false;
1879
+ let announcedObjective;
1880
+ let currentTurnAnnouncement;
1881
+ let currentTurnDelivered = false;
2221
1882
  let currentProposal;
2222
1883
  let pendingProposal;
2223
1884
  let verificationAttempt;
@@ -2227,6 +1888,7 @@ function createGoalRuntime(options) {
2227
1888
  let currentTurnFeedback;
2228
1889
  let restored = false;
2229
1890
  let restoreActivationPending = false;
1891
+ let windDownTurnId;
2230
1892
  let restorePreparation;
2231
1893
  let restoreActivation;
2232
1894
  let preparedRestoreCause;
@@ -2250,6 +1912,60 @@ function createGoalRuntime(options) {
2250
1912
  return 0;
2251
1913
  }
2252
1914
  }, "takeTurnTokens");
1915
+ const tokenBudgetGrant = options.tokenBudgetGrant ?? GOAL_DEFAULT_TOKEN_BUDGET;
1916
+ const usageLimitedSnapshot = /* @__PURE__ */ __name((goal, reason, limitKind) => {
1917
+ const now = Date.now();
1918
+ return {
1919
+ v: GOAL_STATE_VERSION,
1920
+ goal: {
1921
+ ...goal,
1922
+ status: "usage_limited",
1923
+ activeTimeMs: elapsedActiveTime(goal, now),
1924
+ updatedAt: now,
1925
+ lastReason: reason,
1926
+ ...limitKind === void 0 ? {} : { limitKind }
1927
+ },
1928
+ activity: "idle"
1929
+ };
1930
+ }, "usageLimitedSnapshot");
1931
+ const journalUsageLimitedSettle = /* @__PURE__ */ __name(async (goal, reason, limitKind) => {
1932
+ const limitedSnapshot = usageLimitedSnapshot(goal, reason, limitKind);
1933
+ await options.journal.recordGoalState(randomUUID(), {
1934
+ v: GOAL_STATE_VERSION,
1935
+ cause: "usage_limited",
1936
+ snapshot: limitedSnapshot
1937
+ });
1938
+ return limitedSnapshot;
1939
+ }, "journalUsageLimitedSettle");
1940
+ const commitUsageLimitedSettle = /* @__PURE__ */ __name((limitedSnapshot) => {
1941
+ continuationQueued = false;
1942
+ currentTurnFeedback = void 0;
1943
+ snapshot = structuredClone(limitedSnapshot);
1944
+ broadcast("usage_limited");
1945
+ }, "commitUsageLimitedSettle");
1946
+ const stopForSpentBudget = /* @__PURE__ */ __name(() => {
1947
+ void enqueue(async () => {
1948
+ const goal = snapshot.goal;
1949
+ if (!goal || goal.status !== "active" || !isGoalTokenBudgetSpent(goal) || currentPermit || pendingProposal || verificationAttempt || checkpointAttempt) {
1950
+ return;
1951
+ }
1952
+ const reason = goalTokenBudgetReason(goal.tokenBudget);
1953
+ let limitedSnapshot;
1954
+ try {
1955
+ limitedSnapshot = await journalUsageLimitedSettle(
1956
+ goal,
1957
+ reason,
1958
+ "token_budget"
1959
+ );
1960
+ } catch {
1961
+ limitedSnapshot = usageLimitedSnapshot(goal, reason, "token_budget");
1962
+ }
1963
+ if (snapshot.goal?.goalId !== goal.goalId || snapshot.goal.revision !== goal.revision || snapshot.goal.status !== "active" || currentPermit) {
1964
+ return;
1965
+ }
1966
+ commitUsageLimitedSettle(limitedSnapshot);
1967
+ }).catch(() => void 0);
1968
+ }, "stopForSpentBudget");
2253
1969
  const withCheckpointStalls = /* @__PURE__ */ __name((goal, checkpointStalls) => {
2254
1970
  const { checkpointStalls: _previous, ...rest } = goal;
2255
1971
  return checkpointStalls > 0 ? { ...rest, checkpointStalls } : rest;
@@ -2276,7 +1992,14 @@ function createGoalRuntime(options) {
2276
1992
  } catch {
2277
1993
  }
2278
1994
  }, "preemptHost");
2279
- const flushContinuation = /* @__PURE__ */ __name((cause) => {
1995
+ const settleCurrentTurnAnnouncement = /* @__PURE__ */ __name((delivered) => {
1996
+ if (delivered && currentTurnAnnouncement !== void 0) {
1997
+ announcedObjective = currentTurnAnnouncement;
1998
+ }
1999
+ currentTurnAnnouncement = void 0;
2000
+ currentTurnDelivered = false;
2001
+ }, "settleCurrentTurnAnnouncement");
2002
+ const flushContinuation = /* @__PURE__ */ __name((cause, windDown = false) => {
2280
2003
  if (!continuationQueued || !host || currentPermit || pendingProposal || verificationAttempt || checkpointAttempt || snapshot.activity !== "idle" || snapshot.goal?.status !== "active") {
2281
2004
  return;
2282
2005
  }
@@ -2294,11 +2017,16 @@ function createGoalRuntime(options) {
2294
2017
  currentPermitHost = scheduledHost;
2295
2018
  currentTurnKey = `goal-runtime:${currentPermit.turnId}`;
2296
2019
  const startedPermit = structuredClone(currentPermit);
2020
+ const objectiveUpdated = announcedObjective !== void 0 && announcedObjective !== continuationContext;
2021
+ currentTurnAnnouncement = continuationContext;
2022
+ currentTurnDelivered = false;
2023
+ windDownTurnId = windDown ? startedPermit.turnId : void 0;
2297
2024
  snapshot = { ...snapshot, activity: "running" };
2298
2025
  broadcast(cause);
2299
2026
  const handleStartFailure = /* @__PURE__ */ __name(() => {
2300
2027
  void enqueue(async () => {
2301
2028
  if (isCurrentPermit(startedPermit)) {
2029
+ settleCurrentTurnAnnouncement(false);
2302
2030
  const nextTurnKey = queuedTurnKey;
2303
2031
  currentPermit = void 0;
2304
2032
  currentPermitHost = void 0;
@@ -2335,6 +2063,8 @@ function createGoalRuntime(options) {
2335
2063
  started = scheduledHost.startGoalTurn({
2336
2064
  permit: startedPermit,
2337
2065
  continuationContext,
2066
+ ...objectiveUpdated ? { objectiveUpdated } : {},
2067
+ ...windDown ? { windDown } : {},
2338
2068
  ...verifierFeedback ? { verifierFeedback } : {}
2339
2069
  });
2340
2070
  } catch {
@@ -2347,6 +2077,15 @@ function createGoalRuntime(options) {
2347
2077
  if (restoreActivationPending || snapshot.goal?.status !== "active" || currentPermit || pendingProposal || verificationAttempt || checkpointAttempt) {
2348
2078
  return;
2349
2079
  }
2080
+ if (isGoalTokenBudgetSpent(snapshot.goal)) {
2081
+ if (snapshot.goal.windDownTurnId !== void 0) {
2082
+ stopForSpentBudget();
2083
+ return;
2084
+ }
2085
+ continuationQueued = true;
2086
+ flushContinuation(cause, true);
2087
+ return;
2088
+ }
2350
2089
  continuationQueued = true;
2351
2090
  flushContinuation(cause);
2352
2091
  }, "queueContinuation");
@@ -2404,7 +2143,7 @@ function createGoalRuntime(options) {
2404
2143
  return {
2405
2144
  ...base,
2406
2145
  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."
2146
+ 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
2147
  };
2409
2148
  }, "verifierInput");
2410
2149
  const promoteQueuedUserTurn = /* @__PURE__ */ __name(() => {
@@ -2441,7 +2180,7 @@ function createGoalRuntime(options) {
2441
2180
  ...snapshot.goal,
2442
2181
  activeTimeMs: elapsedActiveTime(snapshot.goal, now),
2443
2182
  updatedAt: now,
2444
- lastReason: outcome.result.reason
2183
+ lastReason: attempt.proposal.blockerKind === "infeasible" ? `${outcome.result.reason} ${GOAL_INFEASIBLE_NEXT_STEP}` : outcome.result.reason
2445
2184
  };
2446
2185
  const acceptedSnapshot = {
2447
2186
  v: GOAL_STATE_VERSION,
@@ -2474,36 +2213,24 @@ function createGoalRuntime(options) {
2474
2213
  continuationQueued = false;
2475
2214
  nextVerifierFeedback = void 0;
2476
2215
  currentTurnFeedback = void 0;
2216
+ if (attempt.proposal.status === "complete") {
2217
+ announcedObjective = void 0;
2218
+ }
2477
2219
  snapshot = structuredClone(terminalSnapshot);
2478
2220
  broadcast(attempt.proposal.status);
2479
2221
  return void 0;
2480
2222
  }
2481
2223
  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
- });
2224
+ const limitedSnapshot = await journalUsageLimitedSettle(
2225
+ snapshot.goal,
2226
+ outcome.reason,
2227
+ outcome.limitKind
2228
+ );
2499
2229
  if (!isCurrentVerificationAttempt(attempt) || !snapshot.goal) return;
2500
2230
  verificationAttempt = void 0;
2501
2231
  pendingProposal = void 0;
2502
- continuationQueued = false;
2503
2232
  nextVerifierFeedback = void 0;
2504
- currentTurnFeedback = void 0;
2505
- snapshot = structuredClone(limitedSnapshot);
2506
- broadcast("usage_limited");
2233
+ commitUsageLimitedSettle(limitedSnapshot);
2507
2234
  return void 0;
2508
2235
  }
2509
2236
  const rejectedCheckpoint = isRepeatedBlockerProposal(attempt.proposal) ? void 0 : createCheckpointAttempt(attempt.permit, snapshot.goal);
@@ -2650,30 +2377,14 @@ function createGoalRuntime(options) {
2650
2377
  });
2651
2378
  }, "finishCheckpointCheck");
2652
2379
  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
- });
2380
+ const limitedSnapshot = await journalUsageLimitedSettle(
2381
+ goal,
2382
+ reason,
2383
+ limitKind
2384
+ );
2671
2385
  if (!isCurrentCheckpointAttempt(attempt) || !snapshot.goal) return;
2672
2386
  checkpointAttempt = void 0;
2673
- continuationQueued = false;
2674
- currentTurnFeedback = void 0;
2675
- snapshot = structuredClone(limitedSnapshot);
2676
- broadcast("usage_limited");
2387
+ commitUsageLimitedSettle(limitedSnapshot);
2677
2388
  }, "settleCheckpointFailure");
2678
2389
  const settleIfCheckpointStalled = /* @__PURE__ */ __name(async (attempt, goal, checkpointStalls) => {
2679
2390
  if (checkpointStalls < GOAL_CHECKPOINT_STALL_LIMIT) return false;
@@ -3020,6 +2731,7 @@ function createGoalRuntime(options) {
3020
2731
  if (currentTurnFeedback !== void 0) {
3021
2732
  nextVerifierFeedback ??= currentTurnFeedback;
3022
2733
  }
2734
+ settleCurrentTurnAnnouncement(currentTurnDelivered);
3023
2735
  currentPermit = void 0;
3024
2736
  currentPermitHost = void 0;
3025
2737
  currentTurnKey = void 0;
@@ -3048,6 +2760,12 @@ function createGoalRuntime(options) {
3048
2760
  return released;
3049
2761
  });
3050
2762
  },
2763
+ markTurnDelivered(turnKey) {
2764
+ assertOperational();
2765
+ if (currentPermit && currentTurnKey === turnKey) {
2766
+ currentTurnDelivered = true;
2767
+ }
2768
+ },
3051
2769
  permitForTurn(turnKey) {
3052
2770
  assertOperational();
3053
2771
  return currentPermit && currentTurnKey === turnKey ? structuredClone(currentPermit) : void 0;
@@ -3066,11 +2784,17 @@ function createGoalRuntime(options) {
3066
2784
  if (!isCurrentPermit(permit) || !snapshot.goal) {
3067
2785
  throw new Error(STALE_GOAL_TURN_MESSAGE);
3068
2786
  }
2787
+ const delivered = currentTurnDelivered;
2788
+ settleCurrentTurnAnnouncement(delivered);
3069
2789
  const recordUuid = randomUUID();
2790
+ const heldWindDown = windDownTurnId === permit.turnId;
2791
+ const finishedWindDown = heldWindDown && delivered;
3070
2792
  const nextGoal = reduceGoalTurnFinished(snapshot.goal, {
3071
2793
  now: Date.now(),
3072
- tokensUsed: takeTurnTokens(permit.turnId)
2794
+ tokensUsed: takeTurnTokens(permit.turnId),
2795
+ ...finishedWindDown ? { windDownTurnId: permit.turnId } : {}
3073
2796
  });
2797
+ if (heldWindDown) windDownTurnId = void 0;
3074
2798
  const persistedSnapshot = {
3075
2799
  v: GOAL_STATE_VERSION,
3076
2800
  goal: nextGoal,
@@ -3241,7 +2965,8 @@ ${proposal.reason}`;
3241
2965
  request,
3242
2966
  now: Date.now(),
3243
2967
  nextGoalId: randomUUID(),
3244
- cursor: request.action === "create" || request.action === "replace" || request.action === "edit" ? { recordId: recordUuid } : options.journal.getTranscriptCursor()
2968
+ cursor: request.action === "create" || request.action === "replace" || request.action === "edit" ? { recordId: recordUuid } : options.journal.getTranscriptCursor(),
2969
+ tokenBudgetGrant
3245
2970
  });
3246
2971
  const nextSnapshot = {
3247
2972
  v: GOAL_STATE_VERSION,
@@ -3274,6 +2999,7 @@ ${proposal.reason}`;
3274
2999
  invalidateAttempts(`Goal ${request.action}`);
3275
3000
  }
3276
3001
  if (invalidatesPermit) {
3002
+ settleCurrentTurnAnnouncement(currentTurnDelivered);
3277
3003
  currentPermit = void 0;
3278
3004
  currentPermitHost = void 0;
3279
3005
  currentTurnKey = void 0;
@@ -3284,6 +3010,7 @@ ${proposal.reason}`;
3284
3010
  nextVerifierFeedback = void 0;
3285
3011
  currentTurnFeedback = void 0;
3286
3012
  continuationQueued = false;
3013
+ if (request.action === "clear") announcedObjective = void 0;
3287
3014
  } else if (request.action === "resume") {
3288
3015
  blockedAudit = void 0;
3289
3016
  }
@@ -3318,6 +3045,8 @@ ${proposal.reason}`;
3318
3045
  blockedAudit = void 0;
3319
3046
  nextVerifierFeedback = void 0;
3320
3047
  currentTurnFeedback = void 0;
3048
+ currentTurnAnnouncement = void 0;
3049
+ currentTurnDelivered = false;
3321
3050
  preemptHost("Goal runtime disposed", invalidatedHost);
3322
3051
  host = void 0;
3323
3052
  listeners.clear();
@@ -3337,16 +3066,6 @@ export {
3337
3066
  emptyGoalSnapshot,
3338
3067
  goalRequiresExactPermit,
3339
3068
  validateGoalProposalReason,
3340
- wrapUserPromptSubmitContext,
3341
- isUserPromptSubmitContextPartText,
3342
- projectUserTranscriptForDisplay,
3343
- isTranscriptConversationRecord,
3344
- isTranscriptArtifactRecord,
3345
- validateTranscriptRecord,
3346
- selectTranscriptLeaf,
3347
- walkTranscriptUuidChain,
3348
- aggregateTranscriptRecordFragments,
3349
- prepareTranscriptRecords,
3350
3069
  GOAL_EVIDENCE_REFERENCE_LIMIT,
3351
3070
  EvidenceSourceUnavailableError,
3352
3071
  InvalidGoalEvidenceReferenceError,
@@ -3375,8 +3094,3 @@ export {
3375
3094
  * Copyright 2026 Qwen Team
3376
3095
  * SPDX-License-Identifier: Apache-2.0
3377
3096
  */
3378
- /**
3379
- * @license
3380
- * Copyright 2025 Qwen Team
3381
- * SPDX-License-Identifier: Apache-2.0
3382
- */