@cursor/july 0.1.111 → 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 (383) hide show
  1. package/dist/bin/agent-serve.js +18 -1
  2. package/dist/channels/github/github-channel.d.ts +29 -19
  3. package/dist/channels/github/github-channel.d.ts.map +1 -1
  4. package/dist/channels/github/github-channel.js +29 -19
  5. package/dist/channels/slack/agentic-delivery.d.ts.map +1 -1
  6. package/dist/channels/slack/agentic-delivery.js +2 -0
  7. package/dist/channels/slack/dispatch.d.ts +11 -1
  8. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  9. package/dist/channels/slack/dispatch.js +142 -39
  10. package/dist/channels/slack/placeholder.d.ts +26 -0
  11. package/dist/channels/slack/placeholder.d.ts.map +1 -1
  12. package/dist/channels/slack/placeholder.js +28 -0
  13. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  14. package/dist/channels/slack/slack-channel.js +9 -16
  15. package/dist/docs/404.html +2 -2
  16. package/dist/docs/assets/{app.Drol6mi6.js → app.DxTdhphC.js} +4 -4
  17. package/dist/docs/assets/building-with-agents.md.BBCx0AUo.js +9 -0
  18. package/dist/docs/assets/building-with-agents.md.BBCx0AUo.lean.js +1 -0
  19. package/dist/docs/assets/chunks/@localSearchIndexroot.QmjDU6Jh.js +1 -0
  20. package/dist/docs/assets/chunks/{VPLocalSearchBox.CdqoBZJX.js → VPLocalSearchBox.CR3KTF0X.js} +1 -1
  21. package/dist/docs/assets/chunks/{arc.BVX3ycTn.js → arc.CVVqBOdS.js} +1 -1
  22. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CcChnMxX.js → architectureDiagram-Q4EWVU46.CJHGP4ki.js} +1 -1
  23. package/dist/docs/assets/chunks/{baseUniq.xwtXO-yt.js → baseUniq.r7UVVRBP.js} +1 -1
  24. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.CijZ_taK.js → blockDiagram-DXYQGD6D.DKmMaTre.js} +1 -1
  25. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.0FBvwBvK.js → c4Diagram-AHTNJAMY.DDJsntUO.js} +1 -1
  26. package/dist/docs/assets/chunks/channel.BjpoSbz_.js +1 -0
  27. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CELMmMDA.js → chunk-4BX2VUAB.BK2rKt6W.js} +1 -1
  28. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C4bhFtSm.js → chunk-4TB4RGXK.DRLV8RnF.js} +1 -1
  29. package/dist/docs/assets/chunks/{chunk-55IACEB6.ZnQ9gRRQ.js → chunk-55IACEB6.DaKjxtb7.js} +1 -1
  30. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DPlmglG-.js → chunk-EDXVE4YY.C5sPCIT1.js} +1 -1
  31. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.BrUk8pff.js → chunk-FMBD7UC4.CSGWyNTB.js} +1 -1
  32. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CcmWIncu.js → chunk-OYMX7WX6.D5tK9XEr.js} +1 -1
  33. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D65-cs8I.js → chunk-QZHKN3VN.BeZGd1UZ.js} +1 -1
  34. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.qoXZpG9F.js → chunk-YZCP3GAM.U_tfWwQR.js} +1 -1
  35. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BgxOlMHw.js +1 -0
  36. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BgxOlMHw.js +1 -0
  37. package/dist/docs/assets/chunks/clone.DRuGBKZC.js +1 -0
  38. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.8rYtqudO.js → cose-bilkent-S5V4N54A.DVeRXIb6.js} +1 -1
  39. package/dist/docs/assets/chunks/{dagre-KV5264BT.DrRP1fOh.js → dagre-KV5264BT.BpKJAeRZ.js} +1 -1
  40. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DHj_xA2_.js → diagram-5BDNPKRD.BQOtrd1Z.js} +1 -1
  41. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.Bz_6nAKj.js → diagram-G4DWMVQ6.CSDAhjPI.js} +1 -1
  42. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BWA0xSW9.js → diagram-MMDJMWI5.Dpztst2S.js} +1 -1
  43. package/dist/docs/assets/chunks/{diagram-TYMM5635.CpTJLNJI.js → diagram-TYMM5635.qJHRizHR.js} +1 -1
  44. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.-7AWWSrP.js → erDiagram-SMLLAGMA.vbDotH3l.js} +1 -1
  45. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BTnQ742_.js → flowDiagram-DWJPFMVM.CqS_ZQr4.js} +1 -1
  46. package/dist/docs/assets/chunks/framework.BNw1pucY.js +19 -0
  47. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.B5_HiiQ5.js → ganttDiagram-T4ZO3ILL.DTLdR4pN.js} +1 -1
  48. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CZcNTFZd.js → gitGraphDiagram-UUTBAWPF.D04lnbnr.js} +1 -1
  49. package/dist/docs/assets/chunks/{graph.V2GLaab4.js → graph.BlfqLJsM.js} +1 -1
  50. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.7pZOkCCU.js → infoDiagram-42DDH7IO.tAooImWA.js} +1 -1
  51. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DSMo3Qa3.js → ishikawaDiagram-UXIWVN3A.ClUsVqnJ.js} +1 -1
  52. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BNEgWN1S.js → journeyDiagram-VCZTEJTY.C3tUgyCg.js} +1 -1
  53. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B-4d4tC7.js → kanban-definition-6JOO6SKY.CtD9-QCe.js} +1 -1
  54. package/dist/docs/assets/chunks/{layout.Dvbn9nSb.js → layout.D38U-LnT.js} +1 -1
  55. package/dist/docs/assets/chunks/{linear.D2GM4p4b.js → linear.BJmssyhN.js} +1 -1
  56. package/dist/docs/assets/chunks/{min.DVBtLK-B.js → min.DNgXoouU.js} +1 -1
  57. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CnJRI55x.js → mindmap-definition-QFDTVHPH.Dcp6cxeu.js} +1 -1
  58. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.CtoaTFlA.js → pieDiagram-DEJITSTG.CLDw6zIs.js} +1 -1
  59. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DtT24_vN.js → quadrantDiagram-34T5L4WZ.CYaeeY4c.js} +1 -1
  60. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CjSO4o8f.js → requirementDiagram-MS252O5E.gMYuRpq2.js} +1 -1
  61. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.-wWiIVWa.js → sankeyDiagram-XADWPNL6.CZqyHFbc.js} +1 -1
  62. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DSk8s4gX.js → sequenceDiagram-FGHM5R23.BTsCjUDN.js} +1 -1
  63. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BFKAsdkN.js → stateDiagram-FHFEXIEX.CftT9mLJ.js} +1 -1
  64. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.-43J68xB.js +1 -0
  65. package/dist/docs/assets/chunks/{theme.C0MctGaz.js → theme.B_7J9ZsV.js} +2 -2
  66. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.TUNJbAFe.js → timeline-definition-GMOUNBTQ.DbU3WUNw.js} +1 -1
  67. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.C-RGNnk4.js → vennDiagram-DHZGUBPP.ixsq-q2u.js} +1 -1
  68. package/dist/docs/assets/chunks/wardley-RL74JXVD.WRXz-Dux.js +162 -0
  69. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.DH4zt73Y.js → wardleyDiagram-NUSXRM2D.C0ewvgbp.js} +1 -1
  70. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.B-3k6bF6.js → xychartDiagram-5P7HB3ND.nAEhF4bO.js} +1 -1
  71. package/dist/docs/assets/deployment.md.D2jQZuFx.js +32 -0
  72. package/dist/docs/assets/deployment.md.D2jQZuFx.lean.js +1 -0
  73. package/dist/docs/assets/evals.md.BYvfZ-PO.js +72 -0
  74. package/dist/docs/assets/evals.md.BYvfZ-PO.lean.js +1 -0
  75. package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.js +30 -0
  76. package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.lean.js +1 -0
  77. package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.js +145 -0
  78. package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.lean.js +1 -0
  79. package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.js +15 -0
  80. package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.lean.js +1 -0
  81. package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.js +43 -0
  82. package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.lean.js +1 -0
  83. package/dist/docs/assets/guides_github.md.BwpBp3ed.js +156 -0
  84. package/dist/docs/assets/guides_github.md.BwpBp3ed.lean.js +1 -0
  85. package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.js +153 -0
  86. package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.lean.js +1 -0
  87. package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.js +16 -0
  88. package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.lean.js +1 -0
  89. package/dist/docs/assets/guides_improve.md.Bnp4F99w.js +22 -0
  90. package/dist/docs/assets/guides_improve.md.Bnp4F99w.lean.js +1 -0
  91. package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.js +50 -0
  92. package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.lean.js +1 -0
  93. package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.js +35 -0
  94. package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.lean.js +1 -0
  95. package/dist/docs/assets/guides_slack.md.Bo96y42E.js +70 -0
  96. package/dist/docs/assets/guides_slack.md.Bo96y42E.lean.js +1 -0
  97. package/dist/docs/assets/guides_webhooks.md.1A72_VEE.js +92 -0
  98. package/dist/docs/assets/guides_webhooks.md.1A72_VEE.lean.js +1 -0
  99. package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.js +7 -0
  100. package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.lean.js +1 -0
  101. package/dist/docs/assets/{index.md.BFVyY2KT.js → index.md.C-t81M5J.js} +2 -2
  102. package/dist/docs/assets/{index.md.BFVyY2KT.lean.js → index.md.C-t81M5J.lean.js} +1 -1
  103. package/dist/docs/assets/{quickstart.md.D3MjSZN-.js → quickstart.md.DAvVhuuU.js} +1 -1
  104. package/dist/docs/assets/{quickstart.md.D3MjSZN-.lean.js → quickstart.md.DAvVhuuU.lean.js} +1 -1
  105. package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.js → reference_agent-config.md.DGPyw7ms.js} +1 -1
  106. package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.lean.js → reference_agent-config.md.DGPyw7ms.lean.js} +1 -1
  107. package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.js → reference_artifacts.md.Bu_4HmsD.js} +1 -1
  108. package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.lean.js → reference_artifacts.md.Bu_4HmsD.lean.js} +1 -1
  109. package/dist/docs/assets/{reference_channels.md.icqLKcTc.js → reference_channels.md.nFWbzAic.js} +1 -1
  110. package/dist/docs/assets/{reference_channels.md.icqLKcTc.lean.js → reference_channels.md.nFWbzAic.lean.js} +1 -1
  111. package/dist/docs/assets/{reference_cli.md.B2dBL6L8.js → reference_cli.md.DLWDz9ij.js} +3 -1
  112. package/dist/docs/assets/{reference_cli.md.B2dBL6L8.lean.js → reference_cli.md.DLWDz9ij.lean.js} +1 -1
  113. package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.js → reference_connections.md.CmyrlXfY.js} +1 -1
  114. package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.lean.js → reference_connections.md.CmyrlXfY.lean.js} +1 -1
  115. package/dist/docs/assets/reference_evals.md.DNJzM_yf.js +57 -0
  116. package/dist/docs/assets/reference_evals.md.DNJzM_yf.lean.js +1 -0
  117. package/dist/docs/assets/reference_extensions.md.Ceq-qT8d.js +58 -0
  118. package/dist/docs/assets/reference_extensions.md.Ceq-qT8d.lean.js +1 -0
  119. package/dist/docs/assets/{reference_hooks.md.CZuynAxj.js → reference_hooks.md.B7uzNENk.js} +2 -2
  120. package/dist/docs/assets/{reference_hooks.md.CZuynAxj.lean.js → reference_hooks.md.B7uzNENk.lean.js} +1 -1
  121. package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.js → reference_http-api.md.CduHavZ2.js} +1 -1
  122. package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.lean.js → reference_http-api.md.CduHavZ2.lean.js} +1 -1
  123. package/dist/docs/assets/{reference_instructions.md.D7gkckK-.js → reference_instructions.md.CU1My5My.js} +1 -1
  124. package/dist/docs/assets/{reference_instructions.md.D7gkckK-.lean.js → reference_instructions.md.CU1My5My.lean.js} +1 -1
  125. package/dist/docs/assets/{reference_playground.md.D2YExv5K.js → reference_playground.md.Ch2d0Iqi.js} +1 -1
  126. package/dist/docs/assets/{reference_playground.md.D2YExv5K.lean.js → reference_playground.md.Ch2d0Iqi.lean.js} +1 -1
  127. package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.js → reference_project-layout.md.BGhgpy9V.js} +1 -1
  128. package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.lean.js → reference_project-layout.md.BGhgpy9V.lean.js} +1 -1
  129. package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.js → reference_prompt.md.Ccp0R53H.js} +1 -1
  130. package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.lean.js → reference_prompt.md.Ccp0R53H.lean.js} +1 -1
  131. package/dist/docs/assets/{reference_schedules.md.BasfZWO-.js → reference_schedules.md.B2Nm6FaD.js} +1 -1
  132. package/dist/docs/assets/{reference_schedules.md.BasfZWO-.lean.js → reference_schedules.md.B2Nm6FaD.lean.js} +1 -1
  133. package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.js → reference_sessions.md.1_6Vyv7x.js} +1 -1
  134. package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.lean.js → reference_sessions.md.1_6Vyv7x.lean.js} +1 -1
  135. package/dist/docs/assets/{reference_skills.md.rNgpsGd0.js → reference_skills.md.DjQkRefx.js} +1 -1
  136. package/dist/docs/assets/{reference_skills.md.rNgpsGd0.lean.js → reference_skills.md.DjQkRefx.lean.js} +1 -1
  137. package/dist/docs/assets/{reference_subagents.md.e5qitjJt.js → reference_subagents.md.BHsSMMyO.js} +1 -1
  138. package/dist/docs/assets/{reference_subagents.md.e5qitjJt.lean.js → reference_subagents.md.BHsSMMyO.lean.js} +1 -1
  139. package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.js → reference_tools.md.BYzUTeVA.js} +1 -1
  140. package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.lean.js → reference_tools.md.BYzUTeVA.lean.js} +1 -1
  141. package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.js → templates_agentic-owners.md.9M575F5C.js} +1 -1
  142. package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.lean.js → templates_agentic-owners.md.9M575F5C.lean.js} +1 -1
  143. package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.js → templates_pr-autofixer.md.ws0DDXDy.js} +1 -1
  144. package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.lean.js → templates_pr-autofixer.md.ws0DDXDy.lean.js} +1 -1
  145. package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.js → templates_security-reviewer.md.KEFYXzfK.js} +1 -1
  146. package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.lean.js → templates_security-reviewer.md.KEFYXzfK.lean.js} +1 -1
  147. package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.js +3 -0
  148. package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.lean.js +1 -0
  149. package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.js +3 -0
  150. package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.lean.js +1 -0
  151. package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.js → templates_triage.md.CVGe_FG6.js} +1 -1
  152. package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.lean.js → templates_triage.md.CVGe_FG6.lean.js} +1 -1
  153. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.js +1 -0
  154. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.lean.js +1 -0
  155. package/dist/docs/building-with-agents.html +44 -48
  156. package/dist/docs/building-with-agents.md +94 -82
  157. package/dist/docs/deployment.html +59 -78
  158. package/dist/docs/deployment.md +117 -363
  159. package/dist/docs/evals.html +85 -224
  160. package/dist/docs/evals.md +146 -673
  161. package/dist/docs/guides/agent-to-agent.html +58 -42
  162. package/dist/docs/guides/agent-to-agent.md +112 -35
  163. package/dist/docs/guides/bitbucket.html +179 -44
  164. package/dist/docs/guides/bitbucket.md +249 -48
  165. package/dist/docs/guides/cloud-agents.html +46 -40
  166. package/dist/docs/guides/cloud-agents.md +119 -66
  167. package/dist/docs/guides/convert-automation.html +80 -49
  168. package/dist/docs/guides/convert-automation.md +156 -147
  169. package/dist/docs/guides/github.html +184 -92
  170. package/dist/docs/guides/github.md +260 -245
  171. package/dist/docs/guides/gitlab.html +184 -45
  172. package/dist/docs/guides/gitlab.md +249 -50
  173. package/dist/docs/guides/grokbot-agents.html +48 -41
  174. package/dist/docs/guides/grokbot-agents.md +99 -53
  175. package/dist/docs/guides/improve.html +48 -40
  176. package/dist/docs/guides/improve.md +111 -58
  177. package/dist/docs/guides/mcp-oauth.html +74 -52
  178. package/dist/docs/guides/mcp-oauth.md +111 -121
  179. package/dist/docs/guides/opentelemetry.html +63 -54
  180. package/dist/docs/guides/opentelemetry.md +96 -165
  181. package/dist/docs/guides/slack.html +83 -59
  182. package/dist/docs/guides/slack.md +157 -227
  183. package/dist/docs/guides/webhooks.html +97 -230
  184. package/dist/docs/guides/webhooks.md +154 -385
  185. package/dist/docs/hashmap.json +1 -1
  186. package/dist/docs/hillclimbing.html +44 -38
  187. package/dist/docs/hillclimbing.md +101 -55
  188. package/dist/docs/index.html +38 -38
  189. package/dist/docs/index.md +2 -0
  190. package/dist/docs/llms-full.txt +3082 -3104
  191. package/dist/docs/llms.txt +21 -18
  192. package/dist/docs/quickstart.html +37 -37
  193. package/dist/docs/reference/agent-config.html +37 -37
  194. package/dist/docs/reference/artifacts.html +38 -38
  195. package/dist/docs/reference/channels.html +37 -37
  196. package/dist/docs/reference/cli.html +39 -37
  197. package/dist/docs/reference/cli.md +2 -0
  198. package/dist/docs/reference/connections.html +37 -37
  199. package/dist/docs/reference/evals.html +116 -0
  200. package/dist/docs/reference/evals.md +293 -0
  201. package/dist/docs/reference/extensions.html +80 -84
  202. package/dist/docs/reference/extensions.md +127 -199
  203. package/dist/docs/reference/hooks.html +39 -39
  204. package/dist/docs/reference/hooks.md +34 -34
  205. package/dist/docs/reference/http-api.html +37 -37
  206. package/dist/docs/reference/instructions.html +37 -37
  207. package/dist/docs/reference/playground.html +37 -37
  208. package/dist/docs/reference/project-layout.html +37 -37
  209. package/dist/docs/reference/prompt.html +37 -37
  210. package/dist/docs/reference/schedules.html +37 -37
  211. package/dist/docs/reference/sessions.html +37 -37
  212. package/dist/docs/reference/skills.html +37 -37
  213. package/dist/docs/reference/subagents.html +37 -37
  214. package/dist/docs/reference/tools.html +37 -37
  215. package/dist/docs/templates/agentic-owners.html +38 -38
  216. package/dist/docs/templates/pr-autofixer.html +37 -37
  217. package/dist/docs/templates/security-reviewer.html +38 -38
  218. package/dist/docs/templates/thermo-quality-review.html +62 -0
  219. package/dist/docs/templates/thermo-quality-review.md +75 -0
  220. package/dist/docs/templates/thermo-review.html +62 -0
  221. package/dist/docs/templates/thermo-review.md +74 -0
  222. package/dist/docs/templates/triage.html +37 -37
  223. package/dist/docs/troubleshooting.html +38 -38
  224. package/dist/docs/troubleshooting.md +97 -66
  225. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
  226. package/dist/extensions/improve/extension.d.ts +3 -1
  227. package/dist/extensions/improve/extension.d.ts.map +1 -1
  228. package/dist/extensions/improve/extension.js +4 -2
  229. package/dist/extensions/improve/skills/yourself.js +1 -1
  230. package/dist/filesystem.d.ts +46 -2
  231. package/dist/filesystem.d.ts.map +1 -1
  232. package/dist/filesystem.js +149 -102
  233. package/dist/index.d.ts +2 -2
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +1 -1
  236. package/dist/internal/cli-ax.d.ts +6 -0
  237. package/dist/internal/cli-ax.d.ts.map +1 -1
  238. package/dist/internal/cli-ax.js +72 -14
  239. package/dist/internal/continuation-identity.d.ts.map +1 -1
  240. package/dist/internal/continuation-identity.js +1 -0
  241. package/dist/internal/cursor-agent-template.d.ts +1 -1
  242. package/dist/internal/cursor-agent-template.d.ts.map +1 -1
  243. package/dist/internal/cursor-agent-template.js +2 -0
  244. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  245. package/dist/internal/filesystem/tools.js +2 -2
  246. package/dist/internal/filesystem/walk.d.ts +7 -4
  247. package/dist/internal/filesystem/walk.d.ts.map +1 -1
  248. package/dist/internal/filesystem/walk.js +34 -11
  249. package/dist/internal/hosted-admission-adapter.d.ts +3 -0
  250. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  251. package/dist/internal/hosted-delivery-protocol.d.ts +17 -0
  252. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  253. package/dist/internal/hosted-delivery-protocol.js +50 -1
  254. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  255. package/dist/internal/hosted-delivery.js +8 -0
  256. package/dist/internal/init-project.d.ts.map +1 -1
  257. package/dist/internal/init-project.js +4 -0
  258. package/dist/internal/server.d.ts.map +1 -1
  259. package/dist/internal/server.js +94 -39
  260. package/dist/internal/session-engine.d.ts.map +1 -1
  261. package/dist/internal/session-engine.js +11 -5
  262. package/dist/internal/skill-catalog.d.ts +28 -0
  263. package/dist/internal/skill-catalog.d.ts.map +1 -0
  264. package/dist/internal/skill-catalog.js +44 -0
  265. package/dist/playground/assets/index-B1c1LeIf.js +67 -0
  266. package/dist/playground/assets/index-CK2LX3iD.css +1 -0
  267. package/dist/playground/index.html +2 -2
  268. package/dist/types.d.ts +9 -0
  269. package/dist/types.d.ts.map +1 -1
  270. package/docs/README.md +2 -0
  271. package/docs/building-with-agents.md +96 -84
  272. package/docs/deployment.md +118 -364
  273. package/docs/evals.md +147 -674
  274. package/docs/guides/agent-to-agent.md +113 -36
  275. package/docs/guides/bitbucket.md +250 -49
  276. package/docs/guides/cloud-agents.md +119 -67
  277. package/docs/guides/convert-automation.md +157 -148
  278. package/docs/guides/github.md +261 -246
  279. package/docs/guides/gitlab.md +250 -51
  280. package/docs/guides/grokbot-agents.md +100 -55
  281. package/docs/guides/improve.md +112 -59
  282. package/docs/guides/mcp-oauth.md +112 -122
  283. package/docs/guides/opentelemetry.md +97 -166
  284. package/docs/guides/slack.md +158 -228
  285. package/docs/guides/webhooks.md +155 -386
  286. package/docs/hillclimbing.md +102 -56
  287. package/docs/reference/cli.md +2 -0
  288. package/docs/reference/evals.md +298 -0
  289. package/docs/reference/extensions.md +128 -200
  290. package/docs/reference/hooks.md +34 -34
  291. package/docs/templates/thermo-quality-review.md +80 -0
  292. package/docs/templates/thermo-review.md +79 -0
  293. package/docs/troubleshooting.md +98 -67
  294. package/package.json +1 -1
  295. package/skills/github/SKILL.md +21 -13
  296. package/src/bin/agent-serve.ts +22 -0
  297. package/src/channels/github/github-channel.ts +29 -19
  298. package/src/channels/slack/agentic-delivery.ts +2 -0
  299. package/src/channels/slack/dispatch.ts +126 -4
  300. package/src/channels/slack/placeholder.ts +51 -0
  301. package/src/channels/slack/slack-channel.ts +9 -2
  302. package/src/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
  303. package/src/extensions/improve/extension.ts +4 -2
  304. package/src/extensions/improve/skills/yourself.ts +1 -1
  305. package/src/filesystem.ts +168 -65
  306. package/src/index.ts +3 -0
  307. package/src/internal/cli-ax.ts +88 -15
  308. package/src/internal/continuation-identity.ts +1 -0
  309. package/src/internal/cursor-agent-template.ts +2 -0
  310. package/src/internal/filesystem/tools.ts +2 -0
  311. package/src/internal/filesystem/walk.ts +60 -15
  312. package/src/internal/hosted-admission-adapter.ts +3 -0
  313. package/src/internal/hosted-delivery-protocol.ts +78 -1
  314. package/src/internal/hosted-delivery.ts +8 -0
  315. package/src/internal/init-project.ts +4 -0
  316. package/src/internal/server.ts +104 -41
  317. package/src/internal/session-engine.ts +16 -4
  318. package/src/internal/skill-catalog.ts +69 -0
  319. package/src/types.ts +9 -0
  320. package/templates/thermo-quality-review/README.md +35 -0
  321. package/templates/thermo-quality-review/agent/agent.ts +8 -0
  322. package/templates/thermo-quality-review/agent/channels/github.ts +42 -0
  323. package/templates/thermo-quality-review/agent/instructions.md +43 -0
  324. package/templates/thermo-quality-review/agent/tools/post_findings.ts +70 -0
  325. package/templates/thermo-quality-review/evals/evals.config.ts +5 -0
  326. package/templates/thermo-quality-review/evals/review.eval.ts +62 -0
  327. package/templates/thermo-quality-review/package.json +18 -0
  328. package/templates/thermo-quality-review/tsconfig.json +12 -0
  329. package/templates/thermo-review/README.md +35 -0
  330. package/templates/thermo-review/agent/agent.ts +8 -0
  331. package/templates/thermo-review/agent/channels/github.ts +42 -0
  332. package/templates/thermo-review/agent/instructions.md +40 -0
  333. package/templates/thermo-review/agent/tools/post_findings.ts +70 -0
  334. package/templates/thermo-review/evals/evals.config.ts +5 -0
  335. package/templates/thermo-review/evals/review.eval.ts +53 -0
  336. package/templates/thermo-review/package.json +18 -0
  337. package/templates/thermo-review/tsconfig.json +12 -0
  338. package/dist/docs/assets/building-with-agents.md.CEGVXkmO.js +0 -13
  339. package/dist/docs/assets/building-with-agents.md.CEGVXkmO.lean.js +0 -1
  340. package/dist/docs/assets/chunks/@localSearchIndexroot.DtXk1hy-.js +0 -1
  341. package/dist/docs/assets/chunks/channel.Bkv1N-gK.js +0 -1
  342. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CZDco1o8.js +0 -1
  343. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CZDco1o8.js +0 -1
  344. package/dist/docs/assets/chunks/clone.YSt_40_s.js +0 -1
  345. package/dist/docs/assets/chunks/framework.dypDpWZ3.js +0 -19
  346. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.C4CLm481.js +0 -1
  347. package/dist/docs/assets/chunks/wardley-RL74JXVD.g5efOWmT.js +0 -162
  348. package/dist/docs/assets/deployment.md.Dm4Qo3hp.js +0 -51
  349. package/dist/docs/assets/deployment.md.Dm4Qo3hp.lean.js +0 -1
  350. package/dist/docs/assets/evals.md.BLDRt5LH.js +0 -211
  351. package/dist/docs/assets/evals.md.BLDRt5LH.lean.js +0 -1
  352. package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.js +0 -14
  353. package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.lean.js +0 -1
  354. package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.js +0 -10
  355. package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.lean.js +0 -1
  356. package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.js +0 -9
  357. package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.lean.js +0 -1
  358. package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.js +0 -12
  359. package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.lean.js +0 -1
  360. package/dist/docs/assets/guides_github.md.D6ER29dG.js +0 -64
  361. package/dist/docs/assets/guides_github.md.D6ER29dG.lean.js +0 -1
  362. package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.js +0 -14
  363. package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.lean.js +0 -1
  364. package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.js +0 -9
  365. package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.lean.js +0 -1
  366. package/dist/docs/assets/guides_improve.md.BKaDuKKK.js +0 -14
  367. package/dist/docs/assets/guides_improve.md.BKaDuKKK.lean.js +0 -1
  368. package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.js +0 -28
  369. package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.lean.js +0 -1
  370. package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.js +0 -26
  371. package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.lean.js +0 -1
  372. package/dist/docs/assets/guides_slack.md.DdT8rmsj.js +0 -46
  373. package/dist/docs/assets/guides_slack.md.DdT8rmsj.lean.js +0 -1
  374. package/dist/docs/assets/guides_webhooks.md.aQW10HRe.js +0 -225
  375. package/dist/docs/assets/guides_webhooks.md.aQW10HRe.lean.js +0 -1
  376. package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.js +0 -1
  377. package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.lean.js +0 -1
  378. package/dist/docs/assets/reference_extensions.md.wlFD3cUR.js +0 -62
  379. package/dist/docs/assets/reference_extensions.md.wlFD3cUR.lean.js +0 -1
  380. package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.js +0 -1
  381. package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.lean.js +0 -1
  382. package/dist/playground/assets/index-BLlKgZtI.css +0 -1
  383. package/dist/playground/assets/index-CDS5p9sR.js +0 -67
