@qwen-code/qwen-code 0.22.1 → 0.22.2-nightly.20260828.7357136dd1

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 (418) hide show
  1. package/bundled/goal-draft/SKILL.md +109 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +13 -13
  3. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/features/channels/overview.md +34 -3
  5. package/bundled/qc-helper/docs/features/code-review.md +3 -3
  6. package/bundled/qc-helper/docs/features/commands.md +2 -1
  7. package/bundled/qc-helper/docs/features/goals.md +58 -0
  8. package/bundled/qc-helper/docs/features/headless.md +13 -11
  9. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  10. package/bundled/review/SKILL.md +70 -22
  11. package/bundled/review/references/persistence.md +7 -3
  12. package/bundled/review/references/posting.md +2 -0
  13. package/chunks/MaxSizedBox-LMWXCLDV.js +110 -0
  14. package/chunks/{StandaloneSessionPicker-XF2TVJFK.js → StandaloneSessionPicker-W3F7U3JL.js} +79 -81
  15. package/chunks/{acpAgent-GY53MJIW.js → acpAgent-EYZ6EEHD.js} +1132 -339
  16. package/chunks/{agent-7U6CC5KF.js → agent-RBLGBY65.js} +44 -46
  17. package/chunks/agent-headless-L5T4Y4OZ.js +85 -0
  18. package/chunks/{anthropicContentGenerator-U76GTVB6.js → anthropicContentGenerator-GMHML35Q.js} +10 -11
  19. package/chunks/{artifact-tool-XDJCZZCF.js → artifact-tool-XSMPHZBT.js} +11 -3
  20. package/chunks/{askUserQuestion-ZXXERLEV.js → askUserQuestion-4SWJY65V.js} +2 -2
  21. package/chunks/bridge-5LR2F2ND.js +119 -0
  22. package/chunks/{channel-management-service-HXXS3HOZ.js → channel-management-service-KHR3N6CH.js} +6 -6
  23. package/chunks/channel-settings-store-4FOAZW72.js +120 -0
  24. package/chunks/{channel-worker-group-EVDC2P4K.js → channel-worker-group-6NA6BBZV.js} +8 -7
  25. package/chunks/{channel-worker-manager-IJJZHGEI.js → channel-worker-manager-NEZ2J6RK.js} +10 -8
  26. package/chunks/{channel-worker-supervisor-YSKB5GVB.js → channel-worker-supervisor-FKU7DIHJ.js} +6 -5
  27. package/chunks/{chunk-7QGEJI7M.js → chunk-23RFD54N.js} +1 -1
  28. package/chunks/{chunk-LJP2BBMK.js → chunk-2SXSLSQE.js} +4 -4
  29. package/chunks/chunk-2TNL5KPM.js +49 -0
  30. package/chunks/chunk-335CJSNF.js +2320 -0
  31. package/chunks/chunk-36LGBEM6.js +130 -0
  32. package/chunks/{chunk-ZWKGZB2K.js → chunk-3JXM2CVW.js} +3 -3
  33. package/chunks/{chunk-ICWGPK23.js → chunk-3K6TUZHS.js} +7 -7
  34. package/chunks/{chunk-43C2II2G.js → chunk-3OOXT6CR.js} +5 -5
  35. package/chunks/{chunk-ILPXSKGQ.js → chunk-3WK3QDNV.js} +2 -2
  36. package/chunks/{chunk-2YDYDDE2.js → chunk-3XOKEVII.js} +3 -3
  37. package/chunks/chunk-3Y34Q3JV.js +1584 -0
  38. package/chunks/{chunk-ZLTEQYNC.js → chunk-42IDLQWS.js} +26 -20
  39. package/chunks/{chunk-5MK32KJV.js → chunk-454XFGH4.js} +3 -3
  40. package/chunks/chunk-4CMJKUND.js +95 -0
  41. package/chunks/{chunk-77TOMRBG.js → chunk-4K7KNVWH.js} +3 -3
  42. package/chunks/{chunk-V3GINY6K.js → chunk-4QHPPXK2.js} +16 -8
  43. package/chunks/{chunk-UCSV2IZW.js → chunk-62GQFYID.js} +3 -3
  44. package/chunks/{chunk-SLEWBQWM.js → chunk-6DIGWMGT.js} +2 -2
  45. package/chunks/{chunk-I6YW3T3W.js → chunk-6JCGO55P.js} +723 -3399
  46. package/chunks/{chunk-PVBT5QPD.js → chunk-6PJOTWAN.js} +1 -1
  47. package/chunks/{chunk-5Y2JCJAH.js → chunk-6W2IK5KC.js} +956 -17
  48. package/chunks/{chunk-A7X32SCT.js → chunk-6ZZBRRKQ.js} +5 -5
  49. package/chunks/{chunk-ELY4QVIB.js → chunk-7EQQR46F.js} +1 -1
  50. package/chunks/{chunk-4DCP3362.js → chunk-7GWQW5ID.js} +4 -4
  51. package/chunks/chunk-7J6OTNGO.js +424 -0
  52. package/chunks/{chunk-CITGRGCM.js → chunk-7TUBJBBJ.js} +4 -1
  53. package/chunks/{chunk-L436XFLJ.js → chunk-7VD6IPQM.js} +1 -1
  54. package/chunks/{chunk-E4I5MVBR.js → chunk-ABS25QER.js} +1 -1
  55. package/chunks/{chunk-2ZV3CZKI.js → chunk-AJGR6E6Z.js} +49 -32
  56. package/chunks/{chunk-HJOWQUE2.js → chunk-AU3MMVJF.js} +31 -14
  57. package/chunks/{chunk-I32QCIK7.js → chunk-AXC26UCQ.js} +1 -1
  58. package/chunks/{chunk-7AS7QX72.js → chunk-AY3BNYEQ.js} +1 -1
  59. package/chunks/{chunk-FVDQ5E67.js → chunk-B466ZSHZ.js} +3 -3
  60. package/chunks/{chunk-OI2DR6QB.js → chunk-B5OUL5EL.js} +2 -2
  61. package/chunks/{chunk-6US7BF3G.js → chunk-B5PHIJGI.js} +183 -5
  62. package/chunks/{chunk-5T4LWWNX.js → chunk-B7CDU2SL.js} +2 -2
  63. package/chunks/{chunk-4TPAG3O7.js → chunk-BFPESSTR.js} +1 -1
  64. package/chunks/{chunk-WBT3STGU.js → chunk-BKWNKLZB.js} +20 -20
  65. package/chunks/{chunk-73WFGVIZ.js → chunk-BOWFGCEU.js} +3 -3
  66. package/chunks/{chunk-EMGAVCBZ.js → chunk-BPAKYXQ3.js} +2 -2
  67. package/chunks/{chunk-IPQA4SR5.js → chunk-BWORX6FA.js} +1 -1
  68. package/chunks/{chunk-BKDAF7ES.js → chunk-BXDAPVQU.js} +2 -2
  69. package/chunks/{chunk-ZEADBZLO.js → chunk-C2X7KY45.js} +3 -3
  70. package/chunks/{chunk-T2HMXHYA.js → chunk-C3KURPP7.js} +6 -6
  71. package/chunks/{chunk-JUIJ3FXC.js → chunk-CAJTKR6W.js} +5 -5
  72. package/chunks/{chunk-2FN2HNTI.js → chunk-CFJY4DGX.js} +2 -2
  73. package/chunks/{chunk-DP7LABIB.js → chunk-CMHFCLBU.js} +1 -1
  74. package/chunks/{chunk-LRKMQPMD.js → chunk-CQH5KTKC.js} +1 -1
  75. package/chunks/{chunk-J7MLXFC5.js → chunk-CRKKHXTI.js} +185 -174
  76. package/chunks/{chunk-XNXWEGKB.js → chunk-CYAUBK46.js} +3 -3
  77. package/chunks/{chunk-JECO75XD.js → chunk-D5LUXLUH.js} +2 -2
  78. package/chunks/{chunk-SRGENTPF.js → chunk-DFDWJE6Z.js} +48 -31
  79. package/chunks/chunk-DJBQCO2E.js +842 -0
  80. package/chunks/{chunk-2CRNTW2B.js → chunk-DP4MWIM3.js} +2 -2
  81. package/chunks/{chunk-EB4VDXNI.js → chunk-DYXFD5RO.js} +182 -3
  82. package/chunks/{chunk-ODXCSIH5.js → chunk-E3XVSVKK.js} +26 -4
  83. package/chunks/{chunk-ZKAZP2ZG.js → chunk-EB6QRGHM.js} +3 -3
  84. package/chunks/{chunk-GNRVKN76.js → chunk-EKNBU2X7.js} +4 -4
  85. package/chunks/{chunk-3UZCLCXR.js → chunk-EKSCLBBF.js} +3 -3
  86. package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
  87. package/chunks/chunk-EW5VVLJT.js +3525 -0
  88. package/chunks/{chunk-XYX474JQ.js → chunk-EWIQ3NAE.js} +2522 -2030
  89. package/chunks/{chunk-O5YGAEQS.js → chunk-FALBWZF4.js} +6 -6
  90. package/chunks/{chunk-GZJUCMH4.js → chunk-FEHMA4RO.js} +542 -654
  91. package/chunks/{chunk-2YEZNBSD.js → chunk-FMFBLTLY.js} +320 -86
  92. package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
  93. package/chunks/{chunk-ZJG323IA.js → chunk-G6FECKTJ.js} +7 -5
  94. package/chunks/{chunk-6KS24S3X.js → chunk-GGNE3JAW.js} +1 -1
  95. package/chunks/{chunk-BQBUZDDH.js → chunk-H33EQVMG.js} +4 -4
  96. package/chunks/chunk-H72BQNM3.js +645 -0
  97. package/chunks/{chunk-5ZYZPDDF.js → chunk-HGIMWQVT.js} +30 -25
  98. package/chunks/{chunk-DCSAVGDJ.js → chunk-HOCJDUFY.js} +2 -2
  99. package/chunks/{chunk-MDZO5V2O.js → chunk-HPXV655A.js} +9 -7
  100. package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
  101. package/chunks/{chunk-2MHGD7EE.js → chunk-HYDJDQGJ.js} +1 -1
  102. package/chunks/{chunk-BDHLBR46.js → chunk-IB7FQJRY.js} +34 -11
  103. package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
  104. package/chunks/{chunk-PAJGKZAA.js → chunk-ISKH4QX3.js} +14 -12
  105. package/chunks/{chunk-3B5DCAQU.js → chunk-J6S24ZJE.js} +34 -34
  106. package/chunks/{chunk-AYVIGUUK.js → chunk-JB4JIVTJ.js} +1 -1
  107. package/chunks/{chunk-C4WBKZJT.js → chunk-JN4IWWMN.js} +4 -4
  108. package/chunks/{chunk-6HTMIKXZ.js → chunk-JUUBLSZU.js} +4 -4
  109. package/chunks/{chunk-T6OODF2U.js → chunk-JWALNCLT.js} +1 -1
  110. package/chunks/{chunk-SKNVVYIJ.js → chunk-K5KXUXWC.js} +3 -3
  111. package/chunks/{chunk-IRIX323G.js → chunk-KTJFDCX4.js} +2 -2
  112. package/chunks/{chunk-FK4H3V6S.js → chunk-LEFCFTEX.js} +6 -6
  113. package/chunks/{chunk-OQ6LTSX3.js → chunk-LEGTMYAE.js} +1 -1
  114. package/chunks/{chunk-NY3IJYAV.js → chunk-LLZA2IK3.js} +15 -9
  115. package/chunks/{chunk-5CI4AXDD.js → chunk-LNETQKBE.js} +4 -4
  116. package/chunks/{chunk-TOF4UZHH.js → chunk-LUEHOUHM.js} +3 -3
  117. package/chunks/{chunk-62PXFOK4.js → chunk-LVPZO674.js} +4 -4
  118. package/chunks/{chunk-EEQYTWGU.js → chunk-M4ORUPYI.js} +5 -5
  119. package/chunks/{chunk-GNMJNDZE.js → chunk-M6FOJXW3.js} +1 -1
  120. package/chunks/{chunk-MYLXL7F6.js → chunk-MAYHGRP4.js} +9 -9
  121. package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
  122. package/chunks/{chunk-SM7ZVKTF.js → chunk-MTJN7FOT.js} +7 -7
  123. package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
  124. package/chunks/{chunk-27ONXAFY.js → chunk-NIFYWDYN.js} +1 -1
  125. package/chunks/{chunk-IJVDHPKD.js → chunk-NU7RKEZR.js} +2 -2
  126. package/chunks/{chunk-R2ZJH3FV.js → chunk-NXMBRVMQ.js} +3 -3
  127. package/chunks/{chunk-JLGFGPZJ.js → chunk-OI4NY7RA.js} +2 -2
  128. package/chunks/{chunk-RRKNX553.js → chunk-PDQGMSZK.js} +1 -1
  129. package/chunks/{chunk-GTUKW3I6.js → chunk-PPKZ7JOE.js} +1 -1
  130. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  131. package/chunks/{chunk-MW5AHWOZ.js → chunk-PWIGAMA4.js} +93 -14
  132. package/chunks/{chunk-WEGXPP5E.js → chunk-QFCDF5PL.js} +1 -1
  133. package/chunks/{chunk-EAV3TENS.js → chunk-QPTRRPZU.js} +44 -7
  134. package/chunks/{chunk-SQPOJ4ZI.js → chunk-RFI4YGMR.js} +21 -266
  135. package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
  136. package/chunks/chunk-RKFGE7JH.js +93 -0
  137. package/chunks/chunk-RNVFRIOO.js +275 -0
  138. package/chunks/{chunk-CPPYZHBN.js → chunk-RU7BK6B3.js} +1 -1
  139. package/chunks/{chunk-OT26ITEY.js → chunk-RVXDXY6I.js} +3 -3
  140. package/chunks/{chunk-W2WRNJKX.js → chunk-RWZB422L.js} +5 -5
  141. package/chunks/{chunk-6YAR6ZU3.js → chunk-RYNZQGXN.js} +19 -2
  142. package/chunks/{chunk-EKP3M4RF.js → chunk-SJ5ERAW3.js} +1 -1
  143. package/chunks/{chunk-DEYPMJPD.js → chunk-SMPR7SPO.js} +1 -1
  144. package/chunks/{chunk-3BV7TZNQ.js → chunk-SRZZY4IY.js} +3 -3
  145. package/chunks/{chunk-7CWEZQ6T.js → chunk-STUJ7IMZ.js} +0 -77
  146. package/chunks/{chunk-TKO4TLT6.js → chunk-SUX7HDNA.js} +3 -3
  147. package/chunks/{chunk-76WGY6LW.js → chunk-SVNO44PF.js} +3 -3
  148. package/chunks/{chunk-UX3IFLJM.js → chunk-SZLBBZH4.js} +150 -23
  149. package/chunks/{chunk-K63NK3KL.js → chunk-T2NKRHZZ.js} +13 -13
  150. package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
  151. package/chunks/{chunk-2NCVUT3C.js → chunk-TLHUNMO7.js} +4 -4
  152. package/chunks/{chunk-EC5BONC3.js → chunk-TPI7O7HR.js} +1 -1
  153. package/chunks/{chunk-ZXDM7DYV.js → chunk-TQHGJYR3.js} +2029 -616
  154. package/chunks/{chunk-T2CRBIDJ.js → chunk-TTX2JUE6.js} +1 -1
  155. package/chunks/{chunk-OX44MOAN.js → chunk-TW3E6YNO.js} +3 -3
  156. package/chunks/chunk-U54AYGEC.js +337 -0
  157. package/chunks/{chunk-2NNTE2ED.js → chunk-UHQFIS7N.js} +15 -0
  158. package/chunks/{chunk-KOJ6MHD5.js → chunk-UTLCH2FK.js} +1 -1
  159. package/chunks/{chunk-KCOXDRQL.js → chunk-UY3PBNY3.js} +17 -29
  160. package/chunks/{chunk-7DPKPBOQ.js → chunk-V2NDP3I4.js} +2 -2
  161. package/chunks/{chunk-47SIHHPL.js → chunk-V2QDDC5J.js} +19 -9
  162. package/chunks/{chunk-BVE5EMIG.js → chunk-V5J4J5TP.js} +2 -2
  163. package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
  164. package/chunks/{chunk-XJS54K4A.js → chunk-VTHREBQM.js} +2 -2
  165. package/chunks/{chunk-VMDURMFY.js → chunk-W6DUQ5GA.js} +11307 -10424
  166. package/chunks/{chunk-BX2BZPFJ.js → chunk-WALC5VJH.js} +4 -4
  167. package/chunks/{chunk-FPH6TXD3.js → chunk-WAOIHTJS.js} +1 -1
  168. package/chunks/{chunk-LI2HEMKO.js → chunk-WBHKK3CU.js} +4 -4
  169. package/chunks/{chunk-O3BUXIPM.js → chunk-WXEA74YB.js} +3 -3
  170. package/chunks/{chunk-NER3H7PI.js → chunk-X3ZRTCJD.js} +1 -1
  171. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  172. package/chunks/{chunk-VL4YX3FH.js → chunk-XF63PKEN.js} +1 -1
  173. package/chunks/{chunk-FN5C6C7G.js → chunk-XLLQJRAH.js} +190 -478
  174. package/chunks/{chunk-3FSBMAYD.js → chunk-XQFT3QUF.js} +1 -1
  175. package/chunks/{chunk-FJWICLG7.js → chunk-Y3QL45LS.js} +1 -1
  176. package/chunks/{chunk-IKN3IUJP.js → chunk-Y4TPOUEV.js} +17 -9
  177. package/chunks/{chunk-NVK4HJYQ.js → chunk-YRZX2PHA.js} +1 -1
  178. package/chunks/{chunk-2SERYG4T.js → chunk-YTDVNSUQ.js} +1 -1
  179. package/chunks/{chunk-KWFP3WV6.js → chunk-YWQ237GX.js} +4 -193
  180. package/chunks/{chunk-6E4WHQJV.js → chunk-ZTP35P4B.js} +1 -1
  181. package/chunks/{chunk-E6FGMDFQ.js → chunk-ZU4UDIWX.js} +19 -1
  182. package/chunks/config-utils-JVGAP34H.js +113 -0
  183. package/chunks/contextCommand-XDB7OSO7.js +106 -0
  184. package/chunks/{core-runtime-PKNQ63VL.js → core-runtime-XHYA2RH7.js} +59 -61
  185. package/chunks/{create-sub-session-RVHSWVAP.js → create-sub-session-23ITIELI.js} +3 -3
  186. package/chunks/{create-sub-session-PLGPY6TV.js → create-sub-session-MHYCFNCM.js} +163 -84
  187. package/chunks/{cron-create-IJGVR5R2.js → cron-create-KJ4IY6PP.js} +57 -10
  188. package/chunks/{cron-delete-4N5BI6GL.js → cron-delete-MBLQCAYY.js} +4 -4
  189. package/chunks/{cron-list-2CATIPUX.js → cron-list-DWH2PQ47.js} +4 -4
  190. package/chunks/{daemon-NAYK4XXU.js → daemon-K5XS42ID.js} +516 -3
  191. package/chunks/{daemon-git-worktree-guard-LDBJXH2U.js → daemon-git-worktree-guard-V3P5XLHB.js} +56 -58
  192. package/chunks/daemon-status-provider-KKU7ZTLM.js +117 -0
  193. package/chunks/daemon-trust-policy-TZGK34DW.js +112 -0
  194. package/chunks/{daemon-trust-policy-monitor-IGEJPHQ4.js → daemon-trust-policy-monitor-F23DD2M4.js} +62 -64
  195. package/chunks/deferred-core-runtime-LKLGBCGZ.js +114 -0
  196. package/chunks/{display-image-DR55LL6M.js → display-image-BE7I6ZB6.js} +5 -5
  197. package/chunks/{dist-DJBNNPLN.js → dist-4WXLCBDR.js} +1 -1
  198. package/chunks/{dist-TJUDJTCB.js → dist-5VXFRTWU.js} +280 -48
  199. package/chunks/{dist-6H6RZ5H6.js → dist-6BPYWHVD.js} +89 -65
  200. package/chunks/{dist-ZBVOXSKF.js → dist-GFN5DCBX.js} +74 -65
  201. package/chunks/{dist-SATKXKUR.js → dist-HZNT6GQS.js} +1 -1
  202. package/chunks/{dist-FVJZSIO4.js → dist-LVZCXVPF.js} +72 -20
  203. package/chunks/{dist-7CKN54NL.js → dist-N6W6E753.js} +71 -64
  204. package/chunks/{dist-4Q7NTUNB.js → dist-QDLFKWOL.js} +2 -2
  205. package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
  206. package/chunks/earlyInputCapture-NERYFYTR.js +107 -0
  207. package/chunks/{edit-KSPVUEAS.js → edit-ACCATIXB.js} +45 -47
  208. package/chunks/{en-6MDBWMTG.js → en-YLXBXM4Z.js} +2 -1
  209. package/chunks/{enter-worktree-UOZ6ZTP7.js → enter-worktree-35QCAAFP.js} +7 -7
  210. package/chunks/{enterPlanMode-DZTABSKN.js → enterPlanMode-NEN6EPVM.js} +44 -46
  211. package/chunks/{environment-JXOSW25V.js → environment-CKWHBC5T.js} +58 -60
  212. package/chunks/errors-XTZPNQ77.js +113 -0
  213. package/chunks/{exit-worktree-G2QATUCV.js → exit-worktree-XQD6D543.js} +7 -7
  214. package/chunks/exitPlanMode-CY344X5J.js +83 -0
  215. package/chunks/{fast-path-EBS7NAVL.js → fast-path-YSOX4PAM.js} +5 -5
  216. package/chunks/{gemini-JELEKOVS.js → gemini-VQY2YCPH.js} +110 -108
  217. package/chunks/{geminiContentGenerator-I2CKP7XI.js → geminiContentGenerator-PAPXNIGU.js} +8 -8
  218. package/chunks/{glob-TDVEVPQZ.js → glob-GVCUSBBF.js} +44 -46
  219. package/chunks/{goal-tools-CNVXMSZD.js → goal-tools-5STK6OXW.js} +10 -8
  220. package/chunks/{grep-3NLSS32D.js → grep-5GPICQBU.js} +6 -6
  221. package/chunks/handleAutoUpdate-ZJPJN42W.js +109 -0
  222. package/chunks/i18n-BZYKOST7.js +124 -0
  223. package/chunks/{image-gen-63NN2H5N.js → image-gen-J6FDGUZP.js} +8 -10
  224. package/chunks/initializer-GO2C5HE3.js +113 -0
  225. package/chunks/installationInfo-WM2GXQZ6.js +107 -0
  226. package/chunks/{keychain-token-storage-3MGFRYGM.js → keychain-token-storage-37XPR34V.js} +2 -2
  227. package/chunks/list-ERDJB7PQ.js +116 -0
  228. package/chunks/{list-agents-EXRSHIDJ.js → list-agents-DI3YFTDT.js} +2 -2
  229. package/chunks/loadedSettingsAdapter-7JOCVOKV.js +110 -0
  230. package/chunks/{loggingContentGenerator-CZWUAHAI.js → loggingContentGenerator-3ONLU3BS.js} +321 -30
  231. package/chunks/{loop-wakeup-XBPB2BRO.js → loop-wakeup-XJFONSQ7.js} +5 -5
  232. package/chunks/{ls-WFONAND2.js → ls-3VAT2J7A.js} +4 -4
  233. package/chunks/{lsp-DUKPDUXN.js → lsp-5W7IRUBH.js} +2 -2
  234. package/chunks/{managed-npm-update-54W23SP5.js → managed-npm-update-TLRCC2GE.js} +57 -59
  235. package/chunks/mcp-2LH3QXR2.js +110 -0
  236. package/chunks/{monitor-A4J5QRGJ.js → monitor-P7LDAL4W.js} +44 -46
  237. package/chunks/nonInteractiveCli-E5T7PZ27.js +184 -0
  238. package/chunks/{notebook-edit-4ANFZON5.js → notebook-edit-F7KSG4WQ.js} +45 -47
  239. package/chunks/{openaiContentGenerator-JCCJJQZC.js → openaiContentGenerator-2EXCZUGN.js} +26 -28
  240. package/chunks/pidfile-P25DWA5Q.js +111 -0
  241. package/chunks/process-registry-OAEG6WGC.js +662 -0
  242. package/chunks/{processUtils-JJAR56SO.js → processUtils-PVDKBL35.js} +2 -2
  243. package/chunks/prompt-terminal-ledger-AJ7T7OIV.js +105 -0
  244. package/chunks/{qwenContentGenerator-5JM44ZSA.js → qwenContentGenerator-TBBRLWIT.js} +49 -51
  245. package/chunks/{qwenOAuth2-JIYAWXTW.js → qwenOAuth2-OF5WRBQT.js} +7 -9
  246. package/chunks/{read-file-N3E5DY7N.js → read-file-6IIY4RLJ.js} +13 -13
  247. package/chunks/{read-mcp-resource-7A7NFSFL.js → read-mcp-resource-XD257PGJ.js} +2 -2
  248. package/chunks/{record-artifact-CPJ4IJSD.js → record-artifact-VW23GS4F.js} +4 -4
  249. package/chunks/{report-findings-VFM5DENC.js → report-findings-XA3FJG3N.js} +5 -5
  250. package/chunks/{request-shutdown-AXVOFN5C.js → request-shutdown-BCLA3JV2.js} +7 -7
  251. package/chunks/resumeHistoryUtils-44IETXDY.js +118 -0
  252. package/chunks/ripGrep-E7ESZ7SS.js +39 -0
  253. package/chunks/{run-qwen-serve-IWGPZADI.js → run-qwen-serve-DXBCYW7V.js} +356 -331
  254. package/chunks/{runtime-I76HPFUE.js → runtime-RUSPD35D.js} +67 -69
  255. package/chunks/scheduled-tasks-DVRJZO6I.js +127 -0
  256. package/chunks/{scheduler-M6YL4K4I.js → scheduler-TDRB2NSY.js} +58 -60
  257. package/chunks/{sdk-exporters-http-XXSKBD2C.js → sdk-exporters-http-TTU2CHBU.js} +2 -2
  258. package/chunks/{sdk-impl-VPNBLV7I.js → sdk-impl-UUMVYMAL.js} +11 -5
  259. package/chunks/{send-message-A2GXDX3B.js → send-message-AJ4OCUBV.js} +25 -9
  260. package/chunks/serve-KITOM7OR.js +118 -0
  261. package/chunks/{server-TWXRRREO.js → server-THCOMUC2.js} +5476 -4771
  262. package/chunks/{session-IT5ZXU7A.js → session-XKR5MPXE.js} +105 -106
  263. package/chunks/session-pr-refresh-KRBH7KDA.js +278 -0
  264. package/chunks/{settings-IX5HOOCG.js → settings-YXZ4XBKK.js} +61 -63
  265. package/chunks/{shell-LZ55AAJB.js → shell-5FJ2DZ3W.js} +44 -46
  266. package/chunks/{skill-WSZ53D2R.js → skill-VMMJZ6CJ.js} +71 -26
  267. package/chunks/skill-settings-7SG4YA2W.js +118 -0
  268. package/chunks/spawnChannel-BPMIXRBI.js +112 -0
  269. package/chunks/standalone-update-QN5HFRIC.js +118 -0
  270. package/chunks/{startInteractiveUI-O6BI2OSA.js → startInteractiveUI-5A7RQFRP.js} +2902 -2289
  271. package/chunks/{syntheticOutput-5AJ444QT.js → syntheticOutput-ML43GEFN.js} +3 -3
  272. package/chunks/{task-create-CDJSOEQD.js → task-create-QN4LYRSE.js} +11 -11
  273. package/chunks/{task-list-BELMPA75.js → task-list-JPLGK45U.js} +5 -5
  274. package/chunks/{task-stop-U3S3KZG2.js → task-stop-CXEH5L2D.js} +2 -2
  275. package/chunks/{task-update-77VCFDDZ.js → task-update-IWEOJFV2.js} +11 -11
  276. package/chunks/{team-create-UF4TMQEH.js → team-create-HVGVUL2L.js} +44 -46
  277. package/chunks/{team-delete-YWFXX77L.js → team-delete-RZVVSGCY.js} +5 -5
  278. package/chunks/{team-plan-approval-U57NSR6C.js → team-plan-approval-S5A5FQWU.js} +44 -46
  279. package/chunks/terminal-image-renderer-SIVPPXDI.js +114 -0
  280. package/chunks/theme-manager-TA33UZZX.js +102 -0
  281. package/chunks/{todoWrite-435EO2CS.js → todoWrite-WDJNQEMW.js} +43 -25
  282. package/chunks/{tool-search-SV35UV72.js → tool-search-NX7IPDKP.js} +18 -18
  283. package/chunks/total-session-admission-PWXZBOVX.js +114 -0
  284. package/chunks/{trustedFolders-YKK67IP3.js → trustedFolders-V6Y4CU3F.js} +57 -59
  285. package/chunks/{update-relaunch-DX7LVA4P.js → update-relaunch-CGSX3R37.js} +5 -5
  286. package/chunks/updateCheck-T5O2WGIB.js +118 -0
  287. package/chunks/useAutoAcceptIndicator-ULBJJWPY.js +120 -0
  288. package/chunks/{validateNonInterActiveAuth-B26O4YJP.js → validateNonInterActiveAuth-E5S2JSRC.js} +101 -102
  289. package/chunks/{version-K5D7VJ4B.js → version-LS5JPU36.js} +1 -1
  290. package/chunks/{web-fetch-VFHZLLNZ.js → web-fetch-RLMFZTS3.js} +16 -18
  291. package/chunks/{web-search-AQE5A4J5.js → web-search-LMCIC4N5.js} +9 -11
  292. package/chunks/{workflow-XL6AEUZ7.js → workflow-JBXU3IGA.js} +128 -94
  293. package/chunks/workspace-providers-status-525ORQBH.js +114 -0
  294. package/chunks/{workspace-registration-store-I4U3V5LL.js → workspace-registration-store-7Y44R4LV.js} +1 -1
  295. package/chunks/workspace-registry-HS4RWUSQ.js +123 -0
  296. package/chunks/workspace-service-7PXDM6EB.js +129 -0
  297. package/chunks/workspace-skills-status-FMJGC2XI.js +113 -0
  298. package/chunks/{workspace-trust-reconciler-GJ466KCE.js → workspace-trust-reconciler-3YTWSQBY.js} +70 -70
  299. package/chunks/write-file-BVQRYQQO.js +88 -0
  300. package/chunks/{zh-TW-MV4FWFB6.js → zh-TW-RPTMRTHG.js} +2 -1
  301. package/chunks/{zh-X3WGU6SI.js → zh-UNY63FR3.js} +2 -1
  302. package/chunks/{zoom-image-NYJPC3NI.js → zoom-image-FGCELNS4.js} +13 -13
  303. package/cli.js +14 -14
  304. package/locales/en.js +2 -0
  305. package/locales/zh-TW.js +2 -0
  306. package/locales/zh.js +2 -0
  307. package/package.json +3 -3
  308. package/web-shell/assets/{abnfDiagram-VCTEODGH-yq7z7Anb.js → abnfDiagram-VCTEODGH-2XZDeWYO.js} +1 -1
  309. package/web-shell/assets/{arc-CbJO0xnT.js → arc-B6UgMh90.js} +1 -1
  310. package/web-shell/assets/{architectureDiagram-5GKGNRK7-CRh89421.js → architectureDiagram-5GKGNRK7-DZgNFeN1.js} +1 -1
  311. package/web-shell/assets/{blockDiagram-NRAW4CY4-C75KAhKv.js → blockDiagram-NRAW4CY4-DQ2wvBFN.js} +1 -1
  312. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BzlMveFB.js → c4Diagram-UCG6FXSJ-DMmQMrc4.js} +1 -1
  313. package/web-shell/assets/channel-D_TyfiTx.js +1 -0
  314. package/web-shell/assets/{chunk-2Q5K7J3B-DA8QDX3a.js → chunk-2Q5K7J3B-C8Zh2e9y.js} +1 -1
  315. package/web-shell/assets/{chunk-5VM5RSS4-Bgu7gQ7Y.js → chunk-5VM5RSS4-C3LTenP8.js} +1 -1
  316. package/web-shell/assets/{chunk-F27PBJKO-BOew7pIK.js → chunk-F27PBJKO-CxABOc8n.js} +1 -1
  317. package/web-shell/assets/{chunk-G27WJ6UU-DHx1I-hO.js → chunk-G27WJ6UU-CD_JxHDC.js} +1 -1
  318. package/web-shell/assets/{chunk-JWPE2WC7-SarFW0WU.js → chunk-JWPE2WC7-BdmZPmce.js} +1 -1
  319. package/web-shell/assets/{chunk-LCL6LL3I-BLzP083Z.js → chunk-LCL6LL3I-80bcHmfK.js} +1 -1
  320. package/web-shell/assets/{chunk-POPQ4Y6H-Bmkv_iKm.js → chunk-POPQ4Y6H-CNpLZyQF.js} +1 -1
  321. package/web-shell/assets/{chunk-SVP7TREG-MPx9r1N2.js → chunk-SVP7TREG-CXlKgMv3.js} +1 -1
  322. package/web-shell/assets/{chunk-XXDRQBXY-Ck-09rKG.js → chunk-XXDRQBXY-CivyYyvL.js} +1 -1
  323. package/web-shell/assets/classDiagram-DTDB5LWJ-Bw_H3xMd.js +1 -0
  324. package/web-shell/assets/classDiagram-v2-JRS7N3AN-Bw_H3xMd.js +1 -0
  325. package/web-shell/assets/{cose-bilkent-JH36ORCC-DWm6lfOG.js → cose-bilkent-JH36ORCC-COAjRH3w.js} +1 -1
  326. package/web-shell/assets/{cynefin-OW5HDTMX-DcBUyr5R.js → cynefin-OW5HDTMX-DqU1JHO6.js} +1 -1
  327. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-Df8qmd_p.js → cynefinDiagram-5FMLGOSQ-BCLI1Bvj.js} +1 -1
  328. package/web-shell/assets/{dagre-3AP2YEHR-DDmGspD7.js → dagre-3AP2YEHR-DmAz8nqF.js} +1 -1
  329. package/web-shell/assets/{diagram-S7CK7UJ4-BK_qFvbi.js → diagram-S7CK7UJ4-Ck-5QLT5.js} +1 -1
  330. package/web-shell/assets/{diagram-UQ7AKVKN-Uw3AP_bi.js → diagram-UQ7AKVKN-C0ljX0mW.js} +1 -1
  331. package/web-shell/assets/{diagram-VSXAHHWV-CJOQKxY7.js → diagram-VSXAHHWV-DPgvT24v.js} +1 -1
  332. package/web-shell/assets/{diagram-VX7I27RA-DhdvZna5.js → diagram-VX7I27RA-D7hWr1LR.js} +1 -1
  333. package/web-shell/assets/{diagram-Z3DM3KII-edQU0nlP.js → diagram-Z3DM3KII-D59tlOta.js} +1 -1
  334. package/web-shell/assets/{ebnfDiagram-PWID7BFC-4kugBEsO.js → ebnfDiagram-PWID7BFC-CY2DDx00.js} +1 -1
  335. package/web-shell/assets/{erDiagram-SSCWMZ5O-BMkFivWO.js → erDiagram-SSCWMZ5O-AR4h8Q8k.js} +1 -1
  336. package/web-shell/assets/{flowDiagram-A5DVABFB-BM1ea8g-.js → flowDiagram-A5DVABFB-DbF0HqBz.js} +1 -1
  337. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-CXj_cKRf.js → ganttDiagram-EL5Y4UJY-J52mrIhc.js} +1 -1
  338. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-D0nEqwqu.js → gitGraphDiagram-WWUBYQGX-CcgMY5EV.js} +1 -1
  339. package/web-shell/assets/index-BjUg3vPr.css +5 -0
  340. package/web-shell/assets/index-CFwYYVFU.js +1873 -0
  341. package/web-shell/assets/{index-B6JN54Pd.js → index-MQs7l15A.js} +1 -1
  342. package/web-shell/assets/{infoDiagram-RXCK75RN-DF7aGGbQ.js → infoDiagram-RXCK75RN-Buu3ibp2.js} +1 -1
  343. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CZYNX1lL.js → ishikawaDiagram-5VMMS53U-CoKQxnF3.js} +1 -1
  344. package/web-shell/assets/{journeyDiagram-EYS64GPL-CvrqMUz1.js → journeyDiagram-EYS64GPL-CxK35mTC.js} +1 -1
  345. package/web-shell/assets/{kanban-definition-3QL26DDD-BZNJQZBj.js → kanban-definition-3QL26DDD-tk2CHTQ1.js} +1 -1
  346. package/web-shell/assets/{layout-Bf83x7D6.js → layout-DEpMwb4u.js} +1 -1
  347. package/web-shell/assets/{linear-Bkc3ES2f.js → linear-DSQsLh53.js} +1 -1
  348. package/web-shell/assets/{mermaid.core-C6xuovwz.js → mermaid.core-DIZuPBQT.js} +6 -6
  349. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DzH6gVRg.js → mindmap-definition-FBJOCRG2-CCAvk8r_.js} +1 -1
  350. package/web-shell/assets/{pegDiagram-XKGWAZYB-DCvLh2fa.js → pegDiagram-XKGWAZYB-CpJ28jxz.js} +1 -1
  351. package/web-shell/assets/{pieDiagram-E7YTZNPT-BtjVlx_6.js → pieDiagram-E7YTZNPT-ziJR2R32.js} +1 -1
  352. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-IbroqxFe.js → quadrantDiagram-AXDQQJYC-B60zE3Mh.js} +1 -1
  353. package/web-shell/assets/{railroadDiagram-O6MQD6OU-BvMykiWW.js → railroadDiagram-O6MQD6OU-M3GqQ_g1.js} +1 -1
  354. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-D-HHMyrh.js → requirementDiagram-EFPCY7ZU-ntCtYqTk.js} +1 -1
  355. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C0XXhB6d.js → sankeyDiagram-P5KCCOFB-AYLoItcZ.js} +1 -1
  356. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DseAXj5d.js → sequenceDiagram-WJ2MYXX4-DEWk4Mlj.js} +1 -1
  357. package/web-shell/assets/{sizeCapture-X5ZJPWSS-Cek2EweK.js → sizeCapture-X5ZJPWSS-OOWvzPay.js} +1 -1
  358. package/web-shell/assets/{stateDiagram-HBIQ2CUA-yLv8wafW.js → stateDiagram-HBIQ2CUA-BcMmvxem.js} +1 -1
  359. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DRLLqPWO.js +1 -0
  360. package/web-shell/assets/{swimlanes-XN3QIQJK-Cwz-opvE.js → swimlanes-XN3QIQJK-DuZTWWvh.js} +1 -1
  361. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DOfLQQYt.js +8 -0
  362. package/web-shell/assets/{timeline-definition-24CTP7MA-BJuFD7OG.js → timeline-definition-24CTP7MA-CjqtZXEd.js} +1 -1
  363. package/web-shell/assets/{vennDiagram-4TSXK5OY-CNAavdoV.js → vennDiagram-4TSXK5OY-knVCVkQ4.js} +1 -1
  364. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-DaIjAidq.js → wardleyDiagram-VM6X3IG4-yoWhw0a2.js} +1 -1
  365. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DkcQXjTy.js → xychartDiagram-S5SC5T6Z-ue14E_gL.js} +1 -1
  366. package/web-shell/index.html +3 -3
  367. package/chunks/MaxSizedBox-UUTUE42J.js +0 -112
  368. package/chunks/agent-headless-32O4L2CT.js +0 -87
  369. package/chunks/bridge-DFX2FFH4.js +0 -119
  370. package/chunks/channel-settings-store-ELLH2M4M.js +0 -117
  371. package/chunks/chunk-I6VVOZDK.js +0 -202
  372. package/chunks/chunk-JS73NNWF.js +0 -30
  373. package/chunks/chunk-K2OJUPOE.js +0 -78
  374. package/chunks/chunk-P3QQPMQA.js +0 -19
  375. package/chunks/chunk-SDVF6A42.js +0 -945
  376. package/chunks/chunk-VGHZT6JR.js +0 -51
  377. package/chunks/config-utils-7M6PCTLT.js +0 -113
  378. package/chunks/contextCommand-G4QG3TW6.js +0 -108
  379. package/chunks/daemon-status-provider-F5FEHVVG.js +0 -118
  380. package/chunks/daemon-trust-policy-C6YTU5CQ.js +0 -114
  381. package/chunks/deferred-core-runtime-GHT3GDOR.js +0 -116
  382. package/chunks/earlyInputCapture-HOSJTLWP.js +0 -109
  383. package/chunks/errors-IOXFDE4J.js +0 -115
  384. package/chunks/exitPlanMode-PZG4FXRB.js +0 -85
  385. package/chunks/handleAutoUpdate-AWAGHKOX.js +0 -111
  386. package/chunks/i18n-CYA25C5F.js +0 -126
  387. package/chunks/initializer-JD2FLNLO.js +0 -115
  388. package/chunks/installationInfo-N3DCWVWR.js +0 -109
  389. package/chunks/list-XDQAUET5.js +0 -118
  390. package/chunks/loadedSettingsAdapter-IK7H5JRK.js +0 -112
  391. package/chunks/mcp-2E7ZLMEE.js +0 -112
  392. package/chunks/nonInteractiveCli-ZNDXB62Y.js +0 -185
  393. package/chunks/pidfile-DHV2Y7UD.js +0 -113
  394. package/chunks/process-registry-PMJOA5CO.js +0 -172
  395. package/chunks/prompt-terminal-ledger-LDZ6QVYA.js +0 -107
  396. package/chunks/resumeHistoryUtils-YQRITQAG.js +0 -120
  397. package/chunks/ripGrep-NEIHKBKB.js +0 -39
  398. package/chunks/serve-XY5S63GN.js +0 -120
  399. package/chunks/skill-settings-5U7FTJIK.js +0 -120
  400. package/chunks/spawnChannel-TMC6VXGN.js +0 -113
  401. package/chunks/standalone-update-CUYGWTR4.js +0 -120
  402. package/chunks/terminal-image-renderer-DRL3BROJ.js +0 -116
  403. package/chunks/theme-manager-HHJPUDRN.js +0 -104
  404. package/chunks/total-session-admission-TQI7TCTL.js +0 -114
  405. package/chunks/updateCheck-6JRTKTUF.js +0 -120
  406. package/chunks/useAutoAcceptIndicator-MYXYSKSL.js +0 -122
  407. package/chunks/workspace-providers-status-H6TG34YV.js +0 -116
  408. package/chunks/workspace-registry-2PWNIYNI.js +0 -123
  409. package/chunks/workspace-service-4FGTUJLA.js +0 -131
  410. package/chunks/workspace-skills-status-7VOLUDT6.js +0 -115
  411. package/chunks/write-file-PWOYCT2K.js +0 -90
  412. package/web-shell/assets/channel-B3sGR79J.js +0 -1
  413. package/web-shell/assets/classDiagram-DTDB5LWJ-sTGo0K3v.js +0 -1
  414. package/web-shell/assets/classDiagram-v2-JRS7N3AN-sTGo0K3v.js +0 -1
  415. package/web-shell/assets/index-C-XlQn24.css +0 -5
  416. package/web-shell/assets/index-DLjXM0dn.js +0 -1860
  417. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DeThXnol.js +0 -1
  418. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-GW0R1ZSv.js +0 -8
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  isTerminalWorkflowStatus
5
- } from "./chunk-XYX474JQ.js";
5
+ } from "./chunk-EWIQ3NAE.js";
6
6
  import {
7
7
  Storage,
8
8
  createDebugLogger
9
- } from "./chunk-2NNTE2ED.js";
9
+ } from "./chunk-UHQFIS7N.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -14,10 +14,177 @@ import {
14
14
  __name
