@cursor/july 0.1.111 → 0.1.112

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/dist/bin/agent-serve.js +18 -1
  2. package/dist/channels/github/github-channel.d.ts +29 -19
  3. package/dist/channels/github/github-channel.d.ts.map +1 -1
  4. package/dist/channels/github/github-channel.js +29 -19
  5. package/dist/channels/slack/agentic-delivery.d.ts.map +1 -1
  6. package/dist/channels/slack/agentic-delivery.js +2 -0
  7. package/dist/channels/slack/dispatch.d.ts +11 -1
  8. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  9. package/dist/channels/slack/dispatch.js +142 -39
  10. package/dist/channels/slack/placeholder.d.ts +26 -0
  11. package/dist/channels/slack/placeholder.d.ts.map +1 -1
  12. package/dist/channels/slack/placeholder.js +28 -0
  13. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  14. package/dist/channels/slack/slack-channel.js +9 -16
  15. package/dist/docs/404.html +2 -2
  16. package/dist/docs/assets/{app.Drol6mi6.js → app.DxTdhphC.js} +4 -4
  17. package/dist/docs/assets/building-with-agents.md.BBCx0AUo.js +9 -0
  18. package/dist/docs/assets/building-with-agents.md.BBCx0AUo.lean.js +1 -0
  19. package/dist/docs/assets/chunks/@localSearchIndexroot.QmjDU6Jh.js +1 -0
  20. package/dist/docs/assets/chunks/{VPLocalSearchBox.CdqoBZJX.js → VPLocalSearchBox.CR3KTF0X.js} +1 -1
  21. package/dist/docs/assets/chunks/{arc.BVX3ycTn.js → arc.CVVqBOdS.js} +1 -1
  22. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CcChnMxX.js → architectureDiagram-Q4EWVU46.CJHGP4ki.js} +1 -1
  23. package/dist/docs/assets/chunks/{baseUniq.xwtXO-yt.js → baseUniq.r7UVVRBP.js} +1 -1
  24. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.CijZ_taK.js → blockDiagram-DXYQGD6D.DKmMaTre.js} +1 -1
  25. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.0FBvwBvK.js → c4Diagram-AHTNJAMY.DDJsntUO.js} +1 -1
  26. package/dist/docs/assets/chunks/channel.BjpoSbz_.js +1 -0
  27. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CELMmMDA.js → chunk-4BX2VUAB.BK2rKt6W.js} +1 -1
  28. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C4bhFtSm.js → chunk-4TB4RGXK.DRLV8RnF.js} +1 -1
  29. package/dist/docs/assets/chunks/{chunk-55IACEB6.ZnQ9gRRQ.js → chunk-55IACEB6.DaKjxtb7.js} +1 -1
  30. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DPlmglG-.js → chunk-EDXVE4YY.C5sPCIT1.js} +1 -1
  31. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.BrUk8pff.js → chunk-FMBD7UC4.CSGWyNTB.js} +1 -1
  32. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CcmWIncu.js → chunk-OYMX7WX6.D5tK9XEr.js} +1 -1
  33. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D65-cs8I.js → chunk-QZHKN3VN.BeZGd1UZ.js} +1 -1
  34. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.qoXZpG9F.js → chunk-YZCP3GAM.U_tfWwQR.js} +1 -1
  35. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BgxOlMHw.js +1 -0
  36. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BgxOlMHw.js +1 -0
  37. package/dist/docs/assets/chunks/clone.DRuGBKZC.js +1 -0
  38. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.8rYtqudO.js → cose-bilkent-S5V4N54A.DVeRXIb6.js} +1 -1
  39. package/dist/docs/assets/chunks/{dagre-KV5264BT.DrRP1fOh.js → dagre-KV5264BT.BpKJAeRZ.js} +1 -1
  40. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DHj_xA2_.js → diagram-5BDNPKRD.BQOtrd1Z.js} +1 -1
  41. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.Bz_6nAKj.js → diagram-G4DWMVQ6.CSDAhjPI.js} +1 -1
  42. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BWA0xSW9.js → diagram-MMDJMWI5.Dpztst2S.js} +1 -1
  43. package/dist/docs/assets/chunks/{diagram-TYMM5635.CpTJLNJI.js → diagram-TYMM5635.qJHRizHR.js} +1 -1
  44. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.-7AWWSrP.js → erDiagram-SMLLAGMA.vbDotH3l.js} +1 -1
  45. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BTnQ742_.js → flowDiagram-DWJPFMVM.CqS_ZQr4.js} +1 -1
  46. package/dist/docs/assets/chunks/framework.BNw1pucY.js +19 -0
  47. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.B5_HiiQ5.js → ganttDiagram-T4ZO3ILL.DTLdR4pN.js} +1 -1
  48. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CZcNTFZd.js → gitGraphDiagram-UUTBAWPF.D04lnbnr.js} +1 -1
  49. package/dist/docs/assets/chunks/{graph.V2GLaab4.js → graph.BlfqLJsM.js} +1 -1
  50. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.7pZOkCCU.js → infoDiagram-42DDH7IO.tAooImWA.js} +1 -1
  51. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DSMo3Qa3.js → ishikawaDiagram-UXIWVN3A.ClUsVqnJ.js} +1 -1
  52. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BNEgWN1S.js → journeyDiagram-VCZTEJTY.C3tUgyCg.js} +1 -1
  53. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B-4d4tC7.js → kanban-definition-6JOO6SKY.CtD9-QCe.js} +1 -1
  54. package/dist/docs/assets/chunks/{layout.Dvbn9nSb.js → layout.D38U-LnT.js} +1 -1
  55. package/dist/docs/assets/chunks/{linear.D2GM4p4b.js → linear.BJmssyhN.js} +1 -1
  56. package/dist/docs/assets/chunks/{min.DVBtLK-B.js → min.DNgXoouU.js} +1 -1
  57. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CnJRI55x.js → mindmap-definition-QFDTVHPH.Dcp6cxeu.js} +1 -1
  58. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.CtoaTFlA.js → pieDiagram-DEJITSTG.CLDw6zIs.js} +1 -1
  59. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DtT24_vN.js → quadrantDiagram-34T5L4WZ.CYaeeY4c.js} +1 -1
  60. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CjSO4o8f.js → requirementDiagram-MS252O5E.gMYuRpq2.js} +1 -1
  61. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.-wWiIVWa.js → sankeyDiagram-XADWPNL6.CZqyHFbc.js} +1 -1
  62. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DSk8s4gX.js → sequenceDiagram-FGHM5R23.BTsCjUDN.js} +1 -1
  63. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BFKAsdkN.js → stateDiagram-FHFEXIEX.CftT9mLJ.js} +1 -1
  64. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.-43J68xB.js +1 -0
  65. package/dist/docs/assets/chunks/{theme.C0MctGaz.js → theme.B_7J9ZsV.js} +2 -2
  66. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.TUNJbAFe.js → timeline-definition-GMOUNBTQ.DbU3WUNw.js} +1 -1
  67. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.C-RGNnk4.js → vennDiagram-DHZGUBPP.ixsq-q2u.js} +1 -1
  68. package/dist/docs/assets/chunks/wardley-RL74JXVD.WRXz-Dux.js +162 -0
  69. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.DH4zt73Y.js → wardleyDiagram-NUSXRM2D.C0ewvgbp.js} +1 -1
  70. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.B-3k6bF6.js → xychartDiagram-5P7HB3ND.nAEhF4bO.js} +1 -1
  71. package/dist/docs/assets/deployment.md.D2jQZuFx.js +32 -0
  72. package/dist/docs/assets/deployment.md.D2jQZuFx.lean.js +1 -0
  73. package/dist/docs/assets/evals.md.BYvfZ-PO.js +72 -0
  74. package/dist/docs/assets/evals.md.BYvfZ-PO.lean.js +1 -0
  75. package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.js +30 -0
  76. package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.lean.js +1 -0
  77. package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.js +145 -0
  78. package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.lean.js +1 -0
  79. package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.js +15 -0
  80. package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.lean.js +1 -0
  81. package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.js +43 -0
  82. package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.lean.js +1 -0
  83. package/dist/docs/assets/guides_github.md.BwpBp3ed.js +156 -0
  84. package/dist/docs/assets/guides_github.md.BwpBp3ed.lean.js +1 -0
  85. package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.js +153 -0
  86. package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.lean.js +1 -0
  87. package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.js +16 -0
  88. package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.lean.js +1 -0
  89. package/dist/docs/assets/guides_improve.md.Bnp4F99w.js +22 -0
  90. package/dist/docs/assets/guides_improve.md.Bnp4F99w.lean.js +1 -0
  91. package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.js +50 -0
  92. package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.lean.js +1 -0
  93. package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.js +35 -0
  94. package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.lean.js +1 -0
  95. package/dist/docs/assets/guides_slack.md.Bo96y42E.js +70 -0
  96. package/dist/docs/assets/guides_slack.md.Bo96y42E.lean.js +1 -0
  97. package/dist/docs/assets/guides_webhooks.md.1A72_VEE.js +92 -0
  98. package/dist/docs/assets/guides_webhooks.md.1A72_VEE.lean.js +1 -0
  99. package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.js +7 -0
  100. package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.lean.js +1 -0
  101. package/dist/docs/assets/{index.md.BFVyY2KT.js → index.md.C-t81M5J.js} +2 -2
  102. package/dist/docs/assets/{index.md.BFVyY2KT.lean.js → index.md.C-t81M5J.lean.js} +1 -1
  103. package/dist/docs/assets/{quickstart.md.D3MjSZN-.js → quickstart.md.DAvVhuuU.js} +1 -1
  104. package/dist/docs/assets/{quickstart.md.D3MjSZN-.lean.js → quickstart.md.DAvVhuuU.lean.js} +1 -1
  105. package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.js → reference_agent-config.md.DGPyw7ms.js} +1 -1
  106. package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.lean.js → reference_agent-config.md.DGPyw7ms.lean.js} +1 -1
  107. package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.js → reference_artifacts.md.Bu_4HmsD.js} +1 -1
  108. package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.lean.js → reference_artifacts.md.Bu_4HmsD.lean.js} +1 -1
  109. package/dist/docs/assets/{reference_channels.md.icqLKcTc.js → reference_channels.md.nFWbzAic.js} +1 -1
  110. package/dist/docs/assets/{reference_channels.md.icqLKcTc.lean.js → reference_channels.md.nFWbzAic.lean.js} +1 -1
  111. package/dist/docs/assets/{reference_cli.md.B2dBL6L8.js → reference_cli.md.DLWDz9ij.js} +3 -1
  112. package/dist/docs/assets/{reference_cli.md.B2dBL6L8.lean.js → reference_cli.md.DLWDz9ij.lean.js} +1 -1
  113. package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.js → reference_connections.md.CmyrlXfY.js} +1 -1
  114. package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.lean.js → reference_connections.md.CmyrlXfY.lean.js} +1 -1
  115. package/dist/docs/assets/reference_evals.md.DNJzM_yf.js +57 -0
  116. package/dist/docs/assets/reference_evals.md.DNJzM_yf.lean.js +1 -0
  117. package/dist/docs/assets/reference_extensions.md.Ceq-qT8d.js +58 -0
  118. package/dist/docs/assets/reference_extensions.md.Ceq-qT8d.lean.js +1 -0
  119. package/dist/docs/assets/{reference_hooks.md.CZuynAxj.js → reference_hooks.md.B7uzNENk.js} +2 -2
  120. package/dist/docs/assets/{reference_hooks.md.CZuynAxj.lean.js → reference_hooks.md.B7uzNENk.lean.js} +1 -1
  121. package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.js → reference_http-api.md.CduHavZ2.js} +1 -1
  122. package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.lean.js → reference_http-api.md.CduHavZ2.lean.js} +1 -1
  123. package/dist/docs/assets/{reference_instructions.md.D7gkckK-.js → reference_instructions.md.CU1My5My.js} +1 -1
  124. package/dist/docs/assets/{reference_instructions.md.D7gkckK-.lean.js → reference_instructions.md.CU1My5My.lean.js} +1 -1
  125. package/dist/docs/assets/{reference_playground.md.D2YExv5K.js → reference_playground.md.Ch2d0Iqi.js} +1 -1
  126. package/dist/docs/assets/{reference_playground.md.D2YExv5K.lean.js → reference_playground.md.Ch2d0Iqi.lean.js} +1 -1
  127. package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.js → reference_project-layout.md.BGhgpy9V.js} +1 -1
  128. package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.lean.js → reference_project-layout.md.BGhgpy9V.lean.js} +1 -1
  129. package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.js → reference_prompt.md.Ccp0R53H.js} +1 -1
  130. package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.lean.js → reference_prompt.md.Ccp0R53H.lean.js} +1 -1
  131. package/dist/docs/assets/{reference_schedules.md.BasfZWO-.js → reference_schedules.md.B2Nm6FaD.js} +1 -1
  132. package/dist/docs/assets/{reference_schedules.md.BasfZWO-.lean.js → reference_schedules.md.B2Nm6FaD.lean.js} +1 -1
  133. package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.js → reference_sessions.md.1_6Vyv7x.js} +1 -1
  134. package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.lean.js → reference_sessions.md.1_6Vyv7x.lean.js} +1 -1
  135. package/dist/docs/assets/{reference_skills.md.rNgpsGd0.js → reference_skills.md.DjQkRefx.js} +1 -1
  136. package/dist/docs/assets/{reference_skills.md.rNgpsGd0.lean.js → reference_skills.md.DjQkRefx.lean.js} +1 -1
  137. package/dist/docs/assets/{reference_subagents.md.e5qitjJt.js → reference_subagents.md.BHsSMMyO.js} +1 -1
  138. package/dist/docs/assets/{reference_subagents.md.e5qitjJt.lean.js → reference_subagents.md.BHsSMMyO.lean.js} +1 -1
  139. package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.js → reference_tools.md.BYzUTeVA.js} +1 -1
  140. package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.lean.js → reference_tools.md.BYzUTeVA.lean.js} +1 -1
  141. package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.js → templates_agentic-owners.md.9M575F5C.js} +1 -1
  142. package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.lean.js → templates_agentic-owners.md.9M575F5C.lean.js} +1 -1
  143. package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.js → templates_pr-autofixer.md.ws0DDXDy.js} +1 -1
  144. package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.lean.js → templates_pr-autofixer.md.ws0DDXDy.lean.js} +1 -1
  145. package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.js → templates_security-reviewer.md.KEFYXzfK.js} +1 -1
  146. package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.lean.js → templates_security-reviewer.md.KEFYXzfK.lean.js} +1 -1
  147. package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.js +3 -0
  148. package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.lean.js +1 -0
  149. package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.js +3 -0
  150. package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.lean.js +1 -0
  151. package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.js → templates_triage.md.CVGe_FG6.js} +1 -1
  152. package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.lean.js → templates_triage.md.CVGe_FG6.lean.js} +1 -1
  153. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.js +1 -0
  154. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.lean.js +1 -0
  155. package/dist/docs/building-with-agents.html +44 -48
  156. package/dist/docs/building-with-agents.md +94 -82
  157. package/dist/docs/deployment.html +59 -78
  158. package/dist/docs/deployment.md +117 -363
  159. package/dist/docs/evals.html +85 -224
  160. package/dist/docs/evals.md +146 -673
  161. package/dist/docs/guides/agent-to-agent.html +58 -42
  162. package/dist/docs/guides/agent-to-agent.md +112 -35
  163. package/dist/docs/guides/bitbucket.html +179 -44
  164. package/dist/docs/guides/bitbucket.md +249 -48
  165. package/dist/docs/guides/cloud-agents.html +46 -40
  166. package/dist/docs/guides/cloud-agents.md +119 -66
  167. package/dist/docs/guides/convert-automation.html +80 -49
  168. package/dist/docs/guides/convert-automation.md +156 -147
  169. package/dist/docs/guides/github.html +184 -92
  170. package/dist/docs/guides/github.md +260 -245
  171. package/dist/docs/guides/gitlab.html +184 -45
  172. package/dist/docs/guides/gitlab.md +249 -50
  173. package/dist/docs/guides/grokbot-agents.html +48 -41
  174. package/dist/docs/guides/grokbot-agents.md +99 -53
  175. package/dist/docs/guides/improve.html +48 -40
  176. package/dist/docs/guides/improve.md +111 -58
  177. package/dist/docs/guides/mcp-oauth.html +74 -52
  178. package/dist/docs/guides/mcp-oauth.md +111 -121
  179. package/dist/docs/guides/opentelemetry.html +63 -54
  180. package/dist/docs/guides/opentelemetry.md +96 -165
  181. package/dist/docs/guides/slack.html +83 -59
  182. package/dist/docs/guides/slack.md +157 -227
  183. package/dist/docs/guides/webhooks.html +97 -230
  184. package/dist/docs/guides/webhooks.md +154 -385
  185. package/dist/docs/hashmap.json +1 -1
  186. package/dist/docs/hillclimbing.html +44 -38
  187. package/dist/docs/hillclimbing.md +101 -55
  188. package/dist/docs/index.html +38 -38
  189. package/dist/docs/index.md +2 -0
  190. package/dist/docs/llms-full.txt +3082 -3104
  191. package/dist/docs/llms.txt +21 -18
  192. package/dist/docs/quickstart.html +37 -37
  193. package/dist/docs/reference/agent-config.html +37 -37
  194. package/dist/docs/reference/artifacts.html +38 -38
  195. package/dist/docs/reference/channels.html +37 -37
  196. package/dist/docs/reference/cli.html +39 -37
  197. package/dist/docs/reference/cli.md +2 -0
  198. package/dist/docs/reference/connections.html +37 -37
  199. package/dist/docs/reference/evals.html +116 -0
  200. package/dist/docs/reference/evals.md +293 -0
  201. package/dist/docs/reference/extensions.html +80 -84
  202. package/dist/docs/reference/extensions.md +127 -199
  203. package/dist/docs/reference/hooks.html +39 -39
  204. package/dist/docs/reference/hooks.md +34 -34
  205. package/dist/docs/reference/http-api.html +37 -37
  206. package/dist/docs/reference/instructions.html +37 -37
  207. package/dist/docs/reference/playground.html +37 -37
  208. package/dist/docs/reference/project-layout.html +37 -37
  209. package/dist/docs/reference/prompt.html +37 -37
  210. package/dist/docs/reference/schedules.html +37 -37
  211. package/dist/docs/reference/sessions.html +37 -37
  212. package/dist/docs/reference/skills.html +37 -37
  213. package/dist/docs/reference/subagents.html +37 -37
  214. package/dist/docs/reference/tools.html +37 -37
  215. package/dist/docs/templates/agentic-owners.html +38 -38
  216. package/dist/docs/templates/pr-autofixer.html +37 -37
  217. package/dist/docs/templates/security-reviewer.html +38 -38
  218. package/dist/docs/templates/thermo-quality-review.html +62 -0
  219. package/dist/docs/templates/thermo-quality-review.md +75 -0
  220. package/dist/docs/templates/thermo-review.html +62 -0
  221. package/dist/docs/templates/thermo-review.md +74 -0
  222. package/dist/docs/templates/triage.html +37 -37
  223. package/dist/docs/troubleshooting.html +38 -38
  224. package/dist/docs/troubleshooting.md +97 -66
  225. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
  226. package/dist/extensions/improve/extension.d.ts +3 -1
  227. package/dist/extensions/improve/extension.d.ts.map +1 -1
  228. package/dist/extensions/improve/extension.js +4 -2
  229. package/dist/extensions/improve/skills/yourself.js +1 -1
  230. package/dist/filesystem.d.ts +46 -2
  231. package/dist/filesystem.d.ts.map +1 -1
  232. package/dist/filesystem.js +149 -102
  233. package/dist/index.d.ts +2 -2
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +1 -1
  236. package/dist/internal/cli-ax.d.ts +6 -0
  237. package/dist/internal/cli-ax.d.ts.map +1 -1
  238. package/dist/internal/cli-ax.js +72 -14
  239. package/dist/internal/continuation-identity.d.ts.map +1 -1
  240. package/dist/internal/continuation-identity.js +1 -0
  241. package/dist/internal/cursor-agent-template.d.ts +1 -1
  242. package/dist/internal/cursor-agent-template.d.ts.map +1 -1
  243. package/dist/internal/cursor-agent-template.js +2 -0
  244. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  245. package/dist/internal/filesystem/tools.js +2 -2
  246. package/dist/internal/filesystem/walk.d.ts +7 -4
  247. package/dist/internal/filesystem/walk.d.ts.map +1 -1
  248. package/dist/internal/filesystem/walk.js +34 -11
  249. package/dist/internal/hosted-admission-adapter.d.ts +3 -0
  250. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  251. package/dist/internal/hosted-delivery-protocol.d.ts +17 -0
  252. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  253. package/dist/internal/hosted-delivery-protocol.js +50 -1
  254. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  255. package/dist/internal/hosted-delivery.js +8 -0
  256. package/dist/internal/init-project.d.ts.map +1 -1
  257. package/dist/internal/init-project.js +4 -0
  258. package/dist/internal/server.d.ts.map +1 -1
  259. package/dist/internal/server.js +94 -39
  260. package/dist/internal/session-engine.d.ts.map +1 -1
  261. package/dist/internal/session-engine.js +11 -5
  262. package/dist/internal/skill-catalog.d.ts +28 -0
  263. package/dist/internal/skill-catalog.d.ts.map +1 -0
  264. package/dist/internal/skill-catalog.js +44 -0
  265. package/dist/playground/assets/index-B1c1LeIf.js +67 -0
  266. package/dist/playground/assets/index-CK2LX3iD.css +1 -0
  267. package/dist/playground/index.html +2 -2
  268. package/dist/types.d.ts +9 -0
  269. package/dist/types.d.ts.map +1 -1
  270. package/docs/README.md +2 -0
  271. package/docs/building-with-agents.md +96 -84
  272. package/docs/deployment.md +118 -364
  273. package/docs/evals.md +147 -674
  274. package/docs/guides/agent-to-agent.md +113 -36
  275. package/docs/guides/bitbucket.md +250 -49
  276. package/docs/guides/cloud-agents.md +119 -67
  277. package/docs/guides/convert-automation.md +157 -148
  278. package/docs/guides/github.md +261 -246
  279. package/docs/guides/gitlab.md +250 -51
  280. package/docs/guides/grokbot-agents.md +100 -55
  281. package/docs/guides/improve.md +112 -59
  282. package/docs/guides/mcp-oauth.md +112 -122
  283. package/docs/guides/opentelemetry.md +97 -166
  284. package/docs/guides/slack.md +158 -228
  285. package/docs/guides/webhooks.md +155 -386
  286. package/docs/hillclimbing.md +102 -56
  287. package/docs/reference/cli.md +2 -0
  288. package/docs/reference/evals.md +298 -0
  289. package/docs/reference/extensions.md +128 -200
  290. package/docs/reference/hooks.md +34 -34
  291. package/docs/templates/thermo-quality-review.md +80 -0
  292. package/docs/templates/thermo-review.md +79 -0
  293. package/docs/troubleshooting.md +98 -67
  294. package/package.json +1 -1
  295. package/skills/github/SKILL.md +21 -13
  296. package/src/bin/agent-serve.ts +22 -0
  297. package/src/channels/github/github-channel.ts +29 -19
  298. package/src/channels/slack/agentic-delivery.ts +2 -0
  299. package/src/channels/slack/dispatch.ts +126 -4
  300. package/src/channels/slack/placeholder.ts +51 -0
  301. package/src/channels/slack/slack-channel.ts +9 -2
  302. package/src/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
  303. package/src/extensions/improve/extension.ts +4 -2
  304. package/src/extensions/improve/skills/yourself.ts +1 -1
  305. package/src/filesystem.ts +168 -65
  306. package/src/index.ts +3 -0
  307. package/src/internal/cli-ax.ts +88 -15
  308. package/src/internal/continuation-identity.ts +1 -0
  309. package/src/internal/cursor-agent-template.ts +2 -0
  310. package/src/internal/filesystem/tools.ts +2 -0
  311. package/src/internal/filesystem/walk.ts +60 -15
  312. package/src/internal/hosted-admission-adapter.ts +3 -0
  313. package/src/internal/hosted-delivery-protocol.ts +78 -1
  314. package/src/internal/hosted-delivery.ts +8 -0
  315. package/src/internal/init-project.ts +4 -0
  316. package/src/internal/server.ts +104 -41
  317. package/src/internal/session-engine.ts +16 -4
  318. package/src/internal/skill-catalog.ts +69 -0
  319. package/src/types.ts +9 -0
  320. package/templates/thermo-quality-review/README.md +35 -0
  321. package/templates/thermo-quality-review/agent/agent.ts +8 -0
  322. package/templates/thermo-quality-review/agent/channels/github.ts +42 -0
  323. package/templates/thermo-quality-review/agent/instructions.md +43 -0
  324. package/templates/thermo-quality-review/agent/tools/post_findings.ts +70 -0
  325. package/templates/thermo-quality-review/evals/evals.config.ts +5 -0
  326. package/templates/thermo-quality-review/evals/review.eval.ts +62 -0
  327. package/templates/thermo-quality-review/package.json +18 -0
  328. package/templates/thermo-quality-review/tsconfig.json +12 -0
  329. package/templates/thermo-review/README.md +35 -0
  330. package/templates/thermo-review/agent/agent.ts +8 -0
  331. package/templates/thermo-review/agent/channels/github.ts +42 -0
  332. package/templates/thermo-review/agent/instructions.md +40 -0
  333. package/templates/thermo-review/agent/tools/post_findings.ts +70 -0
  334. package/templates/thermo-review/evals/evals.config.ts +5 -0
  335. package/templates/thermo-review/evals/review.eval.ts +53 -0
  336. package/templates/thermo-review/package.json +18 -0
  337. package/templates/thermo-review/tsconfig.json +12 -0
  338. package/dist/docs/assets/building-with-agents.md.CEGVXkmO.js +0 -13
  339. package/dist/docs/assets/building-with-agents.md.CEGVXkmO.lean.js +0 -1
  340. package/dist/docs/assets/chunks/@localSearchIndexroot.DtXk1hy-.js +0 -1
  341. package/dist/docs/assets/chunks/channel.Bkv1N-gK.js +0 -1
  342. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CZDco1o8.js +0 -1
  343. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CZDco1o8.js +0 -1
  344. package/dist/docs/assets/chunks/clone.YSt_40_s.js +0 -1
  345. package/dist/docs/assets/chunks/framework.dypDpWZ3.js +0 -19
  346. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.C4CLm481.js +0 -1
  347. package/dist/docs/assets/chunks/wardley-RL74JXVD.g5efOWmT.js +0 -162
  348. package/dist/docs/assets/deployment.md.Dm4Qo3hp.js +0 -51
  349. package/dist/docs/assets/deployment.md.Dm4Qo3hp.lean.js +0 -1
  350. package/dist/docs/assets/evals.md.BLDRt5LH.js +0 -211
  351. package/dist/docs/assets/evals.md.BLDRt5LH.lean.js +0 -1
  352. package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.js +0 -14
  353. package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.lean.js +0 -1
  354. package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.js +0 -10
  355. package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.lean.js +0 -1
  356. package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.js +0 -9
  357. package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.lean.js +0 -1
  358. package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.js +0 -12
  359. package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.lean.js +0 -1
  360. package/dist/docs/assets/guides_github.md.D6ER29dG.js +0 -64
  361. package/dist/docs/assets/guides_github.md.D6ER29dG.lean.js +0 -1
  362. package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.js +0 -14
  363. package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.lean.js +0 -1
  364. package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.js +0 -9
  365. package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.lean.js +0 -1
  366. package/dist/docs/assets/guides_improve.md.BKaDuKKK.js +0 -14
  367. package/dist/docs/assets/guides_improve.md.BKaDuKKK.lean.js +0 -1
  368. package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.js +0 -28
  369. package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.lean.js +0 -1
  370. package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.js +0 -26
  371. package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.lean.js +0 -1
  372. package/dist/docs/assets/guides_slack.md.DdT8rmsj.js +0 -46
  373. package/dist/docs/assets/guides_slack.md.DdT8rmsj.lean.js +0 -1
  374. package/dist/docs/assets/guides_webhooks.md.aQW10HRe.js +0 -225
  375. package/dist/docs/assets/guides_webhooks.md.aQW10HRe.lean.js +0 -1
  376. package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.js +0 -1
  377. package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.lean.js +0 -1
  378. package/dist/docs/assets/reference_extensions.md.wlFD3cUR.js +0 -62
  379. package/dist/docs/assets/reference_extensions.md.wlFD3cUR.lean.js +0 -1
  380. package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.js +0 -1
  381. package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.lean.js +0 -1
  382. package/dist/playground/assets/index-BLlKgZtI.css +0 -1
  383. package/dist/playground/assets/index-CDS5p9sR.js +0 -67
