@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.
- package/README.md +4 -0
- package/dist/bin/agent-serve.js +20 -4
- package/dist/channels/checks.d.ts +10 -0
- package/dist/channels/checks.d.ts.map +1 -1
- package/dist/channels/github/github-channel.d.ts +29 -19
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +29 -19
- package/dist/channels/origin/checks.d.ts +1 -1
- package/dist/channels/origin/checks.d.ts.map +1 -1
- package/dist/channels/slack/agentic-delivery.d.ts.map +1 -1
- package/dist/channels/slack/agentic-delivery.js +2 -0
- package/dist/channels/slack/dispatch.d.ts +11 -1
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +146 -39
- package/dist/channels/slack/placeholder.d.ts +26 -0
- package/dist/channels/slack/placeholder.d.ts.map +1 -1
- package/dist/channels/slack/placeholder.js +28 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +9 -16
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.Drol6mi6.js → app.CAeK13eM.js} +4 -4
- package/dist/docs/assets/building-with-agents.md.BBCx0AUo.js +9 -0
- package/dist/docs/assets/building-with-agents.md.BBCx0AUo.lean.js +1 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.Ck9E52Ls.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CdqoBZJX.js → VPLocalSearchBox.C9LbPHod.js} +1 -1
- package/dist/docs/assets/chunks/{arc.BVX3ycTn.js → arc.CmMq2zmS.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CcChnMxX.js → architectureDiagram-Q4EWVU46.CCXB8Uj5.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.xwtXO-yt.js → baseUniq.CyQo6eLe.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.CijZ_taK.js → blockDiagram-DXYQGD6D.JYq6w91N.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.0FBvwBvK.js → c4Diagram-AHTNJAMY.BRV8GPJJ.js} +1 -1
- package/dist/docs/assets/chunks/channel.BHiYmnZ4.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CELMmMDA.js → chunk-4BX2VUAB.Bv4ooYQR.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C4bhFtSm.js → chunk-4TB4RGXK.t4JtKPcj.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.ZnQ9gRRQ.js → chunk-55IACEB6.34lCHj9Y.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DPlmglG-.js → chunk-EDXVE4YY.BSwrPNrt.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.BrUk8pff.js → chunk-FMBD7UC4.Beeun-R-.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CcmWIncu.js → chunk-OYMX7WX6.BUUFUcJc.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D65-cs8I.js → chunk-QZHKN3VN.B2XjHzN_.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.qoXZpG9F.js → chunk-YZCP3GAM.CLYG8znk.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Degh8l90.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Degh8l90.js +1 -0
- package/dist/docs/assets/chunks/clone.BIywbczV.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.8rYtqudO.js → cose-bilkent-S5V4N54A.DVEa6fZp.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.DrRP1fOh.js → dagre-KV5264BT.C9PZQK-S.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DHj_xA2_.js → diagram-5BDNPKRD.DoN0uv3Y.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.Bz_6nAKj.js → diagram-G4DWMVQ6.Czv3duqx.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BWA0xSW9.js → diagram-MMDJMWI5.BinJ5kWb.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.CpTJLNJI.js → diagram-TYMM5635.DW326M4K.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.-7AWWSrP.js → erDiagram-SMLLAGMA.U2pR_OA7.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BTnQ742_.js → flowDiagram-DWJPFMVM.ByWJXeYK.js} +1 -1
- package/dist/docs/assets/chunks/framework.BNw1pucY.js +19 -0
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.B5_HiiQ5.js → ganttDiagram-T4ZO3ILL.OquF0Rtg.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CZcNTFZd.js → gitGraphDiagram-UUTBAWPF.Bpn01P7X.js} +1 -1
- package/dist/docs/assets/chunks/{graph.V2GLaab4.js → graph.CNRB6ETL.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.7pZOkCCU.js → infoDiagram-42DDH7IO.CqhknMWi.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DSMo3Qa3.js → ishikawaDiagram-UXIWVN3A.C6xpR2af.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BNEgWN1S.js → journeyDiagram-VCZTEJTY.Cg5f7oB3.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B-4d4tC7.js → kanban-definition-6JOO6SKY.Cx9YTwlU.js} +1 -1
- package/dist/docs/assets/chunks/{layout.Dvbn9nSb.js → layout.ljS-wFtK.js} +1 -1
- package/dist/docs/assets/chunks/{linear.D2GM4p4b.js → linear.jSxNrsFC.js} +1 -1
- package/dist/docs/assets/chunks/{min.DVBtLK-B.js → min.Cum8AlQw.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CnJRI55x.js → mindmap-definition-QFDTVHPH.BLiysLpe.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.CtoaTFlA.js → pieDiagram-DEJITSTG.BoIDyuKF.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DtT24_vN.js → quadrantDiagram-34T5L4WZ.DLkpDytR.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CjSO4o8f.js → requirementDiagram-MS252O5E.DqTVqSu2.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.-wWiIVWa.js → sankeyDiagram-XADWPNL6.CG_6FF7j.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DSk8s4gX.js → sequenceDiagram-FGHM5R23.BIp9602K.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BFKAsdkN.js → stateDiagram-FHFEXIEX.COSXsD9I.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.qrxrbFsX.js +1 -0
- package/dist/docs/assets/chunks/{theme.C0MctGaz.js → theme.CXJ7PNwy.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.TUNJbAFe.js → timeline-definition-GMOUNBTQ.CXdVqkLq.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.C-RGNnk4.js → vennDiagram-DHZGUBPP.CZxGuc4r.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.g5efOWmT.js → wardley-RL74JXVD.3oVgfqQk.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.DH4zt73Y.js → wardleyDiagram-NUSXRM2D.6_irCgGJ.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.B-3k6bF6.js → xychartDiagram-5P7HB3ND.TRPe92m3.js} +1 -1
- package/dist/docs/assets/deployment.md.D2jQZuFx.js +32 -0
- package/dist/docs/assets/deployment.md.D2jQZuFx.lean.js +1 -0
- package/dist/docs/assets/evals.md.D3Y3Aixt.js +72 -0
- package/dist/docs/assets/evals.md.D3Y3Aixt.lean.js +1 -0
- package/dist/docs/assets/guides_agent-to-agent.md.CD4T5FIl.js +41 -0
- package/dist/docs/assets/guides_agent-to-agent.md.CD4T5FIl.lean.js +1 -0
- package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.js +145 -0
- package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.lean.js +1 -0
- package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.js +15 -0
- package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.lean.js +1 -0
- package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.js +43 -0
- package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.lean.js +1 -0
- package/dist/docs/assets/guides_github.md.BwpBp3ed.js +156 -0
- package/dist/docs/assets/guides_github.md.BwpBp3ed.lean.js +1 -0
- package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.js +153 -0
- package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.lean.js +1 -0
- package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.js +16 -0
- package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.lean.js +1 -0
- package/dist/docs/assets/guides_improve.md.Bnp4F99w.js +22 -0
- package/dist/docs/assets/guides_improve.md.Bnp4F99w.lean.js +1 -0
- package/dist/docs/assets/guides_jev.md.F5fAkkfN.js +189 -0
- package/dist/docs/assets/guides_jev.md.F5fAkkfN.lean.js +1 -0
- package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.js +50 -0
- package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.lean.js +1 -0
- package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.js +35 -0
- package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.lean.js +1 -0
- package/dist/docs/assets/guides_slack.md.Bo96y42E.js +70 -0
- package/dist/docs/assets/guides_slack.md.Bo96y42E.lean.js +1 -0
- package/dist/docs/assets/guides_webhooks.md.1A72_VEE.js +92 -0
- package/dist/docs/assets/guides_webhooks.md.1A72_VEE.lean.js +1 -0
- package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.js +7 -0
- package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.lean.js +1 -0
- package/dist/docs/assets/{index.md.BFVyY2KT.js → index.md.C-t81M5J.js} +2 -2
- package/dist/docs/assets/{index.md.BFVyY2KT.lean.js → index.md.C-t81M5J.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.D3MjSZN-.js → quickstart.md.DAvVhuuU.js} +1 -1
- package/dist/docs/assets/{quickstart.md.D3MjSZN-.lean.js → quickstart.md.DAvVhuuU.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.js → reference_agent-config.md.DGPyw7ms.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.lean.js → reference_agent-config.md.DGPyw7ms.lean.js} +1 -1
- package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.js → reference_artifacts.md.Bu_4HmsD.js} +1 -1
- package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.lean.js → reference_artifacts.md.Bu_4HmsD.lean.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.icqLKcTc.js → reference_channels.md.nFWbzAic.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.icqLKcTc.lean.js → reference_channels.md.nFWbzAic.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.B2dBL6L8.js → reference_cli.md.DLWDz9ij.js} +3 -1
- package/dist/docs/assets/{reference_cli.md.B2dBL6L8.lean.js → reference_cli.md.DLWDz9ij.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.js → reference_connections.md.Je9dMsdd.js} +2 -2
- package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.lean.js → reference_connections.md.Je9dMsdd.lean.js} +1 -1
- package/dist/docs/assets/reference_evals.md.DNJzM_yf.js +57 -0
- package/dist/docs/assets/reference_evals.md.DNJzM_yf.lean.js +1 -0
- package/dist/docs/assets/reference_extensions.md.Cv5aLCz_.js +58 -0
- package/dist/docs/assets/reference_extensions.md.Cv5aLCz_.lean.js +1 -0
- package/dist/docs/assets/{reference_hooks.md.CZuynAxj.js → reference_hooks.md.B7uzNENk.js} +2 -2
- package/dist/docs/assets/{reference_hooks.md.CZuynAxj.lean.js → reference_hooks.md.B7uzNENk.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.js → reference_http-api.md.CduHavZ2.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.lean.js → reference_http-api.md.CduHavZ2.lean.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.D7gkckK-.js → reference_instructions.md.CU1My5My.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.D7gkckK-.lean.js → reference_instructions.md.CU1My5My.lean.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.D2YExv5K.js → reference_playground.md.Ch2d0Iqi.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.D2YExv5K.lean.js → reference_playground.md.Ch2d0Iqi.lean.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.js → reference_project-layout.md.BGhgpy9V.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.lean.js → reference_project-layout.md.BGhgpy9V.lean.js} +1 -1
- package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.js → reference_prompt.md.Ccp0R53H.js} +1 -1
- package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.lean.js → reference_prompt.md.Ccp0R53H.lean.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.BasfZWO-.js → reference_schedules.md.B2Nm6FaD.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.BasfZWO-.lean.js → reference_schedules.md.B2Nm6FaD.lean.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.js → reference_sessions.md.1_6Vyv7x.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.lean.js → reference_sessions.md.1_6Vyv7x.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.rNgpsGd0.js → reference_skills.md.DjQkRefx.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.rNgpsGd0.lean.js → reference_skills.md.DjQkRefx.lean.js} +1 -1
- package/dist/docs/assets/{reference_subagents.md.e5qitjJt.js → reference_subagents.md.Dl16gcBj.js} +2 -2
- package/dist/docs/assets/{reference_subagents.md.e5qitjJt.lean.js → reference_subagents.md.Dl16gcBj.lean.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.js → reference_tools.md.B1dH1lpa.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.lean.js → reference_tools.md.B1dH1lpa.lean.js} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.js → templates_agentic-owners.md.9M575F5C.js} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.lean.js → templates_agentic-owners.md.9M575F5C.lean.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.js → templates_pr-autofixer.md.ws0DDXDy.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.lean.js → templates_pr-autofixer.md.ws0DDXDy.lean.js} +1 -1
- package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.js → templates_security-reviewer.md.KEFYXzfK.js} +1 -1
- package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.lean.js → templates_security-reviewer.md.KEFYXzfK.lean.js} +1 -1
- package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.js +3 -0
- package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.lean.js +1 -0
- package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.js +3 -0
- package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.lean.js +1 -0
- package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.js → templates_triage.md.CVGe_FG6.js} +1 -1
- package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.lean.js → templates_triage.md.CVGe_FG6.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.mnfFG2Em.js +1 -0
- package/dist/docs/assets/troubleshooting.md.mnfFG2Em.lean.js +1 -0
- package/dist/docs/building-with-agents.html +44 -48
- package/dist/docs/building-with-agents.md +94 -82
- package/dist/docs/deployment.html +59 -78
- package/dist/docs/deployment.md +117 -363
- package/dist/docs/evals.html +85 -224
- package/dist/docs/evals.md +149 -673
- package/dist/docs/guides/agent-to-agent.html +74 -47
- package/dist/docs/guides/agent-to-agent.md +128 -46
- package/dist/docs/guides/bitbucket.html +179 -44
- package/dist/docs/guides/bitbucket.md +249 -48
- package/dist/docs/guides/cloud-agents.html +46 -40
- package/dist/docs/guides/cloud-agents.md +119 -66
- package/dist/docs/guides/convert-automation.html +80 -49
- package/dist/docs/guides/convert-automation.md +156 -147
- package/dist/docs/guides/github.html +184 -92
- package/dist/docs/guides/github.md +260 -245
- package/dist/docs/guides/gitlab.html +184 -45
- package/dist/docs/guides/gitlab.md +249 -50
- package/dist/docs/guides/grokbot-agents.html +48 -41
- package/dist/docs/guides/grokbot-agents.md +99 -53
- package/dist/docs/guides/improve.html +48 -40
- package/dist/docs/guides/improve.md +111 -58
- package/dist/docs/guides/jev.html +248 -0
- package/dist/docs/guides/jev.md +348 -0
- package/dist/docs/guides/mcp-oauth.html +74 -52
- package/dist/docs/guides/mcp-oauth.md +111 -121
- package/dist/docs/guides/opentelemetry.html +63 -54
- package/dist/docs/guides/opentelemetry.md +96 -165
- package/dist/docs/guides/slack.html +83 -59
- package/dist/docs/guides/slack.md +157 -227
- package/dist/docs/guides/webhooks.html +97 -230
- package/dist/docs/guides/webhooks.md +154 -385
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +44 -38
- package/dist/docs/hillclimbing.md +101 -55
- package/dist/docs/index.html +38 -38
- package/dist/docs/index.md +2 -0
- package/dist/docs/llms-full.txt +3490 -3146
- package/dist/docs/llms.txt +22 -18
- package/dist/docs/quickstart.html +37 -37
- package/dist/docs/reference/agent-config.html +37 -37
- package/dist/docs/reference/artifacts.html +38 -38
- package/dist/docs/reference/channels.html +37 -37
- package/dist/docs/reference/cli.html +39 -37
- package/dist/docs/reference/cli.md +2 -0
- package/dist/docs/reference/connections.html +38 -38
- package/dist/docs/reference/connections.md +1 -1
- package/dist/docs/reference/evals.html +116 -0
- package/dist/docs/reference/evals.md +293 -0
- package/dist/docs/reference/extensions.html +80 -84
- package/dist/docs/reference/extensions.md +131 -202
- package/dist/docs/reference/hooks.html +39 -39
- package/dist/docs/reference/hooks.md +34 -34
- package/dist/docs/reference/http-api.html +37 -37
- package/dist/docs/reference/instructions.html +37 -37
- package/dist/docs/reference/playground.html +37 -37
- package/dist/docs/reference/project-layout.html +37 -37
- package/dist/docs/reference/prompt.html +37 -37
- package/dist/docs/reference/schedules.html +37 -37
- package/dist/docs/reference/sessions.html +37 -37
- package/dist/docs/reference/skills.html +37 -37
- package/dist/docs/reference/subagents.html +38 -38
- package/dist/docs/reference/subagents.md +1 -1
- package/dist/docs/reference/tools.html +38 -38
- package/dist/docs/reference/tools.md +4 -0
- package/dist/docs/templates/agentic-owners.html +38 -38
- package/dist/docs/templates/pr-autofixer.html +37 -37
- package/dist/docs/templates/security-reviewer.html +38 -38
- package/dist/docs/templates/thermo-quality-review.html +62 -0
- package/dist/docs/templates/thermo-quality-review.md +75 -0
- package/dist/docs/templates/thermo-review.html +62 -0
- package/dist/docs/templates/thermo-review.md +74 -0
- package/dist/docs/templates/triage.html +37 -37
- package/dist/docs/troubleshooting.html +38 -38
- package/dist/docs/troubleshooting.md +97 -66
- package/dist/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
- package/dist/extensions/improve/extension.d.ts +3 -1
- package/dist/extensions/improve/extension.d.ts.map +1 -1
- package/dist/extensions/improve/extension.js +4 -2
- package/dist/extensions/improve/skills/yourself.js +1 -1
- package/dist/extensions/jev/extension.d.ts +43 -0
- package/dist/extensions/jev/extension.d.ts.map +1 -0
- package/dist/extensions/jev/extension.js +47 -0
- package/dist/extensions/jev/lib/evaluate.d.ts +101 -0
- package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -0
- package/dist/extensions/jev/lib/evaluate.js +167 -0
- package/dist/extensions/jev/skills/gated-write.md +25 -0
- package/dist/extensions/jev/skills/questions.md +33 -0
- package/dist/extensions/jev/tools/evaluate.d.ts +4 -0
- package/dist/extensions/jev/tools/evaluate.d.ts.map +1 -0
- package/dist/extensions/jev/tools/evaluate.js +88 -0
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +2 -0
- package/dist/filesystem.d.ts +46 -2
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +149 -102
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +6 -0
- package/dist/internal/cli-ax.d.ts +6 -0
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +72 -14
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +1 -0
- package/dist/internal/cursor-agent-template.d.ts +1 -1
- package/dist/internal/cursor-agent-template.d.ts.map +1 -1
- package/dist/internal/cursor-agent-template.js +2 -0
- package/dist/internal/discovery/connections.d.ts.map +1 -1
- package/dist/internal/discovery/connections.js +18 -0
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +8 -4
- package/dist/internal/discovery/info.d.ts.map +1 -1
- package/dist/internal/discovery/info.js +1 -0
- package/dist/internal/filesystem/tools.d.ts.map +1 -1
- package/dist/internal/filesystem/tools.js +2 -2
- package/dist/internal/filesystem/walk.d.ts +7 -4
- package/dist/internal/filesystem/walk.d.ts.map +1 -1
- package/dist/internal/filesystem/walk.js +34 -11
- package/dist/internal/hosted-admission-adapter.d.ts +3 -0
- package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.d.ts +20 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +51 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +23 -25
- package/dist/internal/hosted-execution-diag.d.ts +12 -4
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +26 -4
- package/dist/internal/hosted-execution-flush.d.ts +1 -0
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
- package/dist/internal/hosted-execution-flush.js +4 -2
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +4 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +111 -48
- package/dist/internal/session-engine.d.ts +4 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +39 -9
- package/dist/internal/skill-catalog.d.ts +28 -0
- package/dist/internal/skill-catalog.d.ts.map +1 -0
- package/dist/internal/skill-catalog.js +44 -0
- package/dist/playground/assets/index-DSMAewbx.css +1 -0
- package/dist/playground/assets/index-De_lpFxE.js +67 -0
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +32 -3
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +2 -0
- package/docs/building-with-agents.md +96 -84
- package/docs/deployment.md +118 -364
- package/docs/evals.md +149 -673
- package/docs/guides/agent-to-agent.md +130 -48
- package/docs/guides/bitbucket.md +250 -49
- package/docs/guides/cloud-agents.md +119 -67
- package/docs/guides/convert-automation.md +157 -148
- package/docs/guides/github.md +261 -246
- package/docs/guides/gitlab.md +250 -51
- package/docs/guides/grokbot-agents.md +100 -55
- package/docs/guides/improve.md +112 -59
- package/docs/guides/jev.md +353 -0
- package/docs/guides/mcp-oauth.md +112 -122
- package/docs/guides/opentelemetry.md +97 -166
- package/docs/guides/slack.md +158 -228
- package/docs/guides/webhooks.md +155 -386
- package/docs/hillclimbing.md +102 -56
- package/docs/reference/cli.md +2 -0
- package/docs/reference/connections.md +1 -1
- package/docs/reference/evals.md +298 -0
- package/docs/reference/extensions.md +132 -203
- package/docs/reference/hooks.md +34 -34
- package/docs/reference/subagents.md +1 -1
- package/docs/reference/tools.md +4 -0
- package/docs/templates/thermo-quality-review.md +80 -0
- package/docs/templates/thermo-review.md +79 -0
- package/docs/troubleshooting.md +98 -67
- package/package.json +8 -1
- package/skills/github/SKILL.md +21 -13
- package/src/bin/agent-serve.ts +24 -3
- package/src/channels/checks.ts +8 -0
- package/src/channels/github/github-channel.ts +29 -19
- package/src/channels/origin/checks.ts +3 -1
- package/src/channels/slack/agentic-delivery.ts +2 -0
- package/src/channels/slack/dispatch.ts +131 -4
- package/src/channels/slack/placeholder.ts +51 -0
- package/src/channels/slack/slack-channel.ts +9 -2
- package/src/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
- package/src/extensions/improve/extension.ts +4 -2
- package/src/extensions/improve/skills/yourself.ts +1 -1
- package/src/extensions/jev/extension.ts +95 -0
- package/src/extensions/jev/lib/evaluate.ts +289 -0
- package/src/extensions/jev/skills/gated-write.md +25 -0
- package/src/extensions/jev/skills/questions.md +33 -0
- package/src/extensions/jev/tools/evaluate.ts +90 -0
- package/src/extensions.ts +2 -0
- package/src/filesystem.ts +168 -65
- package/src/index.ts +3 -0
- package/src/internal/advertise-tools.ts +6 -0
- package/src/internal/cli-ax.ts +88 -15
- package/src/internal/continuation-identity.ts +1 -0
- package/src/internal/cursor-agent-template.ts +2 -0
- package/src/internal/discovery/connections.ts +21 -0
- package/src/internal/discovery/extensions.ts +12 -4
- package/src/internal/discovery/info.ts +1 -0
- package/src/internal/filesystem/tools.ts +2 -0
- package/src/internal/filesystem/walk.ts +60 -15
- package/src/internal/hosted-admission-adapter.ts +3 -0
- package/src/internal/hosted-delivery-protocol.ts +82 -1
- package/src/internal/hosted-delivery.ts +23 -0
- package/src/internal/hosted-execution-diag.ts +33 -4
- package/src/internal/hosted-execution-flush.ts +4 -0
- package/src/internal/init-project.ts +4 -0
- package/src/internal/server.ts +130 -53
- package/src/internal/session-engine.ts +46 -8
- package/src/internal/skill-catalog.ts +69 -0
- package/src/types.ts +33 -3
- package/templates/thermo-quality-review/README.md +35 -0
- package/templates/thermo-quality-review/agent/agent.ts +8 -0
- package/templates/thermo-quality-review/agent/channels/github.ts +42 -0
- package/templates/thermo-quality-review/agent/instructions.md +43 -0
- package/templates/thermo-quality-review/agent/tools/post_findings.ts +70 -0
- package/templates/thermo-quality-review/evals/evals.config.ts +5 -0
- package/templates/thermo-quality-review/evals/review.eval.ts +62 -0
- package/templates/thermo-quality-review/package.json +18 -0
- package/templates/thermo-quality-review/tsconfig.json +12 -0
- package/templates/thermo-review/README.md +35 -0
- package/templates/thermo-review/agent/agent.ts +8 -0
- package/templates/thermo-review/agent/channels/github.ts +42 -0
- package/templates/thermo-review/agent/instructions.md +40 -0
- package/templates/thermo-review/agent/tools/post_findings.ts +70 -0
- package/templates/thermo-review/evals/evals.config.ts +5 -0
- package/templates/thermo-review/evals/review.eval.ts +53 -0
- package/templates/thermo-review/package.json +18 -0
- package/templates/thermo-review/tsconfig.json +12 -0
- package/dist/docs/assets/building-with-agents.md.CEGVXkmO.js +0 -13
- package/dist/docs/assets/building-with-agents.md.CEGVXkmO.lean.js +0 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DtXk1hy-.js +0 -1
- package/dist/docs/assets/chunks/channel.Bkv1N-gK.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CZDco1o8.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CZDco1o8.js +0 -1
- package/dist/docs/assets/chunks/clone.YSt_40_s.js +0 -1
- package/dist/docs/assets/chunks/framework.dypDpWZ3.js +0 -19
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.C4CLm481.js +0 -1
- package/dist/docs/assets/deployment.md.Dm4Qo3hp.js +0 -51
- package/dist/docs/assets/deployment.md.Dm4Qo3hp.lean.js +0 -1
- package/dist/docs/assets/evals.md.BLDRt5LH.js +0 -211
- package/dist/docs/assets/evals.md.BLDRt5LH.lean.js +0 -1
- package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.js +0 -14
- package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.lean.js +0 -1
- package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.js +0 -10
- package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.lean.js +0 -1
- package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.js +0 -9
- package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.lean.js +0 -1
- package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.js +0 -12
- package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.lean.js +0 -1
- package/dist/docs/assets/guides_github.md.D6ER29dG.js +0 -64
- package/dist/docs/assets/guides_github.md.D6ER29dG.lean.js +0 -1
- package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.js +0 -14
- package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.lean.js +0 -1
- package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.js +0 -9
- package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.lean.js +0 -1
- package/dist/docs/assets/guides_improve.md.BKaDuKKK.js +0 -14
- package/dist/docs/assets/guides_improve.md.BKaDuKKK.lean.js +0 -1
- package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.js +0 -28
- package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.lean.js +0 -1
- package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.js +0 -26
- package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.lean.js +0 -1
- package/dist/docs/assets/guides_slack.md.DdT8rmsj.js +0 -46
- package/dist/docs/assets/guides_slack.md.DdT8rmsj.lean.js +0 -1
- package/dist/docs/assets/guides_webhooks.md.aQW10HRe.js +0 -225
- package/dist/docs/assets/guides_webhooks.md.aQW10HRe.lean.js +0 -1
- package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.js +0 -1
- package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.lean.js +0 -1
- package/dist/docs/assets/reference_extensions.md.wlFD3cUR.js +0 -62
- package/dist/docs/assets/reference_extensions.md.wlFD3cUR.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.js +0 -1
- package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.lean.js +0 -1
- package/dist/playground/assets/index-BLlKgZtI.css +0 -1
- package/dist/playground/assets/index-CDS5p9sR.js +0 -67
package/docs/hillclimbing.md
CHANGED
|
@@ -1,93 +1,139 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Hillclimbing"
|
|
3
|
-
description: "Improve
|
|
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
|
-
|
|
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
|
-
|
|
13
|
+
The companion [`hillclimb` skill](../skills/hillclimb/SKILL.md) can run
|
|
14
|
+
this loop with you.
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
## Correct a wrong tool choice
|
|
13
17
|
|
|
14
|
-
|
|
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
|
-
```
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
28
|
+
Lock the result with the intended and tempting-wrong paths:
|
|
24
29
|
|
|
25
|
-
|
|
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
|
-
|
|
39
|
+
## Reduce wandering or latency
|
|
28
40
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
71
|
+
## Run one measured round
|
|
49
72
|
|
|
50
|
-
|
|
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
|
-
|
|
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
|
-
|
|
80
|
+
Then run one loop:
|
|
58
81
|
|
|
59
|
-
|
|
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
|
-
|
|
89
|
+
Do not replace a fixture mid-round. A moving input makes the comparison
|
|
90
|
+
meaningless.
|
|
62
91
|
|
|
63
|
-
|
|
92
|
+
## Choose the smallest lever
|
|
64
93
|
|
|
65
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
119
|
+
## Run the loop with a coding agent
|
|
78
120
|
|
|
79
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
- [
|
|
92
|
-
|
|
93
|
-
- [
|
|
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
|
package/docs/reference/cli.md
CHANGED
|
@@ -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
|
|
@@ -256,7 +256,7 @@ export default defineConnection({
|
|
|
256
256
|
```
|
|
257
257
|
|
|
258
258
|
Unknown slugs and self-references fail `serve` at startup. Walkthrough:
|
|
259
|
-
[
|
|
259
|
+
[Peer agents](../guides/agent-to-agent.md#delegate-a-question-to-a-specialist).
|
|
260
260
|
|
|
261
261
|
## Every model-visible MCP connection is available in three places
|
|
262
262
|
|
|
@@ -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`
|