@cursor/july 0.1.111 → 0.1.113

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 (441) hide show
  1. package/README.md +4 -0
  2. package/dist/bin/agent-serve.js +20 -4
  3. package/dist/channels/checks.d.ts +10 -0
  4. package/dist/channels/checks.d.ts.map +1 -1
  5. package/dist/channels/github/github-channel.d.ts +29 -19
  6. package/dist/channels/github/github-channel.d.ts.map +1 -1
  7. package/dist/channels/github/github-channel.js +29 -19
  8. package/dist/channels/origin/checks.d.ts +1 -1
  9. package/dist/channels/origin/checks.d.ts.map +1 -1
  10. package/dist/channels/slack/agentic-delivery.d.ts.map +1 -1
  11. package/dist/channels/slack/agentic-delivery.js +2 -0
  12. package/dist/channels/slack/dispatch.d.ts +11 -1
  13. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  14. package/dist/channels/slack/dispatch.js +146 -39
  15. package/dist/channels/slack/placeholder.d.ts +26 -0
  16. package/dist/channels/slack/placeholder.d.ts.map +1 -1
  17. package/dist/channels/slack/placeholder.js +28 -0
  18. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  19. package/dist/channels/slack/slack-channel.js +9 -16
  20. package/dist/docs/404.html +2 -2
  21. package/dist/docs/assets/{app.Drol6mi6.js → app.CAeK13eM.js} +4 -4
  22. package/dist/docs/assets/building-with-agents.md.BBCx0AUo.js +9 -0
  23. package/dist/docs/assets/building-with-agents.md.BBCx0AUo.lean.js +1 -0
  24. package/dist/docs/assets/chunks/@localSearchIndexroot.Ck9E52Ls.js +1 -0
  25. package/dist/docs/assets/chunks/{VPLocalSearchBox.CdqoBZJX.js → VPLocalSearchBox.C9LbPHod.js} +1 -1
  26. package/dist/docs/assets/chunks/{arc.BVX3ycTn.js → arc.CmMq2zmS.js} +1 -1
  27. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CcChnMxX.js → architectureDiagram-Q4EWVU46.CCXB8Uj5.js} +1 -1
  28. package/dist/docs/assets/chunks/{baseUniq.xwtXO-yt.js → baseUniq.CyQo6eLe.js} +1 -1
  29. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.CijZ_taK.js → blockDiagram-DXYQGD6D.JYq6w91N.js} +1 -1
  30. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.0FBvwBvK.js → c4Diagram-AHTNJAMY.BRV8GPJJ.js} +1 -1
  31. package/dist/docs/assets/chunks/channel.BHiYmnZ4.js +1 -0
  32. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CELMmMDA.js → chunk-4BX2VUAB.Bv4ooYQR.js} +1 -1
  33. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C4bhFtSm.js → chunk-4TB4RGXK.t4JtKPcj.js} +1 -1
  34. package/dist/docs/assets/chunks/{chunk-55IACEB6.ZnQ9gRRQ.js → chunk-55IACEB6.34lCHj9Y.js} +1 -1
  35. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DPlmglG-.js → chunk-EDXVE4YY.BSwrPNrt.js} +1 -1
  36. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.BrUk8pff.js → chunk-FMBD7UC4.Beeun-R-.js} +1 -1
  37. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CcmWIncu.js → chunk-OYMX7WX6.BUUFUcJc.js} +1 -1
  38. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D65-cs8I.js → chunk-QZHKN3VN.B2XjHzN_.js} +1 -1
  39. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.qoXZpG9F.js → chunk-YZCP3GAM.CLYG8znk.js} +1 -1
  40. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Degh8l90.js +1 -0
  41. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Degh8l90.js +1 -0
  42. package/dist/docs/assets/chunks/clone.BIywbczV.js +1 -0
  43. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.8rYtqudO.js → cose-bilkent-S5V4N54A.DVEa6fZp.js} +1 -1
  44. package/dist/docs/assets/chunks/{dagre-KV5264BT.DrRP1fOh.js → dagre-KV5264BT.C9PZQK-S.js} +1 -1
  45. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DHj_xA2_.js → diagram-5BDNPKRD.DoN0uv3Y.js} +1 -1
  46. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.Bz_6nAKj.js → diagram-G4DWMVQ6.Czv3duqx.js} +1 -1
  47. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BWA0xSW9.js → diagram-MMDJMWI5.BinJ5kWb.js} +1 -1
  48. package/dist/docs/assets/chunks/{diagram-TYMM5635.CpTJLNJI.js → diagram-TYMM5635.DW326M4K.js} +1 -1
  49. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.-7AWWSrP.js → erDiagram-SMLLAGMA.U2pR_OA7.js} +1 -1
  50. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BTnQ742_.js → flowDiagram-DWJPFMVM.ByWJXeYK.js} +1 -1
  51. package/dist/docs/assets/chunks/framework.BNw1pucY.js +19 -0
  52. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.B5_HiiQ5.js → ganttDiagram-T4ZO3ILL.OquF0Rtg.js} +1 -1
  53. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CZcNTFZd.js → gitGraphDiagram-UUTBAWPF.Bpn01P7X.js} +1 -1
  54. package/dist/docs/assets/chunks/{graph.V2GLaab4.js → graph.CNRB6ETL.js} +1 -1
  55. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.7pZOkCCU.js → infoDiagram-42DDH7IO.CqhknMWi.js} +1 -1
  56. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DSMo3Qa3.js → ishikawaDiagram-UXIWVN3A.C6xpR2af.js} +1 -1
  57. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BNEgWN1S.js → journeyDiagram-VCZTEJTY.Cg5f7oB3.js} +1 -1
  58. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B-4d4tC7.js → kanban-definition-6JOO6SKY.Cx9YTwlU.js} +1 -1
  59. package/dist/docs/assets/chunks/{layout.Dvbn9nSb.js → layout.ljS-wFtK.js} +1 -1
  60. package/dist/docs/assets/chunks/{linear.D2GM4p4b.js → linear.jSxNrsFC.js} +1 -1
  61. package/dist/docs/assets/chunks/{min.DVBtLK-B.js → min.Cum8AlQw.js} +1 -1
  62. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CnJRI55x.js → mindmap-definition-QFDTVHPH.BLiysLpe.js} +1 -1
  63. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.CtoaTFlA.js → pieDiagram-DEJITSTG.BoIDyuKF.js} +1 -1
  64. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DtT24_vN.js → quadrantDiagram-34T5L4WZ.DLkpDytR.js} +1 -1
  65. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CjSO4o8f.js → requirementDiagram-MS252O5E.DqTVqSu2.js} +1 -1
  66. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.-wWiIVWa.js → sankeyDiagram-XADWPNL6.CG_6FF7j.js} +1 -1
  67. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DSk8s4gX.js → sequenceDiagram-FGHM5R23.BIp9602K.js} +1 -1
  68. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BFKAsdkN.js → stateDiagram-FHFEXIEX.COSXsD9I.js} +1 -1
  69. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.qrxrbFsX.js +1 -0
  70. package/dist/docs/assets/chunks/{theme.C0MctGaz.js → theme.CXJ7PNwy.js} +2 -2
  71. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.TUNJbAFe.js → timeline-definition-GMOUNBTQ.CXdVqkLq.js} +1 -1
  72. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.C-RGNnk4.js → vennDiagram-DHZGUBPP.CZxGuc4r.js} +1 -1
  73. package/dist/docs/assets/chunks/{wardley-RL74JXVD.g5efOWmT.js → wardley-RL74JXVD.3oVgfqQk.js} +1 -1
  74. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.DH4zt73Y.js → wardleyDiagram-NUSXRM2D.6_irCgGJ.js} +1 -1
  75. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.B-3k6bF6.js → xychartDiagram-5P7HB3ND.TRPe92m3.js} +1 -1
  76. package/dist/docs/assets/deployment.md.D2jQZuFx.js +32 -0
  77. package/dist/docs/assets/deployment.md.D2jQZuFx.lean.js +1 -0
  78. package/dist/docs/assets/evals.md.D3Y3Aixt.js +72 -0
  79. package/dist/docs/assets/evals.md.D3Y3Aixt.lean.js +1 -0
  80. package/dist/docs/assets/guides_agent-to-agent.md.CD4T5FIl.js +41 -0
  81. package/dist/docs/assets/guides_agent-to-agent.md.CD4T5FIl.lean.js +1 -0
  82. package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.js +145 -0
  83. package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.lean.js +1 -0
  84. package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.js +15 -0
  85. package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.lean.js +1 -0
  86. package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.js +43 -0
  87. package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.lean.js +1 -0
  88. package/dist/docs/assets/guides_github.md.BwpBp3ed.js +156 -0
  89. package/dist/docs/assets/guides_github.md.BwpBp3ed.lean.js +1 -0
  90. package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.js +153 -0
  91. package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.lean.js +1 -0
  92. package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.js +16 -0
  93. package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.lean.js +1 -0
  94. package/dist/docs/assets/guides_improve.md.Bnp4F99w.js +22 -0
  95. package/dist/docs/assets/guides_improve.md.Bnp4F99w.lean.js +1 -0
  96. package/dist/docs/assets/guides_jev.md.F5fAkkfN.js +189 -0
  97. package/dist/docs/assets/guides_jev.md.F5fAkkfN.lean.js +1 -0
  98. package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.js +50 -0
  99. package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.lean.js +1 -0
  100. package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.js +35 -0
  101. package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.lean.js +1 -0
  102. package/dist/docs/assets/guides_slack.md.Bo96y42E.js +70 -0
  103. package/dist/docs/assets/guides_slack.md.Bo96y42E.lean.js +1 -0
  104. package/dist/docs/assets/guides_webhooks.md.1A72_VEE.js +92 -0
  105. package/dist/docs/assets/guides_webhooks.md.1A72_VEE.lean.js +1 -0
  106. package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.js +7 -0
  107. package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.lean.js +1 -0
  108. package/dist/docs/assets/{index.md.BFVyY2KT.js → index.md.C-t81M5J.js} +2 -2
  109. package/dist/docs/assets/{index.md.BFVyY2KT.lean.js → index.md.C-t81M5J.lean.js} +1 -1
  110. package/dist/docs/assets/{quickstart.md.D3MjSZN-.js → quickstart.md.DAvVhuuU.js} +1 -1
  111. package/dist/docs/assets/{quickstart.md.D3MjSZN-.lean.js → quickstart.md.DAvVhuuU.lean.js} +1 -1
  112. package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.js → reference_agent-config.md.DGPyw7ms.js} +1 -1
  113. package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.lean.js → reference_agent-config.md.DGPyw7ms.lean.js} +1 -1
  114. package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.js → reference_artifacts.md.Bu_4HmsD.js} +1 -1
  115. package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.lean.js → reference_artifacts.md.Bu_4HmsD.lean.js} +1 -1
  116. package/dist/docs/assets/{reference_channels.md.icqLKcTc.js → reference_channels.md.nFWbzAic.js} +1 -1
  117. package/dist/docs/assets/{reference_channels.md.icqLKcTc.lean.js → reference_channels.md.nFWbzAic.lean.js} +1 -1
  118. package/dist/docs/assets/{reference_cli.md.B2dBL6L8.js → reference_cli.md.DLWDz9ij.js} +3 -1
  119. package/dist/docs/assets/{reference_cli.md.B2dBL6L8.lean.js → reference_cli.md.DLWDz9ij.lean.js} +1 -1
  120. package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.js → reference_connections.md.Je9dMsdd.js} +2 -2
  121. package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.lean.js → reference_connections.md.Je9dMsdd.lean.js} +1 -1
  122. package/dist/docs/assets/reference_evals.md.DNJzM_yf.js +57 -0
  123. package/dist/docs/assets/reference_evals.md.DNJzM_yf.lean.js +1 -0
  124. package/dist/docs/assets/reference_extensions.md.Cv5aLCz_.js +58 -0
  125. package/dist/docs/assets/reference_extensions.md.Cv5aLCz_.lean.js +1 -0
  126. package/dist/docs/assets/{reference_hooks.md.CZuynAxj.js → reference_hooks.md.B7uzNENk.js} +2 -2
  127. package/dist/docs/assets/{reference_hooks.md.CZuynAxj.lean.js → reference_hooks.md.B7uzNENk.lean.js} +1 -1
  128. package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.js → reference_http-api.md.CduHavZ2.js} +1 -1
  129. package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.lean.js → reference_http-api.md.CduHavZ2.lean.js} +1 -1
  130. package/dist/docs/assets/{reference_instructions.md.D7gkckK-.js → reference_instructions.md.CU1My5My.js} +1 -1
  131. package/dist/docs/assets/{reference_instructions.md.D7gkckK-.lean.js → reference_instructions.md.CU1My5My.lean.js} +1 -1
  132. package/dist/docs/assets/{reference_playground.md.D2YExv5K.js → reference_playground.md.Ch2d0Iqi.js} +1 -1
  133. package/dist/docs/assets/{reference_playground.md.D2YExv5K.lean.js → reference_playground.md.Ch2d0Iqi.lean.js} +1 -1
  134. package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.js → reference_project-layout.md.BGhgpy9V.js} +1 -1
  135. package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.lean.js → reference_project-layout.md.BGhgpy9V.lean.js} +1 -1
  136. package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.js → reference_prompt.md.Ccp0R53H.js} +1 -1
  137. package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.lean.js → reference_prompt.md.Ccp0R53H.lean.js} +1 -1
  138. package/dist/docs/assets/{reference_schedules.md.BasfZWO-.js → reference_schedules.md.B2Nm6FaD.js} +1 -1
  139. package/dist/docs/assets/{reference_schedules.md.BasfZWO-.lean.js → reference_schedules.md.B2Nm6FaD.lean.js} +1 -1
  140. package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.js → reference_sessions.md.1_6Vyv7x.js} +1 -1
  141. package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.lean.js → reference_sessions.md.1_6Vyv7x.lean.js} +1 -1
  142. package/dist/docs/assets/{reference_skills.md.rNgpsGd0.js → reference_skills.md.DjQkRefx.js} +1 -1
  143. package/dist/docs/assets/{reference_skills.md.rNgpsGd0.lean.js → reference_skills.md.DjQkRefx.lean.js} +1 -1
  144. package/dist/docs/assets/{reference_subagents.md.e5qitjJt.js → reference_subagents.md.Dl16gcBj.js} +2 -2
  145. package/dist/docs/assets/{reference_subagents.md.e5qitjJt.lean.js → reference_subagents.md.Dl16gcBj.lean.js} +1 -1
  146. package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.js → reference_tools.md.B1dH1lpa.js} +3 -3
  147. package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.lean.js → reference_tools.md.B1dH1lpa.lean.js} +1 -1
  148. package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.js → templates_agentic-owners.md.9M575F5C.js} +1 -1
  149. package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.lean.js → templates_agentic-owners.md.9M575F5C.lean.js} +1 -1
  150. package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.js → templates_pr-autofixer.md.ws0DDXDy.js} +1 -1
  151. package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.lean.js → templates_pr-autofixer.md.ws0DDXDy.lean.js} +1 -1
  152. package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.js → templates_security-reviewer.md.KEFYXzfK.js} +1 -1
  153. package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.lean.js → templates_security-reviewer.md.KEFYXzfK.lean.js} +1 -1
  154. package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.js +3 -0
  155. package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.lean.js +1 -0
  156. package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.js +3 -0
  157. package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.lean.js +1 -0
  158. package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.js → templates_triage.md.CVGe_FG6.js} +1 -1
  159. package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.lean.js → templates_triage.md.CVGe_FG6.lean.js} +1 -1
  160. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.js +1 -0
  161. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.lean.js +1 -0
  162. package/dist/docs/building-with-agents.html +44 -48
  163. package/dist/docs/building-with-agents.md +94 -82
  164. package/dist/docs/deployment.html +59 -78
  165. package/dist/docs/deployment.md +117 -363
  166. package/dist/docs/evals.html +85 -224
  167. package/dist/docs/evals.md +149 -673
  168. package/dist/docs/guides/agent-to-agent.html +74 -47
  169. package/dist/docs/guides/agent-to-agent.md +128 -46
  170. package/dist/docs/guides/bitbucket.html +179 -44
  171. package/dist/docs/guides/bitbucket.md +249 -48
  172. package/dist/docs/guides/cloud-agents.html +46 -40
  173. package/dist/docs/guides/cloud-agents.md +119 -66
  174. package/dist/docs/guides/convert-automation.html +80 -49
  175. package/dist/docs/guides/convert-automation.md +156 -147
  176. package/dist/docs/guides/github.html +184 -92
  177. package/dist/docs/guides/github.md +260 -245
  178. package/dist/docs/guides/gitlab.html +184 -45
  179. package/dist/docs/guides/gitlab.md +249 -50
  180. package/dist/docs/guides/grokbot-agents.html +48 -41
  181. package/dist/docs/guides/grokbot-agents.md +99 -53
  182. package/dist/docs/guides/improve.html +48 -40
  183. package/dist/docs/guides/improve.md +111 -58
  184. package/dist/docs/guides/jev.html +248 -0
  185. package/dist/docs/guides/jev.md +348 -0
  186. package/dist/docs/guides/mcp-oauth.html +74 -52
  187. package/dist/docs/guides/mcp-oauth.md +111 -121
  188. package/dist/docs/guides/opentelemetry.html +63 -54
  189. package/dist/docs/guides/opentelemetry.md +96 -165
  190. package/dist/docs/guides/slack.html +83 -59
  191. package/dist/docs/guides/slack.md +157 -227
  192. package/dist/docs/guides/webhooks.html +97 -230
  193. package/dist/docs/guides/webhooks.md +154 -385
  194. package/dist/docs/hashmap.json +1 -1
  195. package/dist/docs/hillclimbing.html +44 -38
  196. package/dist/docs/hillclimbing.md +101 -55
  197. package/dist/docs/index.html +38 -38
  198. package/dist/docs/index.md +2 -0
  199. package/dist/docs/llms-full.txt +3490 -3146
  200. package/dist/docs/llms.txt +22 -18
  201. package/dist/docs/quickstart.html +37 -37
  202. package/dist/docs/reference/agent-config.html +37 -37
  203. package/dist/docs/reference/artifacts.html +38 -38
  204. package/dist/docs/reference/channels.html +37 -37
  205. package/dist/docs/reference/cli.html +39 -37
  206. package/dist/docs/reference/cli.md +2 -0
  207. package/dist/docs/reference/connections.html +38 -38
  208. package/dist/docs/reference/connections.md +1 -1
  209. package/dist/docs/reference/evals.html +116 -0
  210. package/dist/docs/reference/evals.md +293 -0
  211. package/dist/docs/reference/extensions.html +80 -84
  212. package/dist/docs/reference/extensions.md +131 -202
  213. package/dist/docs/reference/hooks.html +39 -39
  214. package/dist/docs/reference/hooks.md +34 -34
  215. package/dist/docs/reference/http-api.html +37 -37
  216. package/dist/docs/reference/instructions.html +37 -37
  217. package/dist/docs/reference/playground.html +37 -37
  218. package/dist/docs/reference/project-layout.html +37 -37
  219. package/dist/docs/reference/prompt.html +37 -37
  220. package/dist/docs/reference/schedules.html +37 -37
  221. package/dist/docs/reference/sessions.html +37 -37
  222. package/dist/docs/reference/skills.html +37 -37
  223. package/dist/docs/reference/subagents.html +38 -38
  224. package/dist/docs/reference/subagents.md +1 -1
  225. package/dist/docs/reference/tools.html +38 -38
  226. package/dist/docs/reference/tools.md +4 -0
  227. package/dist/docs/templates/agentic-owners.html +38 -38
  228. package/dist/docs/templates/pr-autofixer.html +37 -37
  229. package/dist/docs/templates/security-reviewer.html +38 -38
  230. package/dist/docs/templates/thermo-quality-review.html +62 -0
  231. package/dist/docs/templates/thermo-quality-review.md +75 -0
  232. package/dist/docs/templates/thermo-review.html +62 -0
  233. package/dist/docs/templates/thermo-review.md +74 -0
  234. package/dist/docs/templates/triage.html +37 -37
  235. package/dist/docs/troubleshooting.html +38 -38
  236. package/dist/docs/troubleshooting.md +97 -66
  237. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
  238. package/dist/extensions/improve/extension.d.ts +3 -1
  239. package/dist/extensions/improve/extension.d.ts.map +1 -1
  240. package/dist/extensions/improve/extension.js +4 -2
  241. package/dist/extensions/improve/skills/yourself.js +1 -1
  242. package/dist/extensions/jev/extension.d.ts +43 -0
  243. package/dist/extensions/jev/extension.d.ts.map +1 -0
  244. package/dist/extensions/jev/extension.js +47 -0
  245. package/dist/extensions/jev/lib/evaluate.d.ts +101 -0
  246. package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -0
  247. package/dist/extensions/jev/lib/evaluate.js +167 -0
  248. package/dist/extensions/jev/skills/gated-write.md +25 -0
  249. package/dist/extensions/jev/skills/questions.md +33 -0
  250. package/dist/extensions/jev/tools/evaluate.d.ts +4 -0
  251. package/dist/extensions/jev/tools/evaluate.d.ts.map +1 -0
  252. package/dist/extensions/jev/tools/evaluate.js +88 -0
  253. package/dist/extensions.d.ts +1 -1
  254. package/dist/extensions.d.ts.map +1 -1
  255. package/dist/extensions.js +2 -0
  256. package/dist/filesystem.d.ts +46 -2
  257. package/dist/filesystem.d.ts.map +1 -1
  258. package/dist/filesystem.js +149 -102
  259. package/dist/index.d.ts +2 -2
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +1 -1
  262. package/dist/internal/advertise-tools.d.ts.map +1 -1
  263. package/dist/internal/advertise-tools.js +6 -0
  264. package/dist/internal/cli-ax.d.ts +6 -0
  265. package/dist/internal/cli-ax.d.ts.map +1 -1
  266. package/dist/internal/cli-ax.js +72 -14
  267. package/dist/internal/continuation-identity.d.ts.map +1 -1
  268. package/dist/internal/continuation-identity.js +1 -0
  269. package/dist/internal/cursor-agent-template.d.ts +1 -1
  270. package/dist/internal/cursor-agent-template.d.ts.map +1 -1
  271. package/dist/internal/cursor-agent-template.js +2 -0
  272. package/dist/internal/discovery/connections.d.ts.map +1 -1
  273. package/dist/internal/discovery/connections.js +18 -0
  274. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  275. package/dist/internal/discovery/extensions.js +8 -4
  276. package/dist/internal/discovery/info.d.ts.map +1 -1
  277. package/dist/internal/discovery/info.js +1 -0
  278. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  279. package/dist/internal/filesystem/tools.js +2 -2
  280. package/dist/internal/filesystem/walk.d.ts +7 -4
  281. package/dist/internal/filesystem/walk.d.ts.map +1 -1
  282. package/dist/internal/filesystem/walk.js +34 -11
  283. package/dist/internal/hosted-admission-adapter.d.ts +3 -0
  284. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  285. package/dist/internal/hosted-delivery-protocol.d.ts +20 -0
  286. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  287. package/dist/internal/hosted-delivery-protocol.js +51 -1
  288. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  289. package/dist/internal/hosted-delivery.js +23 -25
  290. package/dist/internal/hosted-execution-diag.d.ts +12 -4
  291. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  292. package/dist/internal/hosted-execution-diag.js +26 -4
  293. package/dist/internal/hosted-execution-flush.d.ts +1 -0
  294. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  295. package/dist/internal/hosted-execution-flush.js +4 -2
  296. package/dist/internal/init-project.d.ts.map +1 -1
  297. package/dist/internal/init-project.js +4 -0
  298. package/dist/internal/server.d.ts.map +1 -1
  299. package/dist/internal/server.js +111 -48
  300. package/dist/internal/session-engine.d.ts +4 -1
  301. package/dist/internal/session-engine.d.ts.map +1 -1
  302. package/dist/internal/session-engine.js +39 -9
  303. package/dist/internal/skill-catalog.d.ts +28 -0
  304. package/dist/internal/skill-catalog.d.ts.map +1 -0
  305. package/dist/internal/skill-catalog.js +44 -0
  306. package/dist/playground/assets/index-DSMAewbx.css +1 -0
  307. package/dist/playground/assets/index-De_lpFxE.js +67 -0
  308. package/dist/playground/index.html +2 -2
  309. package/dist/types.d.ts +32 -3
  310. package/dist/types.d.ts.map +1 -1
  311. package/docs/README.md +2 -0
  312. package/docs/building-with-agents.md +96 -84
  313. package/docs/deployment.md +118 -364
  314. package/docs/evals.md +149 -673
  315. package/docs/guides/agent-to-agent.md +130 -48
  316. package/docs/guides/bitbucket.md +250 -49
  317. package/docs/guides/cloud-agents.md +119 -67
  318. package/docs/guides/convert-automation.md +157 -148
  319. package/docs/guides/github.md +261 -246
  320. package/docs/guides/gitlab.md +250 -51
  321. package/docs/guides/grokbot-agents.md +100 -55
  322. package/docs/guides/improve.md +112 -59
  323. package/docs/guides/jev.md +353 -0
  324. package/docs/guides/mcp-oauth.md +112 -122
  325. package/docs/guides/opentelemetry.md +97 -166
  326. package/docs/guides/slack.md +158 -228
  327. package/docs/guides/webhooks.md +155 -386
  328. package/docs/hillclimbing.md +102 -56
  329. package/docs/reference/cli.md +2 -0
  330. package/docs/reference/connections.md +1 -1
  331. package/docs/reference/evals.md +298 -0
  332. package/docs/reference/extensions.md +132 -203
  333. package/docs/reference/hooks.md +34 -34
  334. package/docs/reference/subagents.md +1 -1
  335. package/docs/reference/tools.md +4 -0
  336. package/docs/templates/thermo-quality-review.md +80 -0
  337. package/docs/templates/thermo-review.md +79 -0
  338. package/docs/troubleshooting.md +98 -67
  339. package/package.json +8 -1
  340. package/skills/github/SKILL.md +21 -13
  341. package/src/bin/agent-serve.ts +24 -3
  342. package/src/channels/checks.ts +8 -0
  343. package/src/channels/github/github-channel.ts +29 -19
  344. package/src/channels/origin/checks.ts +3 -1
  345. package/src/channels/slack/agentic-delivery.ts +2 -0
  346. package/src/channels/slack/dispatch.ts +131 -4
  347. package/src/channels/slack/placeholder.ts +51 -0
  348. package/src/channels/slack/slack-channel.ts +9 -2
  349. package/src/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
  350. package/src/extensions/improve/extension.ts +4 -2
  351. package/src/extensions/improve/skills/yourself.ts +1 -1
  352. package/src/extensions/jev/extension.ts +95 -0
  353. package/src/extensions/jev/lib/evaluate.ts +289 -0
  354. package/src/extensions/jev/skills/gated-write.md +25 -0
  355. package/src/extensions/jev/skills/questions.md +33 -0
  356. package/src/extensions/jev/tools/evaluate.ts +90 -0
  357. package/src/extensions.ts +2 -0
  358. package/src/filesystem.ts +168 -65
  359. package/src/index.ts +3 -0
  360. package/src/internal/advertise-tools.ts +6 -0
  361. package/src/internal/cli-ax.ts +88 -15
  362. package/src/internal/continuation-identity.ts +1 -0
  363. package/src/internal/cursor-agent-template.ts +2 -0
  364. package/src/internal/discovery/connections.ts +21 -0
  365. package/src/internal/discovery/extensions.ts +12 -4
  366. package/src/internal/discovery/info.ts +1 -0
  367. package/src/internal/filesystem/tools.ts +2 -0
  368. package/src/internal/filesystem/walk.ts +60 -15
  369. package/src/internal/hosted-admission-adapter.ts +3 -0
  370. package/src/internal/hosted-delivery-protocol.ts +82 -1
  371. package/src/internal/hosted-delivery.ts +23 -0
  372. package/src/internal/hosted-execution-diag.ts +33 -4
  373. package/src/internal/hosted-execution-flush.ts +4 -0
  374. package/src/internal/init-project.ts +4 -0
  375. package/src/internal/server.ts +130 -53
  376. package/src/internal/session-engine.ts +46 -8
  377. package/src/internal/skill-catalog.ts +69 -0
  378. package/src/types.ts +33 -3
  379. package/templates/thermo-quality-review/README.md +35 -0
  380. package/templates/thermo-quality-review/agent/agent.ts +8 -0
  381. package/templates/thermo-quality-review/agent/channels/github.ts +42 -0
  382. package/templates/thermo-quality-review/agent/instructions.md +43 -0
  383. package/templates/thermo-quality-review/agent/tools/post_findings.ts +70 -0
  384. package/templates/thermo-quality-review/evals/evals.config.ts +5 -0
  385. package/templates/thermo-quality-review/evals/review.eval.ts +62 -0
  386. package/templates/thermo-quality-review/package.json +18 -0
  387. package/templates/thermo-quality-review/tsconfig.json +12 -0
  388. package/templates/thermo-review/README.md +35 -0
  389. package/templates/thermo-review/agent/agent.ts +8 -0
  390. package/templates/thermo-review/agent/channels/github.ts +42 -0
  391. package/templates/thermo-review/agent/instructions.md +40 -0
  392. package/templates/thermo-review/agent/tools/post_findings.ts +70 -0
  393. package/templates/thermo-review/evals/evals.config.ts +5 -0
  394. package/templates/thermo-review/evals/review.eval.ts +53 -0
  395. package/templates/thermo-review/package.json +18 -0
  396. package/templates/thermo-review/tsconfig.json +12 -0
  397. package/dist/docs/assets/building-with-agents.md.CEGVXkmO.js +0 -13
  398. package/dist/docs/assets/building-with-agents.md.CEGVXkmO.lean.js +0 -1
  399. package/dist/docs/assets/chunks/@localSearchIndexroot.DtXk1hy-.js +0 -1
  400. package/dist/docs/assets/chunks/channel.Bkv1N-gK.js +0 -1
  401. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CZDco1o8.js +0 -1
  402. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CZDco1o8.js +0 -1
  403. package/dist/docs/assets/chunks/clone.YSt_40_s.js +0 -1
  404. package/dist/docs/assets/chunks/framework.dypDpWZ3.js +0 -19
  405. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.C4CLm481.js +0 -1
  406. package/dist/docs/assets/deployment.md.Dm4Qo3hp.js +0 -51
  407. package/dist/docs/assets/deployment.md.Dm4Qo3hp.lean.js +0 -1
  408. package/dist/docs/assets/evals.md.BLDRt5LH.js +0 -211
  409. package/dist/docs/assets/evals.md.BLDRt5LH.lean.js +0 -1
  410. package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.js +0 -14
  411. package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.lean.js +0 -1
  412. package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.js +0 -10
  413. package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.lean.js +0 -1
  414. package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.js +0 -9
  415. package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.lean.js +0 -1
  416. package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.js +0 -12
  417. package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.lean.js +0 -1
  418. package/dist/docs/assets/guides_github.md.D6ER29dG.js +0 -64
  419. package/dist/docs/assets/guides_github.md.D6ER29dG.lean.js +0 -1
  420. package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.js +0 -14
  421. package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.lean.js +0 -1
  422. package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.js +0 -9
  423. package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.lean.js +0 -1
  424. package/dist/docs/assets/guides_improve.md.BKaDuKKK.js +0 -14
  425. package/dist/docs/assets/guides_improve.md.BKaDuKKK.lean.js +0 -1
  426. package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.js +0 -28
  427. package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.lean.js +0 -1
  428. package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.js +0 -26
  429. package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.lean.js +0 -1
  430. package/dist/docs/assets/guides_slack.md.DdT8rmsj.js +0 -46
  431. package/dist/docs/assets/guides_slack.md.DdT8rmsj.lean.js +0 -1
  432. package/dist/docs/assets/guides_webhooks.md.aQW10HRe.js +0 -225
  433. package/dist/docs/assets/guides_webhooks.md.aQW10HRe.lean.js +0 -1
  434. package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.js +0 -1
  435. package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.lean.js +0 -1
  436. package/dist/docs/assets/reference_extensions.md.wlFD3cUR.js +0 -62
  437. package/dist/docs/assets/reference_extensions.md.wlFD3cUR.lean.js +0 -1
  438. package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.js +0 -1
  439. package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.lean.js +0 -1
  440. package/dist/playground/assets/index-BLlKgZtI.css +0 -1
  441. package/dist/playground/assets/index-CDS5p9sR.js +0 -67
