@cursor/july 0.1.109 → 0.1.112

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 (1166) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +0 -15
  3. package/dist/bin/agent-serve.js +99 -67
  4. package/dist/channels/bitbucket/api.js +8 -8
  5. package/dist/channels/bitbucket/binding.js +4 -4
  6. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  7. package/dist/channels/bitbucket/bitbucket-webhook.js +1 -1
  8. package/dist/channels/bitbucket/checks.d.ts.map +1 -1
  9. package/dist/channels/bitbucket/checks.js +1 -1
  10. package/dist/channels/bitbucket/cursor-account.js +1 -1
  11. package/dist/channels/bitbucket/events.js +1 -1
  12. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  13. package/dist/channels/checks.d.ts.map +1 -1
  14. package/dist/channels/checks.js +2 -2
  15. package/dist/channels/deployments/deployments-channel.js +1 -1
  16. package/dist/channels/github/cursor-account.js +3 -3
  17. package/dist/channels/github/defaults.d.ts.map +1 -1
  18. package/dist/channels/github/defaults.js +5 -3
  19. package/dist/channels/github/events.js +1 -1
  20. package/dist/channels/github/forward.js +8 -8
  21. package/dist/channels/github/github-channel.d.ts +29 -19
  22. package/dist/channels/github/github-channel.d.ts.map +1 -1
  23. package/dist/channels/github/github-channel.js +46 -32
  24. package/dist/channels/github/progress.d.ts.map +1 -1
  25. package/dist/channels/github/progress.js +7 -2
  26. package/dist/channels/github/state.d.ts +6 -0
  27. package/dist/channels/github/state.d.ts.map +1 -1
  28. package/dist/channels/github/types.d.ts +6 -0
  29. package/dist/channels/github/types.d.ts.map +1 -1
  30. package/dist/channels/gitlab/binding.js +4 -4
  31. package/dist/channels/gitlab/checks.d.ts.map +1 -1
  32. package/dist/channels/gitlab/checks.js +1 -1
  33. package/dist/channels/gitlab/cursor-account.js +1 -1
  34. package/dist/channels/gitlab/events.js +1 -1
  35. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  36. package/dist/channels/gitlab/gitlab-webhook.js +1 -1
  37. package/dist/channels/gitlab/replay.js +2 -2
  38. package/dist/channels/origin/binding.d.ts +2 -0
  39. package/dist/channels/origin/binding.d.ts.map +1 -1
  40. package/dist/channels/origin/binding.js +3 -3
  41. package/dist/channels/origin/checks.d.ts +19 -7
  42. package/dist/channels/origin/checks.d.ts.map +1 -1
  43. package/dist/channels/origin/checks.js +13 -9
  44. package/dist/channels/origin/cursor-account.js +1 -1
  45. package/dist/channels/origin/defaults.d.ts.map +1 -1
  46. package/dist/channels/origin/defaults.js +3 -1
  47. package/dist/channels/origin/events.js +1 -1
  48. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  49. package/dist/channels/origin/origin-channel.js +2 -1
  50. package/dist/channels/origin/origin-webhook.js +2 -2
  51. package/dist/channels/slack/agentic-delivery.d.ts +23 -0
  52. package/dist/channels/slack/agentic-delivery.d.ts.map +1 -0
  53. package/dist/channels/slack/agentic-delivery.js +560 -0
  54. package/dist/channels/slack/agentic-posted.d.ts +30 -0
  55. package/dist/channels/slack/agentic-posted.d.ts.map +1 -0
  56. package/dist/channels/slack/agentic-posted.js +102 -0
  57. package/dist/channels/slack/agentic-signals.d.ts +48 -0
  58. package/dist/channels/slack/agentic-signals.d.ts.map +1 -0
  59. package/dist/channels/slack/agentic-signals.js +204 -0
  60. package/dist/channels/slack/api.d.ts +20 -1
  61. package/dist/channels/slack/api.d.ts.map +1 -1
  62. package/dist/channels/slack/api.js +43 -11
  63. package/dist/channels/slack/approvals.js +1 -1
  64. package/dist/channels/slack/auth.d.ts.map +1 -1
  65. package/dist/channels/slack/auth.js +3 -1
  66. package/dist/channels/slack/blocks.js +3 -3
  67. package/dist/channels/slack/bot-mentions.d.ts.map +1 -1
  68. package/dist/channels/slack/bot-mentions.js +5 -5
  69. package/dist/channels/slack/channel-watch.js +1 -1
  70. package/dist/channels/slack/cli-project.js +3 -3
  71. package/dist/channels/slack/defaults.d.ts +3 -0
  72. package/dist/channels/slack/defaults.d.ts.map +1 -1
  73. package/dist/channels/slack/defaults.js +90 -29
  74. package/dist/channels/slack/dispatch.d.ts +44 -1
  75. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  76. package/dist/channels/slack/dispatch.js +323 -107
  77. package/dist/channels/slack/doctor.js +1 -1
  78. package/dist/channels/slack/eval-directive.js +1 -1
  79. package/dist/channels/slack/external-policy.d.ts +2 -1
  80. package/dist/channels/slack/external-policy.d.ts.map +1 -1
  81. package/dist/channels/slack/external-policy.js +13 -2
  82. package/dist/channels/slack/footer.d.ts +30 -0
  83. package/dist/channels/slack/footer.d.ts.map +1 -0
  84. package/dist/channels/slack/footer.js +88 -0
  85. package/dist/channels/slack/index.d.ts +2 -0
  86. package/dist/channels/slack/index.d.ts.map +1 -1
  87. package/dist/channels/slack/index.js +2 -0
  88. package/dist/channels/slack/interactive.d.ts.map +1 -1
  89. package/dist/channels/slack/interactive.js +5 -3
  90. package/dist/channels/slack/live-delivery.d.ts +1 -1
  91. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  92. package/dist/channels/slack/live-delivery.js +20 -6
  93. package/dist/channels/slack/log.d.ts.map +1 -1
  94. package/dist/channels/slack/log.js +1 -1
  95. package/dist/channels/slack/manifest.js +1 -1
  96. package/dist/channels/slack/nudge-carrier.js +1 -1
  97. package/dist/channels/slack/nudge-store.js +2 -2
  98. package/dist/channels/slack/paint-start.d.ts +22 -0
  99. package/dist/channels/slack/paint-start.d.ts.map +1 -0
  100. package/dist/channels/slack/paint-start.js +91 -0
  101. package/dist/channels/slack/placeholder.d.ts +62 -0
  102. package/dist/channels/slack/placeholder.d.ts.map +1 -0
  103. package/dist/channels/slack/placeholder.js +268 -0
  104. package/dist/channels/slack/progress-delivery.d.ts.map +1 -1
  105. package/dist/channels/slack/progress-delivery.js +13 -4
  106. package/dist/channels/slack/reasoning-chip.d.ts +8 -0
  107. package/dist/channels/slack/reasoning-chip.d.ts.map +1 -0
  108. package/dist/channels/slack/reasoning-chip.js +30 -0
  109. package/dist/channels/slack/recording-sink.d.ts +29 -0
  110. package/dist/channels/slack/recording-sink.d.ts.map +1 -0
  111. package/dist/channels/slack/recording-sink.js +142 -0
  112. package/dist/channels/slack/reply-options.d.ts +8 -1
  113. package/dist/channels/slack/reply-options.d.ts.map +1 -1
  114. package/dist/channels/slack/reply-options.js +59 -14
  115. package/dist/channels/slack/setup.js +1 -1
  116. package/dist/channels/slack/slack-channel.d.ts +2 -2
  117. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  118. package/dist/channels/slack/slack-channel.js +58 -30
  119. package/dist/channels/slack/socket-mode.js +2 -2
  120. package/dist/channels/slack/thread-context.js +5 -5
  121. package/dist/channels/slack/tool-approval-events.d.ts +5 -0
  122. package/dist/channels/slack/tool-approval-events.d.ts.map +1 -1
  123. package/dist/channels/slack/tool-approval-events.js +50 -38
  124. package/dist/channels/slack/tool-cards.js +1 -1
  125. package/dist/channels/slack/tool-chip.d.ts +9 -0
  126. package/dist/channels/slack/tool-chip.d.ts.map +1 -0
  127. package/dist/channels/slack/tool-chip.js +25 -0
  128. package/dist/channels/slack/types.d.ts +49 -7
  129. package/dist/channels/slack/types.d.ts.map +1 -1
  130. package/dist/channels/slack/upload.d.ts +13 -0
  131. package/dist/channels/slack/upload.d.ts.map +1 -0
  132. package/dist/channels/slack/upload.js +135 -0
  133. package/dist/channels.d.ts +10 -14
  134. package/dist/channels.d.ts.map +1 -1
  135. package/dist/channels.js +9 -21
  136. package/dist/dashboard-session-url.d.ts +15 -0
  137. package/dist/dashboard-session-url.d.ts.map +1 -0
  138. package/dist/dashboard-session-url.js +25 -0
  139. package/dist/docs/404.html +3 -3
  140. package/dist/docs/architecture.svg +59 -0
  141. package/dist/docs/assets/app.DxTdhphC.js +309 -0
  142. package/dist/docs/assets/building-with-agents.md.BBCx0AUo.js +9 -0
  143. package/dist/docs/assets/building-with-agents.md.BBCx0AUo.lean.js +1 -0
  144. package/dist/docs/assets/chunks/@localSearchIndexroot.QmjDU6Jh.js +1 -0
  145. package/dist/docs/assets/chunks/{VPLocalSearchBox.CVQERt56.js → VPLocalSearchBox.CR3KTF0X.js} +2 -2
  146. package/dist/docs/assets/chunks/arc.CVVqBOdS.js +1 -0
  147. package/dist/docs/assets/chunks/architectureDiagram-Q4EWVU46.CJHGP4ki.js +36 -0
  148. package/dist/docs/assets/chunks/baseUniq.r7UVVRBP.js +1 -0
  149. package/dist/docs/assets/chunks/blockDiagram-DXYQGD6D.DKmMaTre.js +132 -0
  150. package/dist/docs/assets/chunks/c4Diagram-AHTNJAMY.DDJsntUO.js +10 -0
  151. package/dist/docs/assets/chunks/channel.BjpoSbz_.js +1 -0
  152. package/dist/docs/assets/chunks/chunk-4BX2VUAB.BK2rKt6W.js +1 -0
  153. package/dist/docs/assets/chunks/chunk-4TB4RGXK.DRLV8RnF.js +206 -0
  154. package/dist/docs/assets/chunks/chunk-55IACEB6.DaKjxtb7.js +1 -0
  155. package/dist/docs/assets/chunks/chunk-EDXVE4YY.C5sPCIT1.js +1 -0
  156. package/dist/docs/assets/chunks/chunk-FMBD7UC4.CSGWyNTB.js +15 -0
  157. package/dist/docs/assets/chunks/chunk-OYMX7WX6.D5tK9XEr.js +231 -0
  158. package/dist/docs/assets/chunks/chunk-QZHKN3VN.BeZGd1UZ.js +1 -0
  159. package/dist/docs/assets/chunks/chunk-YZCP3GAM.U_tfWwQR.js +1 -0
  160. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BgxOlMHw.js +1 -0
  161. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BgxOlMHw.js +1 -0
  162. package/dist/docs/assets/chunks/clone.DRuGBKZC.js +1 -0
  163. package/dist/docs/assets/chunks/cose-bilkent-S5V4N54A.DVeRXIb6.js +1 -0
  164. package/dist/docs/assets/chunks/cytoscape.esm.BQk4lpUV.js +331 -0
  165. package/dist/docs/assets/chunks/dagre-KV5264BT.BpKJAeRZ.js +4 -0
  166. package/dist/docs/assets/chunks/defaultLocale.C4B-KCzX.js +1 -0
  167. package/dist/docs/assets/chunks/diagram-5BDNPKRD.BQOtrd1Z.js +10 -0
  168. package/dist/docs/assets/chunks/diagram-G4DWMVQ6.CSDAhjPI.js +24 -0
  169. package/dist/docs/assets/chunks/diagram-MMDJMWI5.Dpztst2S.js +43 -0
  170. package/dist/docs/assets/chunks/diagram-TYMM5635.qJHRizHR.js +24 -0
  171. package/dist/docs/assets/chunks/erDiagram-SMLLAGMA.vbDotH3l.js +85 -0
  172. package/dist/docs/assets/chunks/flowDiagram-DWJPFMVM.CqS_ZQr4.js +162 -0
  173. package/dist/docs/assets/chunks/{framework.BCISBCiQ.js → framework.BNw1pucY.js} +6 -6
  174. package/dist/docs/assets/chunks/ganttDiagram-T4ZO3ILL.DTLdR4pN.js +292 -0
  175. package/dist/docs/assets/chunks/gitGraphDiagram-UUTBAWPF.D04lnbnr.js +106 -0
  176. package/dist/docs/assets/chunks/graph.BlfqLJsM.js +1 -0
  177. package/dist/docs/assets/chunks/infoDiagram-42DDH7IO.tAooImWA.js +2 -0
  178. package/dist/docs/assets/chunks/init.Gi6I4Gst.js +1 -0
  179. package/dist/docs/assets/chunks/ishikawaDiagram-UXIWVN3A.ClUsVqnJ.js +70 -0
  180. package/dist/docs/assets/chunks/journeyDiagram-VCZTEJTY.C3tUgyCg.js +139 -0
  181. package/dist/docs/assets/chunks/kanban-definition-6JOO6SKY.CtD9-QCe.js +89 -0
  182. package/dist/docs/assets/chunks/katex.DkKDou_j.js +257 -0
  183. package/dist/docs/assets/chunks/layout.D38U-LnT.js +1 -0
  184. package/dist/docs/assets/chunks/linear.BJmssyhN.js +1 -0
  185. package/dist/docs/assets/chunks/min.DNgXoouU.js +1 -0
  186. package/dist/docs/assets/chunks/mindmap-definition-QFDTVHPH.Dcp6cxeu.js +96 -0
  187. package/dist/docs/assets/chunks/ordinal.DBvzRdQf.js +1 -0
  188. package/dist/docs/assets/chunks/pieDiagram-DEJITSTG.CLDw6zIs.js +30 -0
  189. package/dist/docs/assets/chunks/quadrantDiagram-34T5L4WZ.CYaeeY4c.js +7 -0
  190. package/dist/docs/assets/chunks/requirementDiagram-MS252O5E.gMYuRpq2.js +84 -0
  191. package/dist/docs/assets/chunks/sankeyDiagram-XADWPNL6.CZqyHFbc.js +10 -0
  192. package/dist/docs/assets/chunks/sequenceDiagram-FGHM5R23.BTsCjUDN.js +157 -0
  193. package/dist/docs/assets/chunks/stateDiagram-FHFEXIEX.CftT9mLJ.js +1 -0
  194. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.-43J68xB.js +1 -0
  195. package/dist/docs/assets/chunks/{theme.Dnsd3XOn.js → theme.B_7J9ZsV.js} +2 -2
  196. package/dist/docs/assets/chunks/timeline-definition-GMOUNBTQ.DbU3WUNw.js +120 -0
  197. package/dist/docs/assets/chunks/vennDiagram-DHZGUBPP.ixsq-q2u.js +34 -0
  198. package/dist/docs/assets/chunks/virtual_mermaid-config.DDnGl6nM.js +1 -0
  199. package/dist/docs/assets/chunks/wardley-RL74JXVD.WRXz-Dux.js +162 -0
  200. package/dist/docs/assets/chunks/wardleyDiagram-NUSXRM2D.C0ewvgbp.js +20 -0
  201. package/dist/docs/assets/chunks/xychartDiagram-5P7HB3ND.nAEhF4bO.js +7 -0
  202. package/dist/docs/assets/deployment.md.D2jQZuFx.js +32 -0
  203. package/dist/docs/assets/deployment.md.D2jQZuFx.lean.js +1 -0
  204. package/dist/docs/assets/evals.md.BYvfZ-PO.js +72 -0
  205. package/dist/docs/assets/evals.md.BYvfZ-PO.lean.js +1 -0
  206. package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.js +30 -0
  207. package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.lean.js +1 -0
  208. package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.js +145 -0
  209. package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.lean.js +1 -0
  210. package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.js +15 -0
  211. package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.lean.js +1 -0
  212. package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.js +43 -0
  213. package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.lean.js +1 -0
  214. package/dist/docs/assets/guides_github.md.BwpBp3ed.js +156 -0
  215. package/dist/docs/assets/guides_github.md.BwpBp3ed.lean.js +1 -0
  216. package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.js +153 -0
  217. package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.lean.js +1 -0
  218. package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.js +16 -0
  219. package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.lean.js +1 -0
  220. package/dist/docs/assets/guides_improve.md.Bnp4F99w.js +22 -0
  221. package/dist/docs/assets/guides_improve.md.Bnp4F99w.lean.js +1 -0
  222. package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.js +50 -0
  223. package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.lean.js +1 -0
  224. package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.js +35 -0
  225. package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.lean.js +1 -0
  226. package/dist/docs/assets/guides_slack.md.Bo96y42E.js +70 -0
  227. package/dist/docs/assets/guides_slack.md.Bo96y42E.lean.js +1 -0
  228. package/dist/docs/assets/guides_webhooks.md.1A72_VEE.js +92 -0
  229. package/dist/docs/assets/guides_webhooks.md.1A72_VEE.lean.js +1 -0
  230. package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.js +7 -0
  231. package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.lean.js +1 -0
  232. package/dist/docs/assets/index.md.C-t81M5J.js +17 -0
  233. package/dist/docs/assets/index.md.C-t81M5J.lean.js +1 -0
  234. package/dist/docs/assets/{quickstart.md.DdQOF7Y8.js → quickstart.md.DAvVhuuU.js} +30 -38
  235. package/dist/docs/assets/quickstart.md.DAvVhuuU.lean.js +1 -0
  236. package/dist/docs/assets/{reference_agent-config.md.CvoL6pof.js → reference_agent-config.md.DGPyw7ms.js} +1 -1
  237. package/dist/docs/assets/{reference_agent-config.md.CvoL6pof.lean.js → reference_agent-config.md.DGPyw7ms.lean.js} +1 -1
  238. package/dist/docs/assets/{reference_artifacts.md.Dior32Qw.js → reference_artifacts.md.Bu_4HmsD.js} +1 -1
  239. package/dist/docs/assets/{reference_artifacts.md.Dior32Qw.lean.js → reference_artifacts.md.Bu_4HmsD.lean.js} +1 -1
  240. package/dist/docs/assets/{reference_channels.md.CAo-iK4j.js → reference_channels.md.nFWbzAic.js} +2 -12
  241. package/dist/docs/assets/{reference_channels.md.CAo-iK4j.lean.js → reference_channels.md.nFWbzAic.lean.js} +1 -1
  242. package/dist/docs/assets/{reference_cli.md.Deg7849l.js → reference_cli.md.DLWDz9ij.js} +5 -3
  243. package/dist/docs/assets/{reference_cli.md.Deg7849l.lean.js → reference_cli.md.DLWDz9ij.lean.js} +1 -1
  244. package/dist/docs/assets/{reference_connections.md.BojkC6c5.js → reference_connections.md.CmyrlXfY.js} +4 -4
  245. package/dist/docs/assets/{reference_connections.md.BojkC6c5.lean.js → reference_connections.md.CmyrlXfY.lean.js} +1 -1
  246. package/dist/docs/assets/reference_evals.md.DNJzM_yf.js +57 -0
  247. package/dist/docs/assets/reference_evals.md.DNJzM_yf.lean.js +1 -0
  248. package/dist/docs/assets/reference_extensions.md.Ceq-qT8d.js +58 -0
  249. package/dist/docs/assets/reference_extensions.md.Ceq-qT8d.lean.js +1 -0
  250. package/dist/docs/assets/{reference_hooks.md.BlM_bOg6.js → reference_hooks.md.B7uzNENk.js} +3 -3
  251. package/dist/docs/assets/{reference_hooks.md.BlM_bOg6.lean.js → reference_hooks.md.B7uzNENk.lean.js} +1 -1
  252. package/dist/docs/assets/{reference_http-api.md.BwaCo-VO.js → reference_http-api.md.CduHavZ2.js} +3 -3
  253. package/dist/docs/assets/{reference_http-api.md.BwaCo-VO.lean.js → reference_http-api.md.CduHavZ2.lean.js} +1 -1
  254. package/dist/docs/assets/{reference_instructions.md.CR7XSsGk.js → reference_instructions.md.CU1My5My.js} +1 -1
  255. package/dist/docs/assets/{reference_instructions.md.CR7XSsGk.lean.js → reference_instructions.md.CU1My5My.lean.js} +1 -1
  256. package/dist/docs/assets/{reference_playground.md.DLnoaczX.js → reference_playground.md.Ch2d0Iqi.js} +1 -1
  257. package/dist/docs/assets/{reference_playground.md.DLnoaczX.lean.js → reference_playground.md.Ch2d0Iqi.lean.js} +1 -1
  258. package/dist/docs/assets/{reference_project-layout.md.BEU8MtQV.js → reference_project-layout.md.BGhgpy9V.js} +3 -3
  259. package/dist/docs/assets/{reference_project-layout.md.BEU8MtQV.lean.js → reference_project-layout.md.BGhgpy9V.lean.js} +1 -1
  260. package/dist/docs/assets/{reference_prompt.md.DnaD5dNK.js → reference_prompt.md.Ccp0R53H.js} +1 -1
  261. package/dist/docs/assets/{reference_prompt.md.DnaD5dNK.lean.js → reference_prompt.md.Ccp0R53H.lean.js} +1 -1
  262. package/dist/docs/assets/{reference_schedules.md.DI_JrHgq.js → reference_schedules.md.B2Nm6FaD.js} +1 -1
  263. package/dist/docs/assets/{reference_schedules.md.DI_JrHgq.lean.js → reference_schedules.md.B2Nm6FaD.lean.js} +1 -1
  264. package/dist/docs/assets/{reference_sessions.md.CyXV1MUw.js → reference_sessions.md.1_6Vyv7x.js} +1 -1
  265. package/dist/docs/assets/{reference_sessions.md.CyXV1MUw.lean.js → reference_sessions.md.1_6Vyv7x.lean.js} +1 -1
  266. package/dist/docs/assets/{reference_skills.md.l2ezAcaN.js → reference_skills.md.DjQkRefx.js} +1 -1
  267. package/dist/docs/assets/{reference_skills.md.l2ezAcaN.lean.js → reference_skills.md.DjQkRefx.lean.js} +1 -1
  268. package/dist/docs/assets/{reference_subagents.md.CfsIloPm.js → reference_subagents.md.BHsSMMyO.js} +2 -2
  269. package/dist/docs/assets/{reference_subagents.md.CfsIloPm.lean.js → reference_subagents.md.BHsSMMyO.lean.js} +1 -1
  270. package/dist/docs/assets/{reference_tools.md.aGrn99hP.js → reference_tools.md.BYzUTeVA.js} +4 -4
  271. package/dist/docs/assets/{reference_tools.md.aGrn99hP.lean.js → reference_tools.md.BYzUTeVA.lean.js} +1 -1
  272. package/dist/docs/assets/{style.DCD_zyg3.css → style.Cfo2vbik.css} +1 -1
  273. package/dist/docs/assets/{templates_agentic-owners.md.BZSH4N9z.js → templates_agentic-owners.md.9M575F5C.js} +1 -1
  274. package/dist/docs/assets/{templates_agentic-owners.md.BZSH4N9z.lean.js → templates_agentic-owners.md.9M575F5C.lean.js} +1 -1
  275. package/dist/docs/assets/{templates_pr-autofixer.md.Bds_XWcV.js → templates_pr-autofixer.md.ws0DDXDy.js} +1 -1
  276. package/dist/docs/assets/{templates_pr-autofixer.md.Bds_XWcV.lean.js → templates_pr-autofixer.md.ws0DDXDy.lean.js} +1 -1
  277. package/dist/docs/assets/{templates_security-reviewer.md.lshxbCLK.js → templates_security-reviewer.md.KEFYXzfK.js} +1 -1
  278. package/dist/docs/assets/{templates_security-reviewer.md.lshxbCLK.lean.js → templates_security-reviewer.md.KEFYXzfK.lean.js} +1 -1
  279. package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.js +3 -0
  280. package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.lean.js +1 -0
  281. package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.js +3 -0
  282. package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.lean.js +1 -0
  283. package/dist/docs/assets/{templates_triage.md.Co4UNzkZ.js → templates_triage.md.CVGe_FG6.js} +1 -1
  284. package/dist/docs/assets/{templates_triage.md.Co4UNzkZ.lean.js → templates_triage.md.CVGe_FG6.lean.js} +1 -1
  285. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.js +1 -0
  286. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.lean.js +1 -0
  287. package/dist/docs/building-with-agents.html +47 -18
  288. package/dist/docs/building-with-agents.md +94 -84
  289. package/dist/docs/deployment.html +62 -48
  290. package/dist/docs/deployment.md +117 -364
  291. package/dist/docs/evals.html +88 -194
  292. package/dist/docs/evals.md +146 -673
  293. package/dist/docs/guides/agent-to-agent.html +65 -12
  294. package/dist/docs/guides/agent-to-agent.md +125 -91
  295. package/dist/docs/guides/bitbucket.html +182 -14
  296. package/dist/docs/guides/bitbucket.md +249 -48
  297. package/dist/docs/guides/cloud-agents.html +49 -10
  298. package/dist/docs/guides/cloud-agents.md +123 -66
  299. package/dist/docs/guides/convert-automation.html +83 -19
  300. package/dist/docs/guides/convert-automation.md +156 -147
  301. package/dist/docs/guides/github.html +187 -62
  302. package/dist/docs/guides/github.md +260 -245
  303. package/dist/docs/guides/gitlab.html +187 -15
  304. package/dist/docs/guides/gitlab.md +249 -50
  305. package/dist/docs/guides/grokbot-agents.html +51 -11
  306. package/dist/docs/guides/grokbot-agents.md +116 -63
  307. package/dist/docs/guides/improve.html +51 -10
  308. package/dist/docs/guides/improve.md +111 -58
  309. package/dist/docs/guides/mcp-oauth.html +77 -22
  310. package/dist/docs/guides/mcp-oauth.md +111 -121
  311. package/dist/docs/guides/opentelemetry.html +72 -30
  312. package/dist/docs/guides/opentelemetry.md +105 -187
  313. package/dist/docs/guides/slack.html +89 -24
  314. package/dist/docs/guides/slack.md +170 -191
  315. package/dist/docs/guides/webhooks.html +100 -200
  316. package/dist/docs/guides/webhooks.md +154 -386
  317. package/dist/docs/hashmap.json +1 -1
  318. package/dist/docs/hillclimbing.html +47 -11
  319. package/dist/docs/hillclimbing.md +101 -55
  320. package/dist/docs/index.html +57 -12
  321. package/dist/docs/index.md +83 -150
  322. package/dist/docs/llms-full.txt +6244 -10784
  323. package/dist/docs/llms.txt +23 -46
  324. package/dist/docs/quickstart.html +70 -45
  325. package/dist/docs/quickstart.md +44 -105
  326. package/dist/docs/reference/agent-config.html +41 -8
  327. package/dist/docs/reference/artifacts.html +41 -8
  328. package/dist/docs/reference/channels.html +41 -18
  329. package/dist/docs/reference/channels.md +0 -16
  330. package/dist/docs/reference/cli.html +44 -9
  331. package/dist/docs/reference/cli.md +2 -16
  332. package/dist/docs/reference/connections.html +43 -10
  333. package/dist/docs/reference/connections.md +3 -5
  334. package/dist/docs/reference/evals.html +116 -0
  335. package/dist/docs/reference/evals.md +293 -0
  336. package/dist/docs/reference/extensions.html +83 -54
  337. package/dist/docs/reference/extensions.md +127 -199
  338. package/dist/docs/reference/hooks.html +42 -9
  339. package/dist/docs/reference/hooks.md +34 -36
  340. package/dist/docs/reference/http-api.html +42 -9
  341. package/dist/docs/reference/http-api.md +5 -5
  342. package/dist/docs/reference/instructions.html +41 -8
  343. package/dist/docs/reference/playground.html +40 -7
  344. package/dist/docs/reference/playground.md +2 -2
  345. package/dist/docs/reference/project-layout.html +42 -9
  346. package/dist/docs/reference/project-layout.md +3 -4
  347. package/dist/docs/reference/prompt.html +41 -8
  348. package/dist/docs/reference/schedules.html +41 -8
  349. package/dist/docs/reference/sessions.html +40 -7
  350. package/dist/docs/reference/sessions.md +5 -4
  351. package/dist/docs/reference/skills.html +41 -8
  352. package/dist/docs/reference/subagents.html +41 -8
  353. package/dist/docs/reference/subagents.md +2 -4
  354. package/dist/docs/reference/tools.html +43 -10
  355. package/dist/docs/reference/tools.md +2 -5
  356. package/dist/docs/templates/agentic-owners.html +41 -8
  357. package/dist/docs/templates/pr-autofixer.html +41 -8
  358. package/dist/docs/templates/security-reviewer.html +41 -8
  359. package/dist/docs/templates/thermo-quality-review.html +62 -0
  360. package/dist/docs/templates/thermo-quality-review.md +75 -0
  361. package/dist/docs/templates/thermo-review.html +62 -0
  362. package/dist/docs/templates/thermo-review.md +74 -0
  363. package/dist/docs/templates/triage.html +41 -8
  364. package/dist/docs/troubleshooting.html +41 -8
  365. package/dist/docs/troubleshooting.md +97 -67
  366. package/dist/evals/assertions.js +19 -19
  367. package/dist/evals/expect.js +1 -1
  368. package/dist/evals/judge.js +1 -1
  369. package/dist/evals/reporters.d.ts.map +1 -1
  370. package/dist/evals/reporters.js +8 -8
  371. package/dist/evals/run-facts.js +2 -2
  372. package/dist/evals.d.ts +1 -1
  373. package/dist/evals.d.ts.map +1 -1
  374. package/dist/evals.js +7 -7
  375. package/dist/extensions/cursor-cloud-agents/extension.js +1 -1
  376. package/dist/extensions/cursor-cloud-agents/lib/backend.js +3 -3
  377. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  378. package/dist/extensions/cursor-cloud-agents/lib/repos.js +6 -6
  379. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts.map +1 -1
  380. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -2
  381. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
  382. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  383. package/dist/extensions/improve/extension.d.ts +3 -1
  384. package/dist/extensions/improve/extension.d.ts.map +1 -1
  385. package/dist/extensions/improve/extension.js +4 -2
  386. package/dist/extensions/improve/skills/yourself.js +2 -2
  387. package/dist/extensions/slack-communication/extension.d.ts +28 -0
  388. package/dist/extensions/slack-communication/extension.d.ts.map +1 -0
  389. package/dist/extensions/slack-communication/extension.js +32 -0
  390. package/dist/extensions/slack-communication/skills/slack-voice.d.ts +5 -0
  391. package/dist/extensions/slack-communication/skills/slack-voice.d.ts.map +1 -0
  392. package/dist/extensions/slack-communication/skills/slack-voice.js +54 -0
  393. package/dist/extensions/slack-communication/tools/delete-message.d.ts +4 -0
  394. package/dist/extensions/slack-communication/tools/delete-message.d.ts.map +1 -0
  395. package/dist/extensions/slack-communication/tools/delete-message.js +29 -0
  396. package/dist/extensions/slack-communication/tools/edit-message.d.ts +4 -0
  397. package/dist/extensions/slack-communication/tools/edit-message.d.ts.map +1 -0
  398. package/dist/extensions/slack-communication/tools/edit-message.js +37 -0
  399. package/dist/extensions/slack-communication/tools/post-card.d.ts +4 -0
  400. package/dist/extensions/slack-communication/tools/post-card.d.ts.map +1 -0
  401. package/dist/extensions/slack-communication/tools/post-card.js +25 -0
  402. package/dist/extensions/slack-communication/tools/post-file.d.ts +4 -0
  403. package/dist/extensions/slack-communication/tools/post-file.d.ts.map +1 -0
  404. package/dist/extensions/slack-communication/tools/post-file.js +76 -0
  405. package/dist/extensions/slack-communication/tools/post-update.d.ts +4 -0
  406. package/dist/extensions/slack-communication/tools/post-update.d.ts.map +1 -0
  407. package/dist/extensions/slack-communication/tools/post-update.js +36 -0
  408. package/dist/extensions/slack-communication/tools/react.d.ts +4 -0
  409. package/dist/extensions/slack-communication/tools/react.d.ts.map +1 -0
  410. package/dist/extensions/slack-communication/tools/react.js +27 -0
  411. package/dist/extensions/slack-communication/tools/set-status.d.ts +4 -0
  412. package/dist/extensions/slack-communication/tools/set-status.d.ts.map +1 -0
  413. package/dist/extensions/slack-communication/tools/set-status.js +18 -0
  414. package/dist/files-backends/cursor-hosted.d.ts +18 -6
  415. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  416. package/dist/files-backends/cursor-hosted.js +357 -74
  417. package/dist/files-backends/local-fs.js +1 -1
  418. package/dist/files.d.ts +15 -0
  419. package/dist/files.d.ts.map +1 -1
  420. package/dist/filesystem.d.ts +46 -2
  421. package/dist/filesystem.d.ts.map +1 -1
  422. package/dist/filesystem.js +160 -113
  423. package/dist/index.d.ts +7 -10
  424. package/dist/index.d.ts.map +1 -1
  425. package/dist/index.js +5 -7
  426. package/dist/internal/advertise-tools.js +6 -6
  427. package/dist/internal/approval-gate.js +1 -1
  428. package/dist/internal/artifacts-store.js +3 -3
  429. package/dist/internal/as-of.js +2 -2
  430. package/dist/internal/authored-alias-hooks.js +1 -1
  431. package/dist/internal/builtin-tools/reminders.js +2 -2
  432. package/dist/internal/chat-client.js +5 -5
  433. package/dist/internal/cli-ax.d.ts +7 -0
  434. package/dist/internal/cli-ax.d.ts.map +1 -1
  435. package/dist/internal/cli-ax.js +140 -27
  436. package/dist/internal/cli-bitbucket.js +10 -10
  437. package/dist/internal/cli-convert-automation.js +2 -2
  438. package/dist/internal/cli-cursor.d.ts +3 -11
  439. package/dist/internal/cli-cursor.d.ts.map +1 -1
  440. package/dist/internal/cli-cursor.js +5 -10
  441. package/dist/internal/cli-deploy.d.ts +12 -2
  442. package/dist/internal/cli-deploy.d.ts.map +1 -1
  443. package/dist/internal/cli-deploy.js +328 -96
  444. package/dist/internal/cli-docs.js +5 -5
  445. package/dist/internal/cli-github.js +15 -16
  446. package/dist/internal/cli-gitlab.js +10 -10
  447. package/dist/internal/cli-manifest.js +1 -1
  448. package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
  449. package/dist/internal/cli-mcp-oauth.js +5 -5
  450. package/dist/internal/cli-mcp.js +3 -3
  451. package/dist/internal/cli-skills.js +2 -2
  452. package/dist/internal/cli-slack.js +5 -5
  453. package/dist/internal/cloud-turn-cost.js +1 -1
  454. package/dist/internal/continuation-identity.d.ts.map +1 -1
  455. package/dist/internal/continuation-identity.js +15 -9
  456. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  457. package/dist/internal/conversation-mirror.js +33 -2
  458. package/dist/internal/convert-automation/convert-workflow.js +25 -24
  459. package/dist/internal/convert-automation/types.d.ts +8 -0
  460. package/dist/internal/convert-automation/types.d.ts.map +1 -1
  461. package/dist/internal/cursor/account-mcp.d.ts +2 -2
  462. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  463. package/dist/internal/cursor/account-mcp.js +32 -27
  464. package/dist/internal/cursor/backend-client.d.ts +15 -10
  465. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  466. package/dist/internal/cursor/backend-client.js +17 -11
  467. package/dist/internal/cursor/credentials.js +1 -1
  468. package/dist/internal/cursor/hosted-store-secrets.d.ts +16 -0
  469. package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
  470. package/dist/internal/cursor/hosted-store-secrets.js +25 -0
  471. package/dist/internal/cursor-account-mcp-auth.js +9 -9
  472. package/dist/internal/cursor-agent-template.d.ts +1 -1
  473. package/dist/internal/cursor-agent-template.d.ts.map +1 -1
  474. package/dist/internal/cursor-agent-template.js +2 -0
  475. package/dist/internal/cursor-deployment-relay.js +9 -9
  476. package/dist/internal/cursor-event-relay.js +10 -10
  477. package/dist/internal/cursor-relay-core.js +2 -2
  478. package/dist/internal/deploy-client.d.ts +106 -9
  479. package/dist/internal/deploy-client.d.ts.map +1 -1
  480. package/dist/internal/deploy-client.js +171 -23
  481. package/dist/internal/deploy-manifest.d.ts +13 -0
  482. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  483. package/dist/internal/deploy-manifest.js +32 -16
  484. package/dist/internal/discovery/agent-config.d.ts +5 -0
  485. package/dist/internal/discovery/agent-config.d.ts.map +1 -1
  486. package/dist/internal/discovery/agent-config.js +27 -0
  487. package/dist/internal/discovery/agent.d.ts.map +1 -1
  488. package/dist/internal/discovery/agent.js +10 -8
  489. package/dist/internal/discovery/channels.js +4 -4
  490. package/dist/internal/discovery/connections.js +4 -4
  491. package/dist/internal/discovery/cursor-plugin.js +12 -12
  492. package/dist/internal/discovery/extension-overlay.js +3 -3
  493. package/dist/internal/discovery/extensions.js +6 -6
  494. package/dist/internal/discovery/info.js +9 -9
  495. package/dist/internal/discovery/instructions.js +1 -1
  496. package/dist/internal/discovery/project.d.ts.map +1 -1
  497. package/dist/internal/discovery/project.js +4 -4
  498. package/dist/internal/discovery/services.js +1 -1
  499. package/dist/internal/discovery/tools.js +1 -1
  500. package/dist/internal/docs-site.js +2 -2
  501. package/dist/internal/env-file.js +1 -1
  502. package/dist/internal/eval-run-store.d.ts.map +1 -1
  503. package/dist/internal/eval-run-store.js +7 -7
  504. package/dist/internal/eval-runner.js +14 -14
  505. package/dist/internal/evals-client.js +4 -4
  506. package/dist/internal/event-log.js +8 -8
  507. package/dist/internal/event-mapper.d.ts +18 -0
  508. package/dist/internal/event-mapper.d.ts.map +1 -1
  509. package/dist/internal/event-mapper.js +34 -2
  510. package/dist/internal/filesystem/format.d.ts.map +1 -1
  511. package/dist/internal/filesystem/format.js +6 -3
  512. package/dist/internal/filesystem/scratch.js +3 -3
  513. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  514. package/dist/internal/filesystem/tools.js +7 -7
  515. package/dist/internal/filesystem/walk.d.ts +7 -4
  516. package/dist/internal/filesystem/walk.d.ts.map +1 -1
  517. package/dist/internal/filesystem/walk.js +35 -12
  518. package/dist/internal/framework-file-storage.d.ts +6 -2
  519. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  520. package/dist/internal/framework-file-storage.js +91 -2
  521. package/dist/internal/framework-storage-selection.d.ts +0 -6
  522. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  523. package/dist/internal/framework-storage-selection.js +2 -11
  524. package/dist/internal/github-fanout.js +3 -3
  525. package/dist/internal/guest-network.js +4 -4
  526. package/dist/internal/host-files.js +1 -1
  527. package/dist/internal/host-kv.js +2 -2
  528. package/dist/internal/hosted-admission-adapter.d.ts +5 -0
  529. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  530. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  531. package/dist/internal/hosted-catch-protocol.js +2 -4
  532. package/dist/internal/hosted-catch.js +1 -1
  533. package/dist/internal/hosted-delivery-protocol.d.ts +46 -0
  534. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  535. package/dist/internal/hosted-delivery-protocol.js +126 -9
  536. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  537. package/dist/internal/hosted-delivery.js +209 -64
  538. package/dist/internal/hosted-execution-diag.js +3 -3
  539. package/dist/internal/hosted-execution-latency.d.ts +80 -0
  540. package/dist/internal/hosted-execution-latency.d.ts.map +1 -0
  541. package/dist/internal/hosted-execution-latency.js +220 -0
  542. package/dist/internal/hosting.d.ts +5 -5
  543. package/dist/internal/hosting.d.ts.map +1 -1
  544. package/dist/internal/hosting.js +5 -6
  545. package/dist/internal/http-channel-define.d.ts +11 -0
  546. package/dist/internal/http-channel-define.d.ts.map +1 -0
  547. package/dist/internal/http-channel-define.js +18 -0
  548. package/dist/internal/http-channel.d.ts +2 -3
  549. package/dist/internal/http-channel.d.ts.map +1 -1
  550. package/dist/internal/http-channel.js +3 -4
  551. package/dist/internal/http-control-plane-session.d.ts +7 -3
  552. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  553. package/dist/internal/http-control-plane-session.js +22 -10
  554. package/dist/internal/incoming-headers-to-fetch.d.ts +10 -0
  555. package/dist/internal/incoming-headers-to-fetch.d.ts.map +1 -0
  556. package/dist/internal/incoming-headers-to-fetch.js +41 -0
  557. package/dist/internal/init-interview.js +7 -7
  558. package/dist/internal/init-project.d.ts.map +1 -1
  559. package/dist/internal/init-project.js +18 -14
  560. package/dist/internal/init-scaffold.js +1 -1
  561. package/dist/internal/inline-stdio-mcp.js +2 -2
  562. package/dist/internal/install-cursor-skills.js +10 -10
  563. package/dist/internal/json-schema.js +1 -1
  564. package/dist/internal/local-control-plane.d.ts.map +1 -1
  565. package/dist/internal/local-control-plane.js +3 -3
  566. package/dist/internal/local-env.js +3 -3
  567. package/dist/internal/log-ring.js +1 -1
  568. package/dist/internal/logs-client.js +1 -1
  569. package/dist/internal/mcp-endpoint.js +8 -8
  570. package/dist/internal/mcp-host.js +4 -4
  571. package/dist/internal/mcp-oauth-on-demand.js +3 -3
  572. package/dist/internal/mcp-oauth.js +5 -5
  573. package/dist/internal/net.js +2 -2
  574. package/dist/internal/otel/config.js +3 -3
  575. package/dist/internal/otel/runtime.js +13 -13
  576. package/dist/internal/peer-connections.js +2 -2
  577. package/dist/internal/platform-schedule-sync.js +1 -1
  578. package/dist/internal/platform-timers.js +1 -1
  579. package/dist/internal/playground/static.js +2 -2
  580. package/dist/internal/playground/toolchain.js +2 -2
  581. package/dist/internal/playground-proxy.js +3 -3
  582. package/dist/internal/process-memory-telemetry.js +1 -1
  583. package/dist/internal/reminder-runner.d.ts.map +1 -1
  584. package/dist/internal/reminder-runner.js +7 -7
  585. package/dist/internal/reminder-store.js +1 -1
  586. package/dist/internal/request-error-status.d.ts.map +1 -1
  587. package/dist/internal/request-error-status.js +9 -0
  588. package/dist/internal/resolved-connections.js +8 -8
  589. package/dist/internal/result-output.d.ts +14 -2
  590. package/dist/internal/result-output.d.ts.map +1 -1
  591. package/dist/internal/result-output.js +45 -2
  592. package/dist/internal/router.js +4 -4
  593. package/dist/internal/run-client.js +2 -2
  594. package/dist/internal/schedule-runner.js +6 -6
  595. package/dist/internal/scm/pr-url.d.ts +3 -1
  596. package/dist/internal/scm/pr-url.d.ts.map +1 -1
  597. package/dist/internal/scm/pr-url.js +10 -2
  598. package/dist/internal/sdk-runner.d.ts.map +1 -1
  599. package/dist/internal/sdk-runner.js +14 -15
  600. package/dist/internal/serve-restart.js +1 -1
  601. package/dist/internal/server.d.ts.map +1 -1
  602. package/dist/internal/server.js +175 -126
  603. package/dist/internal/session-cost.js +3 -3
  604. package/dist/internal/session-engine.d.ts +34 -0
  605. package/dist/internal/session-engine.d.ts.map +1 -1
  606. package/dist/internal/session-engine.js +386 -184
  607. package/dist/internal/session-run-log.d.ts.map +1 -1
  608. package/dist/internal/session-run-log.js +4 -4
  609. package/dist/internal/session-store.d.ts +47 -3
  610. package/dist/internal/session-store.d.ts.map +1 -1
  611. package/dist/internal/session-store.js +198 -33
  612. package/dist/internal/sessions-client.js +3 -3
  613. package/dist/internal/skill-catalog.d.ts +28 -0
  614. package/dist/internal/skill-catalog.d.ts.map +1 -0
  615. package/dist/internal/skill-catalog.js +44 -0
  616. package/dist/internal/slack-thread-key.d.ts +7 -0
  617. package/dist/internal/slack-thread-key.d.ts.map +1 -0
  618. package/dist/internal/slack-thread-key.js +10 -0
  619. package/dist/internal/sleep.js +1 -1
  620. package/dist/internal/storage-coordinator.d.ts +17 -0
  621. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  622. package/dist/internal/storage-coordinator.js +111 -11
  623. package/dist/internal/storage.d.ts +2 -0
  624. package/dist/internal/storage.d.ts.map +1 -0
  625. package/dist/internal/storage.js +1 -0
  626. package/dist/internal/store-mirror.js +4 -4
  627. package/dist/internal/terminal-style.js +2 -2
  628. package/dist/internal/tool-result.js +3 -3
  629. package/dist/internal/trajectory.js +7 -7
  630. package/dist/internal/turn-governor.js +2 -2
  631. package/dist/internal/turn-outbox.js +1 -1
  632. package/dist/internal/update-check.js +2 -2
  633. package/dist/internal/v2-hosting.d.ts +9 -0
  634. package/dist/internal/v2-hosting.d.ts.map +1 -1
  635. package/dist/internal/v2-hosting.js +10 -0
  636. package/dist/internal/workspace.d.ts +13 -10
  637. package/dist/internal/workspace.d.ts.map +1 -1
  638. package/dist/internal/workspace.js +17 -16
  639. package/dist/kv/memory-kv.d.ts +6 -4
  640. package/dist/kv/memory-kv.d.ts.map +1 -1
  641. package/dist/kv/memory-kv.js +9 -7
  642. package/dist/kv.d.ts +4 -7
  643. package/dist/kv.d.ts.map +1 -1
  644. package/dist/kv.js +4 -7
  645. package/dist/otel-public.d.ts +7 -0
  646. package/dist/otel-public.d.ts.map +1 -0
  647. package/dist/otel-public.js +5 -0
  648. package/dist/otel.d.ts +7 -2
  649. package/dist/otel.d.ts.map +1 -1
  650. package/dist/otel.js +7 -2
  651. package/dist/playground/assets/index-B1c1LeIf.js +67 -0
  652. package/dist/playground/assets/index-CK2LX3iD.css +1 -0
  653. package/dist/playground/index.html +2 -2
  654. package/dist/prompt.js +1 -1
  655. package/dist/result.d.ts +10 -4
  656. package/dist/result.d.ts.map +1 -1
  657. package/dist/result.js +9 -3
  658. package/dist/storage-backends/cursor-hosted-v2.js +2 -2
  659. package/dist/storage-backends/cursor-hosted.d.ts +5 -17
  660. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  661. package/dist/storage-backends/cursor-hosted.js +6 -20
  662. package/dist/storage-backends/file-kv.js +7 -7
  663. package/dist/storage.d.ts +20 -2
  664. package/dist/storage.d.ts.map +1 -1
  665. package/dist/storage.js +7 -6
  666. package/dist/types.d.ts +76 -11
  667. package/dist/types.d.ts.map +1 -1
  668. package/dist/types.js +12 -4
  669. package/docs/README.md +85 -152
  670. package/docs/building-with-agents.md +96 -86
  671. package/docs/deployment.md +118 -365
  672. package/docs/evals.md +147 -674
  673. package/docs/guides/agent-to-agent.md +126 -92
  674. package/docs/guides/bitbucket.md +250 -49
  675. package/docs/guides/cloud-agents.md +124 -67
  676. package/docs/guides/convert-automation.md +157 -148
  677. package/docs/guides/github.md +261 -246
  678. package/docs/guides/gitlab.md +250 -51
  679. package/docs/guides/grokbot-agents.md +117 -64
  680. package/docs/guides/improve.md +112 -59
  681. package/docs/guides/mcp-oauth.md +112 -122
  682. package/docs/guides/opentelemetry.md +106 -188
  683. package/docs/guides/slack.md +171 -192
  684. package/docs/guides/webhooks.md +155 -387
  685. package/docs/hillclimbing.md +102 -56
  686. package/docs/quickstart.md +45 -106
  687. package/docs/reference/channels.md +0 -16
  688. package/docs/reference/cli.md +2 -16
  689. package/docs/reference/connections.md +3 -5
  690. package/docs/reference/evals.md +298 -0
  691. package/docs/reference/extensions.md +128 -200
  692. package/docs/reference/hooks.md +34 -36
  693. package/docs/reference/http-api.md +5 -5
  694. package/docs/reference/playground.md +2 -2
  695. package/docs/reference/project-layout.md +3 -4
  696. package/docs/reference/sessions.md +5 -4
  697. package/docs/reference/subagents.md +2 -4
  698. package/docs/reference/tools.md +2 -5
  699. package/docs/templates/thermo-quality-review.md +80 -0
  700. package/docs/templates/thermo-review.md +79 -0
  701. package/docs/troubleshooting.md +98 -68
  702. package/package.json +55 -37
  703. package/skills/framework-map/SKILL.md +2 -2
  704. package/skills/github/SKILL.md +21 -13
  705. package/skills/otel/SKILL.md +8 -18
  706. package/src/bin/agent-serve.ts +115 -72
  707. package/src/channels/bitbucket/api.ts +8 -8
  708. package/src/channels/bitbucket/binding.ts +4 -4
  709. package/src/channels/bitbucket/bitbucket-channel.ts +1 -1
  710. package/src/channels/bitbucket/bitbucket-webhook.ts +1 -1
  711. package/src/channels/bitbucket/checks.ts +3 -4
  712. package/src/channels/bitbucket/cursor-account.ts +1 -1
  713. package/src/channels/bitbucket/events.ts +1 -1
  714. package/src/channels/change-monitors/change-monitors-channel.ts +2 -2
  715. package/src/channels/checks.ts +5 -4
  716. package/src/channels/deployments/deployments-channel.ts +1 -1
  717. package/src/channels/github/api.ts +1 -1
  718. package/src/channels/github/checks.ts +1 -1
  719. package/src/channels/github/cursor-account.ts +3 -3
  720. package/src/channels/github/defaults.ts +8 -4
  721. package/src/channels/github/events.ts +1 -1
  722. package/src/channels/github/forward.ts +8 -8
  723. package/src/channels/github/github-channel.ts +48 -21
  724. package/src/channels/github/progress.ts +7 -2
  725. package/src/channels/github/state.ts +6 -0
  726. package/src/channels/github/types.ts +6 -0
  727. package/src/channels/gitlab/binding.ts +4 -4
  728. package/src/channels/gitlab/checks.ts +3 -4
  729. package/src/channels/gitlab/cursor-account.ts +1 -1
  730. package/src/channels/gitlab/events.ts +1 -1
  731. package/src/channels/gitlab/gitlab-channel.ts +1 -1
  732. package/src/channels/gitlab/gitlab-webhook.ts +1 -1
  733. package/src/channels/gitlab/replay.ts +2 -2
  734. package/src/channels/origin/binding.ts +6 -3
  735. package/src/channels/origin/checks.ts +27 -17
  736. package/src/channels/origin/cursor-account.ts +1 -1
  737. package/src/channels/origin/defaults.ts +5 -1
  738. package/src/channels/origin/events.ts +1 -1
  739. package/src/channels/origin/origin-channel.ts +2 -1
  740. package/src/channels/origin/origin-webhook.ts +2 -2
  741. package/src/channels/slack/agentic-delivery.ts +661 -0
  742. package/src/channels/slack/agentic-posted.ts +148 -0
  743. package/src/channels/slack/agentic-signals.ts +248 -0
  744. package/src/channels/slack/api.ts +51 -11
  745. package/src/channels/slack/approvals.ts +1 -1
  746. package/src/channels/slack/attachments.ts +1 -1
  747. package/src/channels/slack/auth.ts +3 -1
  748. package/src/channels/slack/blocks.ts +3 -3
  749. package/src/channels/slack/bot-mentions.ts +5 -7
  750. package/src/channels/slack/channel-watch.ts +1 -1
  751. package/src/channels/slack/cli-project.ts +3 -3
  752. package/src/channels/slack/defaults.ts +109 -37
  753. package/src/channels/slack/dispatch.ts +419 -168
  754. package/src/channels/slack/doctor.ts +1 -1
  755. package/src/channels/slack/eval-directive.ts +1 -1
  756. package/src/channels/slack/external-policy.ts +15 -2
  757. package/src/channels/slack/footer.ts +108 -0
  758. package/src/channels/slack/index.ts +2 -0
  759. package/src/channels/slack/interactive.ts +4 -2
  760. package/src/channels/slack/live-delivery.ts +23 -7
  761. package/src/channels/slack/log.ts +1 -1
  762. package/src/channels/slack/manifest.ts +1 -1
  763. package/src/channels/slack/nudge-carrier.ts +1 -1
  764. package/src/channels/slack/nudge-store.ts +2 -2
  765. package/src/channels/slack/paint-start.ts +93 -0
  766. package/src/channels/slack/placeholder.ts +366 -0
  767. package/src/channels/slack/progress-delivery.ts +14 -1
  768. package/src/channels/slack/reasoning-chip.ts +48 -0
  769. package/src/channels/slack/recording-sink.ts +176 -0
  770. package/src/channels/slack/reply-options.ts +71 -15
  771. package/src/channels/slack/setup.ts +1 -1
  772. package/src/channels/slack/slack-channel.ts +81 -14
  773. package/src/channels/slack/socket-mode.ts +2 -2
  774. package/src/channels/slack/thread-context.ts +5 -5
  775. package/src/channels/slack/tool-approval-events.ts +54 -38
  776. package/src/channels/slack/tool-cards.ts +1 -1
  777. package/src/channels/slack/tool-chip.ts +36 -0
  778. package/src/channels/slack/types.ts +47 -7
  779. package/src/channels/slack/upload.ts +142 -0
  780. package/src/channels.ts +12 -30
  781. package/src/dashboard-session-url.ts +32 -0
  782. package/src/evals/assertions.ts +19 -19
  783. package/src/evals/expect.ts +1 -1
  784. package/src/evals/judge.ts +1 -1
  785. package/src/evals/reporters.ts +8 -9
  786. package/src/evals/run-facts.ts +2 -2
  787. package/src/evals.ts +7 -10
  788. package/src/extensions/cursor-cloud-agents/extension.ts +1 -1
  789. package/src/extensions/cursor-cloud-agents/lib/backend.ts +3 -3
  790. package/src/extensions/cursor-cloud-agents/lib/fleet.ts +1 -1
  791. package/src/extensions/cursor-cloud-agents/lib/repos.ts +3 -3
  792. package/src/extensions/cursor-cloud-agents/lib/transcript.ts +3 -4
  793. package/src/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
  794. package/src/extensions/cursor-cloud-agents/tools/list.ts +1 -1
  795. package/src/extensions/improve/extension.ts +4 -2
  796. package/src/extensions/improve/skills/yourself.ts +2 -2
  797. package/src/extensions/slack-communication/evals/harness.ts +728 -0
  798. package/src/extensions/slack-communication/evals/slack-communication.eval.ts +953 -0
  799. package/src/extensions/slack-communication/evals/slack-placeholder.eval.ts +194 -0
  800. package/src/extensions/slack-communication/extension.ts +45 -0
  801. package/src/extensions/slack-communication/skills/slack-voice.ts +59 -0
  802. package/src/extensions/slack-communication/tools/delete-message.ts +34 -0
  803. package/src/extensions/slack-communication/tools/edit-message.ts +42 -0
  804. package/src/extensions/slack-communication/tools/post-card.ts +28 -0
  805. package/src/extensions/slack-communication/tools/post-file.ts +85 -0
  806. package/src/extensions/slack-communication/tools/post-update.ts +41 -0
  807. package/src/extensions/slack-communication/tools/react.ts +33 -0
  808. package/src/extensions/slack-communication/tools/set-status.ts +21 -0
  809. package/src/files-backends/cursor-hosted.ts +502 -98
  810. package/src/files-backends/local-fs.ts +1 -1
  811. package/src/files.ts +15 -0
  812. package/src/filesystem.ts +182 -81
  813. package/src/index.ts +7 -36
  814. package/src/internal/advertise-tools.ts +6 -6
  815. package/src/internal/approval-gate.ts +1 -1
  816. package/src/internal/artifacts-store.ts +3 -3
  817. package/src/internal/as-of.ts +2 -2
  818. package/src/internal/authored-alias-hooks.ts +1 -1
  819. package/src/internal/authored-loaders.ts +2 -3
  820. package/src/internal/builtin-tools/reminders.ts +2 -2
  821. package/src/internal/chat-client.ts +5 -5
  822. package/src/internal/cli-ax.ts +172 -29
  823. package/src/internal/cli-bitbucket.ts +11 -11
  824. package/src/internal/cli-convert-automation.ts +2 -2
  825. package/src/internal/cli-cursor.ts +5 -16
  826. package/src/internal/cli-deploy.ts +389 -104
  827. package/src/internal/cli-docs.ts +5 -5
  828. package/src/internal/cli-github.ts +16 -19
  829. package/src/internal/cli-gitlab.ts +11 -11
  830. package/src/internal/cli-manifest.ts +1 -1
  831. package/src/internal/cli-mcp-oauth.ts +5 -7
  832. package/src/internal/cli-mcp.ts +3 -3
  833. package/src/internal/cli-skills.ts +2 -2
  834. package/src/internal/cli-slack.ts +5 -5
  835. package/src/internal/cloud-turn-cost.ts +1 -1
  836. package/src/internal/continuation-identity.ts +14 -9
  837. package/src/internal/conversation-mirror.ts +36 -3
  838. package/src/internal/convert-automation/convert-workflow.ts +27 -27
  839. package/src/internal/convert-automation/types.ts +9 -0
  840. package/src/internal/cursor/account-mcp.ts +48 -31
  841. package/src/internal/cursor/backend-client.ts +28 -17
  842. package/src/internal/cursor/credentials.ts +1 -1
  843. package/src/internal/cursor/hosted-store-secrets.ts +34 -0
  844. package/src/internal/cursor-account-mcp-auth.ts +9 -9
  845. package/src/internal/cursor-agent-template.ts +2 -0
  846. package/src/internal/cursor-deployment-relay.ts +10 -10
  847. package/src/internal/cursor-event-relay.ts +10 -10
  848. package/src/internal/cursor-relay-core.ts +2 -2
  849. package/src/internal/deploy-client.ts +266 -24
  850. package/src/internal/deploy-manifest.ts +46 -8
  851. package/src/internal/discovery/agent-config.ts +34 -0
  852. package/src/internal/discovery/agent.ts +14 -6
  853. package/src/internal/discovery/channels.ts +4 -4
  854. package/src/internal/discovery/connections.ts +4 -4
  855. package/src/internal/discovery/cursor-plugin.ts +12 -12
  856. package/src/internal/discovery/extension-overlay.ts +3 -3
  857. package/src/internal/discovery/extensions.ts +6 -6
  858. package/src/internal/discovery/info.ts +9 -9
  859. package/src/internal/discovery/instructions.ts +1 -1
  860. package/src/internal/discovery/project.ts +4 -4
  861. package/src/internal/discovery/services.ts +1 -1
  862. package/src/internal/discovery/tools.ts +1 -1
  863. package/src/internal/docs-site.ts +2 -2
  864. package/src/internal/env-file.ts +2 -2
  865. package/src/internal/eval-run-store.ts +7 -9
  866. package/src/internal/eval-runner.ts +20 -20
  867. package/src/internal/evals-client.ts +6 -6
  868. package/src/internal/event-log.ts +10 -10
  869. package/src/internal/event-mapper.ts +37 -2
  870. package/src/internal/filesystem/format.ts +11 -12
  871. package/src/internal/filesystem/scratch.ts +3 -3
  872. package/src/internal/filesystem/tools.ts +8 -8
  873. package/src/internal/filesystem/walk.ts +61 -16
  874. package/src/internal/framework-file-storage.ts +104 -4
  875. package/src/internal/framework-storage-selection.ts +2 -12
  876. package/src/internal/github-fanout.ts +4 -4
  877. package/src/internal/guest-network.ts +4 -4
  878. package/src/internal/host-files.ts +1 -1
  879. package/src/internal/host-kv.ts +2 -2
  880. package/src/internal/hosted-admission-adapter.ts +5 -0
  881. package/src/internal/hosted-catch-protocol.ts +3 -5
  882. package/src/internal/hosted-catch.ts +1 -1
  883. package/src/internal/hosted-delivery-protocol.ts +189 -14
  884. package/src/internal/hosted-delivery.ts +294 -81
  885. package/src/internal/hosted-execution-diag.ts +3 -3
  886. package/src/internal/hosted-execution-latency.ts +334 -0
  887. package/src/internal/hosting.ts +5 -6
  888. package/src/internal/http-channel-define.ts +27 -0
  889. package/src/internal/http-channel.ts +3 -4
  890. package/src/internal/http-control-plane-session.ts +24 -11
  891. package/src/internal/incoming-headers-to-fetch.ts +54 -0
  892. package/src/internal/init-interview.ts +7 -7
  893. package/src/internal/init-project.ts +18 -16
  894. package/src/internal/init-scaffold.ts +1 -1
  895. package/src/internal/inline-stdio-mcp.ts +2 -2
  896. package/src/internal/install-cursor-skills.ts +11 -11
  897. package/src/internal/json-schema.ts +1 -1
  898. package/src/internal/local-control-plane.ts +4 -5
  899. package/src/internal/local-env.ts +3 -3
  900. package/src/internal/log-ring.ts +1 -1
  901. package/src/internal/logs-client.ts +1 -1
  902. package/src/internal/mcp-endpoint.ts +10 -10
  903. package/src/internal/mcp-host.ts +9 -9
  904. package/src/internal/mcp-oauth-on-demand.ts +3 -3
  905. package/src/internal/mcp-oauth.ts +5 -5
  906. package/src/internal/net.ts +2 -2
  907. package/src/internal/otel/config.ts +3 -3
  908. package/src/internal/otel/runtime.ts +14 -14
  909. package/src/internal/peer-connections.ts +2 -2
  910. package/src/internal/platform-schedule-sync.ts +1 -1
  911. package/src/internal/platform-timers.ts +1 -1
  912. package/src/internal/playground/static.ts +2 -2
  913. package/src/internal/playground/toolchain.ts +2 -2
  914. package/src/internal/playground-proxy.ts +3 -3
  915. package/src/internal/process-memory-telemetry.ts +1 -1
  916. package/src/internal/reminder-runner.ts +8 -10
  917. package/src/internal/reminder-store.ts +1 -1
  918. package/src/internal/request-error-status.ts +9 -0
  919. package/src/internal/resolved-connections.ts +8 -8
  920. package/src/internal/result-output.ts +62 -5
  921. package/src/internal/router.ts +4 -4
  922. package/src/internal/run-client.ts +2 -2
  923. package/src/internal/schedule-runner.ts +6 -6
  924. package/src/internal/scm/pr-url.ts +11 -2
  925. package/src/internal/sdk-runner.ts +14 -28
  926. package/src/internal/serve-restart.ts +1 -1
  927. package/src/internal/server.ts +201 -140
  928. package/src/internal/session-cost.ts +3 -3
  929. package/src/internal/session-engine.ts +516 -244
  930. package/src/internal/session-run-log.ts +4 -6
  931. package/src/internal/session-store.ts +213 -39
  932. package/src/internal/sessions-client.ts +3 -3
  933. package/src/internal/skill-catalog.ts +69 -0
  934. package/src/internal/slack-thread-key.ts +11 -0
  935. package/src/internal/sleep.ts +1 -1
  936. package/src/internal/storage-coordinator.ts +118 -21
  937. package/src/internal/storage.ts +1 -0
  938. package/src/internal/store-mirror.ts +4 -4
  939. package/src/internal/terminal-style.ts +2 -2
  940. package/src/internal/tool-result.ts +3 -3
  941. package/src/internal/trajectory.ts +7 -7
  942. package/src/internal/turn-governor.ts +2 -2
  943. package/src/internal/turn-outbox.ts +1 -1
  944. package/src/internal/update-check.ts +2 -2
  945. package/src/internal/v2-hosting.ts +14 -0
  946. package/src/internal/workspace.ts +17 -17
  947. package/src/kv/memory-kv.ts +9 -7
  948. package/src/kv.ts +4 -7
  949. package/src/otel-public.ts +24 -0
  950. package/src/otel.ts +7 -2
  951. package/src/prompt.ts +1 -1
  952. package/src/result.ts +10 -8
  953. package/src/storage-backends/cursor-hosted-v2.ts +2 -2
  954. package/src/storage-backends/cursor-hosted.ts +6 -23
  955. package/src/storage-backends/file-kv.ts +7 -7
  956. package/src/storage.ts +22 -7
  957. package/src/types.ts +91 -17
  958. package/templates/agentic-owners/agent/channels/github.ts +3 -6
  959. package/templates/agentic-owners/agent/lib/github.ts +5 -5
  960. package/templates/agentic-owners/agent/lib/owners/decision.ts +13 -10
  961. package/templates/agentic-owners/agent/lib/owners/handles.ts +2 -2
  962. package/templates/agentic-owners/agent/lib/owners/match.ts +3 -3
  963. package/templates/agentic-owners/agent/lib/owners/matching.ts +1 -1
  964. package/templates/agentic-owners/agent/lib/owners/parse.ts +4 -9
  965. package/templates/agentic-owners/agent/lib/owners/prompt.ts +1 -1
  966. package/templates/agentic-owners/agent/lib/review.ts +37 -30
  967. package/templates/agentic-owners/evals/owners.eval.ts +2 -2
  968. package/templates/agentic-owners/package.json +1 -1
  969. package/templates/agents-md/agent/lib/collect.ts +16 -10
  970. package/templates/agents-md/agent/lib/config.ts +1 -1
  971. package/templates/agents-md/agent/tools/apply_agents.ts +10 -8
  972. package/templates/agents-md/package.json +1 -1
  973. package/templates/code-wiki/agent/channels/github.ts +4 -7
  974. package/templates/code-wiki/agent/lib/repos.ts +1 -1
  975. package/templates/code-wiki/agent/tools/apply_wiki.ts +3 -4
  976. package/templates/code-wiki/package.json +1 -1
  977. package/templates/demo/agent/lib/collect.ts +6 -2
  978. package/templates/demo/agent/lib/repos.ts +1 -1
  979. package/templates/demo/agent/tools/record_demo.ts +1 -1
  980. package/templates/demo/evals/demo.eval.ts +1 -5
  981. package/templates/demo/package.json +1 -1
  982. package/templates/grokbot-agents/package.json +1 -1
  983. package/templates/pr-autofixer/agent/channels/github.ts +16 -13
  984. package/templates/pr-autofixer/agent/lib/merge-watch.ts +2 -4
  985. package/templates/pr-autofixer/agent/lib/repos.ts +2 -2
  986. package/templates/pr-autofixer/agent/lib/webhook-routing.ts +1 -1
  987. package/templates/pr-autofixer/package.json +1 -1
  988. package/templates/security-help/agent/lib/repos.ts +1 -1
  989. package/templates/security-help/package.json +1 -1
  990. package/templates/security-reviewer/agent/lib/repos.ts +1 -1
  991. package/templates/security-reviewer/agent/tools/post_findings.ts +1 -3
  992. package/templates/security-reviewer/package.json +1 -1
  993. package/templates/thermo-quality-review/README.md +35 -0
  994. package/templates/thermo-quality-review/agent/agent.ts +8 -0
  995. package/templates/thermo-quality-review/agent/channels/github.ts +42 -0
  996. package/templates/thermo-quality-review/agent/instructions.md +43 -0
  997. package/templates/thermo-quality-review/agent/tools/post_findings.ts +70 -0
  998. package/templates/thermo-quality-review/evals/evals.config.ts +5 -0
  999. package/templates/thermo-quality-review/evals/review.eval.ts +62 -0
  1000. package/templates/thermo-quality-review/package.json +18 -0
  1001. package/templates/thermo-quality-review/tsconfig.json +12 -0
  1002. package/templates/thermo-review/README.md +35 -0
  1003. package/templates/thermo-review/agent/agent.ts +8 -0
  1004. package/templates/thermo-review/agent/channels/github.ts +42 -0
  1005. package/templates/thermo-review/agent/instructions.md +40 -0
  1006. package/templates/thermo-review/agent/tools/post_findings.ts +70 -0
  1007. package/templates/thermo-review/evals/evals.config.ts +5 -0
  1008. package/templates/thermo-review/evals/review.eval.ts +53 -0
  1009. package/templates/thermo-review/package.json +18 -0
  1010. package/templates/thermo-review/tsconfig.json +12 -0
  1011. package/templates/triage/agent/lib/actuate.ts +26 -41
  1012. package/templates/triage/agent/lib/parse-queue-event.ts +2 -1
  1013. package/templates/triage/agent/lib/verify-webhook.ts +10 -5
  1014. package/templates/triage/agent/tools/record_triage.ts +1 -4
  1015. package/templates/triage/package.json +1 -1
  1016. package/dist/client.d.ts +0 -14
  1017. package/dist/client.d.ts.map +0 -1
  1018. package/dist/client.js +0 -12
  1019. package/dist/docs/assets/app.Cr-wVbnB.js +0 -1
  1020. package/dist/docs/assets/building-with-agents.md.D0KbSkJn.js +0 -13
  1021. package/dist/docs/assets/building-with-agents.md.D0KbSkJn.lean.js +0 -1
  1022. package/dist/docs/assets/chunks/@localSearchIndexroot.CFVQ4S17.js +0 -1
  1023. package/dist/docs/assets/concepts.md.B4o63Gul.js +0 -1
  1024. package/dist/docs/assets/concepts.md.B4o63Gul.lean.js +0 -1
  1025. package/dist/docs/assets/deployment.md.JenwuCCB.js +0 -51
  1026. package/dist/docs/assets/deployment.md.JenwuCCB.lean.js +0 -1
  1027. package/dist/docs/assets/evals.md.C7JLjoEP.js +0 -211
  1028. package/dist/docs/assets/evals.md.C7JLjoEP.lean.js +0 -1
  1029. package/dist/docs/assets/guides_agent-to-agent.md.BDb0t1QV.js +0 -10
  1030. package/dist/docs/assets/guides_agent-to-agent.md.BDb0t1QV.lean.js +0 -1
  1031. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.js +0 -10
  1032. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.lean.js +0 -1
  1033. package/dist/docs/assets/guides_cloud-agents.md.BsloyHdY.js +0 -9
  1034. package/dist/docs/assets/guides_cloud-agents.md.BsloyHdY.lean.js +0 -1
  1035. package/dist/docs/assets/guides_convert-automation.md.B4sjlodG.js +0 -12
  1036. package/dist/docs/assets/guides_convert-automation.md.B4sjlodG.lean.js +0 -1
  1037. package/dist/docs/assets/guides_github.md.TZaTZlfz.js +0 -64
  1038. package/dist/docs/assets/guides_github.md.TZaTZlfz.lean.js +0 -1
  1039. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.js +0 -14
  1040. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.lean.js +0 -1
  1041. package/dist/docs/assets/guides_grokbot-agents.md.DyV-WArv.js +0 -9
  1042. package/dist/docs/assets/guides_grokbot-agents.md.DyV-WArv.lean.js +0 -1
  1043. package/dist/docs/assets/guides_human-in-the-loop.md.By1G2T3_.js +0 -28
  1044. package/dist/docs/assets/guides_human-in-the-loop.md.By1G2T3_.lean.js +0 -1
  1045. package/dist/docs/assets/guides_improve.md.BGVk32bK.js +0 -14
  1046. package/dist/docs/assets/guides_improve.md.BGVk32bK.lean.js +0 -1
  1047. package/dist/docs/assets/guides_mcp-oauth.md.Dp6cDP7f.js +0 -28
  1048. package/dist/docs/assets/guides_mcp-oauth.md.Dp6cDP7f.lean.js +0 -1
  1049. package/dist/docs/assets/guides_opentelemetry.md.SCRMskno.js +0 -26
  1050. package/dist/docs/assets/guides_opentelemetry.md.SCRMskno.lean.js +0 -1
  1051. package/dist/docs/assets/guides_slack.md.D4RVMM4G.js +0 -38
  1052. package/dist/docs/assets/guides_slack.md.D4RVMM4G.lean.js +0 -1
  1053. package/dist/docs/assets/guides_webhooks.md.CJK484ex.js +0 -225
  1054. package/dist/docs/assets/guides_webhooks.md.CJK484ex.lean.js +0 -1
  1055. package/dist/docs/assets/hillclimbing.md.BOiVo1tf.js +0 -4
  1056. package/dist/docs/assets/hillclimbing.md.BOiVo1tf.lean.js +0 -1
  1057. package/dist/docs/assets/index.md.DD9Q2XuJ.js +0 -5
  1058. package/dist/docs/assets/index.md.DD9Q2XuJ.lean.js +0 -1
  1059. package/dist/docs/assets/quickstart.md.DdQOF7Y8.lean.js +0 -1
  1060. package/dist/docs/assets/reference_extensions.md.ZAVUyuEX.js +0 -62
  1061. package/dist/docs/assets/reference_extensions.md.ZAVUyuEX.lean.js +0 -1
  1062. package/dist/docs/assets/reference_result.md.BK5SxDrf.js +0 -19
  1063. package/dist/docs/assets/reference_result.md.BK5SxDrf.lean.js +0 -1
  1064. package/dist/docs/assets/scaffolding-agents.md.Kctn3OVb.js +0 -1
  1065. package/dist/docs/assets/scaffolding-agents.md.Kctn3OVb.lean.js +0 -1
  1066. package/dist/docs/assets/skills_create-agent.md.Q3h6Je-e.js +0 -8
  1067. package/dist/docs/assets/skills_create-agent.md.Q3h6Je-e.lean.js +0 -1
  1068. package/dist/docs/assets/skills_debug.md.CVjCXMFF.js +0 -1
  1069. package/dist/docs/assets/skills_debug.md.CVjCXMFF.lean.js +0 -1
  1070. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.js +0 -35
  1071. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.lean.js +0 -1
  1072. package/dist/docs/assets/skills_evals.md.DFxYPErF.js +0 -25
  1073. package/dist/docs/assets/skills_evals.md.DFxYPErF.lean.js +0 -1
  1074. package/dist/docs/assets/skills_framework-map.md.BxLSOhSY.js +0 -1
  1075. package/dist/docs/assets/skills_framework-map.md.BxLSOhSY.lean.js +0 -1
  1076. package/dist/docs/assets/skills_github.md.hgFX_oKY.js +0 -16
  1077. package/dist/docs/assets/skills_github.md.hgFX_oKY.lean.js +0 -1
  1078. package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.js +0 -7
  1079. package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.lean.js +0 -1
  1080. package/dist/docs/assets/skills_index.md.DL7EHaQ-.js +0 -1
  1081. package/dist/docs/assets/skills_index.md.DL7EHaQ-.lean.js +0 -1
  1082. package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.js +0 -18
  1083. package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.lean.js +0 -1
  1084. package/dist/docs/assets/skills_otel.md.B5Ddv1xH.js +0 -8
  1085. package/dist/docs/assets/skills_otel.md.B5Ddv1xH.lean.js +0 -1
  1086. package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.js +0 -20
  1087. package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.lean.js +0 -1
  1088. package/dist/docs/assets/storage.md.BUrhJ-Zz.js +0 -30
  1089. package/dist/docs/assets/storage.md.BUrhJ-Zz.lean.js +0 -1
  1090. package/dist/docs/assets/templates_agents-md.md.CXSMZljE.js +0 -2
  1091. package/dist/docs/assets/templates_agents-md.md.CXSMZljE.lean.js +0 -1
  1092. package/dist/docs/assets/templates_code-wiki.md.CDYZIBFN.js +0 -2
  1093. package/dist/docs/assets/templates_code-wiki.md.CDYZIBFN.lean.js +0 -1
  1094. package/dist/docs/assets/templates_demo.md.BeQX9V3H.js +0 -4
  1095. package/dist/docs/assets/templates_demo.md.BeQX9V3H.lean.js +0 -1
  1096. package/dist/docs/assets/templates_grokbot-agents.md.c1s6Flp9.js +0 -3
  1097. package/dist/docs/assets/templates_grokbot-agents.md.c1s6Flp9.lean.js +0 -1
  1098. package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.js +0 -4
  1099. package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.lean.js +0 -1
  1100. package/dist/docs/assets/troubleshooting.md.CYEAO9bM.js +0 -1
  1101. package/dist/docs/assets/troubleshooting.md.CYEAO9bM.lean.js +0 -1
  1102. package/dist/docs/concepts.html +0 -27
  1103. package/dist/docs/concepts.md +0 -166
  1104. package/dist/docs/design/filesystem.md +0 -376
  1105. package/dist/docs/design/runtime-abstraction.md +0 -1756
  1106. package/dist/docs/guides/human-in-the-loop.html +0 -54
  1107. package/dist/docs/guides/human-in-the-loop.md +0 -126
  1108. package/dist/docs/reference/result.html +0 -45
  1109. package/dist/docs/reference/result.md +0 -89
  1110. package/dist/docs/scaffolding-agents.html +0 -27
  1111. package/dist/docs/scaffolding-agents.md +0 -130
  1112. package/dist/docs/skills/create-agent.html +0 -34
  1113. package/dist/docs/skills/create-agent.md +0 -160
  1114. package/dist/docs/skills/debug.html +0 -27
  1115. package/dist/docs/skills/debug.md +0 -36
  1116. package/dist/docs/skills/deploy.html +0 -61
  1117. package/dist/docs/skills/deploy.md +0 -161
  1118. package/dist/docs/skills/evals.html +0 -51
  1119. package/dist/docs/skills/evals.md +0 -137
  1120. package/dist/docs/skills/framework-map.html +0 -27
  1121. package/dist/docs/skills/framework-map.md +0 -99
  1122. package/dist/docs/skills/github.html +0 -42
  1123. package/dist/docs/skills/github.md +0 -93
  1124. package/dist/docs/skills/hillclimb.html +0 -33
  1125. package/dist/docs/skills/hillclimb.md +0 -55
  1126. package/dist/docs/skills/index.html +0 -27
  1127. package/dist/docs/skills/index.md +0 -21
  1128. package/dist/docs/skills/mcp-auth.html +0 -44
  1129. package/dist/docs/skills/mcp-auth.md +0 -76
  1130. package/dist/docs/skills/otel.html +0 -34
  1131. package/dist/docs/skills/otel.md +0 -53
  1132. package/dist/docs/skills/setup-slack.html +0 -46
  1133. package/dist/docs/skills/setup-slack.md +0 -141
  1134. package/dist/docs/storage.html +0 -56
  1135. package/dist/docs/storage.md +0 -167
  1136. package/dist/docs/templates/agents-md.html +0 -28
  1137. package/dist/docs/templates/agents-md.md +0 -105
  1138. package/dist/docs/templates/code-wiki.html +0 -28
  1139. package/dist/docs/templates/code-wiki.md +0 -91
  1140. package/dist/docs/templates/demo.html +0 -30
  1141. package/dist/docs/templates/demo.md +0 -80
  1142. package/dist/docs/templates/grokbot-agents.html +0 -29
  1143. package/dist/docs/templates/grokbot-agents.md +0 -48
  1144. package/dist/docs/templates/security-help.html +0 -30
  1145. package/dist/docs/templates/security-help.md +0 -65
  1146. package/dist/internal/tenant-slack/relay.d.ts +0 -75
  1147. package/dist/internal/tenant-slack/relay.d.ts.map +0 -1
  1148. package/dist/internal/tenant-slack/relay.js +0 -148
  1149. package/dist/playground/assets/index-Bhxzrcf6.css +0 -1
  1150. package/dist/playground/assets/index-CqLX5uF3.js +0 -67
  1151. package/docs/concepts.md +0 -171
  1152. package/docs/design/filesystem.md +0 -376
  1153. package/docs/design/runtime-abstraction.md +0 -1756
  1154. package/docs/guides/human-in-the-loop.md +0 -131
  1155. package/docs/reference/result.md +0 -94
  1156. package/docs/scaffolding-agents.md +0 -135
  1157. package/docs/skills/index.md +0 -26
  1158. package/docs/storage.md +0 -172
  1159. package/docs/templates/agents-md.md +0 -110
  1160. package/docs/templates/code-wiki.md +0 -96
  1161. package/docs/templates/demo.md +0 -85
  1162. package/docs/templates/grokbot-agents.md +0 -53
  1163. package/docs/templates/security-help.md +0 -70
  1164. package/src/client.ts +0 -23
  1165. package/src/internal/tenant-slack/relay.ts +0 -203
  1166. package/templates/pr-autofixer/agent/storage.ts +0 -7