@@ -1,76 +1,31 @@
1
1
  ---
2
2
  title: "Deployment"
3
- description: "Deploy the Agent SDK with Cursor-managed hosting or on infrastructure you control."
3
+ description: "Deploy an Agent SDK project from Git with Cursor-managed hosting, or run one secure process on your own infrastructure."
4
4
  ---
5
5
 
6
6
  # Deploy the Agent SDK
7
7
 
8
- Both options run the same agent project and HTTP API. Channel delivery
9
- paths differ. Cursor-managed hosting is preferred for most agents.
8
+ Deployment turns a pushed Agent SDK project into a stable service.
9
+ Cursor-managed hosting builds the selected Git ref and operates the
10
+ runtime; self-hosting gives you control of the network, process, and
11
+ filesystem.
12
+
13
+ ## Choose managed hosting or self-hosting
10
14
 
11
15
  | Option | Use it when | You manage |
12
16
  | --- | --- | --- |
13
- | Cursor-managed hosting (preferred) | You want the shortest path from a Git repo to a running agent | Agent code, external storage, declared egress, and deployment secrets |
14
- | Self-hosting | You need your own network, proxy, persistent filesystem, or process controls | Agent code, Node process, TLS, auth, secrets, durable state, monitoring, and upgrades |
15
-
16
- ## Cursor-managed hosting
17
-
18
- Cursor builds the selected Git ref into a deployment. The deployment
19
- exposes a stable URL while Cursor manages its runtime lifecycle.
20
-
21
- ### Before you deploy
22
-
23
- - Confirm managed hosting is enabled for the account and team.
24
- - Sign in as a team member, or use a team service-account API key with agent access.
25
- - Add `@cursor/july` to the agent project.
26
-
27
- For a GitHub source, install the Cursor GitHub App on the repository
28
- owner and grant it access to the repository. Cursor builds through its
29
- repository integration, not your local Git credentials. Commit and push
30
- the Git ref before deploying it.
31
-
32
- ### Declare hosting needs
33
-
34
- If the agent needs extra egress or deployment secrets, add a `hosting`
35
- block to `agent/agent.ts`:
36
-
37
- ```ts
38
- import { defineAgent } from "@cursor/july";
39
-
40
- export default defineAgent({
41
- hosting: {
42
- egressDomains: ["api.weather.example.com"],
43
- secretNames: ["WEATHER_API_KEY"],
44
- },
45
- });
46
- ```
47
-
48
- `egressDomains` lists outbound hosts beyond the platform's base policy.
49
- Enter hostnames without schemes, ports, or paths. One leading `*.`
50
- wildcard is allowed. Declared domains allow HTTPS and TLS traffic, not
51
- arbitrary TCP ports.
17
+ | Cursor-managed hosting | You want the shortest path from Git to a running agent | Source, declared egress, secrets, and agent behavior |
18
+ | Self-hosting | You need your own network, proxy, filesystem, or process controls | The Node process, TLS, auth, secrets, state, monitoring, and upgrades |
52
19
 