@@ -1,93 +1,139 @@
1
1
  ---
2
2
  title: "Hillclimbing"
3
- description: "Improve an agent one measured round at a time, with the hillclimb skill running the loop with you."
3
+ description: "Improve one agent behavior at a time by measuring fixed inputs, changing one lever, and locking each win with an eval."
4
4
  ---
5
5
 
6
6
  # Hillclimbing
7
7
 
8
- Make an agent better on fixed inputs: measure, change one lever, remeasure, and lock every kept win with an eval.
8
+ Hillclimbing improves an agent through controlled before-and-after
9
+ comparisons. Keep the inputs fixed, name one failure, change one lever,
10
+ and retain the change only when the same run gets better without
11
+ crossing the freeze line.
9
12
 
10
- ## What is hillclimbing?
13
+ The companion [`hillclimb` skill](../skills/hillclimb/SKILL.md) can run
14
+ this loop with you.
11
15
 
12
- Hillclimbing is a measured improvement loop. You pin a few fixtures, name the one dominant problem in the run, change one lever, and check the same fixtures again. Keep only what helps. Every kept change lands an [eval](./evals.md) so the win stays put.
16
+ ## Correct a wrong tool choice
13
17
 
14
- You don't have to run the loop alone. The package ships a coding-agent skill that drives it with you.
18
+ Suppose a PR reviewer calls `approve_pr` before `inspect_pr`. Pin one PR
19
+ fixture, record the original tool order, then tighten the instruction
20
+ that owns the decision. The improved run should inspect first and leave
21
+ approval untouched.
15
22
 
