@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
|
@@ -1,212 +1,167 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Extensions"
|
|
3
|
-
description: "Mount a package of
|
|
3
|
+
description: "Mount a namespaced package of tools, skills, connections, and other agent capabilities, then inspect or override what it adds."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Extensions
|
|
7
7
|
|
|
8
|
-
An extension packages
|
|
9
|
-
`agent
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
[Mount a Cursor plugin](#mount-a-cursor-plugin).
|
|
8
|
+
An extension packages capabilities that would otherwise live under
|
|
9
|
+
`agent/`: tools, skills, instructions, connections, hooks, channels,
|
|
10
|
+
schedules, subagents, artifacts, and workspace seeds. One mount file
|
|
11
|
+
adds them under a namespace without copying their source into your
|
|
12
|
+
project.
|
|
14
13
|
|
|
15
|
-
Extensions
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
Extensions and Cursor plugins execute as trusted host code. A namespace
|
|
15
|
+
prevents name collisions; it does not sandbox the package or limit its
|
|
16
|
+
side effects. Review the package before mounting it.
|
|
18
17
|
|
|
19
18
|
## Mount an extension
|
|
20
19
|
|
|
21
|
-
Install the package
|
|
20
|
+
Install the package and add one file under `agent/extensions/`. The
|
|
21
|
+
filename becomes the namespace, so this mount contributes names such as
|
|
22
|
+
`ci__failed_jobs` and `ci__triage`.
|
|
22
23
|
|
|
23
24
|
```ts
|
|
24
25
|
// agent/extensions/ci.ts
|
|
25
26
|
import ci from "@acme/ci-triage";
|
|
26
27
|
|
|
27
|
-
export default ci({
|
|
28
|
+
export default ci({
|
|
29
|
+
org: "acme",
|
|
30
|
+
token: process.env.BUILDKITE_TOKEN,
|
|
31
|
+
});
|
|
28
32
|
```
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
with what it contributed, and `GET /v1/info` returns the same under
|
|
34
|
-
`extensions`.
|
|
34
|
+
The extension validates its configuration while the project loads.
|
|
35
|
+
Missing or mistyped settings fail `agent-sdk validate` before a turn
|
|
36
|
+
can call the contributed code.
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
`agent-sdk validate` instead of a tool call later.
|
|
38
|
+
Extension instructions are appended to the agent's prompt. The root
|
|
39
|
+
agent still needs its own `agent/instructions.md`.
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
`agent/tools/ci__failed_jobs.ts` fails discovery, so nothing outside a
|
|
42
|
-
mount can pose as one of its tools.
|
|
41
|
+
## See what the extension added
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
Run discovery after mounting or upgrading an extension:
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
```bash
|
|
46
|
+
agent-sdk validate --dir .
|
|
47
|
+
agent-sdk info --dir . --json
|
|
48
|
+
```
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
| `schedules/<name>` | schedule `<ns>__<name>` |
|
|
59
|
-
| `subagents/<id>/` | subagent `<ns>__<id>` |
|
|
60
|
-
| `instructions.md` / `.ts` / dir | appended to the agent's system prompt |
|
|
61
|
-
| `sandbox/workspace/**` | seeded into each local session workspace |
|
|
62
|
-
| `artifacts.ts` | artifact kinds `<ns>__<kind>` |
|
|
63
|
-
|
|
64
|
-
The root agent still needs its own `instructions.md`. Extension
|
|
65
|
-
instructions are extra fragments, not a substitute.
|
|
66
|
-
|
|
67
|
-
The built-in HTTP session channel stays on the agent. An extension
|
|
68
|
-
authors `defineChannel` only; a file named `http.ts` becomes `<ns>__http`.
|
|
69
|
-
|
|
70
|
-
These stay on the agent that mounts the extension. Each is a singleton
|
|
71
|
-
or is outside discovery:
|
|
72
|
-
|
|
73
|
-
| Path | Why it stays on the agent |
|
|
74
|
-
| --- | --- |
|
|
75
|
-
| `agent.ts` | One `defineAgent` runtime per agent |
|
|
76
|
-
| `storage.ts` | One `host.kv` / `host.files` backend |
|
|
77
|
-
| `otel.ts` | One OTLP exporter |
|
|
78
|
-
| `playground/` | Custom chips are a Vite glob of the agent tree, not a discovery walk |
|
|
79
|
-
| `extensions/` | Nested mounts are not loaded |
|
|
80
|
-
| `sandbox.ts` | Custom sandbox backends stay on the agent |
|
|
81
|
-
|
|
82
|
-
`agent-sdk validate` warns when a tree carries those paths.
|
|
50
|
+
`info` lists each mount and its namespaced tools, skills, connections,
|
|
51
|
+
hooks, channels, schedules, subagents, and artifact kinds. The same
|
|
52
|
+
data appears under `extensions` in `GET /v1/info`.
|
|
53
|
+
|
|
54
|
+
Names inside the extension stay short. A tool authored as
|
|
55
|
+
`tools/failed_jobs.ts` appears to the mounting agent as
|
|
56
|
+
`<namespace>__failed_jobs`. The `__` separator is reserved, so root
|
|
57
|
+
contributions cannot impersonate a mounted one.
|
|
83
58
|
|
|
84
59
|
## Adjust a mounted extension
|
|
85
60
|
|
|
86
|
-
|
|
87
|
-
|
|
61
|
+
Mount as a directory when you need to replace or remove one
|
|
62
|
+
contribution. Keep the package mount in `extension.ts`, then overlay the
|
|
63
|
+
extension's short name beneath it.
|
|
88
64
|
|
|
89
65
|
```text
|
|
90
66
|
agent/extensions/ci/
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
├── hooks/
|
|
96
|
-
│ └── audit.ts # export default disableHook() removes ci__audit
|
|
97
|
-
└── skills/
|
|
98
|
-
└── triage.ts # export default disableSkill() removes ci__triage
|
|
67
|
+
extension.ts
|
|
68
|
+
tools/
|
|
69
|
+
job_log.ts
|
|
70
|
+
retry_job.ts
|
|
99
71
|
```
|
|
100
72
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
73
|
+
```ts
|
|
74
|
+
// agent/extensions/ci/tools/job_log.ts
|
|
75
|
+
import { defineTool } from "@cursor/july/tools";
|
|
76
|
+
import {
|
|
77
|
+
jobLogInput,
|
|
78
|
+
readRedactedLog,
|
|
79
|
+
} from "../../../lib/ci.js";
|
|
80
|
+
|
|
81
|
+
export default defineTool({
|
|
82
|
+
description: "Read a redacted CI log.",
|
|
83
|
+
inputSchema: jobLogInput,
|
|
84
|
+
execute: readRedactedLog,
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
// agent/extensions/ci/tools/retry_job.ts
|
|
90
|
+
import { disableTool } from "@cursor/july/extensions";
|
|
91
|
+
|
|
92
|
+
export default disableTool();
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The first file replaces `ci__job_log`; the second removes
|
|
96
|
+
`ci__retry_job`. Use the matching `disable*` helper for another slot, or
|
|
97
|
+
generic `disable()` when the file location already identifies it.
|
|
98
|
+
Validation fails when an overlay names a contribution the package does
|
|
99
|
+
not provide.
|
|
124
100
|
|
|
125
101
|
## Mount a Cursor plugin
|
|
126
102
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
and mount it with `cursorPlugin`. The filename is the namespace, as with
|
|
131
|
-
any extension.
|
|
103
|
+
`cursorPlugin()` adapts a vendored Cursor or Claude plugin into the same
|
|
104
|
+
namespace model. Skills, commands, agents, and MCP servers become Agent
|
|
105
|
+
SDK skills, subagents, and connections.
|
|
132
106
|
|
|
133
107
|
```ts
|
|
134
108
|
// agent/extensions/notion.ts
|
|
135
109
|
import { cursorPlugin } from "@cursor/july/extensions";
|
|
136
110
|
|
|
137
111
|
export default cursorPlugin({
|
|
138
|
-
path: "plugins/notion-workspace",
|
|
139
|
-
variables: {
|
|
112
|
+
path: "plugins/notion-workspace",
|
|
113
|
+
variables: {
|
|
114
|
+
NOTION_TOKEN: process.env.NOTION_TOKEN,
|
|
115
|
+
},
|
|
140
116
|
});
|
|
141
117
|
```
|
|
142
118
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
| --- | --- |
|
|
147
|
-
| `skills/<name>/SKILL.md` | skill `notion__<name>` |
|
|
148
|
-
| `commands/<name>.md` | skill `notion__<name>`, since a command is a procedure the model runs on request |
|
|
149
|
-
| `agents/<name>.md` | subagent `notion__<name>` |
|
|
150
|
-
| MCP servers in `mcp.json` or the manifest | connection `notion__<server>` |
|
|
151
|
-
|
|
152
|
-
`variables` fills the `${NAME}` placeholders the plugin's MCP config
|
|
153
|
-
declares; names you leave out come from the environment by exact name. A
|
|
154
|
-
placeholder nothing fills fails `agent-sdk validate`, so a server never
|
|
155
|
-
attaches half configured. A server that declares an OAuth client
|
|
156
|
-
authorizes through [host MCP OAuth](../guides/mcp-oauth.md) as
|
|
157
|
-
`agent-sdk mcp oauth notion__<server>`; its secret names collapse the
|
|
158
|
-
namespace separator, so `notion__notion` stores `MCP_OAUTH_NOTION_NOTION_*`.
|
|
159
|
-
A server that lists `enabledTools` mounts as an advertised connection with
|
|
160
|
-
that allowlist and requires the local runtime; `agent-sdk validate` fails
|
|
161
|
-
otherwise.
|
|
162
|
-
|
|
163
|
-
Mounting a plugin trusts it like authored code: its servers run the
|
|
164
|
-
commands and read the environment variables its config names. Review a
|
|
165
|
-
plugin before you vendor it.
|
|
166
|
-
|
|
167
|
-
Plugin rules and hooks are not mounted; `agent-sdk validate` warns when a
|
|
168
|
-
plugin carries them. To drop or reconfigure one of the plugin's servers,
|
|
169
|
-
mount as a directory and overlay `mcp-connections/<server>.ts`. An
|
|
170
|
-
overlaid server is never read from the plugin, so it needs no variables.
|
|
119
|
+
`path` is relative to the project root. `variables` fills placeholders
|
|
120
|
+
declared by the plugin's MCP configuration; unresolved placeholders
|
|
121
|
+
fail validation instead of mounting a partial server.
|
|
171
122
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
123
|
+
Plugin rules and hooks are not mounted. Overlay a generated
|
|
124
|
+
`mcp-connections/<server>.ts` file to replace or disable one plugin
|
|
125
|
+
server. OAuth-backed plugin servers use
|
|
126
|
+
[Host MCP OAuth](../guides/mcp-oauth.md); transport and tool-filter
|
|
127
|
+
details live in [MCP connections](./connections.md).
|
|
128
|
+
|
|
129
|
+
## What an extension can contain
|
|
130
|
+
|
|
131
|
+
Share capabilities that can safely join another agent under a
|
|
132
|
+
namespace:
|
|
179
133
|
|
|
180
|
-
|
|
181
|
-
|
|
134
|
+
- Instructions, tools, skills, MCP and host connections
|
|
135
|
+
- Hooks, channels, schedules, and subagents
|
|
136
|
+
- Artifact kinds and local workspace seed files
|
|
137
|
+
|
|
138
|
+
Agent-wide configuration does not compose through a mount.
|
|
139
|
+
`agent.ts`, storage, OpenTelemetry, playground code, custom sandbox
|
|
140
|
+
backends, and nested extensions are ignored in an extension package;
|
|
141
|
+
`agent-sdk validate` reports unsupported paths.
|
|
182
142
|
|
|
183
143
|
## Build an extension
|
|
184
144
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
145
|
+
Lay out the package like the shareable part of `agent/`. The root
|
|
146
|
+
`extension.ts` supplies a description and validates any settings the
|
|
147
|
+
consumer must provide.
|
|
188
148
|
|
|
189
149
|
```text
|
|
190
150
|
@acme/ci-triage/
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
└── lib/
|
|
204
|
-
└── buildkite.ts # shared code, never discovered
|
|
151
|
+
package.json
|
|
152
|
+
extension.ts
|
|
153
|
+
instructions.md
|
|
154
|
+
tools/
|
|
155
|
+
failed_jobs.ts
|
|
156
|
+
job_log.ts
|
|
157
|
+
skills/
|
|
158
|
+
triage.md
|
|
159
|
+
hooks/
|
|
160
|
+
audit.ts
|
|
161
|
+
lib/
|
|
162
|
+
buildkite.ts
|
|
205
163
|
```
|
|
206
164
|
|
|
207
|
-
Declare the extension with its root and, when consumers must configure
|
|
208
|
-
it, a schema for their settings.
|
|
209
|
-
|
|
210
165
|
```ts
|
|
211
166
|
// extension.ts
|
|
212
167
|
import { defineExtension } from "@cursor/july/extensions";
|
|
@@ -214,7 +169,7 @@ import { z } from "zod";
|
|
|
214
169
|
|
|
215
170
|
export default defineExtension({
|
|
216
171
|
root: import.meta.dirname,
|
|
217
|
-
description: "Investigate failing
|
|
172
|
+
description: "Investigate failing Buildkite jobs.",
|
|
218
173
|
config: z.object({
|
|
219
174
|
org: z.string(),
|
|
220
175
|
token: z.string(),
|
|
@@ -223,48 +178,22 @@ export default defineExtension({
|
|
|
223
178
|
});
|
|
224
179
|
```
|
|
225
180
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
});
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
Because the consumer picks the namespace, have skills and tool
|
|
249
|
-
descriptions refer to sibling tools by their short names and say they
|
|
250
|
-
appear under the mount's namespace (`<namespace>__job_log`).
|
|
251
|
-
|
|
252
|
-
Publish the built `extension.js` as the package entry point with the
|
|
253
|
-
slot directories beside it. `root` is read from the built file, so copy
|
|
254
|
-
`skills/*.md` and `instructions.md` into the build output or author them
|
|
255
|
-
as `.ts`.
|
|
256
|
-
|
|
257
|
-
## What's next
|
|
258
|
-
|
|
259
|
-
Continue with these pages:
|
|
260
|
-
|
|
261
|
-
- [Cursor cloud agents](../guides/cloud-agents.md): the extension that
|
|
262
|
-
lets an agent launch and steer cloud agents
|
|
263
|
-
- [Cursor Grok Bot agents](../guides/grokbot-agents.md): the extension
|
|
264
|
-
that lets an agent talk to Grok Bot agents
|
|
265
|
-
- [Self-improvement](../guides/improve.md): the extension that lets an
|
|
266
|
-
agent change its own source through a cloud agent and a pull request
|
|
267
|
-
- [Tools](./tools.md): the tool contract extensions contribute to
|
|
268
|
-
- [Skills](./skills.md): the skill forms an extension can carry
|
|
269
|
-
- [Project layout](./project-layout.md): where `agent/extensions/` sits
|
|
270
|
-
in the tree
|
|
181
|
+
Modules inside the package import this definition and read
|
|
182
|
+
`extension.config`, which is already validated and has defaults
|
|
183
|
+
applied. Publish the built entry point with its slot directories and
|
|
184
|
+
prose assets beside it.
|
|
185
|
+
|
|
186
|
+
The [Project layout](./project-layout.md) owns each contribution's
|
|
187
|
+
authoring contract. Keep extension instructions and tool descriptions
|
|
188
|
+
namespace-neutral because the consumer chooses the final prefix.
|
|
189
|
+
|
|
190
|
+
## Related
|
|
191
|
+
|
|
192
|
+
- [Cloud agents](../guides/cloud-agents.md): delegate repository work
|
|
193
|
+
through an extension
|
|
194
|
+
- [Grok Bot agents](../guides/grokbot-agents.md): consult named bots
|
|
195
|
+
- [Jev](../guides/jev.md): typed answers, then gated writes
|
|
196
|
+
- [Self-improvement](../guides/improve.md): propose source changes
|
|
197
|
+
through pull requests
|
|
198
|
+
- [Project layout](./project-layout.md): contribution slots
|
|
199
|
+
- [Tools](./tools.md) and [Skills](./skills.md): capability contracts
|
package/docs/reference/hooks.md
CHANGED
|
@@ -73,31 +73,31 @@ stream envelope `{ type, index, sessionId, turnId?, at, data }`, with
|
|
|
73
73
|
|
|
74
74
|
The payloads hooks read most often:
|
|
75
75
|
|
|
76
|
-
| Event
|
|
77
|
-
|
|
|
78
|
-
| `message.received`
|
|
79
|
-
| `turn.completed`
|
|
80
|
-
| `turn.failed`
|
|
81
|
-
| `actions.requested` | `{ calls: [{ callId, toolName, args? }] }`. A call with `parentCallId` belongs to a subagent
|
|
82
|
-
| `action.result`
|
|
76
|
+
| Event | `event.data` |
|
|
77
|
+
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
78
|
+
| `message.received` | `{ text }` |
|
|
79
|
+
| `turn.completed` | `{ result?, usage?, cost? }`. `usage` has `inputTokens`, `outputTokens`, `cacheReadTokens`, `cacheWriteTokens`, and optional `reasoningTokens`. `cost` has `totalUsd` and the `model` it was priced against |
|
|
80
|
+
| `turn.failed` | `{ message }` |
|
|
81
|
+
| `actions.requested` | `{ calls: [{ callId, toolName, args? }] }`. A call with `parentCallId` belongs to a subagent |
|
|
82
|
+
| `action.result` | `{ callId, toolName, output?, isError, stubbed? }`. `stubbed` means a dry-run session answered a write without running it |
|
|
83
83
|
|
|
84
84
|
The types are `SessionEvent`, `SessionEventType`, and `HookContext`,
|
|
85
85
|
exported from `@cursor/july`.
|
|
86
86
|
|
|
87
87
|
## Handler context
|
|
88
88
|
|
|
89
|
-
| Member
|
|
90
|
-
|
|
|
91
|
-
| `ctx.session`
|
|
92
|
-
| `ctx.agent`
|
|
93
|
-
| `ctx.channel`
|
|
94
|
-
| `ctx.host.kv`
|
|
95
|
-
| `ctx.host.files`
|
|
96
|
-
| `ctx.host.otel`
|
|
97
|
-
| `ctx.host.mcp`, `ctx.host.github`, `ctx.host.slack` | The same shared clients tools get
|
|
98
|
-
| `ctx.host.reminders`
|
|
99
|
-
| `ctx.artifacts`
|
|
100
|
-
| `ctx.stateRoot`
|
|
89
|
+
| Member | What it is |
|
|
90
|
+
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
91
|
+
| `ctx.session` | Read-only session info: `id`, `channelId`, `mode` (`chat` or `task`), `purpose` (`live` or `eval`), `auth`, plus `title` and `sdkAgentId` when set |
|
|
92
|
+
| `ctx.agent` | `{ name }` of the agent the event belongs to |
|
|
93
|
+
| `ctx.channel` | `{ id, continuationToken }`. The token is `null` when the session can't take follow-ups |
|
|
94
|
+
| `ctx.host.kv` | Durable JSON, shared by every session of the agent; the storage backend decides whether it survives a hosted replace. Prefix keys with `ctx.session.id` for per-session state |
|
|
95
|
+
| `ctx.host.files` | Durable files, bound to this session. Pass `{ scope: "deployment" }` for agent-wide files |
|
|
96
|
+
| `ctx.host.otel` | Counters, histograms, and tags, attributed to this session |
|
|
97
|
+
| `ctx.host.mcp`, `ctx.host.github`, `ctx.host.slack` | The same shared clients tools get |
|
|
98
|
+
| `ctx.host.reminders` | Per-session [reminders](./schedules.md), the same API tools get |
|
|
99
|
+
| `ctx.artifacts` | Session-bound [artifacts](./artifacts.md) facade: `tag` fills in `sessionId` and `turnId` |
|
|
100
|
+
| `ctx.stateRoot` | Absolute path of the local state root. It resets when a hosted deployment is replaced; keep derived state in `kv` or `files` |
|
|
101
101
|
|
|
102
102
|
## When hooks run
|
|
103
103
|
|
|
@@ -123,24 +123,24 @@ the hook's copy is the source of truth.
|
|
|
123
123
|
|
|
124
124
|
All of them consume the same stream, for different jobs:
|
|
125
125
|
|
|
126
|
-
|
|
|
127
|
-
|
|
|
128
|
-
| Scope
|
|
129
|
-
| Job
|
|
130
|
-
| Context
|
|
131
|
-
| Can affect the run | no
|
|
132
|
-
| Authored at
|
|
126
|
+
| | Hooks | Channel `events` | Evals |
|
|
127
|
+
| ------------------ | ----------------------------------------------- | ----------------------------------------------------------------- | --------------------------------- |
|
|
128
|
+
| Scope | every session of the agent | sessions the channel owns | one test turn |
|
|
129
|
+
| Job | observe: audit, metrics, mirrors, derived state | deliver: replies back to the channel's surface | assert: gates over the trajectory |
|
|
130
|
+
| Context | `ctx.host`, `ctx.artifacts`, session info | `channel.state`, `setContinuationToken`, `ctx.host`, session info | the `t` assertion helpers |
|
|
131
|
+
| Can affect the run | no | yes, it owns the surface | n/a |
|
|
132
|
+
| Authored at | `agent/hooks/*.ts` | channel config | `evals/**/*.eval.ts` |
|
|
133
133
|
|
|
134
134
|
## When not to use a hook
|
|
135
135
|
|
|
136
|
-
| You want to
|
|
137
|
-
|
|
|
138
|
-
| Add context before the model runs
|
|
139
|
-
| Reply on Slack, comment on a PR, or post any other delivery
|
|
140
|
-
| Show PR progress (merge-box check, sticky banner)
|
|
141
|
-
| Block, approve, or rewrite a tool call
|
|
142
|
-
| Act on the final assistant text, reject it for a same-turn repair, or fail a bad turn | `defineResult`
|
|
143
|
-
| Gate a change on behavior
|
|
136
|
+
| You want to | Use instead |
|
|
137
|
+
| ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
138
|
+
| Add context before the model runs | The channel's `send` message and `workspaceFiles`, `instructions.md`, skills, or `sandbox/workspace/` seed files |
|
|
139
|
+
| Reply on Slack, comment on a PR, or post any other delivery | The channel's `events` map, or the Slack and GitHub packs |
|
|
140
|
+
| Show PR progress (merge-box check, sticky banner) | `githubChannel({ progress: { commitStatus, banner } })`; see the [PR autofixer](../templates/pr-autofixer.md) |
|
|
141
|
+
| Block, approve, or rewrite a tool call | [`needsApproval`](./tools.md#gate-a-tool-on-human-approval) on the tool |
|
|
142
|
+
| Act on the final assistant text, reject it for a same-turn repair, or fail a bad turn | `defineResult` |
|
|
143
|
+
| Gate a change on behavior | [Evals](../evals.md) |
|
|
144
144
|
|
|
145
145
|
## Patterns
|
|
146
146
|
|
|
@@ -54,7 +54,7 @@ subagent."
|
|
|
54
54
|
Subagents split one job into roles inside a single agent. When the
|
|
55
55
|
specialist is independently useful, with its own tools, sessions, and
|
|
56
56
|
playground, make it a full agent. See
|
|
57
|
-
[
|
|
57
|
+
[Peer agents](../guides/agent-to-agent.md#peer-or-subagent).
|
|
58
58
|
|
|
59
59
|
## Patterns
|
|
60
60
|
|
package/docs/reference/tools.md
CHANGED
|
@@ -42,6 +42,10 @@ code that runs it. With a Zod `inputSchema`, the input is validated before
|
|
|
42
42
|
`execute` runs and the input type is inferred. A plain JSON Schema
|
|
43
43
|
object is forwarded as-is and the input arrives as raw JSON.
|
|
44
44
|
|
|
45
|
+
A server tool can call `decide` from
|
|
46
|
+
[`@cursor/july/extensions/jev`](../guides/jev.md) for a risk tier or a
|
|
47
|
+
finding gate without a second model turn.
|
|
48
|
+
|
|
45
49
|
For multi-line descriptions, reminder prompts, and error messages, use
|
|
46
50
|
[`prompt`](./prompt.md) so the string can sit indented with the surrounding
|
|
47
51
|
TypeScript:
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Review pull requests for structural code quality"
|
|
3
|
+
description: "Scaffold the agent, deploy it, and open a PR."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review pull requests for structural code quality
|
|
7
|
+
|
|
8
|
+
This agent reads a pull request diff and posts one review comment. It
|
|
9
|
+
reports missing abstractions, spaghetti branches, feature logic
|
|
10
|
+
leaking into shared paths, and files pushed past 1,000 lines. Style
|
|
11
|
+
nits and behavior disputes stay out.
|
|
12
|
+
|
|
13
|
+
This template is one model turn: read the diff, then post one comment.
|
|
14
|
+
|
|
15
|
+
## Scaffold
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx @cursor/july init ./thermo-quality-review --template thermo-quality-review
|
|
19
|
+
cd thermo-quality-review
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Deploy
|
|
23
|
+
|
|
24
|
+
Sign in once, then deploy from a pushed checkout:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
agent-sdk login
|
|
28
|
+
agent-sdk deploy --cursor-events-repo acme/api
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Repeat `--cursor-events-repo` for each repo. Every repo must share one
|
|
32
|
+
owner. The deployment watches those repos through your team's Cursor
|
|
33
|
+
GitHub connection and reviews each opened PR. No webhook or local
|
|
34
|
+
server.
|
|
35
|
+
|
|
36
|
+
Change repos later without redeploying:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
agent-sdk event-repos thermo-quality-review --repo acme/api --repo acme/web
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Try it locally
|
|
43
|
+
|
|
44
|
+
Skip the deploy while you iterate. Start the relay for one repo:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
agent-sdk dev --cursor-events --repo acme/api
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Open a PR, or replay a known one without pushing:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
agent-sdk github replay https://github.com/acme/api/pull/12 --dir .
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`replay` needs pull access. Draft PRs are ignored. The channel writes
|
|
57
|
+
`pr/diff.patch`, then starts a model turn. The model calls
|
|
58
|
+
`post_findings` once. Chat replies stay in the playground.
|
|
59
|
+
`post_findings` writes the GitHub comment.
|
|
60
|
+
|
|
61
|
+
Connect GitHub in Cursor first (Settings or
|
|
62
|
+
[cursor.com/dashboard](https://cursor.com/dashboard)) so the relay and
|
|
63
|
+
API calls use your account. See the [GitHub guide](../guides/github.md).
|
|
64
|
+
|
|
65
|
+
## Evals
|
|
66
|
+
|
|
67
|
+
Two smoke cases: one spaghetti-branch fixture and one clean fix. They
|
|
68
|
+
need no GitHub access.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
agent-sdk eval
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Eval sessions skip the GitHub write.
|
|
75
|
+
|
|
76
|
+
## What to edit
|
|
77
|
+
|
|
78
|
+
- `agent/instructions.md`: what counts as a finding and the comment
|
|
79
|
+
shape
|
|
80
|
+
- `evals/review.eval.ts`: smoke cases
|