53
- The base policy already covers the hosts the platform itself uses: the
54
- Cursor API (`api.cursor.com` and `api2.cursor.sh`), GitHub and GitLab,
55
- the npm and Yarn registries, Slack, and Cursor's own artifact storage.
56
- Declare a domain only for a host your own code reaches.
20
+ The rest of this guide starts with managed hosting. The
21
+ [self-host recipe](#self-host-securely) uses the same project and HTTP
22
+ API.
57
23
 
58
- `secretNames` lists the environment variables the agent expects. Names
59
- use `UPPER_SNAKE_CASE`. Commit names only; set their values after
60
- creating the deployment. Names beginning with `CURSOR_` are reserved.
24
+ ## Deploy from Git
61
25
 
62
- For `defineConnection({ url, oauth: true })`, declare
63
- `MCP_OAUTH_<CONNECTION>_*` in `secretNames`. Finish Connect for the
64
- current process. Run `agent-sdk mcp oauth <connection> --store` and
65
- redeploy so the next pod sees the secrets.
66
- See [Host MCP OAuth](./guides/mcp-oauth.md).
67
-
68
- Run `agent-sdk validate` before deploying. It reports invalid domains and
69
- secret names as warnings, so fix them even when validation exits zero.
70
-
71
- ### Deploy from Git
72
-
73
- Sign in, validate the project, and deploy it:
26
+ Commit and push the exact ref you want to run, then sign in, validate,
27
+ and deploy. The command waits until the engine is running and prints
28
+ the stable deployment URL.
74
29
 
75
30
  ```bash
76
31
  cd my-agent
@@ -80,9 +35,9 @@ agent-sdk validate
80
35
  agent-sdk deploy
81
36
  ```
82
37
 
83
- Inside a Git checkout, `deploy` infers the HTTPS `origin` URL, current
84
- branch or detached commit, agent path, and deployment slug. Explicit
85
- flags override each value:
38
+ `deploy` reads from Git; it does not upload your working tree. Inside a
39
+ checkout, it infers the HTTPS origin, current ref, agent path, and slug.
40
+ Pass them explicitly when the checkout is not the source you want:
86
41
 
87
42
  ```bash
88
43
  agent-sdk deploy \
@@ -92,362 +47,161 @@ agent-sdk deploy \
92
47
  --slug weather-agent
93
48
  ```
94
49
 
95
- > [!IMPORTANT]
96
- > `--slug` doesn't retain source or Cursor-event settings. Run every
97
- > repo-backed deploy from the pushed checkout, or pass `--repo`, `--ref`,
98
- > `--path`, and any `--cursor-events-repo` flags again.
50
+ The source repository must be available through the team's repository
51
+ integration, and a nested `--path` must contain an installable Agent SDK
52
+ project.
99
53
 
100
- Deploy reads the agent from Git; it doesn't upload local files. Keep the
101
- local `hosting` block in sync with the selected ref. A nested `--path`
102
- must contain `package.json` and be installable from its own directory.
54
+ ## Add egress and secrets
103
55
 
104
- For a directory containing several agent projects, choose one from the
105
- TTY prompt, pass `--slug <name>`, or deploy each child with `--all`.
106
- Pass `--team <id>` when the signed-in account has no default team or you
107
- want another team.
56
+ Declare the external hosts and secret names the agent needs. After the
57
+ deployment exists, set each value at the hidden prompt and follow the
58
+ CLI or dashboard instruction to redeploy.
108
59
 
109
- `--all` creates a separate deployment for each child. Self-host when the
110
- agents must share one multi-agent process. Cloud-runtime peers on that
111
- host need `--public-url` and `--bearer-token`. Walkthrough:
112
- [Agent-to-agent](./guides/agent-to-agent.md#how-do-i-wire-two-agents).
113
-
114
- The command waits up to ten minutes for a running engine. Use
115
- `--no-wait` to return after Cursor accepts the deployment, then inspect
116
- it separately:
60
+ ```ts
61
+ // agent/agent.ts
62
+ import { defineAgent } from "@cursor/july";
117
63
 
118
- ```bash
119
- agent-sdk deployments
120
- agent-sdk deployment weather-agent
121
- agent-sdk logs --prod --slug weather-agent
64
+ export default defineAgent({
65
+ hosting: {
66
+ egressDomains: ["api.weather.example.com"],
67
+ secretNames: ["WEATHER_API_KEY"],
68
+ },
69
+ });
122
70
  ```
123
71
 
124
- ### Set deployment secrets
125
-
126
- A deployment must exist before you can set its secrets. Pass names only.
127
- Enter values at the hidden prompt, or pipe one line per name:
128
-
129
72
  ```bash
130
73
  agent-sdk secrets set weather-agent WEATHER_API_KEY
131
74
  agent-sdk secrets list weather-agent
132
75
  agent-sdk deploy --dir . --slug weather-agent
133
76
  ```
134
77
 
135
- `secrets list` returns names and creation times, never values. The
136
- engine reads secret changes on its next deploy.
137
-
138
- Do not pass `NAME=VALUE` on the command line. That form lands in shell
139
- history and in agent-captured terminals. The CLI refuses it unless you
140
- add `--from-argv`. For non-interactive input without argv, redirect a
141
- file or pipe stdin.
142
-
143
- ### Credential output in terminals
78
+ Commit secret names, never values. `secrets set` accepts names and reads
79
+ values without echoing them; `secrets list` returns names and creation
80
+ times only. Do not pass `NAME=VALUE`, print a secret to verify it, or
81
+ put names beginning with reserved `CURSOR_` in `secretNames`.
144
82
 
145
- Treat any command that prints a secret as a credential event. Keep it
146
- out of agent-captured terminals when you can.
83
+ Enter egress hosts without schemes, ports, or paths. The
84
+ [Host MCP OAuth guide](./guides/mcp-oauth.md) owns the extra secret and
85
+ egress steps for OAuth-backed MCP servers.
147
86
 
148
- | Command | What prints |
149
- | --- | --- |
150
- | `secrets set` / `secrets list` | Names only. Values never print. |
151
- | First `deploy` / `rotate-token` | Full alias token once. Save it outside the agent transcript; it cannot be retrieved later. |
152
- | `deployment --json` | May include short-lived `engineAccess.headers`. Treat JSON as a credential. |
87
+ ## Use the hosted agent
153
88
 
154
- Do not verify secrets with `echo "$SECRET"`, `printenv`, or by pasting
155
- values into chat. Use `secrets list` for names, then redeploy and exercise
156
- the feature that needs the secret.
157
-
158
- ### Choose durable storage
159
-
160
- Hosted filesystem state can reset during a deploy or runtime
161
- replacement. Prefer
162
- `cursorHostedStorage` so records survive replace.
163
- Do not put platform storage or deployment-identity names in
164
- `hosting.secretNames`. Self-host with your own `defineStorage` backend or
165
- a persistent `--state-root` when the complete filesystem must survive.
166
-
167
- ### Use the hosted agent
168
-
169
- The CLI handles authentication for `--prod` commands. External HTTP
170
- clients that hit the stable alias URL must send `X-Agent-Alias-Token` on
171
- every request. Authored channel auth still runs after that gate.
172
-
173
- Use `publicEndpoint()` on a custom channel that verifies its own provider
174
- signature. Cursor then serves that channel path without the alias token.
175
- The built-in session API still requires the token.
176
-
177
- Use a relay or self-host when the channel cannot authenticate requests
178
- itself.
179
-
180
- Use `--prod` with the normal client commands:
89
+ The `--prod` commands authenticate through your Cursor credential and
90
+ connect to the deployment directly. Open the playground, run a turn,
91
+ then inspect the same session in logs.
181
92
 
182
93
  ```bash
183
94
  agent-sdk playground --prod --slug weather-agent
184
- agent-sdk chat --prod --slug weather-agent
185
- agent-sdk run --prod --slug weather-agent --message "Forecast for Paris"
186
- agent-sdk sessions --prod --slug weather-agent
95
+ agent-sdk run --prod --slug weather-agent \
96
+ --message "Forecast for Paris"
187
97
  agent-sdk logs --prod --slug weather-agent
98
+ agent-sdk deployment weather-agent
188
99
  ```
189
100
 
190
- Keep `playground --prod` running while the playground is open. Press
191
- Ctrl-C to stop it.
192
-
193
- The first deployment prints a reusable alias token once. Store it
194
- immediately. Run `agent-sdk deployment weather-agent` to retrieve the
195
- stable alias URL later. The token remains valid until rotation and can't
196
- be retrieved.
197
-
198
- External HTTP clients send the alias token on every request:
101
+ External HTTP clients use the stable alias URL and send the alias token
102
+ on every request:
199
103
 
200
104
  ```bash
201
105
  curl "$AGENT_ALIAS_URL/v1/health" \
202
106
  -H "X-Agent-Alias-Token: $AGENT_ALIAS_TOKEN"
203
107
  ```
204
108
 
205
- `--prod` commands don't use the alias token. If it is lost or exposed,
206
- rotate it. The old token stops working immediately:
109
+ The first deploy prints this token once. Store it outside terminal
110
+ transcripts; it cannot be retrieved later. If it is lost or exposed,
111
+ `agent-sdk rotate-token weather-agent` replaces it and invalidates the
112
+ old value.
207
113
 
208
- ```bash
209
- agent-sdk rotate-token weather-agent
210
- ```
114
+ `deployment --json` can include short-lived access headers, so treat
115
+ that output as a credential too.
211
116
 
212
- ### Connect GitHub
117
+ For a custom webhook whose provider cannot send the alias token, use
118
+ `publicEndpoint()` only when the channel verifies the provider
119
+ signature. That opens the custom channel path, not the built-in session
120
+ or tool APIs. See [Webhooks](./guides/webhooks.md).
213
121
 
214
- Let the hosted engine pull Cursor SCM events. Repeat
215
- `--cursor-events-repo` for each repository whose events should wake the
216
- agent:
122
+ ## Update the deployment
217
123
 
218
- ```bash
219
- agent-sdk deploy --dir . \
220
- --slug pr-approver \
221
- --cursor-events-repo acme/checkout \
222
- --cursor-events-repo acme/payments
223
- ```
224
-
225
- The agent still needs a `githubChannel()` declaration for the events it
226
- handles. This delivery path needs no public GitHub webhook URL. The
227
- flag requires Cursor SCM-event access for the deployment credential.
228
-
229
- For outbound GitHub calls, use `githubChannel({ cursorAccount: true })`
230
- and grant the team's Cursor GitHub App access to each repository.
231
- Alternatively, add dedicated GitHub credentials as deployment secrets.
232
- See the [GitHub guide](./guides/github.md).
233
-
234
- ### Connect Slack
235
-
236
- Hosted Slack uses a dedicated Socket Mode app:
237
-
238
- ```ts
239
- import { slackChannel } from "@cursor/july/channels/slack";
240
-
241
- export default slackChannel({ envPrefix: "PR_APPROVER" });
242
- ```
243
-
244
- Provision the dedicated app from the dashboard. Open the deployment
245
- under **Deployed Agents** at
246
- [cursor.com/dashboard](https://cursor.com/dashboard), switch to
247
- **Details**, and expand **Slack** under **Integrations**. **Add to
248
- Slack** connects the workspace with a one-time authorization, and
249
- **Create Slack app** creates and installs the app, then stores its
250
- tokens as deployment secrets automatically. Redeploy when prompted so
251
- the running agent picks them up. See
252
- [Provision from the dashboard](./guides/slack.md#provision-from-the-dashboard)
253
- for the walkthrough, including workspace-admin approval.
254
-
255
- If you created the Slack app by hand instead, set its tokens as
256
- deployment secrets yourself. The prefix selects the secret names:
257
-
258
- ```bash
259
- agent-sdk secrets set pr-approver \
260
- PR_APPROVER_SLACK_BOT_TOKEN \
261
- PR_APPROVER_SLACK_APP_TOKEN
262
- agent-sdk deploy --dir . --slug pr-approver
263
- ```
264
-
265
- Without `envPrefix`, a dedicated app reads `SLACK_BOT_TOKEN` and
266
- `SLACK_APP_TOKEN`. Socket Mode needs no inbound URL. See the
267
- [Slack guide](./guides/slack.md).
268
-
269
- ### Update, stop, or delete a deployment
270
-
271
- Redeploy the same slug after pushing a new Git ref. The stable alias
272
- continues to point at the latest deploy. Follow the same source rules
273
- from [Deploy from Git](#deploy-from-git).
124
+ Push the new ref and deploy the same slug. The stable URL remains while
125
+ the new generation replaces the previous one.
274
126
 
275
127
  ```bash
276
- agent-sdk deploy --dir /path/to/my-agent --slug weather-agent
277
- agent-sdk stop weather-agent
278
- agent-sdk delete weather-agent
128
+ agent-sdk deploy --dir . --slug weather-agent
279
129
  ```
280
130
 
281
- `stop` waits for the deployment to stop unless you pass `--no-wait`.
282
- `delete` removes the deployment and waits until it is gone.
283
- See the [CLI reference](./reference/cli.md#deploy) for the full command
284
- reference.
285
-
286
- ## Self-host the Agent SDK
287
-
288
- The Agent SDK runs as a Node HTTP server on Node 22.13 or newer. You can host
289
- it on a VM or container platform.
131
+ A redeploy replaces its source, Cursor-event repository list, and any
132
+ egress domains supplied through CLI flags. Repass
133
+ `--cursor-events-repo` and other CLI-only settings each time. Keep
134
+ source-controlled egress in the `hosting` block when possible.
290
135
 
291
- ### The security model in one minute
136
+ Use `agent-sdk deployment weather-agent` and
137
+ `agent-sdk logs --prod --slug weather-agent` to inspect a rollout.
138
+ The [CLI reference](./reference/cli.md#deploy) owns `--no-wait`,
139
+ multi-agent deployment, stop, and delete behavior.
292
140
 
293
- `serve` binds to loopback and admits direct local callers by default.
294
- Choose one of these options before exposing it:
295
-
296
- 1. Pass `--bearer-token <secret>` for a shared host.
297
- 2. Define channel-specific auth for routes with their own credentials or
298
- signatures.
299
- 3. Use `--allow-anonymous` only behind an authenticating proxy.
300
-
301
- A static bearer token maps every holder to one principal. Use authored
302
- auth when callers need separate identities. See
303
- [Channels](./reference/channels.md#auth-policies) for policy details.
304
-
305
- ### Credentials
306
-
307
- A self-hosted server can read these credentials.
308
-
309
- | Credential | Used for | Provide it as |
310
- | --- | --- | --- |
311
- | Cursor API key | model turns, cloud runtime, Cursor account MCP connections | `agent-sdk login` (stores a revocable key), `CURSOR_API_KEY`, `CURSOR_SERVICE_ACCOUNT_KEY`, or `--api-key` / `serve({ apiKey })` |
312
- | Slack tokens | Slack channels | `<PREFIX>_SLACK_BOT_TOKEN` + `<PREFIX>_SLACK_APP_TOKEN` per agent |
313
- | GitHub webhook secret | delivery signature verification | `GITHUB_WEBHOOK_SECRET`, same value on server and signer |
314
- | GitHub API | outbound API calls | a GitHub App (`GITHUB_APP_ID` + `GITHUB_APP_PRIVATE_KEY` + installation id) or `GITHUB_TOKEN` / `gh auth login` |
315
- | MCP connection tokens | authored MCP connections | env vars your `mcp-connections/*.ts` read, or host OAuth secrets from hosted Connect / `agent-sdk mcp oauth <name> --store` (`MCP_OAUTH_*`; see [Host MCP OAuth](./guides/mcp-oauth.md)) |
141
+ ## Keep state across replacements
316
142
 
317
- Use a dedicated Cursor key per host. `agent-sdk whoami` shows the active
318
- credential. `logout` removes the stored key from the host; revoke the key
319
- in the Cursor dashboard to invalidate it. See
320
- [CLI authentication](./reference/cli.md#login-logout-whoami) for
321
- credential resolution.
143
+ Managed hosting persists framework-owned session, KV, and file state
144
+ across normal runtime replacements. Files written elsewhere on the
145
+ engine's local filesystem are disposable; use `ctx.host.kv` or
146
+ `ctx.host.files` for durable application state.
322
147
 
323
- ### State
148
+ Parked approvals and in-memory reminder handlers do not survive a
149
+ restart. Run the turn again or recreate the reminder after a
150
+ replacement.
324
151
 
325
- Place `--state-root` on a persistent volume outside the agent
326
- repository, and back it up. Sessions survive restarts only when their
327
- state does. See [Sessions](./reference/sessions.md) for persistence
328
- and layout details.
152
+ ## Self-host securely
329
153
 
330
- ### A single box
331
-
332
- A single-host deployment needs one supervised `serve` process on a
333
- private network. Export the Cursor key and a generated bearer token in
334
- the supervisor environment:
154
+ Run Agent SDK under Node 22.13 or newer, never Bun. One supervised
155
+ process can serve every agent under a directory while a persistent
156
+ state root keeps sessions across restarts.
335
157
 
336
158
  ```bash
337
159
  export CURSOR_API_KEY="<cursor-api-key>"
338
160
  export AGENT_SDK_BEARER_TOKEN="$(openssl rand -hex 32)"
339
161
 
340
- # the server: all agents under one port
341
- agent-sdk serve --dir /srv/agents --port 3000 --host 127.0.0.1 \
162
+ agent-sdk serve \
163
+ --dir /srv/agents \
164
+ --host 127.0.0.1 \
165
+ --port 3000 \
342
166
  --state-root /var/lib/agent-sdk \
343
167
  --bearer-token "$AGENT_SDK_BEARER_TOKEN"
344
168
  ```
345
169
 
346
- Slack Socket Mode needs no inbound network. For GitHub, prefer
347
- `--cursor-events --repo owner/repo` on `serve` so the host pulls events
348
- through Cursor without a public webhook URL.
170
+ Before exposing the host:
349
171
 
350
- Webhook forwarding is the fallback. It needs one additional process.
351
- Before starting or restarting `serve`, export the same strong
352
- `GITHUB_WEBHOOK_SECRET` in both supervisor environments. Then install
353
- the extension, authenticate `gh`, and start the forwarder. Repository
354
- forwarding requires repo-admin access; organization forwarding with
355
- `--org` requires org-owner access.
172
+ - Put TLS or an authenticating proxy in front of the loopback server.
356
173
 
357
- ```bash
358
- export GITHUB_WEBHOOK_SECRET="$(openssl rand -hex 32)"
359
- agent-sdk github doctor --install
360
- gh auth login
174
+ - Keep `--bearer-token` on shared hosts. Use `--allow-anonymous` only
175
+ behind a proxy that authenticates every caller.
361
176
 
362
- # GitHub agents only: ONE forwarder relaying live deliveries to loopback
363
- GITHUB_TOKEN= GH_TOKEN= \
364
- agent-sdk github forward --dir /srv/agents --repo owner/repo
365
- ```
177
+ - Mount `--state-root` on a persistent volume outside the agent
178
+ repository and back it up.
366
179
 
367
- Run long-lived processes under a supervisor. systemd survives reboots;
368
- tmux survives only SSH disconnects. On a TTY, press Enter to reload
369
- agent code. Humans reach the playground through a private network or
370
- tunnel. Keep `--bearer-token` on because tunneled requests arrive from
371
- loopback and IP-based policies can't tell them apart.
180
+ - Inject credentials at startup instead of baking them into an image.
372
181
 
373
- Health checks: `GET /v1/health` at the host level, and each agent also
374
- serves `/<slug>/v1/health`.
182
+ - Run the process under a supervisor and enable schedules on exactly
183
+ one serving process per project.
375
184
 
376
- ### Containers
185
+ Containers use the same command with `--host 0.0.0.0`, a mounted state
186
+ volume, and an authenticating network boundary. The
187
+ [Channels reference](./reference/channels.md#auth-policies) covers
188
+ per-caller and channel-specific auth.
377
189
 
378
- Build the image with Node 22.13 or newer, the agent source, and its
379
- package dependencies. Run `agent-sdk serve` as a non-root user:
190
+ ## Observability
380
191
 
381
- ```bash
382
- agent-sdk serve --dir /srv/agents --mode multi \
383
- --host 0.0.0.0 --port 3000 \
384
- --state-root /var/lib/agent-sdk \
385
- --bearer-token "$AGENT_SDK_BEARER_TOKEN"
386
- ```
387
-
388
- Mount the state root as a persistent volume and inject secrets at
389
- startup. Install `git` and `gh` when channels need host-side GitHub work.
390
- Don't put secrets in the image.
391
-
392
- ### Serve many agents from one process
393
-
394
- Point `serve` at a folder of agent projects and every child mounts under
395
- its directory name on one port. One process, one state root, one
396
- credential:
397
-
398
- ```bash
399
- agent-sdk serve --dir /srv/agents
400
- # index at /, each agent at /<slug>/v1/*, /<slug>/playground
401
- ```
402
-
403
- Only mount what you mean to run. Every mounted agent's channels are live,
404
- and webhook-driven agents spend model budget on every wake. `--mode
405
- single` serves exactly one agent at the unslugged `/v1/*` when the agent
406
- is the whole host. See the [HTTP API](./reference/http-api.md) for route
407
- layout and the [Slack guide](./guides/slack.md) for multi-agent token
408
- setup.
409
-
410
- ### The production flags
411
-
412
- Use these settings in production:
413
-
414
- | Flag | In production |
415
- | --- | --- |
416
- | `--dev` | Leave off. Dev mode admits unsigned loopback GitHub deliveries, widens playground session listing on loopback, and never auto-fires schedules. |
417
- | `--bearer-token` | Set on shared hosts unless an authenticating proxy is the trust boundary and you use `--allow-anonymous` instead. |
418
- | `--allow-anonymous` | Use only behind an authenticating network boundary. It also widens playground session access so Slack and webhook sessions appear. |
419
- | `--state-root` | Place on a persistent volume outside any repo. |
420
- | `--public-url` | Set when cloud-runtime turns must call back into peers on this host. |
421
- | `--no-playground` | Set when no human needs the UI. |
422
- | `--no-docs` | Set to remove the documentation site at `/docs`. |
423
- | `--no-schedules` | Set on secondary hosts so schedules run exactly once. |
424
-
425
- Schedules fire on their cron cadence (UTC) in production mode. They have
426
- no cross-host coordination, so enable them on exactly one serving process
427
- per project.
428
-
429
- ### Restarts and upgrades
430
-
431
- Restarts preserve sessions, event streams, and SDK conversation state
432
- under the state root. Parked approvals and in-memory reminders don't
433
- survive a restart; re-run or recreate them afterward.
434
-
435
- ### Observability
436
-
437
- Use [`agent-sdk logs`](./reference/cli.md#logs) for runtime output,
438
- [OpenTelemetry](./guides/opentelemetry.md) for OTLP traces and metrics,
439
- [hooks](./reference/hooks.md) for in-process subscribers, and
192
+ Use `agent-sdk logs --prod` for runtime output,
193
+ [OpenTelemetry](./guides/opentelemetry.md) for traces and metrics, and
440
194
  [session traces](./reference/sessions.md#how-do-i-inspect-a-saved-event-stream)
441
- for incident review.
442
-
443
- ## What's next
444
-
445
- Continue with these pages:
446
-
447
- - [CLI reference](./reference/cli.md#deploy): deploy, inspect, stop, and
448
- rotate hosted agents
449
- - [Channels](./reference/channels.md#auth-policies): the auth policies
450
- in detail
451
- - [GitHub guide](./guides/github.md): delivery paths without a public URL
452
- - [Troubleshooting](./troubleshooting.md): the symptom table for when a
453
- deploy misbehaves
195
+ for one conversation.
196
+
197
+ ## Related
198
+
199
+ - [CLI reference](./reference/cli.md#deploy): inspect, update, stop,
200
+ delete, and rotate deployments
201
+ - [GitHub](./guides/github.md): Cursor-event repositories and direct
202
+ webhook delivery
203
+ - [Slack](./guides/slack.md): provision a dedicated hosted Slack app
204
+ - [Host MCP OAuth](./guides/mcp-oauth.md): persist OAuth credentials
205
+ across hosted replacements
206
+ - [Troubleshooting](./troubleshooting.md): diagnose failed or stale
207
+ deployments