@@ -1,25 +1,24 @@
1
1
  ---
2
2
  title: "Self-improvement"
3
- description: "Mount improve so an agent can change its own instructions, skills, and tools through a pull request a one-off cloud agent opens."
3
+ description: "Let an agent propose a change to its own source through a branch and pull request, with review and deployment kept separate."
4
4
  ---
5
5
 
6
6
  # Self-improvement
7
7
 
8
- The `improve` extension lets an agent change how it behaves by changing
9
- its own source. Someone asks it to answer more briefly, to stop reaching
10
- for a tool, or to learn a procedure. The agent writes a brief, a one-off
11
- Cursor cloud agent makes the change on a branch and opens a pull
12
- request, and the agent reports that pull request. Nothing changes until
13
- a person reviews it and deploys.
8
+ The `improve` extension teaches an agent how to turn "change how you
9
+ work" into a source change. The agent prepares a brief, a Cursor cloud
10
+ agent edits a checkout and opens a pull request, and the running agent
11
+ reports the verified PR for human review.
14
12
 
15
- The tree the agent runs from is never edited; nothing changed there
16
- survives a deploy. The pull request is the only path.
13
+ Durable behavior does not change until that source is merged and
14
+ deployed. A cloud-runtime turn may edit its ephemeral checkout, but it
15
+ does not rewrite the source of a running deployment.
17
16
 