16
- ```mermaid
17
- flowchart LR
18
- measure[Measure] --> change[Change one lever]
19
- change --> remeasure[Remeasure]
20
- remeasure --> measure
23
+ ```bash
24
+ agent-sdk run --dir . \
25
+ --message "Is https://github.com/acme/checkout/pull/42 ready?"
21
26
  ```
22
27
 
23
- ## How do I hillclimb an agent with a coding agent?
28
+ Lock the result with the intended and tempting-wrong paths:
24
29
 
25
- Have Cursor read [`skills/hillclimb/SKILL.md`](../skills/hillclimb/SKILL.md).
30
+ ```ts
31
+ t.succeeded();
32
+ t.calledTool("inspect_pr");
33
+ t.notCalledTool("approve_pr");
34
+ ```
35
+
36
+ Do not change the tool implementation, prompt, and evidence together.
37
+ If tool choice improves, you should know which edit caused it.
26
38
 
27
- Tell it:
39
+ ## Reduce wandering or latency
28
40
 
29
- 1. **Which agent** you're improving (path or slug)
30
- 2. **One to three fixtures** you'll reuse every round: a PR URL, a saved webhook body, or a canonical chat prompt
31
- 3. **What "better" means** this round: correct tool choice, fewer tools, lower latency, or output quality. Name the freeze line too: API shape, public output, and existing evals that must stay green
41
+ A slow run often repeats reads, searches broad directories, or asks the
42
+ model to discover evidence the host already has. Compare the trajectory
43
+ by tool name and wall time, then move deterministic preparation ahead
44
+ of the turn or trim the evidence shape.
32
45
 
33
- The skill serves the agent, hits your fixtures, reads the session trajectory, proposes one change, remeasures, and checks with you before the next round.
46
+ ```text
47
+ before: 14 tool calls, 92 seconds, 6 repeated reads
48
+ after: 5 tool calls, 31 seconds, 0 repeated reads
49
+ ```
34
50
 
35
- Other skills cover the edges:
51
+ Keep the change only if the answer still finds the same known issue.
52
+ Efficiency without a quality check can make an agent fast by making it
53
+ incomplete.
36
54
 
37
- | When you need… | Skill |
38
- | --- | --- |
39
- | The measured improvement loop | [`skills/hillclimb/SKILL.md`](../skills/hillclimb/SKILL.md) |
40
- | An eval that locks a kept win | [`skills/evals/SKILL.md`](../skills/evals/SKILL.md) |
41
- | Repeatable GitHub webhook inputs | [`skills/github/SKILL.md`](../skills/github/SKILL.md) |
42
- | A run that misbehaves | [`skills/debug/SKILL.md`](../skills/debug/SKILL.md) |
55
+ ## Improve quality without changing the contract
43
56
 
44
- See [Building agents with agents](./building-with-agents.md) for every framework skill and a good first prompt.
57
+ For answer quality, freeze the public shape before editing: required
58
+ sections, API fields, side effects, and existing evals. Compare both
59
+ runs against a known-good answer or a small set of gold findings, then
60
+ change the instructions or skill that owns the missing judgment.
61
+
62
+ ```text
63
+ fixture: saved checkout PR diff
64
+ success: report both gold findings with file paths
65
+ freeze: findings JSON shape; no review post; existing smoke evals
66
+ ```
45
67
 
46
- ## What do I need before a hillclimb round?
68
+ A wording change is not a win by itself. Keep it when correctness rises
69
+ and every frozen behavior remains intact.
47
70
 
48
- Agree on four things before you edit:
71
+ ## Run one measured round
49
72
 
50
- 1. **The target agent**: the project you're improving
51
- 2. **Fixtures**: one to three fixed inputs you can compare across runs
52
- 3. **Success criteria**: what better means this round
53
- 4. **The freeze line**: what must not change
73
+ Agree on four inputs before editing:
54
74
 
55
- Pin the input first. A moving fixture is noise. For GitHub agents, use `agent-sdk github replay` (see the [GitHub guide](./guides/github.md)). For a single tool without a model turn, use `agent-sdk call`. For a chat turn, use `agent-sdk run --dir . --message "…"`.
75
+ 1. **Target:** the agent path or slug.
76
+ 2. **Fixtures:** one to three prompts, saved payloads, or pinned PRs.
77
+ 3. **Success:** the metric or decision that should improve.
78
+ 4. **Freeze line:** behavior that must not move.
56
79
 
57
- ## How do I run one hillclimb round?
80
+ Then run one loop:
58
81
 
59
- **Measure.** Hit the agent the way a user would: playground, channel HTTP, or Slack in `--dev`. Or ask the hillclimb skill to do it. `agent-sdk run` returns a JSON trajectory and writes a trace under the project state directory.
82
+ 1. Exercise the agent through the same surface a user would.
83
+ 2. Read the trajectory and name the dominant failure in one sentence.
84
+ 3. Change one lever.
85
+ 4. Rerun the same fixtures.
86
+ 5. Compare correctness, efficiency, and contract fit.
87
+ 6. Keep, revert, or narrow the change.
60
88
 
61
- **Reflect.** Score the trajectory, not impressions. Was the answer right? Did the model thrash (too many tools, fat evidence, grep loops)? Did it invent work the host should have prepared? Name the single dominant problem for this round in one sentence. Example: "Full-file dumps trigger grep loops."
89
+ Do not replace a fixture mid-round. A moving input makes the comparison
90
+ meaningless.
62
91
 
63
- **Change one lever.** Prefer the smallest change that addresses that problem:
92
+ ## Choose the smallest lever
64
93
 
65
- 1. Host prep: seed what the model needs so it doesn't hunt
66
- 2. Evidence shape: trim or reorder artifacts
67
- 3. Instructions and skills: tighten the procedure
68
- 4. Tool surface: remove or gate tools that invite wandering
69
- 5. Framework changes: only when the agent can't express the fix
94
+ Start with the earliest place that can remove the failure:
70
95
 
71
- **Remeasure.** Same fixtures. Diff tools, wall time, and quality side by side. Keep the change only if the target metric improves and the freeze line holds.
96
+ 1. **Host preparation:** fetch deterministic evidence before the turn.
97
+ 2. **Evidence shape:** trim, order, or label what the model receives.
98
+ 3. **Instructions or skills:** clarify the decision procedure.
99
+ 4. **Tool surface:** remove or gate tools that invite wandering.
100
+ 5. **Framework:** change it only when the agent cannot express the fix.
72
101
 
73
- ## How do I lock a hillclimb improvement with an eval?
102
+ Changing the host or evidence often improves both quality and latency
103
+ because the model spends less time searching for ground truth.
104
+
105
+ ## Lock every kept win
106
+
107
+ Each retained change needs an eval that would have failed before it. Use
108
+ a tool-choice assertion, `maxToolCalls` bound, output-shape check, or
109
+ quality score that captures the measured improvement.
110
+
111
+ ```bash
112
+ agent-sdk eval --dir . --tag smoke
113
+ ```
74
114
 
75
- Every kept change needs an eval that would have failed before the change: a tool-choice gate, a `maxToolCalls` bound, or an output-shape check. Run `agent-sdk eval --dir . --json` between rounds. Never weaken an existing gate to pass the round.
115
+ Never weaken an existing gate to make the round pass. The eval is the
116
+ record that the improvement survived after the fixture and source
117
+ change leave your working memory.
76
118
 
77
- Details live in [Keep improvements with regression evals](./evals.md#keep-improvements-with-regression-evals). The evals skill will author the case with you.
119
+ ## Run the loop with a coding agent
78
120
 
79
- ## What habits help hillclimbing stay reliable?
121
+ Ask the coding agent to read
122
+ [`skills/hillclimb/SKILL.md`](../skills/hillclimb/SKILL.md), then give
123
+ it the target, fixtures, success criterion, and freeze line. It will
124
+ measure the current run, propose one change, remeasure, and ask before
125
+ starting another round.
80
126
 
81
- - One problem per round. Don't bundle "trim evidence and rewrite instructions" unless you chose that on purpose.
82
- - Keep fixtures fixed until you deliberately need a harder case.
83
- - Separate host work from model tools when you blame latency. Moving deterministic prep onto the host is often the biggest win. In one PR reviewer, host-prepared evidence cut turns from about 8 minutes to about 1 minute.
84
- - Spot-check quality on at least one fixture against a known-good answer. Efficiency-only climbs quietly drop findings.
85
- - Treat `turn.failed` with `"turn interrupted"` as expected when a follow-up or stop preempted the turn.
86
- - Don't deploy, post to real surfaces, or weaken evals as part of a climb.
127
+ Use saved or local surfaces during a climb. Do not deploy or post to a
128
+ real external channel unless that side effect is part of an explicitly
129
+ approved fixture.
87
130
 
88
131
  ## Related
89
132
 
90
- - [Evals](./evals.md)
91
- - [Building agents with agents](./building-with-agents.md)
92
- - [GitHub guide](./guides/github.md)
93
- - [Fix common agent problems](./troubleshooting.md)
133
+ - [Evals](./evals.md): author the regression check for a kept win
134
+ - [Evals reference](./reference/evals.md): trajectory assertions and
135
+ scores
136
+ - [Building agents with agents](./building-with-agents.md): delegate
137
+ creation and verification to a coding agent
138
+ - [Fix common agent problems](./troubleshooting.md): diagnose a run
139
+ that is broken instead of underperforming
@@ -419,6 +419,8 @@ agent-sdk init ./grokbot --template grokbot-agents # talk to Grok Bot agents
419
419
  agent-sdk init ./code-wiki --template code-wiki # keep wiki pages current after merge
420
420
  agent-sdk init ./agents-md --template agents-md # keep AGENTS.md current from last week's PRs and Slack
421
421
  agent-sdk init ./my-reviewer --template security-reviewer # review PRs for security bugs
422
+ agent-sdk init ./thermo-review --template thermo-review # review PRs for bugs and breakage
423
+ agent-sdk init ./thermo-quality --template thermo-quality-review # review PRs for code quality
422
424
  agent-sdk init ./security-help --template security-help # answer security questions in Slack
423
425
  agent-sdk init ./my-triage --template triage-linear # comment on Linear issues
424
426
  agent-sdk init ./my-triage --template triage-jira # comment on Jira issues
@@ -0,0 +1,298 @@
1
+ ---
2
+ title: "Evals"
3
+ description: "Reference for eval discovery, cases, assertions, judges, configuration, fixtures, reporters, and runner output."
4
+ ---
5
+
6
+ # Evals reference
7
+
8
+ This page is the complete authoring and runner contract for
9
+ `@cursor/july/evals`. Start with the [Evals guide](../evals.md) for the
10
+ workflow and first regression case.
11
+
12
+ ## Discovery and case IDs
13
+
14
+ Eval files live under the project-root `evals/` directory and end in
15
+ `.eval.ts` or `.eval.js`. The path under that directory becomes the
16
+ eval ID:
17
+
18
+ - `evals/readiness.eval.ts` becomes `readiness`.
19
+ - `evals/builds/api.eval.ts` becomes `builds/api`.
20
+ - `evals/builds/index.eval.ts` becomes `builds`.
21
+
22
+ Export one `defineEval` with either `test` or `cases`, not both. A case
23
+ ID appends one path segment to the file ID:
24
+
25
+ ```ts
26
+ export default defineEval({
27
+ tags: ["smoke"],
28
+ cases: [
29
+ {
30
+ id: "checkout",
31
+ async test(t) {
32
+ await t.send("Review checkout PR 42.");
33
+ t.succeeded();
34
+ },
35
+ },
36
+ {
37
+ id: "search",
38
+ async test(t) {
39
+ await t.send("Review search PR 7.");
40
+ t.succeeded();
41
+ },
42
+ },
43
+ ],
44
+ });
45
+ ```
46
+
47
+ Those cases are `prs/checkout` and `prs/search` when the file is
48
+ `evals/prs.eval.ts`. Case IDs must be unique single path segments.
49
+
50
+ A file can also export an array of `defineEval` calls. The runner names
51
+ them with zero-padded indexes such as `sql/0000`. Use named `cases` for
52
+ handwritten scenarios and arrays for loaded datasets.
53
+
54
+ `iterations` repeats one datapoint from 1 to 100 times. For
55
+ `iterations: 3`, `weather/nyc` expands to `weather/nyc/1`,
56
+ `weather/nyc/2`, and `weather/nyc/3`; selecting `weather/nyc` runs all
57
+ three.
58
+
59
+ ## Configuration
60
+
61
+ Every running suite needs `evals/evals.config.ts` with
62
+ `maxConcurrency`:
63
+
64
+ ```ts
65
+ import { defineEvalConfig } from "@cursor/july/evals";
66
+
67
+ export default defineEvalConfig({
68
+ maxConcurrency: 20,
69
+ timeoutMs: 180_000,
70
+ judge: { model: "gpt-5.4-mini" },
71
+ });
72
+ ```
73
+
74
+ | Option | Contract |
75
+ | --- | --- |
76
+ | `maxConcurrency` | Required; concurrent authored datapoints, from 1 to 200 |
77
+ | `timeoutMs` | Per-case timeout; case/file, CLI, then config precedence |
78
+ | `judge` | Default model for `t.judge` |
79
+ | `reporters` | Objects notified as cases and runs complete |
80
+ | `maxPlaygroundRuns` | Number of server-side batches kept in playground history |
81
+
82
+ A case can override `description`, `tags`, `timeoutMs`, `iterations`,
83
+ `judge`, `reporters`, and `metadata`. Case metadata merges over
84
+ file-level metadata; case reporters add to the file's reporters.
85
+
86
+ ## Drive turns with `t.send`
87
+
88
+ `await t.send(message, options?)` runs one turn and waits until it
89
+ finishes, fails, or parks for approval. Several sends in one test share
90
+ the session.
91
+
92
+ The returned turn exposes its assistant `message`, `sessionId`,
93
+ `events`, ordered `toolCalls`, `ok`, and turn `index`. Assertions on the
94
+ turn inspect only that turn; assertions on `t` inspect the whole run.
95
+ Useful run values include `t.reply`, `t.events`, `t.turns`,
96
+ `t.sessionId`, and the timeout `t.signal`.
97
+
98
+ These options apply on the first send because they shape the session:
99
+
100
+ | Option | Contract |
101
+ | --- | --- |
102
+ | `workspaceFiles` | Relative path-to-content map seeded into the session workspace |
103
+ | `workspaceDir` | Absolute local harness working directory |
104
+ | `cloud` | Cloud session options merged over the agent's static cloud config |
105
+
106
+ Use `turn.expectOk()` when later test steps depend on that turn
107
+ succeeding.
108
+
109
+ ## Trajectory assertions
110
+
111
+ Assertions record failures and let the test continue, so one case
112
+ reports every violated contract.
113
+
114
+ | Assertion | Checks |
115
+ | --- | --- |
116
+ | `t.succeeded()` | Run finished without failure or an unanswered approval |
117
+ | `t.parked()` | Run stopped on an unanswered approval |
118
+ | `t.calledTool(name, matcher?)` | Matching tool request occurred |
119
+ | `t.notCalledTool(name)` | No request for that tool occurred |
120
+ | `t.loadedSkill(name)` | Agent opened a named skill |
121
+ | `t.toolOrder(names)` | Tool requests appeared in relative order |
122
+ | `t.usedNoTools()` | No tool was requested |
123
+ | `t.maxToolCalls(max)` | Tool-call count stayed under the bound |
124
+ | `t.noFailedActions()` | No tool result failed |
125
+ | `t.calledSubagent(name, matcher?)` | Matching subagent call occurred |
126
+ | `t.taggedArtifact(kind?, predicate?)` | Matching durable artifact was tagged |
127
+ | `t.event(type, matcher?)` | Matching session event occurred |
128
+ | `t.notEvent(type, matcher?)` | Matching session event did not occur |
129
+ | `t.eventOrder(matchers)` | Event groups appeared in relative order |
130
+ | `t.eventsSatisfy(label, predicate)` | Predicate accepted the event stream |
131
+ | `t.check(value, expectation)` | Value met an expectation builder |
132
+ | `t.score(name, value)` | Recorded a numeric score from 0 to 1 |
133
+
134
+ `t.requireToolCall`, `t.requireInputRequest`, and `t.require` return the
135
+ matched value and stop the remaining test body when no match exists.
136
+
137
+ ## Tool and event matchers
138
+
139
+ Tool matchers can narrow by `input`, `output`, `status`, and `count`.
140
+ Values accept literals, regular expressions, or predicates. Object
141
+ literals partial-deep-match:
142
+
143
+ ```ts
144
+ t.calledTool("inspect_pr", {
145
+ input: { verdict: "review" },
146
+ status: "completed",
147
+ count: 1,
148
+ });
149
+ ```
150
+
151
+ Tool status is `completed`, `failed`, `pending`, or `rejected`.
152
+ Subagent matchers accept `output`, `status`, `count`, and `callId`.
153
+ Event matchers accept `data` and `count`.
154
+
155
+ ## Expectation builders
156
+
157
+ Import builders from `@cursor/july/evals`:
158
+
159
+ | Builder | Default severity |
160
+ | --- | --- |
161
+ | `includes(string | RegExp)` | Hard gate |
162
+ | `equals(value)` | Hard gate |
163
+ | `matches(schema)` | Hard gate |
164
+ | `satisfies(predicate, label)` | Hard gate |
165
+ | `similarity(expected)` | Soft score |
166
+
167
+ `matches` accepts Standard Schema implementations such as Zod.
168
+ `normalizedSimilarity(value, expected)` returns the same 0-to-1 value
169
+ used by `similarity`.
170
+
171
+ ## Severity and verdicts
172
+
173
+ Every assertion returns a severity handle:
174
+
175
+ ```ts
176
+ t.succeeded();
177
+ t.calledTool("search").soft();
178
+ t.check(t.reply, similarity("Expected answer")).atLeast(0.8);
179
+ t.judge.closedQA("names the failing step").gate(1);
180
+ ```
181
+
182
+ - `.gate(threshold?)` fails the case when it misses.
183
+ - `.soft(threshold?)` records a value without failing.
184
+ - `.atLeast(threshold)` records a soft bar; a miss produces a `scored`
185
+ verdict.
186
+
187
+ Case verdicts are `passed`, `failed`, `scored`, or `skipped`. The CLI
188
+ exits 1 for a failed gate. A scored result exits 0 unless `--strict` is
189
+ set. Exit 2 means the selection matched no cases.
190
+
191
+ ## Judges
192
+
193
+ Use a judge for meaning that deterministic checks cannot express:
194
+
195
+ ```ts
196
+ t.judge.factuality(expected).atLeast(0.8);
197
+ t.judge.summarizes(expected).atLeast(0.8);
198
+ t.judge.closedQA("names the root cause").gate(1);
199
+ t.judge.sql(expected).atLeast(0.9);
200
+ ```
201
+
202
+ Each grades `t.reply` by default; pass `{ on }` to grade another value.
203
+ Judge configuration can live in the project config, eval, case, or
204
+ call, with the nearest value winning.
205
+
206
+ `t.judge.model(prompt)` returns a raw model reply for custom grading.
207
+ Treat agent output as untrusted input: wrap it with `fenceUntrusted` and
208
+ include `EVAL_JUDGE_INJECTION_GUARD` in the judge prompt.
209
+
210
+ ## Datasets and fixtures
211
+
212
+ Load committed JSON, JSONL, or YAML relative to the project root:
213
+
214
+ ```ts
215
+ import { defineEval, includes } from "@cursor/july/evals";
216
+ import { loadYaml } from "@cursor/july/evals/loaders";
217
+
218
+ const rows = await loadYaml<
219
+ Array<{ task: string; prompt: string; expected: string }>
220
+ >("evals/data/cases.yaml");
221
+
222
+ export default rows.map(row =>
223
+ defineEval({
224
+ description: row.task,
225
+ async test(t) {
226
+ await t.send(row.prompt);
227
+ t.succeeded();
228
+ t.check(t.reply, includes(row.expected));
229
+ },
230
+ })
231
+ );
232
+ ```
233
+
234
+ Materialize API-backed evidence before running a large suite. Commit
235
+ the exact payload, diff, or metadata revision and seed it with
236
+ `workspaceFiles`.
237
+
238
+ ## Reporters and results
239
+
240
+ Built-in reporters include `JUnit({ filePath, suiteName? })` and
241
+ `Artifacts({ dir })`. Custom reporters can expose `onRunStart`,
242
+ `onEvalComplete`, and `onRunComplete`. Reporter errors are logged and
243
+ do not change the eval verdict.
244
+
245
+ JSON output contains run totals plus one result per case. A result can
246
+ include the case ID, verdict, assertions, session ID, inputs, tool
247
+ calls, metrics, logs, duration, metadata, tags, final text, and error or
248
+ skip details.
249
+
250
+ ## CLI selection and artifacts
251
+
252
+ ```bash
253
+ agent-sdk eval --dir . --list
254
+ agent-sdk eval --dir .
255
+ agent-sdk eval --dir . builds/checkout
256
+ agent-sdk eval --dir . --tag smoke
257
+ agent-sdk eval --dir . --verbose
258
+ ```
259
+
260
+ ID filters match an exact ID and its descendants. Repeated IDs use OR;
261
+ repeated tags use OR. When both are present, a case must match both
262
+ groups.
263
+
264
+ The local runner starts an ephemeral server. Default artifacts go under
265
+ `evals/<stamp>/` in the project state directory and include
266
+ `summary.json`, `results.jsonl`, and `evals/<case-id>.json`.
267
+ `--artifacts <dir>` chooses another destination; `--no-artifacts`
268
+ disables them. This location is independent of `--state-root`.
269
+
270
+ Model and judge turns resolve credentials in this order:
271
+ `CURSOR_API_KEY`, `CURSOR_API_KEY_FILE`,
272
+ `CURSOR_SERVICE_ACCOUNT_KEY`, then `agent-sdk login`. Listing cases
273
+ needs no credential.
274
+
275
+ ## Playground and hosted runs
276
+
277
+ The playground **Evals** view starts batches on its running server and
278
+ keeps their sessions in the normal session list. `--url` targets a
279
+ named running server; `--prod --slug <slug>` targets a hosted
280
+ deployment.
281
+
282
+ ```bash
283
+ agent-sdk eval --prod --slug vulnerability-scanner --tag smoke
284
+ agent-sdk eval status <eval-id> --prod --slug vulnerability-scanner
285
+ agent-sdk eval cancel <eval-id> --prod --slug vulnerability-scanner
286
+ ```
287
+
288
+ Server-side batches use the target server's discovered evals and store
289
+ results in its playground history. Local-only reporter and concurrency
290
+ flags do not apply to `--url` or `--prod` runs.
291
+
292
+ ## Related
293
+
294
+ - [Evals guide](../evals.md): author and run a regression workflow
295
+ - [CLI reference](./cli.md#eval): every runner flag
296
+ - [Sessions](./sessions.md): event vocabulary used by trajectory checks
297
+ - [Artifacts](./artifacts.md): durable outputs asserted by
298
+ `taggedArtifact`