15
15
  } from "./chunk-J2S4EL5Y.js";
16
16
 
17
- // packages/core/src/agents/workflow-snapshot.ts
17
+ // packages/core/src/agents/runtime/workflow-saved.ts
18
18
  init_esbuild_shims();
19
19
  import { promises as fs } from "node:fs";
20
- var debugLogger = createDebugLogger("WORKFLOW_SNAPSHOT");
20
+ import * as path from "node:path";
21
+ var debugLogger = createDebugLogger("WORKFLOW_SAVED");
22
+ var WORKFLOW_NAME_PATTERN = /^[a-z][a-z0-9-]{0,40}$/;
23
+ function validateWorkflowName(name) {
24
+ if (!name) return "Workflow name is required.";
25
+ if (!WORKFLOW_NAME_PATTERN.test(name)) {
26
+ return `Invalid workflow name "${name}". Use lower-case letters, digits, and hyphens only (must start with a letter, max 41 chars).`;
27
+ }
28
+ return null;
29
+ }
30
+ __name(validateWorkflowName, "validateWorkflowName");
31
+ function getSavedWorkflowDirs(config) {
32
+ return [
33
+ { dir: config.storage.getProjectWorkflowsDir(), source: "project" },
34
+ { dir: Storage.getUserWorkflowsDir(), source: "user" }
35
+ ];
36
+ }
37
+ __name(getSavedWorkflowDirs, "getSavedWorkflowDirs");
38
+ function getWorkflowScriptRoots(config) {
39
+ return [
40
+ ...getSavedWorkflowDirs(config).map(({ dir }) => dir),
41
+ config.storage.getGeneratedWorkflowsDir()
42
+ ];
43
+ }
44
+ __name(getWorkflowScriptRoots, "getWorkflowScriptRoots");
45
+ async function isSymlinkedRoot(dir) {
46
+ return fs.lstat(dir).then((st) => st.isSymbolicLink()).catch(() => false);
47
+ }
48
+ __name(isSymlinkedRoot, "isSymlinkedRoot");
49
+ async function listJsFiles(dir) {
50
+ if (await isSymlinkedRoot(dir)) {
51
+ debugLogger.warn(`refusing symlinked saved-workflow dir: ${dir}`);
52
+ return [];
53
+ }
54
+ try {
55
+ const names = await fs.readdir(dir);
56
+ const out = [];
57
+ for (const n of names) {
58
+ if (!n.endsWith(".js")) continue;
59
+ const st = await fs.lstat(path.join(dir, n)).catch(() => null);
60
+ if (!st || st.isSymbolicLink()) continue;
61
+ out.push(n);
62
+ }
63
+ return out;
64
+ } catch (e) {
65
+ const code = e?.code;
66
+ if (code !== "ENOENT") {
67
+ debugLogger.warn(`listJsFiles failed for ${dir}: ${e}`);
68
+ }
69
+ return [];
70
+ }
71
+ }
72
+ __name(listJsFiles, "listJsFiles");
73
+ async function readWorkflowFileSecurely(filePath, config) {
74
+ const real = await fs.realpath(filePath);
75
+ const roots = await Promise.all(
76
+ getWorkflowScriptRoots(config).map(async (dir) => {
77
+ if (await isSymlinkedRoot(dir)) return { dir, real: null };
78
+ try {
79
+ return { dir, real: await fs.realpath(dir) };
80
+ } catch {
81
+ return { dir, real: path.resolve(dir) };
82
+ }
83
+ })
84
+ );
85
+ const dirs = roots.flatMap((r) => r.real === null ? [] : [r.real]);
86
+ const inside = dirs.some((d) => real === d || real.startsWith(d + path.sep));
87
+ if (!inside) {
88
+ const refused = roots.flatMap((r) => r.real === null ? [r.dir] : []);
89
+ const refusedNote = refused.length > 0 ? `; refused symlinked ${refused.length === 1 ? "root" : "roots"}: ${refused.join(", ")}` : "";
90
+ throw new Error(
91
+ `refusing to load a workflow file outside the workflow script roots (checked: ${dirs.join(", ")}${refusedNote}): '${filePath}'.`
92
+ );
93
+ }
94
+ return fs.readFile(real, "utf8");
95
+ }
96
+ __name(readWorkflowFileSecurely, "readWorkflowFileSecurely");
97
+ async function listSavedWorkflows(config) {
98
+ const byName = /* @__PURE__ */ new Map();
99
+ for (const { dir, source } of [...getSavedWorkflowDirs(config)].reverse()) {
100
+ for (const file of await listJsFiles(dir)) {
101
+ const name = file.slice(0, -".js".length);
102
+ if (!WORKFLOW_NAME_PATTERN.test(name)) continue;
103
+ byName.set(name, { name, scriptPath: path.join(dir, file), source });
104
+ }
105
+ }
106
+ return Array.from(byName.values()).sort(
107
+ (a, b) => a.name.localeCompare(b.name)
108
+ );
109
+ }
110
+ __name(listSavedWorkflows, "listSavedWorkflows");
111
+ async function resolveSavedWorkflowScript(nameOrRef, config) {
112
+ if (typeof nameOrRef === "object" && nameOrRef !== null) {
113
+ const scriptPath = nameOrRef.scriptPath;
114
+ if (typeof scriptPath !== "string" || scriptPath.length === 0) {
115
+ throw new Error(
116
+ "workflow() expects a workflow name (string) or {scriptPath: string}."
117
+ );
118
+ }
119
+ let script;
120
+ try {
121
+ script = await readWorkflowFileSecurely(scriptPath, config);
122
+ } catch (e) {
123
+ throw new Error(
124
+ `workflow({scriptPath: '${scriptPath}'}): ${e instanceof Error ? e.message : String(e)}`
125
+ );
126
+ }
127
+ const name2 = path.basename(scriptPath).replace(/\.js$/, "");
128
+ return { name: name2, scriptPath, script };
129
+ }
130
+ if (typeof nameOrRef !== "string") {
131
+ throw new Error(
132
+ "workflow() expects a workflow name (string) or {scriptPath: string}."
133
+ );
134
+ }
135
+ const name = nameOrRef;
136
+ const nameError = validateWorkflowName(name);
137
+ if (nameError) {
138
+ throw new Error(`workflow('${name}'): ${nameError}`);
139
+ }
140
+ for (const { dir } of getSavedWorkflowDirs(config)) {
141
+ const scriptPath = path.join(dir, `${name}.js`);
142
+ try {
143
+ const script = await readWorkflowFileSecurely(scriptPath, config);
144
+ return { name, scriptPath, script };
145
+ } catch {
146
+ }
147
+ }
148
+ const available = (await listSavedWorkflows(config)).map((e) => e.name);
149
+ throw new Error(
150
+ `workflow('${name}'): no workflow with that name. Available: ${available.length > 0 ? available.join(", ") : "(none)"}.`
151
+ );
152
+ }
153
+ __name(resolveSavedWorkflowScript, "resolveSavedWorkflowScript");
154
+ async function saveWorkflowScript(config, opts) {
155
+ const { name, scope, script, overwrite = false } = opts;
156
+ const nameError = validateWorkflowName(name);
157
+ if (nameError) return { status: "invalid-name", error: nameError };
158
+ if (!script || script.trim().length === 0) {
159
+ return {
160
+ status: "empty-script",
161
+ error: "This run has no script source to save."
162
+ };
163
+ }
164
+ const dir = scope === "project" ? config.storage.getProjectWorkflowsDir() : Storage.getUserWorkflowsDir();
165
+ if (await isSymlinkedRoot(dir)) {
166
+ throw new Error(
167
+ `refusing to save into a symlinked saved-workflow directory: '${dir}'.`
168
+ );
169
+ }
170
+ const filePath = path.join(dir, `${name}.js`);
171
+ if (!overwrite) {
172
+ try {
173
+ await fs.access(filePath);
174
+ return { status: "exists", name, scope, path: filePath };
175
+ } catch {
176
+ }
177
+ }
178
+ await fs.mkdir(dir, { recursive: true });
179
+ await fs.writeFile(filePath, script, "utf8");
180
+ return { status: "saved", name, scope, path: filePath };
181
+ }
182
+ __name(saveWorkflowScript, "saveWorkflowScript");
183
+
184
+ // packages/core/src/agents/workflow-snapshot.ts
185
+ init_esbuild_shims();
186
+ import { promises as fs2 } from "node:fs";
187
+ var debugLogger2 = createDebugLogger("WORKFLOW_SNAPSHOT");
21
188
  var MAX_RETAINED_SNAPSHOTS = 30;