18
17
  ## Mount it
19
18
 
20
- The extension ships with `@cursor/july`. It relies on a
21
- [`cursor-cloud-agents`](./cloud-agents.md) mount beside it, with the
22
- agent's own repository among its `cloud.repos`.
19
+ On the local runtime, mount Cloud agents with the agent's own repository
20
+ allowlisted, keep launch approval explicit, then mount `improve` with
21
+ the source directory.
23
22
 
24
23
  ```ts
25
24
  // agent/extensions/cloud.ts
@@ -27,8 +26,15 @@ import cursorCloudAgents from "@cursor/july/extensions/cursor-cloud-agents";
27
26
 
28
27
  export default cursorCloudAgents({
29
28
  cloud: {
30
- repos: [{ url: "https://github.com/acme/agents", startingRef: "main" }],
29
+ repos: [
30
+ {
31
+ url: "https://github.com/acme/agents",
32
+ startingRef: "main",
33
+ },
34
+ ],
35
+ autoCreatePR: true,
31
36
  },
37
+ needsApproval: true,
32
38
  });
33
39
  ```
34
40
 
@@ -39,58 +45,105 @@ import improve from "@cursor/july/extensions/improve";
39
45
  export default improve({
40
46
  repo: "https://github.com/acme/agents",
41
47
  path: "agents/concierge",
48
+ ref: "main",
42
49
  });