package/docs/evals.md CHANGED
@@ -1,783 +1,256 @@
1
1
  ---
2
2
  title: "Evals"
3
- description: "Write defineEval cases that gate an agent's trajectory, run them with agent-sdk eval locally and in CI, and lock every kept improvement with a regression check."
3
+ description: "Protect agent decisions with fixed inputs, trajectory assertions, and regression checks that run locally or in CI."
4
4
  ---
5
5
 
6
6
  # Evals
7
7
 
8
- An eval sends a fixed message to your agent and asserts over the
9
- trajectory it records: the turn completed, the right tool ran with the
10
- right input, the reply has the right shape. Evals are how you know a
11
- prompt tweak helped, a refactor didn't regress the agent, and last
12
- month's fix still holds.
8
+ An eval sends a fixed input to the real agent and checks the resulting
9
+ trajectory: whether the turn succeeded, which tools ran, and what shape
10
+ the answer took. Use evals to protect behavior you already understand,
11
+ not to discover what the prompt should do.
13
12
 
14
- Nothing is mocked. The runner starts (or targets) a real agent server,
15
- drives sessions over the public API, and grades the events it gets
16
- back. The model runs and server tools execute, so
17
- [keep side effects out of eval sessions](#keep-side-effects-out-of-eval-sessions)
18
- before you point an eval at an agent that posts anywhere.
13
+ Evals run real model turns and real tools. Guard external writes before
14
+ running a suite against an agent that can post, merge, or deploy.
19
15
 
20
- ## Evals, hooks, or hillclimbing?
21
-
22
- All three read the same session event stream. Pick by the question you
23
- are asking.
24
-
25
- | You want to | Use |
26
- | --- | --- |
27
- | Gate one fixed input's behavior, locally and in CI | Evals (this page) |
28
- | Observe every live session: metrics, audit, alerts | [Hooks](./reference/hooks.md) |
29
- | Improve an agent one measured round at a time | [Hillclimbing](./hillclimbing.md); each kept win lands an eval |
30
-
31
- [Hooks, channel events, or evals?](./reference/hooks.md#hooks-channel-events-or-evals)
32
- has the side-by-side table.
33
-
34
- ### When not to write an eval
35
-
36
- - Test a server tool's own logic with
37
- `agent-sdk call <tool> --dir . --input '{...}'` or a unit test. No
38
- model turn, no credential.
39
- - Explore a prompt with `agent-sdk run --dir . --message "..."` and
40
- read the trajectory. Write the eval once you know which decision to
41
- gate.
42
- - Stop a bad turn while it runs with
43
- [`needsApproval`](./reference/tools.md#gate-a-tool-on-human-approval)
44
- on the tool or [`defineResult`](./reference/result.md). Evals grade
45
- after the fact.
46
-
47
- ## Write your first eval
48
-
49
- Evals live under the project-root `evals/` directory, a sibling of
50
- `agent/`. `agent/evals/` is silently ignored. Discovery loads every
51
- `.eval.ts` (or `.eval.js`) file under `evals/`, plus one config file.
52
-
53
- ```text
54
- my-agent/
55
- agent/
56
- agent.ts
57
- tools/inspect_pr.ts
58
- evals/
59
- evals.config.ts # required to run: maxConcurrency
60
- readiness.eval.ts # id: readiness
61
- prs.eval.ts # cases: prs/checkout, prs/search
62
- ```
16
+ ## Protect a tool decision
63
17
 
64
- An eval is a single `async test(t)`. You drive the agent with `t.send`
65
- and assert on the recorded run with the same `t`:
18
+ This smoke case asks for a PR verdict, requires the read-only inspection
19
+ tool, and fails if the agent tries to approve. The CLI reports all three
20
+ decisions together instead of stopping at the first miss.
66
21
 
67
22
  ```ts
68
23
  // evals/readiness.eval.ts
69
24
  import { defineEval, includes } from "@cursor/july/evals";
70
25
 
71
26
  export default defineEval({
72
- description: "Inspects a PR without approving it.",
73
27
  tags: ["smoke"],
74
- timeoutMs: 120_000,
75
28
  async test(t) {
76
29
  await t.send(
77
30
  "Is https://github.com/acme/checkout/pull/42 ready to approve?"
78
31
  );
32
+
79
33
  t.succeeded();
80
34
  t.calledTool("inspect_pr");
81
35
  t.notCalledTool("approve_pr");
82
- t.check(t.reply, includes(/ready|approve/i));
36
+ t.check(t.reply, includes(/ready|blocked|approve/i));
83
37
  },
84
38
  });
85
39
  ```
86
40
 
41
+ Evals live in the project-root `evals/` directory, beside `agent/`.
42
+ Add the required concurrency config once:
43
+
87
44
  ```ts
88
45
  // evals/evals.config.ts
89
46
  import { defineEvalConfig } from "@cursor/july/evals";
90
47
 
91
- export default defineEvalConfig({ maxConcurrency: 20 });
48
+ export default defineEvalConfig({
49
+ maxConcurrency: 20,
50
+ });
92
51
  ```
93
52
 
94
- Run it under Node 22.13 or newer (never Bun) with a Cursor credential
95
- in place; see [Credentials](#credentials):
96
-
97
53
  ```bash
98
54
  agent-sdk eval --dir . --list
99
- agent-sdk eval --dir . readiness
100
- ```
101
-
102
- ```text
103
- PASS readiness (14.2s) — Inspects a PR without approving it.
104
- ✓ succeeded
105
- ✓ calledTool(inspect_pr)
106
- ✓ notCalledTool(approve_pr)
107
- ✓ check(includes)
108
-
109
- 1 passed, 0 failed, 1 total
110
- artifacts: <project state directory>/evals/2026-09-11T15-02-11-402Z
111
- ```
112
-
113
- Every local run writes each case's assertions, inputs, tool calls, and
114
- `t.log` lines under that artifacts directory. Open
115
- `evals/<case-id>.json` there when a case fails; see
116
- [Where results land](#where-results-land).
117
-
118
- ## Name cases by path
119
-
120
- The file path is the eval's identity, so you don't author an id.
121
- `evals/builds/api.eval.ts` becomes `builds/api`. An `index` filename
122
- collapses to its directory: `evals/builds/index.eval.ts` becomes
123
- `builds`.
124
-
125
- One file can hold several datapoints through `cases`. Provide either
126
- `test` or `cases`, not both. Each case id becomes `<fileId>/<case.id>`:
127
-
128
- ```ts
129
- // evals/prs.eval.ts: prs/checkout, prs/search
130
- export default defineEval({
131
- tags: ["smoke", "prs"],
132
- cases: [
133
- {
134
- id: "checkout",
135
- description: "Checkout PR readiness.",
136
- async test(t) {
137
- await t.send(
138
- "Is https://github.com/acme/checkout/pull/42 ready to approve?"
139
- );
140
- t.succeeded();
141
- t.calledTool("inspect_pr");
142
- },
143
- },
144
- {
145
- id: "search",
146
- async test(t) {
147
- await t.send(
148
- "Check https://github.com/acme/search/pull/7 before approval."
149
- );
150
- t.succeeded();
151
- t.calledTool("inspect_pr");
152
- },
153
- },
154
- ],
155
- });
156
- ```
157
-
158
- Case ids are single path segments, unique within the file. A case can
159
- set its own `description`, `tags`, `timeoutMs`, `iterations`, `judge`,
160
- `reporters`, and `metadata`. A case-level value replaces the file-level
161
- one for that datapoint, except `metadata`, which merges with case keys
162
- winning, and `reporters`, which adds to the file's list. `metadata` is
163
- free-form data carried onto the result and every reporter.
164
-
165
- A file may instead export an array of `defineEval` calls to fan out
166
- over a dataset. Ids are then the file id plus a zero-padded index
167
- (`sql/0000`, `sql/0001`, ...); see [Load a dataset](#load-a-dataset).
168
- Prefer `cases` when datapoints are hand-written and deserve stable
169
- names.
170
-
171
- ### Iterations
172
-
173
- `iterations` (file or case, default `1`, cap `100`) runs a datapoint
174
- repeatedly. Discovery expands `iterations: 3` on case `nyc` to runnable
175
- ids `weather/nyc/1`, `weather/nyc/2`, and `weather/nyc/3`. The filter
176
- `weather/nyc` still selects all three. Each expanded case exposes
177
- `t.iteration` and `t.iterations`.
178
-
179
- `maxConcurrency` counts authored datapoints, not expanded iterations.
180
- Iterations of one datapoint share a concurrency slot and run in
181
- sequence, so a suite of 11 cases with 3 iterations each and
182
- `maxConcurrency: 20` has at most 11 cases in flight.
183
-
184
- ## Drive the agent with `t.send`
185
-
186
- `t.send(message, options?)` runs one turn and waits for it to settle:
187
- complete, park on an approval request, or fail. Several sends in one
188
- case share the session, which is how you write multi-turn evals.
189
-
190
- Each send resolves to a turn result: `message` (the assistant text),
191
- `sessionId`, `events`, `toolCalls` (tool names in order), `ok`, and
192
- `index`. The turn carries the same assertion vocabulary as `t`, scoped
193
- to that turn, so you can grade an intermediate turn before the next
194
- send overwrites `t.reply`. `turn.expectOk()` throws when the turn
195
- failed, for later steps that depend on it.
196
-
197
- Read the whole case with `t.reply` (last assistant text), `t.events`
198
- (every event so far), `t.turns` (settled turns, oldest first), and
199
- `t.sessionId`. `t.signal` aborts when the case hits its timeout; pass
200
- it to your own async work.
201
-
202
- Three options apply on the first send only, because they shape session
203
- creation:
204
-
205
- | Option | Effect |
206
- | --- | --- |
207
- | `workspaceFiles` | `{ path: contents }` seeded into the local session workspace. Prefer this over machine-local paths |
208
- | `workspaceDir` | Absolute harness cwd for the local runtime |
209
- | `cloud` | Per-session cloud options merged over the agent's static `cloud` config. Pin a fixture repo here for cloud evals instead of on the agent's default `cloud.repos`. On the cloud runtime, seeded files reach the agent as described under [Where does a turn run?](./concepts.md#where-does-a-turn-run) |
210
-
211
- ```ts
212
- await t.send("Review pr/diff.patch and post findings.", {
213
- workspaceFiles: {
214
- "pr/diff.patch": [
215
- "diff --git a/app/routes/search.ts b/app/routes/search.ts",
216
- "+res.send(`<h1>Results for ${req.query.q}</h1>`);",
217
- ].join("\n"),
218
- },
219
- });
220
- ```
221
-
222
- ## Assert over the trajectory
223
-
224
- Assertions record; they never throw. One run reports every failure
225
- instead of dying on the first. Assertions on `t` read the whole run.
226
- Assertions on a turn read only that turn.
227
-
228
- | Gate | Checks |
229
- | --- | --- |
230
- | `t.succeeded()` | the run did not fail and is not parked on an unanswered approval |
231
- | `t.parked()` | the run cleanly parked on an unanswered approval request |
232
- | `t.messageIncludes(token)` | the joined assistant text matches a string or `RegExp` |
233
- | `t.calledTool(name, matcher?)` | a matching call to `name` happened |
234
- | `t.notCalledTool(name)` | no request for `name`, in any lifecycle state |
235
- | `t.loadedSkill(name)` | the agent opened `skills/<name>/SKILL.md` (read, grep, or shell `cat`) |
236
- | `t.toolOrder(names)` | tool requests appear in this relative order; extra calls allowed |
237
- | `t.usedNoTools()` | no tool calls at all |
238
- | `t.maxToolCalls(max)` | at most `max` tool calls |
239
- | `t.noFailedActions()` | no tool call reported an error |
240
- | `t.calledSubagent(name, matcher?)` | a matching subagent delegation happened |
241
- | `t.taggedArtifact(kind?, predicate?)` | at least one [artifact](./reference/artifacts.md) was tagged |
242
- | `t.event(type, matcher?)` | at least one matching [event](./reference/sessions.md#which-events-can-i-stream) of `type` |
243
- | `t.notEvent(type, matcher?)` | no matching event of `type` |
244
- | `t.eventOrder(matchers)` | matching event groups occur in this relative order |
245
- | `t.eventsSatisfy(label, predicate)` | your predicate over the typed event stream |
246
- | `t.check(value, expectation)` | any value, against a [builder](#grade-values-with-expectation-builders) |
247
- | `t.score(name, value)` | a 0-1 score you computed; soft until you add a bar |
248
-
249
- Three more assertions gate and return the matched fact. They stop the
250
- test body when nothing matches, without a duplicate execution error.
251
- `t.requireToolCall(name, matcher?)` returns the call so later code can
252
- read its `input` and `output`. `t.requireInputRequest(filter?)` returns
253
- the single pending approval request. `await t.require(value, expectation)`
254
- does the same for a value check.
255
-
256
- A case with no assertions passes when at least one turn completed. Add
257
- `t.succeeded()` and behavior gates anyway. They make the contract
258
- visible in review.
259
-
260
- ### What good cases assert
261
-
262
- Gate decisions and shape, not prose. Model wording varies run to run.
263
- Tool choice, tool avoidance, and output structure are the stable
264
- contract.
265
-
266
- 1. `t.succeeded()`: always, first.
267
- 2. The tool decision: `calledTool` for the intended path,
268
- `notCalledTool` for the likely wrong alternative. The pair is
269
- stronger than either alone.
270
- 3. Output shape: a regex for the contract (`/ready|blocked/i`, a JSON
271
- marker, a findings-block fence), never exact sentences.
272
- 4. For structured output, parse `t.reply` and check fields with
273
- `matches` or `satisfies` instead of substring-matching JSON.
274
-
275
- The common failure modes: asserting exact phrasing, packing more than
276
- about five gates into one case (split it), and cases that depend on
277
- live external state that drifts (pin the input).
278
-
279
- ### Narrow tool assertions with matchers
280
-
281
- With no matcher, `calledTool` is request-based: a requested call counts
282
- even before its result arrives. A matcher narrows it:
283
-
284
- ```ts
285
- t.calledTool("inspect_pr", { status: "completed" });
286
- t.calledTool("apply_agents", { input: { verdict: "update" } });
287
- t.calledTool("bash", { input: { command: /^gh pr view/ }, count: 1 });
288
- t.calledTool("read_file", {
289
- output: (value) => String(value).includes("TODO"),
290
- });
55
+ agent-sdk eval --dir . --tag smoke
291
56
  ```
292
57
 
293
- `input`, `output`, and `count` accept a literal, a `RegExp`, or a
294
- predicate. Object literals partial-deep-match, so `{ verdict: "update" }`
295
- matches arguments that also carry other keys. `status` is one of
296
- `completed`, `failed`, `pending`, or `rejected` (a human denied the
297
- approval). `calledSubagent` takes `{ output, status, count, callId }`.
298
- `event`, `notEvent`, and `eventOrder` take `{ data, count }`.
58
+ ## Check answer shape or quality
299
59
 
300
- ### Grade values with expectation builders
301
-
302
- `t.check(value, expectation)` grades any value: `t.reply`, a parsed
303
- JSON field, a tool's output.
304
-
305
- | Builder | Checks | Severity |
306
- | --- | --- | --- |
307
- | `includes(string \| RegExp)` | substring or match; structured values are stringified first | gate |
308
- | `equals(value)` | deep equality | gate |
309
- | `matches(schema)` | a Standard Schema (Zod, Valibot, ...) or anything with `safeParse` | gate |
310
- | `similarity(expected)` | normalized text similarity, 0-1 | soft |
311
- | `satisfies(predicate, label)` | your predicate; `label` is the failure detail | gate |
60
+ Prefer a deterministic shape check when the output has a contract. The
61
+ failure tells you which field was wrong, and the case remains stable
62
+ when the model changes its wording.
312
63
 
313
64
  ```ts
314
- import { matches, satisfies } from "@cursor/july/evals";
65
+ import { matches } from "@cursor/july/evals";
315
66
  import { z } from "zod";
316
67
 
317
68
  const verdict = JSON.parse(t.reply ?? "{}");
318
69
  t.check(
319
70
  verdict,
320
- matches(z.object({ ready: z.boolean(), blockers: z.array(z.string()) }))
321
- );
322
- t.check(
323
- verdict.blockers.length,
324
- satisfies((n) => (n as number) <= 3, "at most 3 blockers")
71
+ matches(
72
+ z.object({
73
+ ready: z.boolean(),
74
+ blockers: z.array(z.string()),
75
+ })
76
+ )
325
77
  );
326
78
  ```
327
79
 
328
- `normalizedSimilarity(actual, expected)` returns the same 0-1 score as
329
- `similarity`, for use with `t.score`.
330
-
331
- ### Record without gating
332
-
333
- - `t.metric(name, value)` records a structured score or label. It shows
334
- on the CLI result, the playground case card, JUnit output, and
335
- artifacts.
336
- - `t.log(message)` records a debug line, streamed under `--verbose`.
337
- - `t.skip(reason)` ends the case as skipped. Skipped cases report
338
- separately and never change the exit code. Call it before sending
339
- messages.
340
-
341
- ## Gates, soft scores, and verdicts
342
-
343
- Every assertion returns a handle, so severity rides on the assertion
344
- instead of a separate thresholds map:
345
-
346
- ```ts
347
- t.succeeded(); // gate (default)
348
- t.calledTool("get_weather").soft(); // tracked, never fails
349
- t.check(t.reply, similarity("Sunny, 72°F")).atLeast(0.8); // soft, with a bar
350
- t.judge.closedQA("cites a source").gate(0.8); // promoted to a gate
351
- ```
352
-
353
- - `.gate(threshold?)` is hard. A miss fails the case and `eval` exits 1.
354
- - `.soft(threshold?)` is tracked. With no threshold it never fails.
355
- - `.atLeast(threshold)` is soft with a bar. A miss marks the case
356
- `scored`.
357
-
358
- Each case ends with one verdict:
359
-
360
- | Verdict | Meaning | Exit code |
361
- | --- | --- | --- |
362
- | `passed` | every gate passed and no soft bar was missed | 0 |
363
- | `failed` | a gate failed, or the test body threw | 1 |
364
- | `scored` | only soft bars were missed | 0, or 1 under `--strict` |
365
- | `skipped` | `t.skip(reason)`, or a judge with no credentials | 0 |
366
-
367
- The CLI prints soft misses as `~` and gate misses as `✗`. Start a new
368
- benchmark with `t.score("recall", recall)` and `.atLeast()` so its
369
- number reports for a while without blocking merges. Add `--strict`
370
- once the bars are trustworthy.
371
-
372
- ## Judge free-form output
373
-
374
- When wording matters and no regex captures it, `t.judge` grades with an
375
- LLM. The graders are `factuality(expected)`, `summarizes(expected)`,
376
- `closedQA(criteria)`, and `sql(expected)`. Each scores `t.reply` by
377
- default; pass `{ on }` to grade another value.
80
+ Use a judge when correctness depends on meaning that a schema, regex, or
81
+ known value cannot capture:
378
82
 
379
83
  ```ts
380
- const summary = await t.send("Why did CI fail on PR 42?");
381
- t.judge.factuality("The lint step failed on src/sidebar.ts.").atLeast(0.7);
382
- t.judge.closedQA("names the failing step", { on: summary.message }).gate(1);
84
+ t.judge
85
+ .factuality("The lint step failed on src/sidebar.ts.")
86
+ .atLeast(0.8);
383
87
  ```
384
88
 
385
- Judge assertions are soft by default, so a judge never fails a build
386
- until you give it a bar with `.atLeast()` or promote it with `.gate()`.
387
- The recorded detail names the choice the judge made and its rationale.
89
+ Judge checks are tracked scores until you give them a hard gate.
90
+ Configure the judge model in `evals.config.ts`. The
91
+ [Evals reference](./reference/evals.md#judges) owns grader options and
92
+ severity rules.
388
93
 
389
- The judge model comes from `defineEvalConfig({ judge })`,
390
- `defineEval({ judge })`, a case-level `judge`, or a per-call
391
- `{ model }`. The nearest one wins. A judge call with no model
392
- configured fails the case. A judge that cannot reach a model (no
393
- credential) ends the case as `skipped`, unless a deterministic gate
394
- already failed.
94
+ ## Test a conversation or approval
395
95
 
396
- For a domain-specific judge whose verdict is not a single score,
397
- `t.judge.model(prompt)` sends a raw prompt to the same model and
398
- returns the reply. Record the parsed result with `t.score` or
399
- `t.check`. Anything derived from the agent under test is untrusted
400
- input to your prompt: wrap it with `fenceUntrusted` and include
401
- `EVAL_JUDGE_INJECTION_GUARD`, as the built-in graders do.
96
+ Several `t.send` calls in one case share a session. Assertions on a
97
+ returned turn inspect only that turn, while assertions on `t` inspect
98
+ the whole conversation.
402
99
 
403
100
  ```ts
404
- import {
405
- EVAL_JUDGE_INJECTION_GUARD,
406
- fenceUntrusted,
407
- } from "@cursor/july/evals";
408
-
409
- const gold = ["XSS in search.ts", "open redirect in login.ts"];
410
- const reply = await t.judge.model(
411
- [
412
- "For each GOLD finding, answer whether SUBMISSION reports it.",
413
- "Reply with one line per finding: <index> YES|NO.",
414
- EVAL_JUDGE_INJECTION_GUARD,
415
- fenceUntrusted("GOLD", gold.map((g, i) => `${i + 1}. ${g}`).join("\n")),
416
- fenceUntrusted("SUBMISSION", t.reply ?? ""),
417
- ].join("\n\n")
418
- );
419
- const hits = reply.match(/\bYES\b/g)?.length ?? 0;
420
- t.score("recall", hits / gold.length).atLeast(0.5);
421
- ```
422
-
423
- ## Keep side effects out of eval sessions
101
+ const first = await t.send("Inspect PR 42.");
102
+ first.calledTool("inspect_pr");
424
103
 
425
- Eval sessions run the real agent, tools included. A reviewer that
426
- comments on GitHub or posts to Slack will do so from an eval unless
427
- the tool checks the session's purpose. Eval sessions carry
428
- `purpose: "eval"`; live traffic carries `"live"`. Branch on it in the
429
- tool, hook, or result handler that actuates:
430
-
431
- ```ts
432
- // agent/tools/post_findings.ts
433
- async execute({ findings }, ctx) {
434
- if (ctx.session.purpose === "eval") {
435
- return { posted: false, reason: "eval", count: findings.length };
436
- }
437
- // post the review
438
- }
104
+ const followUp = await t.send("Now summarize only the blockers.");
105
+ followUp.usedNoTools();
106
+ t.check(followUp.message, includes(/blocker/i));
107
+ t.succeeded();
439
108
  ```
440
109
 
441
- Return a shaped result instead of throwing, so the eval can still
442
- assert `t.calledTool("post_findings", { input: ... })` on the decision.
443
- The same check belongs in [hooks](./reference/hooks.md) that meter or
444
- page and in [`defineResult`](./reference/result.md) commits.
445
-
446
- ## Worked examples
447
-
448
- ### Multi-turn: grade each turn
110
+ For a tool that requires approval, the expected result is a parked turn
111
+ instead of a completed one:
449
112
 
450
113
  ```ts
451
- // evals/intro.eval.ts
452
- import { defineEval, includes, satisfies } from "@cursor/july/evals";
453
-
454
- export default defineEval({
455
- description: "Introduces itself once; a repeat mention gets a short ack.",
456
- async test(t) {
457
- const intro = await t.send("Meet Jenny! @Jenny introduce yourself.");
458
- intro.expectOk();
459
- t.check(intro.message, includes(/jenny/i));
460
-
461
- const repeat = await t.send("Meet, @Jenny!");
462
- t.succeeded();
463
- repeat.usedNoTools();
464
- t.check(
465
- repeat.message,
466
- satisfies((r) => (r as string).trim().length <= 280, "short ack")
467
- );
468
- t.check(
469
- repeat.message,
470
- satisfies((r) => !/what i can do/i.test(r as string), "no second intro")
471
- );
472
- },
114
+ await t.send("Apply the approved policy update.");
115
+ t.parked();
116
+ t.calledTool("apply_policy", {
117
+ input: { verdict: "update" },
473
118
  });
474
119
  ```
475
120
 
476
- `t.succeeded()` grades the whole session. `repeat.usedNoTools()` and the
477
- checks on `repeat.message` read only the second turn, even though
478
- `t.reply` now holds its text.
121
+ Pair an approval case with a safe branch that calls
122
+ `t.notCalledTool("apply_policy")`, so both sides of the decision stay
123
+ protected.
479
124
 
480
- ### Approvals: assert the parked decision
125
+ ## Pin realistic inputs
481
126
 
482
- For a tool with `needsApproval`, the turn parks instead of finishing.
483
- Gate on `t.parked()` and on the arguments the model chose:
127
+ A useful eval changes only when the agent changes. Freeze canonical chat
128
+ prompts, seed workspace evidence directly, and save webhook payloads
129
+ instead of depending on a developer's checkout or live external state.
484
130
 
485
131
  ```ts
486
- // evals/agents.eval.ts (one case; RULE and SLACK are fixture strings)
487
- {
488
- id: "update-rule",
489
- description: "A repeated billing rule parks the AGENTS.md write.",
490
- async test(t) {
491
- await t.send("Weekly AGENTS.md review. Read week/ and call apply_agents once.", {
492
- workspaceFiles: {
493
- "week/prs.md": RULE,
494
- "week/slack.md": SLACK,
495
- "week/tree/AGENTS.md.txt": "# API\n\nKeep handlers thin.\n",
496
- },
497
- });
498
- t.parked();
499
- t.calledTool("apply_agents", { input: { verdict: "update" } });
132
+ await t.send("Review pr/diff.patch and report blockers.", {
133
+ workspaceFiles: {
134
+ "pr/diff.patch": [
135
+ "diff --git a/app/routes/search.ts b/app/routes/search.ts",
136
+ "+res.send(`<h1>Results for ${req.query.q}</h1>`);",
137
+ ].join("\n"),
500
138
  },
501
- },
502
- ```
503
-
504
- `t.parked()` and `t.succeeded()` are exclusive: a parked run is a clean
505
- stop on an unanswered approval, not a completed one. Pair the parked
506
- case with a sibling that expects `verdict: "skip"` and `t.succeeded()`,
507
- so both branches stay pinned.
508
-
509
- ## Pin fixtures
510
-
511
- A fixed input is what makes an eval repeatable. Pick the fixture by the
512
- surface under test.
513
-
514
- | Agent surface | Fixture |
515
- | --- | --- |
516
- | Chat or domain assistant | One canonical prompt string, chosen once and frozen |
517
- | Tool-heavy | Run `agent-sdk call <tool>` first to pin what the tool returns, then freeze the prompt that triggers it |
518
- | GitHub webhook | `agent-sdk github replay <pr> --events '*' --dry-run --out fixtures/github` snapshots real payloads for offline replay ([GitHub guide](./guides/github.md#test-with-github-replay)) |
519
- | PR reviewer with host preparation | Diff, metadata, and gold labels pinned to commit SHAs; keep any live PR matrix small |
520
- | Workspace-dependent | `workspaceFiles` on the first `t.send`, never developer-machine paths |
521
-
522
- Tag the fast, reliably passing core `smoke` and run `--tag smoke` in
523
- the inner loop. Leave slow or drift-prone cases untagged for explicit
524
- runs.
525
-
526
- ### Materialize API-backed fixtures
527
-
528
- An input that only points at external data (a pull request URL, a
529
- snapshot id, a pair of commit SHAs) is not self-contained. Fetch it once
530
- and commit the rendered fixture before you expand the suite:
531
-
532
- 1. Save the diff, metadata, and labels under `fixtures/` at pinned
533
- revisions.
534
- 2. Seed those files with `workspaceFiles`, or read them from the
535
- fixture directory.
536
- 3. Assert decisions and output shape against the saved evidence.
537
- 4. Keep a small `smoke` subset for any remaining live checks.
538
-
539
- `maxConcurrency` limits parallel datapoints, not the model or API
540
- fan-out inside one datapoint. Materialized fixtures keep a large suite
541
- from exhausting provider and GitHub rate limits.
542
-
543
- ### Load a dataset
544
-
545
- Read committed fixtures with `loadJson`, `loadJsonl`, and `loadYaml`
546
- from `@cursor/july/evals/loaders`. Relative paths resolve against the
547
- project root the runner discovered, not the cwd the CLI ran from. Eval
548
- files are ES modules, so top-level `await` can load a dataset and fan
549
- one file out over it:
550
-
551
- ```ts
552
- // evals/sql.eval.ts: sql/0000, sql/0001, ...
553
- import { defineEval, equals } from "@cursor/july/evals";
554
- import { loadYaml } from "@cursor/july/evals/loaders";
555
-
556
- const rows = await loadYaml<{ task: string; prompt: string; sql: string }[]>(
557
- "evals/data/cases.yaml"
558
- );
559
-
560
- export default rows.map((row) =>
561
- defineEval({
562
- description: row.task,
563
- async test(t) {
564
- await t.send(row.prompt);
565
- t.succeeded();
566
- t.check(t.reply, equals(row.sql));
567
- },
568
- })
569
- );
570
- ```
571
-
572
- ## Configure eval runs
573
-
574
- `evals/evals.config.ts` (or `.js`) holds project-wide defaults. It must
575
- set `maxConcurrency`. Each case issues real model requests, so
576
- concurrency is hard-capped at 200; the templates use 10.
577
- `eval --list` works without the file. Running a case does not.
578
-
579
- ```ts
580
- import { defineEvalConfig } from "@cursor/july/evals";
581
-
582
- export default defineEvalConfig({
583
- maxConcurrency: 20,
584
- timeoutMs: 180_000,
585
- judge: { model: "gpt-5.4-mini" },
586
139
  });
587
140
  ```
588
141
 
589
- | Option | Default | Meaning |
590
- | --- | --- | --- |
591
- | `maxConcurrency` | required | Datapoints in flight at once, 1-200 |
592
- | `timeoutMs` | `180_000` | Per-case timeout. Precedence: case or file `timeoutMs`, then `--timeout-ms`, then this value |
593
- | `judge` | unset | Default judge model for `t.judge.*` |
594
- | `reporters` | unset | Destinations that observe every case; `--skip-report` suppresses them |
595
- | `maxPlaygroundRuns` | `20` | Batches kept in playground history (cap 500). Counts `--prod` and `--url` batches, not the default local run |
596
-
597
- Reporters ship results somewhere; the runner still does the grading.
598
- `JUnit({ filePath, suiteName? })` writes JUnit XML and
599
- `Artifacts({ dir })` writes per-case files, both from
600
- `@cursor/july/evals/reporters`. A custom reporter is an object with any
601
- of `onRunStart`, `onEvalComplete`, and `onRunComplete`. A reporter that
602
- throws is logged and never fails the run. CI usually attaches the
603
- built-in two with `--junit` and `--artifacts` instead of `reporters`,
604
- so output paths stay with the pipeline, not the eval author.
605
-
606
- Playground batches survive restarts when the project has
607
- [storage](./storage.md#eval-table). Otherwise they live in process
608
- memory until `serve` exits.
609
-
610
- ## Run evals from the CLI
142
+ For GitHub agents, snapshot a PR into committed fixtures:
611
143
 
612
144
  ```bash
613
- agent-sdk eval --dir . --list # discover only
614
- agent-sdk eval --dir . # run all
615
- agent-sdk eval --dir . builds/checkout # one datapoint
616
- agent-sdk eval --dir . builds search # several ids or prefixes
617
- agent-sdk eval --dir . --tag smoke --tag pull-request # any matching tag
618
- agent-sdk eval --dir . --verbose # t.log lines + reply snippets
619
- agent-sdk eval --dir . --timeout-ms 300000 # override the per-case timeout
145
+ agent-sdk github replay acme/checkout#42 \
146
+ --events '*' \
147
+ --dry-run \
148
+ --out fixtures/github
620
149
  ```
621
150
 
622
- Id filters use OR semantics. Each filter selects an exact id and its
623
- descendants: `builds` selects `builds`, `builds/checkout`, and every
624
- other case below that path. Repeated tags also use OR. With both ids
625
- and tags, a case must match both groups.
151
+ Keep a small, fast `smoke` set for every change. Put larger datasets and
152
+ drift-prone live cases behind an explicit selection. See
153
+ [Datasets and fixtures](./reference/evals.md#datasets-and-fixtures) for
154
+ loaders and case expansion.
626
155
 
627
- By default `eval` boots a throwaway server with its own state root, so
628
- cases don't inherit your checkout's `AGENTS.md` and session state stays
629
- out of the project. Artifacts still land in the project state
630
- directory; see [Where results land](#where-results-land). `--slug`
631
- picks the target in a multi-agent directory.
156
+ ## Run and debug a regression suite
632
157
 
633
- `--url` runs the batch on a running server instead, the same way
634
- `--prod` does: that server discovers its own `evals/`, results land in
635
- its playground history, and the local-only flags (`--junit`,
636
- `--artifacts`, `--max-concurrency`, `--skip-report`) do not apply. See
637
- [Run evals in the playground or on a deployment](#run-evals-in-the-playground-or-on-a-deployment).
158
+ Run one case while iterating, then the smoke suite before review. A
159
+ failure artifact records the input, assertions, tool calls, and final
160
+ text, making it the first place to look before changing the prompt.
638
161
 
639
162
  ```bash
640
- agent-sdk eval --url http://127.0.0.1:3000/weather-agent \
641
- --bearer-token "$AGENT_TOKEN"
163
+ agent-sdk eval --dir . readiness
164
+ agent-sdk eval --dir . --tag smoke
165
+ agent-sdk eval --dir . --json
642
166
  ```
643
167
 
644
- See [CLI: eval](./reference/cli.md#eval) for every flag.
645
-
646
- ### Credentials
168
+ By default, results land under `evals/<stamp>/` in the project state
169
+ directory. Open `evals/<case-id>.json` inside that run directory for the
170
+ failed case. This artifact location is independent of `--state-root`;
171
+ pass `--artifacts <dir>` to choose another destination.
647
172
 
648
- Model turns need a
649
- [Cursor credential](./reference/cli.md#environment-variables):
650
- `CURSOR_API_KEY`, `CURSOR_SERVICE_ACCOUNT_KEY`, or a saved
651
- `agent-sdk login`. The judge uses the same one. `eval --list` needs
652
- none.
653
-
654
- ### Where results land
655
-
656
- Every local run writes artifacts to a timestamped directory under
657
- `evals/` in the project state directory, whatever `--state-root` says.
658
- `--artifacts <dir>` chooses the path and `--no-artifacts` skips them.
659
- The directory holds `summary.json`,
660
- `results.jsonl`, and `evals/<case-id>.json` with every assertion, the
661
- inputs, tool calls with arguments and output, the final text, and
662
- `t.log` lines. Start there when a case fails. `--out <file>` also
663
- writes the full results JSON to a path of your choice.
664
-
665
- The artifact does not include the session's event stream. Pass
666
- `--state-root <path>` to keep the ephemeral server's
667
- [session data](./reference/sessions.md#where-does-the-agent-sdk-store-session-data)
668
- on disk when you need the raw events.
173
+ Model turns need a credential. Resolution checks `CURSOR_API_KEY`,
174
+ `CURSOR_API_KEY_FILE`, `CURSOR_SERVICE_ACCOUNT_KEY`, then a saved
175
+ `agent-sdk login`. `eval --list` only discovers cases and needs none.
669
176
 
670
177
  ## Run evals in CI
671
178
 
672
- Run the suite non-interactively, write JUnit for the CI annotations,
673
- and fail the job on a red gate:
179
+ Write machine-readable output and JUnit annotations, then let a failed
180
+ gate fail the job:
674
181
 
675
182
  ```bash
676
- # CURSOR_API_KEY comes from the CI secret store
183
+ # CURSOR_API_KEY comes from the CI secret store.
677
184
  agent-sdk eval --dir . --json --no-stream \
678
185
  --junit reports/evals.xml \
679
186
  --artifacts reports/evals \
680
187
  > reports/evals.json
681
188
  ```
682
189
 
683
- The exit code follows the
684
- [verdict table](#gates-soft-scores-and-verdicts); `2` means nothing
685
- matched the selection. `--max-concurrency` overrides the project
686
- setting, for example to run lower on a shared runner.
687
-
688
- The JSON on stdout carries the totals and one result per case:
689
-
690
- ```json
691
- {
692
- "ok": true,
693
- "passed": 1,
694
- "failed": 0,
695
- "scored": 0,
696
- "skipped": 0,
697
- "strict": false,
698
- "artifactsDir": "/work/my-agent/reports/evals",
699
- "results": [
700
- {
701
- "id": "readiness",
702
- "verdict": "passed",
703
- "ok": true,
704
- "assertions": [
705
- { "name": "succeeded", "passed": true },
706
- { "name": "calledTool(inspect_pr)", "passed": true }
707
- ],
708
- "sessionId": "ses_123",
709
- "inputs": ["Is https://github.com/acme/checkout/pull/42 ready to approve?"],
710
- "toolCalls": [{ "toolName": "inspect_pr", "isError": false }],
711
- "metrics": {},
712
- "logs": [],
713
- "durationMs": 12340
714
- }
715
- ]
716
- }
717
- ```
718
-
719
- Each result can also include `description`, `finalText`, `tools`,
720
- `error`, `skipReason`, `metadata`, `tags`, and tool `args` and `output`.
721
- A soft miss shows as `"severity": "soft"` with `score` and `threshold`
722
- on the assertion. This shape lets CI report the failed assertion
723
- without parsing terminal text.
190
+ Run `--tag smoke` on pull requests and the full suite on a schedule when
191
+ cost or latency makes every-push coverage impractical. Use soft scores
192
+ for a new probabilistic benchmark until its threshold is trustworthy.
724
193
 
725
- Keep CI green without weakening gates:
194
+ The [CLI reference](./reference/cli.md#eval) covers selectors, hosted
195
+ runs, exit codes, and JSON output.
726
196
 
727
- - Run `--tag smoke` on every push and the full suite on a schedule.
728
- - For probabilistic behavior, use `iterations` and a soft bar instead
729
- of one hard gate.
197
+ ## Keep side effects out of eval sessions
730
198
 
731
- ## Run evals in the playground or on a deployment
199
+ Eval sessions carry `purpose: "eval"`. Check it at the deterministic
200
+ write boundary and return the decision without performing the external
201
+ action:
732
202
 
733
- Start the server, open the playground, and choose **Evals**. Run every
734
- case or one case, watch progress, and open the resulting session trace.
735
- Playground runs target the live server instead of an ephemeral one, so
736
- their sessions appear in the session list. One batch runs at a time.
203
+ ```ts
204
+ async execute({ findings }, ctx) {
205
+ if (ctx.session.purpose === "eval") {
206
+ return {
207
+ posted: false,
208
+ reason: "eval",
209
+ count: findings.length,
210
+ };
211
+ }
737
212
 
738
- ```bash
739
- agent-sdk serve --dir .
213
+ return await postFindings(findings);
214
+ }
740
215
  ```
741
216
 
742
- `--prod` (or `--url`) starts the same server-side batch on the team's
743
- hosted deployment (or the server you name), so results land in that
744
- server's playground history:
217
+ This preserves the tool call in the trajectory, so the eval can still
218
+ assert that the agent chose to post.
745
219
 
746
- ```bash
747
- agent-sdk eval --prod --slug vulnerability-scanner --tag deepsec
748
- # Eval ID: <evalId>
749
- # Playground: <deployment>/playground?view=evals&evalRunId=<evalId>
750
- agent-sdk eval status <evalId> --prod --slug vulnerability-scanner
751
- agent-sdk eval cancel <evalId> --prod --slug vulnerability-scanner
752
- ```
220
+ ## Evals, hooks, or hillclimbing?
753
221
 
754
- The CLI prints the Eval ID as soon as the batch is accepted. Pass
755
- `--no-wait` to return right away and poll with `eval status` later; it
756
- exits `3` while the batch is still running. Hosted history follows
757
- `maxPlaygroundRuns` and the persistence rule under
758
- [Configure eval runs](#configure-eval-runs). The HTTP surface is under
759
- [Playground eval routes](./reference/http-api.md#playground-eval-routes).
222
+ Use an eval to gate one fixed input. Use a
223
+ [hook](./reference/hooks.md) to observe every live session for metrics,
224
+ auditing, or alerts. Use [hillclimbing](./hillclimbing.md) to decide
225
+ which source change improves a fixed set of inputs; every kept
226
+ hillclimb change should add an eval.
760
227
 
761
- ## Keep improvements with regression evals
228
+ ## Gates and scores
762
229
 
763
- Every [hillclimb](./hillclimbing.md) round that keeps a change must
764
- land an eval that would have failed before the change. If you can't
765
- express the improvement as a gate (a `calledTool` shift, a bounded
766
- `maxToolCalls`, an output-shape check), the improvement is unverified,
767
- and it'll regress silently.
230
+ `t.succeeded()`, tool assertions, and deterministic checks are hard
231
+ gates by default. A failed gate fails the case. `.soft()` records a
232
+ measurement without blocking, while `.atLeast(threshold)` records a
233
+ score and marks a miss as `scored`.
234
+
235
+ Start with decisions and output shape: the intended tool, the tempting
236
+ wrong tool, and one structural check. Exact prose is rarely a stable
237
+ contract.
238
+
239
+ ## Keep improvements with regression evals
768
240
 
769
- The rule cuts the other way too: never weaken an existing gate to make
770
- a round pass. That's the freeze line moving, and it turns your
771
- regression suite into a list of checks that no longer protect anything.
241
+ Every kept improvement needs an eval that would have failed before the
242
+ change. A tool-choice gate, bounded `maxToolCalls`, or output-shape check
243
+ turns the improvement into a durable contract.
772
244
 
773
- ## What's next
245
+ Never weaken an existing gate to make a new implementation pass. That
246
+ moves the freeze line instead of proving the change.
774
247
 
775
- Continue with these pages:
248
+ ## Related
776
249
 
777
- - [Hillclimbing](./hillclimbing.md): the loop evals make trustworthy
778
- - [Building agents with agents](./building-with-agents.md): have a
779
- coding agent write the first suite
780
- - [GitHub guide](./guides/github.md): deterministic webhook fixtures
781
- with `github replay`
782
- - [Sessions and streaming](./reference/sessions.md): the events
783
- `t.events` contains
250
+ - [Evals reference](./reference/evals.md): complete authoring and runner
251
+ contracts
252
+ - [`skills/evals/SKILL.md`](../skills/evals/SKILL.md): author and seed
253
+ cases with a coding agent
254
+ - [Hillclimbing](./hillclimbing.md): measure a change and lock the win
255
+ - [Sessions](./reference/sessions.md): events available to trajectory
256
+ assertions