22
189
  function toSnapshot(task) {
23
190
  if (!isTerminalWorkflowStatus(task.status)) {
@@ -68,15 +235,15 @@ async function writeWorkflowSnapshot(config, task) {
68
235
  try {
69
236
  const snapshot = toSnapshot(task);
70
237
  const dir = storage.getWorkflowRunsDir();
71
- await fs.mkdir(dir, { recursive: true });
72
- await fs.writeFile(
238
+ await fs2.mkdir(dir, { recursive: true });
239
+ await fs2.writeFile(
73
240
  storage.getWorkflowRunSnapshotPath(task.runId),
74
241
  JSON.stringify(snapshot, null, 2),
75
242
  "utf8"
76
243
  );
77
244
  await pruneSnapshots(dir);
78
245
  } catch (e) {
79
- debugLogger.warn(`writeWorkflowSnapshot failed for ${task.runId}: ${e}`);
246
+ debugLogger2.warn(`writeWorkflowSnapshot failed for ${task.runId}: ${e}`);
80
247
  }
81
248
  }
82
249
  __name(writeWorkflowSnapshot, "writeWorkflowSnapshot");
@@ -86,22 +253,22 @@ async function listWorkflowSnapshots(config) {
86
253
  const dir = storage.getWorkflowRunsDir();
87
254
  let files;
88
255
  try {
89
- files = (await fs.readdir(dir)).filter((f) => f.endsWith(".json"));
256
+ files = (await fs2.readdir(dir)).filter((f) => f.endsWith(".json"));
90
257
  } catch {
91
258
  return [];
92
259
  }
93
260
  const snapshots = [];
94
261
  for (const file of files) {
95
262
  try {
96
- const raw = await fs.readFile(`${dir}/${file}`, "utf8");
263
+ const raw = await fs2.readFile(`${dir}/${file}`, "utf8");
97
264
  const parsed = JSON.parse(raw);
98
265
  if (!isWorkflowSnapshot(parsed)) {
99
- debugLogger.warn(`skipping invalid workflow snapshot ${file}`);
266
+ debugLogger2.warn(`skipping invalid workflow snapshot ${file}`);
100
267
  continue;
101
268
  }
102
269
  snapshots.push(parsed);
103
270
  } catch (e) {
104
- debugLogger.warn(`skipping unparseable snapshot ${file}: ${e}`);
271
+ debugLogger2.warn(`skipping unparseable snapshot ${file}: ${e}`);
105
272
  }
106
273
  }
107
274
  snapshots.sort((a, b) => (b.startTime ?? 0) - (a.startTime ?? 0));
@@ -199,7 +366,7 @@ __name(isWorkflowSnapshot, "isWorkflowSnapshot");
199
366
  async function pruneSnapshots(dir) {
200
367
  let files;
201
368
  try {
202
- files = (await fs.readdir(dir)).filter((f) => f.endsWith(".json"));
369
+ files = (await fs2.readdir(dir)).filter((f) => f.endsWith(".json"));
203
370
  } catch {
204
371
  return;
205
372
  }
@@ -207,7 +374,7 @@ async function pruneSnapshots(dir) {
207
374
  const stats = await Promise.all(
208
375
  files.map(async (f) => {
209
376
  try {
210
- const s = await fs.stat(`${dir}/${f}`);
377
+ const s = await fs2.stat(`${dir}/${f}`);
211
378
  return { f, mtime: s.mtimeMs };
212
379
  } catch {
213
380
  return { f, mtime: 0 };
@@ -221,12 +388,12 @@ async function pruneSnapshots(dir) {
221
388
  const runId = s.f.replace(/\.json$/, "");
222
389
  const isRunDir = /^wf_[0-9a-f]+$/.test(runId);
223
390
  return Promise.all([
224
- fs.unlink(`${dir}/${s.f}`).catch(
225
- (e) => debugLogger.warn(`prune unlink failed for ${s.f}: ${e}`)
391
+ fs2.unlink(`${dir}/${s.f}`).catch(
392
+ (e) => debugLogger2.warn(`prune unlink failed for ${s.f}: ${e}`)
226
393
  ),
227
394
  ...isRunDir ? [
228
- fs.rm(`${dir}/${runId}`, { recursive: true, force: true }).catch(
229
- (e) => debugLogger.warn(
395
+ fs2.rm(`${dir}/${runId}`, { recursive: true, force: true }).catch(
396
+ (e) => debugLogger2.warn(
230
397
  `prune journal dir failed for ${runId}: ${e}`
231
398
  )
232
399
  )
@@ -237,167 +404,11 @@ async function pruneSnapshots(dir) {
237
404
  }
238
405
  __name(pruneSnapshots, "pruneSnapshots");
239
406
 
240
- // packages/core/src/agents/runtime/workflow-saved.ts
241
- init_esbuild_shims();
242
- import { promises as fs2 } from "node:fs";
243
- import * as path from "node:path";
244
- var debugLogger2 = createDebugLogger("WORKFLOW_SAVED");
245
- var WORKFLOW_NAME_PATTERN = /^[a-z][a-z0-9-]{0,40}$/;
246
- function validateWorkflowName(name) {
247
- if (!name) return "Workflow name is required.";
248
- if (!WORKFLOW_NAME_PATTERN.test(name)) {
249
- return `Invalid workflow name "${name}". Use lower-case letters, digits, and hyphens only (must start with a letter, max 41 chars).`;
250
- }
251
- return null;
252
- }
253
- __name(validateWorkflowName, "validateWorkflowName");
254
- function getSavedWorkflowDirs(config) {
255
- return [
256
- { dir: config.storage.getProjectWorkflowsDir(), source: "project" },
257
- { dir: Storage.getUserWorkflowsDir(), source: "user" }
258
- ];
259
- }
260
- __name(getSavedWorkflowDirs, "getSavedWorkflowDirs");
261
- async function isSymlinkedRoot(dir) {
262
- return fs2.lstat(dir).then((st) => st.isSymbolicLink()).catch(() => false);
263
- }
264
- __name(isSymlinkedRoot, "isSymlinkedRoot");
265
- async function listJsFiles(dir) {
266
- if (await isSymlinkedRoot(dir)) {
267
- debugLogger2.warn(`refusing symlinked saved-workflow dir: ${dir}`);
268
- return [];
269
- }
270
- try {
271
- const names = await fs2.readdir(dir);
272
- const out = [];
273
- for (const n of names) {
274
- if (!n.endsWith(".js")) continue;
275
- const st = await fs2.lstat(path.join(dir, n)).catch(() => null);
276
- if (!st || st.isSymbolicLink()) continue;
277
- out.push(n);
278
- }
279
- return out;
280
- } catch (e) {
281
- const code = e?.code;
282
- if (code !== "ENOENT") {
283
- debugLogger2.warn(`listJsFiles failed for ${dir}: ${e}`);
284
- }
285
- return [];
286
- }
287
- }
288
- __name(listJsFiles, "listJsFiles");
289
- async function readWorkflowFileSecurely(filePath, config) {
290
- const real = await fs2.realpath(filePath);
291
- const dirs = (await Promise.all(
292
- getSavedWorkflowDirs(config).map(async ({ dir }) => {
293
- if (await isSymlinkedRoot(dir)) return null;
294
- try {
295
- return await fs2.realpath(dir);
296
- } catch {
297
- return path.resolve(dir);
298
- }
299
- })
300
- )).filter((d) => d !== null);
301
- const inside = dirs.some((d) => real === d || real.startsWith(d + path.sep));
302
- if (!inside) {
303
- throw new Error(
304
- `refusing to load a workflow file outside the saved-workflow directories: '${filePath}'.`
305
- );
306
- }
307
- return fs2.readFile(real, "utf8");
308
- }
309
- __name(readWorkflowFileSecurely, "readWorkflowFileSecurely");
310
- async function listSavedWorkflows(config) {
311
- const byName = /* @__PURE__ */ new Map();
312
- for (const { dir, source } of [...getSavedWorkflowDirs(config)].reverse()) {
313
- for (const file of await listJsFiles(dir)) {
314
- const name = file.slice(0, -".js".length);
315
- if (!WORKFLOW_NAME_PATTERN.test(name)) continue;
316
- byName.set(name, { name, scriptPath: path.join(dir, file), source });
317
- }
318
- }
319
- return Array.from(byName.values()).sort(
320
- (a, b) => a.name.localeCompare(b.name)
321
- );
322
- }
323
- __name(listSavedWorkflows, "listSavedWorkflows");
324
- async function resolveSavedWorkflowScript(nameOrRef, config) {
325
- if (typeof nameOrRef === "object" && nameOrRef !== null) {
326
- const scriptPath = nameOrRef.scriptPath;
327
- if (typeof scriptPath !== "string" || scriptPath.length === 0) {
328
- throw new Error(
329
- "workflow() expects a workflow name (string) or {scriptPath: string}."
330
- );
331
- }
332
- let script;
333
- try {
334
- script = await readWorkflowFileSecurely(scriptPath, config);
335
- } catch (e) {
336
- throw new Error(
337
- `workflow({scriptPath: '${scriptPath}'}): ${e instanceof Error ? e.message : String(e)}`
338
- );
339
- }
340
- const name2 = path.basename(scriptPath).replace(/\.js$/, "");
341
- return { name: name2, scriptPath, script };
342
- }
343
- if (typeof nameOrRef !== "string") {
344
- throw new Error(
345
- "workflow() expects a workflow name (string) or {scriptPath: string}."
346
- );
347
- }
348
- const name = nameOrRef;
349
- const nameError = validateWorkflowName(name);
350
- if (nameError) {
351
- throw new Error(`workflow('${name}'): ${nameError}`);
352
- }
353
- for (const { dir } of getSavedWorkflowDirs(config)) {
354
- const scriptPath = path.join(dir, `${name}.js`);
355
- try {
356
- const script = await readWorkflowFileSecurely(scriptPath, config);
357
- return { name, scriptPath, script };
358
- } catch {
359
- }
360
- }
361
- const available = (await listSavedWorkflows(config)).map((e) => e.name);
362
- throw new Error(
363
- `workflow('${name}'): no workflow with that name. Available: ${available.length > 0 ? available.join(", ") : "(none)"}.`
364
- );
365
- }
366
- __name(resolveSavedWorkflowScript, "resolveSavedWorkflowScript");
367
- async function saveWorkflowScript(config, opts) {
368
- const { name, scope, script, overwrite = false } = opts;
369
- const nameError = validateWorkflowName(name);
370
- if (nameError) return { status: "invalid-name", error: nameError };
371
- if (!script || script.trim().length === 0) {
372
- return {
373
- status: "empty-script",
374
- error: "This run has no script source to save."
375
- };
376
- }
377
- const dir = scope === "project" ? config.storage.getProjectWorkflowsDir() : Storage.getUserWorkflowsDir();
378
- if (await isSymlinkedRoot(dir)) {
379
- throw new Error(
380
- `refusing to save into a symlinked saved-workflow directory: '${dir}'.`
381
- );
382
- }
383
- const filePath = path.join(dir, `${name}.js`);
384
- if (!overwrite) {
385
- try {
386
- await fs2.access(filePath);
387
- return { status: "exists", name, scope, path: filePath };
388
- } catch {
389
- }
390
- }
391
- await fs2.mkdir(dir, { recursive: true });
392
- await fs2.writeFile(filePath, script, "utf8");
393
- return { status: "saved", name, scope, path: filePath };
394
- }
395
- __name(saveWorkflowScript, "saveWorkflowScript");
396
-
397
407
  export {
398
408
  writeWorkflowSnapshot,
399
409
  listWorkflowSnapshots,
400
410
  validateWorkflowName,
411
+ isSymlinkedRoot,
401
412
  listSavedWorkflows,
402
413
  resolveSavedWorkflowScript,
403
414
  saveWorkflowScript
@@ -12,19 +12,19 @@ import {
12
12
  } from "./chunk-MR3PXB6E.js";
13
13
  import {
14
14
  ideContextStore
15
- } from "./chunk-XYX474JQ.js";
15
+ } from "./chunk-EWIQ3NAE.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";
@@ -5,11 +5,11 @@ import {
5
5
  } from "./chunk-VGC4I5JJ.js";
6
6
  import {
7
7
  atomicWriteJSON
8
- } from "./chunk-7QGEJI7M.js";
8
+ } from "./chunk-23RFD54N.js";
9
9
  import {
10
10
  Storage,
11
11
  getProjectHash
12
- } from "./chunk-2NNTE2ED.js";
12
+ } from "./chunk-UHQFIS7N.js";
13
13
  import {
14
14
  init_esbuild_shims
15
15
  } from "./chunk-5O2XNYP6.js";
@@ -3,17 +3,17 @@
3
3
  import {
4
4
  settleChatRecording,
5
5
  subscribeToHeadlessChatRecordingFailures
6
- } from "./chunk-OI2DR6QB.js";
6
+ } from "./chunk-B5OUL5EL.js";
7
7
  import {
8
8
  handleAtCommand,
9
9
  normalizePartList
10
- } from "./chunk-EEQYTWGU.js";
10
+ } from "./chunk-M4ORUPYI.js";
11
11
  import {
12
12
  JsonOutputAdapter
13
- } from "./chunk-EMGAVCBZ.js";
13
+ } from "./chunk-BPAKYXQ3.js";
14
14
  import {
15
15
  StreamJsonOutputAdapter
16
- } from "./chunk-LI2HEMKO.js";
16
+ } from "./chunk-WBHKK3CU.js";
17
17
  import {
18
18
  buildInitialSystemReminders,
19
19
  buildSystemMessage,
@@ -24,11 +24,11 @@ import {
24
24
  handleSlashCommand,
25
25
  insertAfterFunctionResponses,
26
26
  isSlashCommand
27
- } from "./chunk-2YEZNBSD.js";
27
+ } from "./chunk-FMFBLTLY.js";
28
28
  import {
29
29
  RunBudgetEnforcer,
30
30
  cleanupReviewWorktreeLeases
31
- } from "./chunk-ZXDM7DYV.js";
31
+ } from "./chunk-TQHGJYR3.js";
32
32
  import {
33
33
  AlreadyReportedError,
34
34
  handleBudgetExceededError,
@@ -36,20 +36,20 @@ import {
36
36
  handleError,
37
37
  handleMaxTurnsExceededError,
38
38
  handleToolError
39
- } from "./chunk-C4WBKZJT.js";
39
+ } from "./chunk-JN4IWWMN.js";
40
40
  import {
41
41
  isInlineModelOverrideAllowed
42
- } from "./chunk-GNRVKN76.js";
42
+ } from "./chunk-EKNBU2X7.js";
43
43
  import {
44
44
  buildGoalContinuationParts,
45
45
  buildSessionRecoveryPlanFromApiHistory,
46
46
  detectAutonomousSentinel,
47
47
  detectLoopSentinel,
48
48
  executeToolCall
49
- } from "./chunk-VMDURMFY.js";
49
+ } from "./chunk-W6DUQ5GA.js";
50
50
  import {
51
51
  restoreWorktreeContext
52
- } from "./chunk-UCSV2IZW.js";
52
+ } from "./chunk-62GQFYID.js";
53
53
  import {
54
54
  PLAN_MODE_ENTRY_SIBLING_SKIP_MESSAGE,
55
55
  clampInlineMediaPart,
@@ -58,25 +58,26 @@ import {
58
58
  findPlanModeEntryBatchBoundaryIndex,
59
59
  findRepeatedDuplicateProviderToolCall,
60
60
  getCachedToolCallFingerprint,
61
+ goalToolResultProvenance,
61
62
  isReplayOfHandledToolCall,
62
63
  isToolCallConcurrencySafe,
63
64
  markDuplicateProviderToolCallResponseSent,
64
65
  parseAndFormatApiError,
65
66
  partitionByConcurrencySafety,
66
67
  recordHandledToolCall
67
- } from "./chunk-XYX474JQ.js";
68
+ } from "./chunk-EWIQ3NAE.js";
68
69
  import {
69
70
  parsePositiveIntegerEnv
70
71
  } from "./chunk-6PVPNMXU.js";
71
72
  import {
72
73
  promptIdContext
73
74
  } from "./chunk-O6GEWCJA.js";
74
- import {
75
- GoalPersistenceUnavailableError
76
- } from "./chunk-FN5C6C7G.js";
77
75
  import {
78
76
  addAgentOutputMessageAttributes
79
- } from "./chunk-SDVF6A42.js";
77
+ } from "./chunk-6W2IK5KC.js";
78
+ import {
79
+ GoalPersistenceUnavailableError
80
+ } from "./chunk-XLLQJRAH.js";
80
81
  import {
81
82
  formatFullTurnVisionNotice,
82
83
  formatVisionBridgeNotice,
@@ -86,28 +87,28 @@ import {
86
87
  shouldRunVisionBridge,
87
88
  splitImageParts,
88
89
  uiTelemetryService
89
- } from "./chunk-UX3IFLJM.js";
90
+ } from "./chunk-SZLBBZH4.js";
90
91
  import {
91
92
  endInteractionSpan,
92
93
  getActiveInteractionSpan,
93
94
  isTelemetrySdkInitialized,
94
95
  shutdownTelemetry
95
- } from "./chunk-6US7BF3G.js";
96
+ } from "./chunk-B5PHIJGI.js";
96
97
  import {
97
98
  isSystemReminderContent
98
- } from "./chunk-JUIJ3FXC.js";
99
+ } from "./chunk-CAJTKR6W.js";
99
100
  import {
100
101
  ToolNames,
101
102
  canonicalToolName
102
- } from "./chunk-KOJ6MHD5.js";
103
+ } from "./chunk-UTLCH2FK.js";
103
104
  import {
104
105
  FatalInputError,
105
106
  createDebugLogger,
106
107
  getErrorType
107
- } from "./chunk-2NNTE2ED.js";
108
+ } from "./chunk-UHQFIS7N.js";
108
109
  import {
109
110
  registerCleanup
110
- } from "./chunk-EKP3M4RF.js";
111
+ } from "./chunk-SJ5ERAW3.js";
111
112
  import {
112
113
  init_esbuild_shims
113
114
  } from "./chunk-5O2XNYP6.js";
@@ -400,6 +401,8 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
400
401
  controller: new AbortController(),
401
402
  origin: "runtime",
402
403
  continuationContext: input2.continuationContext,
404
+ ...input2.objectiveUpdated ? { objectiveUpdated: input2.objectiveUpdated } : {},
405
+ ...input2.windDown ? { windDown: true } : {},
403
406
  ...input2.verifierFeedback ? { verifierFeedback: input2.verifierFeedback } : {}
404
407
  });