43
50
  ```
44
51
 
45
- `repo` is the repository that holds the agent's source and `path` is
46
- the agent's directory in it, the same values `agent-sdk deploy --repo`
47
- and `--path` take. Mount it as `improve`: the skill then reads
48
- `improve__yourself`, which is what a person asks for.
49
-
50
- An agent on the
51
- [cloud runtime](../reference/agent-config.md#choose-a-runtime) already
52
- runs each turn on a VM with the repository checked out. It mounts
53
- `improve` alone, and the skill has it branch in that checkout instead of
54
- launching a second agent.
55
-
56
- ## What the agent does
57
-
58
- With the extension mounted, "change how you work" becomes a procedure:
59
-
60
- - **Locate the change.** The skill maps the ask onto the Agent SDK tree:
61
- instructions for the always-on prompt, a skill for a procedure, a tool
62
- for behavior that must be right every time, `agent.ts` for the model.
63
- - **Brief a cloud agent.** The agent writes a self-contained brief: who
64
- is asking and why, the repository, ref, and path, the files it expects
65
- to change, your notes about the tree, and the rules. Follow the
66
- repository's conventions, keep the diff to the change, run the
67
- repository's checks, open a pull request against the deployed ref,
68
- never merge.
69
- - **Follow up and report.** It gives the person the cloud agent's URL,
70
- checks on the run, reads the pull request before repeating its claims,
71
- and reports the pull request, not the delegation. It says the change
72
- takes effect at the next deploy, never that it has changed already.
73
-
74
- Ask it directly. "Improve yourself: stop opening with a summary" is
75
- enough.
52
+ Mounted as `improve`, the extension contributes the
53
+ `improve__yourself` skill. It does not contribute a tool that can bypass
54
+ the normal repository workflow.
55
+
56
+ ## Ask for one behavioral change
57
+
58
+ State the change, how to tell it worked, and what behavior must stay
59
+ fixed. The agent maps the request to instructions, a skill, a tool,
60
+ channel configuration, or the model setting before preparing the coding
61
+ brief.
62
+
63
+ > Improve yourself: stop opening incident replies with a summary.
64
+ > Start with the decision, keep the existing evidence bullets, and
65
+ > preserve every current eval.
66
+
67
+ The success criterion and freeze line keep the cloud agent from turning
68
+ a narrow behavior request into an unrelated refactor.
69
+
70
+ ## Follow the source change
71
+
72
+ On local runtime, the agent requests approval and launches one cloud
73
+ agent on the configured repository and ref. It reports the complete
74
+ cloud-agent ID and URL immediately, then checks the same run instead of
75
+ launching another agent for follow-up work.
76
+
77
+ When the cloud agent opens a pull request, the running agent reads the
78
+ result and the PR before reporting what changed and which checks passed.
79
+ The pull request, not the delegation transcript, is the durable
80
+ deliverable.
81
+
82
+ Use the [Cloud agents guide](./cloud-agents.md) for launch, status,
83
+ transcript, steering, and cancellation behavior.
84
+
85
+ ## Review, merge, then deploy
86
+
87
+ The workflow stops at a pull request. A human reviews the diff and
88
+ decides whether to merge it; a separate deployment action decides when
89
+ the new behavior becomes live.
90
+
91
+ This separation gives each boundary a real control:
92
+
93
+ - Repository permissions limit who can push the branch.
94
+ - Branch protection and review policy govern the merge.
95
+ - Deployment authorization governs the running agent.
96
+
97
+ After deployment, repeat the original request or regression eval to
98
+ confirm the behavior changed without crossing the freeze line.
99
+
100
+ ## Use it from a cloud-runtime agent
101
+
102
+ When the agent's own turn already runs on a cloud VM with the source
103
+ repository checked out, mount `improve` without the Cloud agents
104
+ extension. The skill branches and edits that ephemeral checkout, then
105
+ opens the same reviewable pull request.
106
+
107
+ Cloud-runtime tool approvals are unavailable. Repository permissions,
108
+ branch protection, human review, and separate deployment remain the
109
+ hard controls.
76
110
 
77
111
  ## Configure it
78
112
 
79
- | Option | What it controls |
80
- | --- | --- |
81
- | `repo` | The repository holding the agent's source. One of the cloud mount's `cloud.repos`. |
82
- | `path` | The agent's directory in the repository, as `agent-sdk deploy --path` names it. |
83
- | `ref` | The ref the deployment tracks. Branches start there and pull requests target it. Defaults to `main`. |
84
- | `notes` | What a coding agent must know about this tree beyond the standard layout: a house skill format, a manifest that forces a reinstall, a pull request convention. Copied into every brief. |
85
- | `deploy` | Who deploys a merged change and when it is live. Defaults to "It takes effect at the next deploy." |
113
+ - `repo` is the source repository URL.
114
+ - `path` is the agent's repository-relative directory.
115
+ - `ref` is the deployed branch or ref that new branches and pull
116
+ requests target; it defaults to `main`.
117
+ - `notes` adds tree-specific guidance to every coding brief, such as a
118
+ required test command or PR convention.
119
+ - `deploy` tells the skill who deploys a merged change and when it
120
+ becomes live.
86
121
 
87
- ## What's next
122
+ `notes` and `deploy` insert prose into the contributed skill. They do
123
+ not run checks, merge a branch, or trigger a deployment.
88
124
 
89
- Continue with these pages:
125
+ Validation checks the URL and path shape. It does not prove the source
126
+ exists, matches the current deployment, or appears in the Cloud agents
127
+ repository allowlist, so keep those values aligned yourself.
128
+
129
+ ## What the extension enforces
130
+
131
+ `improve__yourself` is model guidance for locating the change, writing a
132
+ brief, following repository rules, opening a PR, and reporting it. Rules
133
+ such as "never merge" are instructions, not framework-enforced
134
+ permissions.
135
+
136
+ Use repository and deployment controls for hard enforcement. The
137
+ extension provides a repeatable path through those controls; it does not
138
+ replace them.
139
+
140
+ ## What's next
90
141
 
91
- - [Cursor cloud agents](./cloud-agents.md): the mount that does the
92
- coding, and how to gate its launches
93
- - [Extensions](../reference/extensions.md): how mounts, namespaces, and
94
- overrides work
95
- - [Deployment](../deployment.md): how a merged change reaches the
96
- running agent
142
+ - [Cloud agents](./cloud-agents.md): delegation and steering on local
143
+ runtime
144
+ - [Build with a coding agent](../building-with-agents.md): have an
145
+ external coding agent edit the project directly
146
+ - [Extensions](../reference/extensions.md): namespaces and overlays
147
+ - [Deployment](../deployment.md): make a merged source change live
148
+ - [Evals](../evals.md): protect the requested behavior before and after
149
+ the change
@@ -0,0 +1,353 @@
1
+ ---
2
+ title: "Jev"
3
+ description: "Use typed Jev decisions to filter review findings, route pull requests, and gate software-factory writes."
4
+ ---
5
+
6
+ # Use Jev in review tools
7
+
8
+ Use Jev for narrow decisions where your software factory needs a typed
9
+ answer, not another paragraph. A review agent can filter speculative
10
+ findings, classify pull request risk, choose a reviewer, or decide
11
+ whether a merge needs a documentation follow-up. Jev returns a choice,
12
+ score, or probability; your TypeScript decides what happens next.
13
+
14
+ Ask one question per judgment. If an approval depends on risk, test
15
+ coverage, and the size of the change, ask three questions in one call
16
+ and combine the answers in code.
17
+
18
+ Set `TYPESAFE_API_KEY`. The default model is `jev-latest`.
19
+
20
+ ```ts
21
+ // agent/extensions/jev.ts
22
+ import jev from "@cursor/july/extensions/jev";
23
+
24
+ export default jev();
25
+ ```
26
+
27
+ ## Start only the review turns you need
28
+
29
+ You can call Jev from a channel hook before a model turn starts. When a
30
+ pull request opens, this hook reads its title, labels, and filenames,
31
+ then asks whether the change needs security review. A high probability
32
+ starts the review. Otherwise the hook returns `null`, so the agent does
33
+ not run and nothing is posted to GitHub.
34
+
35
+ ```ts
36
+ // agent/channels/github.ts
37
+ import {
38
+ defaultGitHubAuth,
39
+ githubChannel,
40
+ } from "@cursor/july/channels/github";
41
+ import { above, decide } from "@cursor/july/extensions/jev";
42
+
43
+ export default githubChannel({
44
+ botName: "security-reviewer",
45
+ cursorAccount: { repos: ["acme/checkout"] },
46
+ onPullRequest: async (ctx, pr) => {
47
+ if (pr.action !== "opened" && pr.action !== "ready_for_review") {
48
+ return null;
49
+ }
50
+
51
+ const octokit = await ctx.github.getOctokit();
52
+ const [{ data }, files] = await Promise.all([
53
+ octokit.rest.pulls.get({
54
+ owner: ctx.repository.owner,
55
+ repo: ctx.repository.name,
56
+ pull_number: pr.number,
57
+ }),
58
+ octokit.paginate(octokit.rest.pulls.listFiles, {
59
+ owner: ctx.repository.owner,
60
+ repo: ctx.repository.name,
61
+ pull_number: pr.number,
62
+ }),
63
+ ]);
64
+ const answers = await decide({
65
+ state: {
66
+ title: data.title,
67
+ body: data.body,
68
+ labels: data.labels.map(label => label.name),
69
+ files: files.map(file => file.filename),
70
+ },
71
+ questions: {
72
+ review: {
73
+ type: "boolean",
74
+ instructions:
75
+ "Does this change need security review? Answer yes for auth, permissions, secrets, request parsing, or external inputs.",
76
+ },
77
+ },
78
+ });
79
+
80
+ if (!above(answers.review, 0.8)) {
81
+ return null;
82
+ }
83
+ // `auth` starts a model turn running as the pull request sender.
84
+ return { auth: defaultGitHubAuth(ctx) };
85
+ },
86
+ });
87
+ ```
88
+
89
+ Only pull request metadata goes to Jev here. The review turn still reads
90
+ the diff itself.
91
+
92
+ ## Filter findings before you post them
93
+
94
+ Let the chat model draft a finding, then ask Jev whether the finding is
95
+ a real bug in the new code. Below your threshold, the tool returns and
96
+ the author never sees the draft. Above it, the finding becomes a review
97
+ comment.
98
+
99
+ ```ts
100
+ // agent/tools/post_finding.ts
101
+ import { parseGitHubPrContinuationKey } from "@cursor/july/channels/github";
102
+ import { above, decide } from "@cursor/july/extensions/jev";
103
+ import { defineTool } from "@cursor/july/tools";
104
+ import { z } from "zod";
105
+
106
+ export default defineTool({
107
+ description:
108
+ "Post one security finding on this session's pull request. Call once. Hold when it is not a real bug.",
109
+ inputSchema: z.object({
110
+ title: z.string(),
111
+ summary: z.string().describe("What the pull request changes."),
112
+ draft: z.string().describe("The finding to post, one or two sentences."),
113
+ }),
114
+ async execute({ title, summary, draft }, ctx) {
115
+ if (ctx.session.purpose === "eval") {
116
+ return { posted: false, reason: "eval" };
117
+ }
118
+
119
+ const ref = parseGitHubPrContinuationKey(ctx.session.continuationKey ?? "");
120
+ if (ref === undefined) {
121
+ throw new Error("post_finding requires a GitHub pull request session");
122
+ }
123
+
124
+ const answers = await decide({
125
+ state: { title, summary, draft },
126
+ questions: {
127
+ real: {
128
+ type: "boolean",
129
+ instructions:
130
+ "Is the draft an exploitable bug in the new code, not a style note or a hypothetical?",
131
+ },
132
+ },
133
+ });
134
+
135
+ if (!above(answers.real, 0.85)) {
136
+ return { posted: false, reason: "clean" };
137
+ }
138
+
139
+ const octokit = await ctx.host.github.getOctokit();
140
+ await octokit.rest.pulls.createReview({
141
+ owner: ref.owner,
142
+ repo: ref.repo,
143
+ pull_number: ref.number,
144
+ event: "COMMENT",
145
+ body: draft,
146
+ });
147
+ return {
148
+ posted: true,
149
+ pr: `${ref.owner}/${ref.repo}#${ref.number}`,
150
+ };
151
+ },
152
+ });
153
+ ```
154
+
155
+ ## Approve changes by risk tier
156
+
157
+ You can use the same pattern for Agentic Owners. Ask Jev to put the
158
+ pull request in a closed set of risk tiers. Approve only a confident
159
+ `very-low` or `low`; send everything else to a person.
160
+
161
+ ```ts
162
+ import { decide, needsHuman } from "@cursor/july/extensions/jev";
163
+
164
+ const answers = await decide({
165
+ state: { title, summary },
166
+ questions: {
167
+ risk: {
168
+ type: "choice",
169
+ instructions: "What risk tier is this pull request?",
170
+ criteria: {
171
+ "very-low": "docs, formatting, or a mechanical rename",
172
+ low: "a local change with tests and no new trust boundary",
173
+ medium: "auth, billing, or a behavior change callers depend on",
174
+ high: "a likely exploit, data loss, or a broken public contract",
175
+ },
176
+ },
177
+ },
178
+ });
179
+
180
+ const tier = answers.risk.choice;
181
+ if (needsHuman(answers.risk) || tier === "medium" || tier === "high") {
182
+ return { verdict: "hold", tier };
183
+ }
184
+ return { verdict: "approve", tier };
185
+ ```
186
+
187
+ Your GitHub tool resolves the pull request from `ctx.session` and posts
188
+ that verdict. The model does not choose the repository, pull request, or
189
+ approval event.
190
+
191
+ ## Open documentation follow-ups selectively
192
+
193
+ After a pull request merges, a code-wiki agent can ask whether the
194
+ change introduced a durable fact that belongs in the docs. A low
195
+ probability means no follow-up. A high probability opens a documentation
196
+ pull request instead of turning every merge into churn.
197
+
198
+ ```ts
199
+ import { above, decide } from "@cursor/july/extensions/jev";
200
+ import { openDocsPullRequest } from "../lib/wiki";
201
+
202
+ const answers = await decide({
203
+ state: { title, summary },
204
+ questions: {
205
+ updateDocs: {
206
+ type: "boolean",
207
+ instructions:
208
+ "Does this merge change a durable contract that the project docs should explain?",
209
+ },
210
+ },
211
+ });
212
+
213
+ if (!above(answers.updateDocs, 0.8)) {
214
+ return { action: "skip" };
215
+ }
216
+ return openDocsPullRequest({ title, summary });
217
+ ```
218
+
219
+ ## Write tools with Jev
220
+
221
+ `decide` is a regular async host function. Call it from a channel hook,
222
+ server tool, or router. It returns the answer map directly. `evaluate`
223
+ makes the same request and returns `{ answers }`.
224
+
225
+ Use a boolean for a yes-or-no gate, a choice for a closed set such as
226
+ risk tiers or owners, and a score for an ordered rubric. `above` checks
227
+ a boolean probability or score. `needsHuman` checks whether a boolean
228
+ or the selected choice clears your confidence bar.
229
+
230
+ Keep the questions atomic and combine them in TypeScript. For example,
231
+ ask separately whether a finding is real, whether its impact is
232
+ user-visible, and whether the changed line is new. Your code owns the
233
+ rule that decides whether all three are enough to post.
234
+
235
+ ## Let the agent ask Jev
236
+
237
+ Mounting the extension adds a read-only harness tool named
238
+ `<namespace>__evaluate`. With the default `jev` filename, the model sees
239
+ `jev__evaluate`.
240
+
241
+ The tool accepts one state and a list of boolean, choice, or score
242
+ questions. It returns `{ answers }` and never posts, approves, or opens
243
+ a pull request. Use it when the agent needs the result during the turn.
244
+ Use `decide` inside a project tool when the answer and the write belong
245
+ in one operation.
246
+
247
+ ## Skills included with the extension
248
+
249
+ The extension adds two skills by default:
250
+
251
+ - `jev__questions` teaches the model how to structure atomic questions,
252
+ choose a question type, and read the answers.
253
+
254
+ - `jev__gated-write` teaches the model to put `decide` and the write in
255
+ one server tool, hold on low confidence, and skip writes during evals.
256
+
257
+ The model sees each skill's description and loads the full procedure
258
+ when it applies.
259
+
260
+ ## Choose what to mount
261
+
262
+ Both contribution groups are on by default. Turn off the harness tool
263
+ when Jev should only run inside tools you wrote. Turn off the skills
264
+ when your agent already has its own Jev instructions.
265
+
266
+ ```ts
267
+ // agent/extensions/jev.ts
268
+ import jev from "@cursor/july/extensions/jev";
269
+
270
+ export default jev({
271
+ harnessTools: false,
272
+ skills: true,
273
+ });
274
+ ```
275
+
276
+ `harnessTools: false` removes `jev__evaluate` from discovery.
277
+ `skills: false` removes both Jev skills. These switches do not remove
278
+ the exported helpers, so project tools can still import `decide`,
279
+ `above`, and `needsHuman`.
280
+
281
+ ## Jev and trajectory evals
282
+
283
+ An eval checks a whole turn: the agent called the read, and it stayed
284
+ off approve. `decide` is the one call inside the tool, before GitHub.
285
+ Use the [Evals guide](../evals.md) when you want the turn to keep
286
+ behaving. Use `decide` when the tool itself needs a tier or a yes.
287
+
288
+ ## Test without the live API
289
+
290
+ Pass `fetch` and `apiKey` and the same `decide` path runs in a test.
291
+
292
+ ```ts
293
+ import { decide } from "@cursor/july/extensions/jev";
294
+
295
+ const answers = await decide({
296
+ state: {
297
+ title: "Skip the refund auth check",
298
+ summary: "acme/checkout#42 drops the session check on POST /refunds.",
299
+ },
300
+ questions: {
301
+ risk: {
302
+ type: "choice",
303
+ instructions: "What risk tier is this pull request?",
304
+ criteria: {
305
+ "very-low": "docs, formatting, or a mechanical rename",
306
+ low: "a local change with tests and no new trust boundary",
307
+ medium: "auth, billing, or a behavior change callers depend on",
308
+ high: "a likely exploit, data loss, or a broken public contract",
309
+ },
310
+ },
311
+ },
312
+ apiKey: "sk-test",
313
+ fetch: async () =>
314
+ new Response(
315
+ JSON.stringify({
316
+ answers: {
317
+ risk: {
318
+ type: "choice",
319
+ choice: "high",
320
+ probabilities: {
321
+ "very-low": 0.02,
322
+ low: 0.05,
323
+ medium: 0.18,
324
+ high: 0.75,
325
+ },
326
+ },
327
+ },
328
+ }),
329
+ { status: 200 }
330
+ ),
331
+ });
332
+ ```
333
+
334
+ ## Practices
335
+
336
+ - Pass the pull request title, a short summary, and the draft finding.
337
+ Don't send the checkout.
338
+
339
+ - Calibrate `above` and `needsHuman` on pull requests you have already
340
+ labeled. `needsHuman` defaults to `0.7`.
341
+
342
+ ## Related
343
+
344
+ - [Agentic owners](../templates/agentic-owners.md): a risk tier, then
345
+ the host approves or asks for reviewers
346
+ - [Security reviewer](../templates/security-reviewer.md): a finding, or
347
+ no comment
348
+ - [Thermo review](../templates/thermo-review.md): bugs and breakage,
349
+ posted the same way
350
+ - [Code wiki](../reference/cli.md#init): documentation
351
+ follow-ups after a merge
352
+ - [Evals](../evals.md): checks on the full turn
353
+ - [GitHub agents](./github.md): how the review gets onto the pull request