405
408
  }, "startGoalTurn"),
@@ -413,6 +416,12 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
413
416
  const bindGoalHost = /* @__PURE__ */ __name(() => {
414
417
  goalHostUnbind ??= config.bindGoalTurnHost(goalHost);
415
418
  }, "bindGoalHost");
419
+ const markGoalTurnDelivered = /* @__PURE__ */ __name((turn) => {
420
+ try {
421
+ config.getGoalRuntime().markTurnDelivered(turn.turnKey);
422
+ } catch {
423
+ }
424
+ }, "markGoalTurnDelivered");
416
425
  let settlingGoalTurn;
417
426
  let goalTurnSettlement;
418
427
  const failClosedActiveGoalTurn = /* @__PURE__ */ __name((reason) => {
@@ -783,6 +792,7 @@ ${reason}
783
792
  "The Goal runtime did not schedule a continuation."
784
793
  );
785
794
  }
795
+ markGoalTurnDelivered(activeGoalTurn);
786
796
  initialPartList = buildGoalContinuationParts(activeGoalTurn);
787
797
  slashHandled = true;
788
798
  break;
@@ -1468,16 +1478,21 @@ ${text}
1468
1478
  const { request, response } = orderedResponses[index];
1469
1479
  const finalizedParts = finalized[index].responseParts;
1470
1480
  toolResponseParts.push(...finalizedParts);
1471
- chatRecordingService?.recordToolResult?.(finalizedParts, {
1472
- callId: request.callId,
1473
- status: statusByResponse.get(response) ?? (response.error ? "error" : "success"),
1474
- resultDisplay: response.resultDisplay,
1475
- persistedOutputFiles: finalized[index].persistedOutputFiles,
1476
- artifacts: finalized[index].artifacts,
1477
- error: response.error,
1478
- errorType: response.errorType,
1479
- executionStatus: response.executionStatus
1480
- });
1481
+ const goalProvenance = goalToolResultProvenance(request);
1482
+ chatRecordingService?.recordToolResult?.(
1483
+ finalizedParts,
1484
+ {
1485
+ callId: request.callId,
1486
+ status: statusByResponse.get(response) ?? (response.error ? "error" : "success"),
1487
+ resultDisplay: response.resultDisplay,
1488
+ persistedOutputFiles: finalized[index].persistedOutputFiles,
1489
+ artifacts: finalized[index].artifacts,
1490
+ error: response.error,
1491
+ errorType: response.errorType,
1492
+ executionStatus: response.executionStatus
1493
+ },
1494
+ ...goalProvenance ? [goalProvenance] : []
1495
+ );
1481
1496
  }
1482
1497
  return {
1483
1498
  responseParts: toolResponseParts,
@@ -1636,6 +1651,7 @@ ${text}
1636
1651
  const nextGoalTurn = queuedGoalTurns.shift();
1637
1652
  if (nextGoalTurn) {
1638
1653
  activeGoalTurn = nextGoalTurn;
1654
+ markGoalTurnDelivered(nextGoalTurn);
1639
1655
  isFirstGoalSegment = true;
1640
1656
  currentMessages = [
1641
1657
  {
@@ -1666,6 +1682,7 @@ ${text}
1666
1682
  const nextGoalTurn = queuedGoalTurns.shift();
1667
1683
  if (nextGoalTurn) {
1668
1684
  activeGoalTurn = nextGoalTurn;
1685
+ markGoalTurnDelivered(nextGoalTurn);
1669
1686
  isFirstGoalSegment = true;
1670
1687
  currentMessages = [
1671
1688
  {