@cursor/july 0.1.107 → 0.1.109

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 (523) hide show
  1. package/AGENTS.md +2 -6
  2. package/README.md +13 -11
  3. package/dist/bin/agent-serve.js +30 -8
  4. package/dist/channels/bitbucket/api.d.ts +41 -0
  5. package/dist/channels/bitbucket/api.d.ts.map +1 -1
  6. package/dist/channels/bitbucket/api.js +260 -0
  7. package/dist/channels/bitbucket/binding.d.ts +4 -0
  8. package/dist/channels/bitbucket/binding.d.ts.map +1 -1
  9. package/dist/channels/bitbucket/binding.js +16 -0
  10. package/dist/channels/bitbucket/index.d.ts +1 -1
  11. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  12. package/dist/channels/bitbucket/index.js +1 -1
  13. package/dist/channels/github/github-channel.js +8 -5
  14. package/dist/channels/github/types.d.ts +5 -1
  15. package/dist/channels/github/types.d.ts.map +1 -1
  16. package/dist/channels/gitlab/api.d.ts +27 -0
  17. package/dist/channels/gitlab/api.d.ts.map +1 -1
  18. package/dist/channels/gitlab/api.js +88 -0
  19. package/dist/channels/gitlab/binding.d.ts +5 -0
  20. package/dist/channels/gitlab/binding.d.ts.map +1 -1
  21. package/dist/channels/gitlab/binding.js +10 -0
  22. package/dist/channels/gitlab/index.d.ts +1 -1
  23. package/dist/channels/gitlab/index.d.ts.map +1 -1
  24. package/dist/channels/gitlab/index.js +1 -1
  25. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  26. package/dist/channels/origin/origin-channel.js +27 -13
  27. package/dist/channels/origin/types.d.ts +5 -1
  28. package/dist/channels/origin/types.d.ts.map +1 -1
  29. package/dist/channels/slack/dispatch.d.ts +10 -0
  30. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  31. package/dist/channels/slack/dispatch.js +20 -3
  32. package/dist/channels/slack/slack-channel.d.ts +12 -5
  33. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  34. package/dist/channels/slack/slack-channel.js +59 -8
  35. package/dist/channels.d.ts +45 -0
  36. package/dist/channels.d.ts.map +1 -1
  37. package/dist/channels.js +106 -7
  38. package/dist/connections.d.ts +2 -1
  39. package/dist/connections.d.ts.map +1 -1
  40. package/dist/connections.js +2 -1
  41. package/dist/docs/404.html +2 -2
  42. package/dist/docs/assets/{app.CtuckIiL.js → app.Cr-wVbnB.js} +1 -1
  43. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.js → building-with-agents.md.D0KbSkJn.js} +2 -2
  44. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.lean.js → building-with-agents.md.D0KbSkJn.lean.js} +1 -1
  45. package/dist/docs/assets/chunks/@localSearchIndexroot.CFVQ4S17.js +1 -0
  46. package/dist/docs/assets/chunks/{VPLocalSearchBox.Bkkhnu8K.js → VPLocalSearchBox.CVQERt56.js} +1 -1
  47. package/dist/docs/assets/chunks/{theme.DhpIe0Pa.js → theme.Dnsd3XOn.js} +2 -2
  48. package/dist/docs/assets/concepts.md.B4o63Gul.js +1 -0
  49. package/dist/docs/assets/{deployment.md.MFPKqsqI.js → deployment.md.JenwuCCB.js} +4 -4
  50. package/dist/docs/assets/{deployment.md.MFPKqsqI.lean.js → deployment.md.JenwuCCB.lean.js} +1 -1
  51. package/dist/docs/assets/evals.md.C7JLjoEP.js +211 -0
  52. package/dist/docs/assets/evals.md.C7JLjoEP.lean.js +1 -0
  53. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.js +10 -0
  54. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.lean.js +1 -0
  55. package/dist/docs/assets/guides_cloud-agents.md.BsloyHdY.js +9 -0
  56. package/dist/docs/assets/{guides_cloud-agents.md.DS8RIjwx.lean.js → guides_cloud-agents.md.BsloyHdY.lean.js} +1 -1
  57. package/dist/docs/assets/{guides_github.md.c0gdGJ-D.js → guides_github.md.TZaTZlfz.js} +13 -3
  58. package/dist/docs/assets/{guides_github.md.c0gdGJ-D.lean.js → guides_github.md.TZaTZlfz.lean.js} +1 -1
  59. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.js +14 -0
  60. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.lean.js +1 -0
  61. package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.js → guides_grokbot-agents.md.DyV-WArv.js} +1 -1
  62. package/dist/docs/assets/guides_improve.md.BGVk32bK.js +14 -0
  63. package/dist/docs/assets/guides_improve.md.BGVk32bK.lean.js +1 -0
  64. package/dist/docs/assets/{guides_slack.md.9oHPye9o.js → guides_slack.md.D4RVMM4G.js} +3 -3
  65. package/dist/docs/assets/{guides_slack.md.9oHPye9o.lean.js → guides_slack.md.D4RVMM4G.lean.js} +1 -1
  66. package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.js → guides_webhooks.md.CJK484ex.js} +2 -2
  67. package/dist/docs/assets/{hillclimbing.md.CpTGTCle.js → hillclimbing.md.BOiVo1tf.js} +1 -1
  68. package/dist/docs/assets/index.md.DD9Q2XuJ.js +5 -0
  69. package/dist/docs/assets/{index.md.BW_6tOgR.lean.js → index.md.DD9Q2XuJ.lean.js} +1 -1
  70. package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.js → reference_agent-config.md.CvoL6pof.js} +1 -1
  71. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.js → reference_channels.md.CAo-iK4j.js} +2 -2
  72. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.lean.js → reference_channels.md.CAo-iK4j.lean.js} +1 -1
  73. package/dist/docs/assets/{reference_cli.md.Dm67hd2D.js → reference_cli.md.Deg7849l.js} +7 -7
  74. package/dist/docs/assets/{reference_cli.md.Dm67hd2D.lean.js → reference_cli.md.Deg7849l.lean.js} +1 -1
  75. package/dist/docs/assets/{reference_connections.md.Di6jJAXF.js → reference_connections.md.BojkC6c5.js} +1 -1
  76. package/dist/docs/assets/{reference_extensions.md.CGmMLblt.js → reference_extensions.md.ZAVUyuEX.js} +3 -3
  77. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.js → reference_hooks.md.BlM_bOg6.js} +3 -3
  78. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.lean.js → reference_hooks.md.BlM_bOg6.lean.js} +1 -1
  79. package/dist/docs/assets/{reference_http-api.md.oySXBO8o.js → reference_http-api.md.BwaCo-VO.js} +1 -1
  80. package/dist/docs/assets/{reference_playground.md.4myJPxrf.js → reference_playground.md.DLnoaczX.js} +1 -1
  81. package/dist/docs/assets/{reference_playground.md.4myJPxrf.lean.js → reference_playground.md.DLnoaczX.lean.js} +1 -1
  82. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.js → reference_project-layout.md.BEU8MtQV.js} +3 -3
  83. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.lean.js → reference_project-layout.md.BEU8MtQV.lean.js} +1 -1
  84. package/dist/docs/assets/reference_sessions.md.CyXV1MUw.js +1 -0
  85. package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.js → scaffolding-agents.md.Kctn3OVb.js} +1 -1
  86. package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.js → skills_create-agent.md.Q3h6Je-e.js} +1 -1
  87. package/dist/docs/assets/{skills_debug.md.CDbPhHfg.js → skills_debug.md.CVjCXMFF.js} +1 -1
  88. package/dist/docs/assets/{skills_debug.md.CDbPhHfg.lean.js → skills_debug.md.CVjCXMFF.lean.js} +1 -1
  89. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.js +35 -0
  90. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.lean.js +1 -0
  91. package/dist/docs/assets/skills_evals.md.DFxYPErF.js +25 -0
  92. package/dist/docs/assets/skills_evals.md.DFxYPErF.lean.js +1 -0
  93. package/dist/docs/assets/skills_framework-map.md.BxLSOhSY.js +1 -0
  94. package/dist/docs/assets/{skills_framework-map.md.haibFyoB.lean.js → skills_framework-map.md.BxLSOhSY.lean.js} +1 -1
  95. package/dist/docs/assets/{skills_github.md.D0JahM8c.js → skills_github.md.hgFX_oKY.js} +1 -1
  96. package/dist/docs/assets/skills_index.md.DL7EHaQ-.js +1 -0
  97. package/dist/docs/assets/skills_index.md.DL7EHaQ-.lean.js +1 -0
  98. package/dist/docs/assets/{storage.md.BOHeqk2M.js → storage.md.BUrhJ-Zz.js} +4 -4
  99. package/dist/docs/assets/{storage.md.BOHeqk2M.lean.js → storage.md.BUrhJ-Zz.lean.js} +1 -1
  100. package/dist/docs/assets/troubleshooting.md.CYEAO9bM.js +1 -0
  101. package/dist/docs/building-with-agents.html +5 -5
  102. package/dist/docs/building-with-agents.md +3 -2
  103. package/dist/docs/concepts.html +5 -5
  104. package/dist/docs/concepts.md +2 -4
  105. package/dist/docs/deployment.html +7 -7
  106. package/dist/docs/deployment.md +7 -2
  107. package/dist/docs/evals.html +161 -35
  108. package/dist/docs/evals.md +612 -296
  109. package/dist/docs/guides/agent-to-agent.html +4 -4
  110. package/dist/docs/guides/bitbucket.html +36 -0
  111. package/dist/docs/guides/bitbucket.md +84 -0
  112. package/dist/docs/guides/cloud-agents.html +6 -6
  113. package/dist/docs/guides/cloud-agents.md +4 -3
  114. package/dist/docs/guides/convert-automation.html +4 -4
  115. package/dist/docs/guides/github.html +17 -7
  116. package/dist/docs/guides/github.md +33 -1
  117. package/dist/docs/guides/gitlab.html +40 -0
  118. package/dist/docs/guides/gitlab.md +92 -0
  119. package/dist/docs/guides/grokbot-agents.html +6 -6
  120. package/dist/docs/guides/grokbot-agents.md +2 -2
  121. package/dist/docs/guides/human-in-the-loop.html +4 -4
  122. package/dist/docs/guides/improve.html +40 -0
  123. package/dist/docs/guides/improve.md +91 -0
  124. package/dist/docs/guides/mcp-oauth.html +4 -4
  125. package/dist/docs/guides/opentelemetry.html +5 -5
  126. package/dist/docs/guides/slack.html +7 -7
  127. package/dist/docs/guides/slack.md +2 -1
  128. package/dist/docs/guides/webhooks.html +6 -6
  129. package/dist/docs/guides/webhooks.md +4 -2
  130. package/dist/docs/hashmap.json +1 -1
  131. package/dist/docs/hillclimbing.html +6 -6
  132. package/dist/docs/hillclimbing.md +2 -2
  133. package/dist/docs/index.html +6 -6
  134. package/dist/docs/index.md +14 -6
  135. package/dist/docs/llms-full.txt +1274 -814
  136. package/dist/docs/llms.txt +7 -5
  137. package/dist/docs/quickstart.html +4 -4
  138. package/dist/docs/reference/agent-config.html +6 -6
  139. package/dist/docs/reference/agent-config.md +5 -2
  140. package/dist/docs/reference/artifacts.html +4 -4
  141. package/dist/docs/reference/channels.html +6 -6
  142. package/dist/docs/reference/channels.md +16 -3
  143. package/dist/docs/reference/cli.html +11 -11
  144. package/dist/docs/reference/cli.md +24 -15
  145. package/dist/docs/reference/connections.html +6 -6
  146. package/dist/docs/reference/connections.md +2 -1
  147. package/dist/docs/reference/extensions.html +8 -8
  148. package/dist/docs/reference/extensions.md +2 -3
  149. package/dist/docs/reference/hooks.html +7 -7
  150. package/dist/docs/reference/hooks.md +9 -12
  151. package/dist/docs/reference/http-api.html +6 -6
  152. package/dist/docs/reference/http-api.md +2 -3
  153. package/dist/docs/reference/instructions.html +4 -4
  154. package/dist/docs/reference/playground.html +5 -5
  155. package/dist/docs/reference/playground.md +0 -4
  156. package/dist/docs/reference/project-layout.html +7 -7
  157. package/dist/docs/reference/project-layout.md +1 -8
  158. package/dist/docs/reference/prompt.html +4 -4
  159. package/dist/docs/reference/result.html +4 -4
  160. package/dist/docs/reference/schedules.html +4 -4
  161. package/dist/docs/reference/sessions.html +5 -5
  162. package/dist/docs/reference/sessions.md +1 -2
  163. package/dist/docs/reference/skills.html +4 -4
  164. package/dist/docs/reference/subagents.html +4 -4
  165. package/dist/docs/reference/tools.html +4 -4
  166. package/dist/docs/scaffolding-agents.html +5 -5
  167. package/dist/docs/scaffolding-agents.md +2 -1
  168. package/dist/docs/skills/create-agent.html +6 -6
  169. package/dist/docs/skills/create-agent.md +1 -1
  170. package/dist/docs/skills/debug.html +5 -5
  171. package/dist/docs/skills/debug.md +1 -1
  172. package/dist/docs/skills/deploy.html +61 -0
  173. package/dist/docs/skills/deploy.md +161 -0
  174. package/dist/docs/skills/evals.html +8 -8
  175. package/dist/docs/skills/evals.md +44 -6
  176. package/dist/docs/skills/framework-map.html +5 -5
  177. package/dist/docs/skills/framework-map.md +5 -4
  178. package/dist/docs/skills/github.html +6 -6
  179. package/dist/docs/skills/github.md +1 -1
  180. package/dist/docs/skills/hillclimb.html +4 -4
  181. package/dist/docs/skills/index.html +6 -6
  182. package/dist/docs/skills/index.md +1 -1
  183. package/dist/docs/skills/mcp-auth.html +4 -4
  184. package/dist/docs/skills/otel.html +4 -4
  185. package/dist/docs/skills/setup-slack.html +4 -4
  186. package/dist/docs/storage.html +8 -8
  187. package/dist/docs/storage.md +15 -24
  188. package/dist/docs/templates/agentic-owners.html +4 -4
  189. package/dist/docs/templates/agents-md.html +4 -4
  190. package/dist/docs/templates/code-wiki.html +4 -4
  191. package/dist/docs/templates/demo.html +4 -4
  192. package/dist/docs/templates/grokbot-agents.html +4 -4
  193. package/dist/docs/templates/pr-autofixer.html +4 -4
  194. package/dist/docs/templates/security-help.html +4 -4
  195. package/dist/docs/templates/security-reviewer.html +4 -4
  196. package/dist/docs/templates/triage.html +4 -4
  197. package/dist/docs/troubleshooting.html +5 -5
  198. package/dist/docs/troubleshooting.md +1 -1
  199. package/dist/extensions/improve/extension.d.ts +46 -0
  200. package/dist/extensions/improve/extension.d.ts.map +1 -0
  201. package/dist/extensions/improve/extension.js +41 -0
  202. package/dist/extensions/improve/skills/yourself.d.ts +4 -0
  203. package/dist/extensions/improve/skills/yourself.d.ts.map +1 -0
  204. package/dist/extensions/improve/skills/yourself.js +43 -0
  205. package/dist/extensions.d.ts +2 -3
  206. package/dist/extensions.d.ts.map +1 -1
  207. package/dist/extensions.js +2 -5
  208. package/dist/index.d.ts +2 -3
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/index.js +1 -2
  211. package/dist/internal/authored-alias-hooks.d.ts +5 -0
  212. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  213. package/dist/internal/authored-alias-hooks.js +17 -0
  214. package/dist/internal/authored-loaders.d.ts +4 -0
  215. package/dist/internal/authored-loaders.d.ts.map +1 -1
  216. package/dist/internal/authored-loaders.js +21 -2
  217. package/dist/internal/builtin-tools/artifacts.d.ts.map +1 -1
  218. package/dist/internal/builtin-tools/artifacts.js +2 -3
  219. package/dist/internal/channel-route-dispatch.d.ts +13 -0
  220. package/dist/internal/channel-route-dispatch.d.ts.map +1 -0
  221. package/dist/internal/channel-route-dispatch.js +62 -0
  222. package/dist/internal/channel-state.d.ts +17 -0
  223. package/dist/internal/channel-state.d.ts.map +1 -0
  224. package/dist/internal/channel-state.js +78 -0
  225. package/dist/internal/cli-ax.d.ts +8 -2
  226. package/dist/internal/cli-ax.d.ts.map +1 -1
  227. package/dist/internal/cli-ax.js +100 -3
  228. package/dist/internal/cli-cursor.d.ts.map +1 -1
  229. package/dist/internal/cli-cursor.js +2 -0
  230. package/dist/internal/cli-deploy.d.ts.map +1 -1
  231. package/dist/internal/cli-deploy.js +38 -14
  232. package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
  233. package/dist/internal/cli-mcp-oauth.js +15 -0
  234. package/dist/internal/cli-mcp.d.ts.map +1 -1
  235. package/dist/internal/cli-mcp.js +12 -0
  236. package/dist/internal/cli-slack.d.ts.map +1 -1
  237. package/dist/internal/cli-slack.js +8 -2
  238. package/dist/internal/continuation-channel.d.ts.map +1 -1
  239. package/dist/internal/continuation-channel.js +2 -2
  240. package/dist/internal/continuation-identity.js +8 -3
  241. package/dist/internal/cursor/credentials.d.ts +8 -2
  242. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  243. package/dist/internal/cursor/credentials.js +27 -5
  244. package/dist/internal/deploy-client.d.ts +27 -0
  245. package/dist/internal/deploy-client.d.ts.map +1 -1
  246. package/dist/internal/deploy-client.js +32 -0
  247. package/dist/internal/deploy-manifest.d.ts +23 -0
  248. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  249. package/dist/internal/deploy-manifest.js +84 -1
  250. package/dist/internal/describe-error.d.ts +1 -0
  251. package/dist/internal/describe-error.d.ts.map +1 -1
  252. package/dist/internal/describe-error.js +25 -0
  253. package/dist/internal/discovery/agent.d.ts +1 -1
  254. package/dist/internal/discovery/agent.d.ts.map +1 -1
  255. package/dist/internal/discovery/agent.js +0 -5
  256. package/dist/internal/discovery/extension-overlay.d.ts +1 -2
  257. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -1
  258. package/dist/internal/discovery/extension-overlay.js +0 -14
  259. package/dist/internal/discovery/extensions.d.ts +1 -2
  260. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  261. package/dist/internal/discovery/extensions.js +4 -22
  262. package/dist/internal/discovery/info.d.ts.map +1 -1
  263. package/dist/internal/discovery/info.js +42 -24
  264. package/dist/internal/discovery/modules.js +0 -1
  265. package/dist/internal/discovery/project.d.ts.map +1 -1
  266. package/dist/internal/discovery/project.js +0 -16
  267. package/dist/internal/eval-runner.js +0 -1
  268. package/dist/internal/framework-file-storage.d.ts +4 -5
  269. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  270. package/dist/internal/framework-file-storage.js +4 -5
  271. package/dist/internal/framework-storage-selection.d.ts +2 -2
  272. package/dist/internal/framework-storage-selection.js +2 -2
  273. package/dist/internal/guest-network.d.ts +4 -10
  274. package/dist/internal/guest-network.d.ts.map +1 -1
  275. package/dist/internal/guest-network.js +42 -26
  276. package/dist/internal/hosted-admission-adapter.d.ts +2 -0
  277. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  278. package/dist/internal/hosted-catch-protocol.d.ts +51 -0
  279. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -0
  280. package/dist/internal/hosted-catch-protocol.js +103 -0
  281. package/dist/internal/hosted-catch.d.ts +40 -0
  282. package/dist/internal/hosted-catch.d.ts.map +1 -0
  283. package/dist/internal/hosted-catch.js +149 -0
  284. package/dist/internal/hosted-delivery-protocol.d.ts +41 -0
  285. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  286. package/dist/internal/hosted-delivery-protocol.js +249 -0
  287. package/dist/internal/hosted-delivery.d.ts +10 -1
  288. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  289. package/dist/internal/hosted-delivery.js +100 -22
  290. package/dist/internal/hosted-execution-diag.d.ts +4 -1
  291. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  292. package/dist/internal/hosted-execution-diag.js +13 -4
  293. package/dist/internal/hosted-execution-flush.d.ts +3 -0
  294. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  295. package/dist/internal/hosted-execution-flush.js +2 -4
  296. package/dist/internal/http-control-plane-session.d.ts +30 -0
  297. package/dist/internal/http-control-plane-session.d.ts.map +1 -0
  298. package/dist/internal/http-control-plane-session.js +83 -0
  299. package/dist/internal/init-scaffold.d.ts.map +1 -1
  300. package/dist/internal/init-scaffold.js +1 -2
  301. package/dist/internal/install-cursor-skills.d.ts +5 -2
  302. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  303. package/dist/internal/install-cursor-skills.js +25 -5
  304. package/dist/internal/legacy-command-guard.d.ts +22 -0
  305. package/dist/internal/legacy-command-guard.d.ts.map +1 -0
  306. package/dist/internal/legacy-command-guard.js +51 -0
  307. package/dist/internal/platform-timers.d.ts +7 -0
  308. package/dist/internal/platform-timers.d.ts.map +1 -1
  309. package/dist/internal/platform-timers.js +139 -0
  310. package/dist/internal/reminder-control-plane-protocol.d.ts +2 -0
  311. package/dist/internal/reminder-control-plane-protocol.d.ts.map +1 -1
  312. package/dist/internal/reminder-control-plane-protocol.js +9 -2
  313. package/dist/internal/reminder-runner.d.ts +8 -0
  314. package/dist/internal/reminder-runner.d.ts.map +1 -1
  315. package/dist/internal/reminder-runner.js +36 -9
  316. package/dist/internal/resolve-prod-target.d.ts +2 -0
  317. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  318. package/dist/internal/resolve-prod-target.js +13 -0
  319. package/dist/internal/run-client.d.ts +1 -1
  320. package/dist/internal/sdk-runner.d.ts.map +1 -1
  321. package/dist/internal/sdk-runner.js +5 -4
  322. package/dist/internal/server.d.ts.map +1 -1
  323. package/dist/internal/server.js +57 -70
  324. package/dist/internal/session-engine.d.ts +7 -41
  325. package/dist/internal/session-engine.d.ts.map +1 -1
  326. package/dist/internal/session-engine.js +110 -227
  327. package/dist/internal/storage-coordinator.d.ts +5 -19
  328. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  329. package/dist/internal/storage-coordinator.js +3 -62
  330. package/dist/internal/storage-roles.d.ts +4 -9
  331. package/dist/internal/storage-roles.d.ts.map +1 -1
  332. package/dist/internal/storage-roles.js +2 -2
  333. package/dist/playground/assets/index-Bhxzrcf6.css +1 -0
  334. package/dist/playground/assets/index-CqLX5uF3.js +67 -0
  335. package/dist/playground/index.html +2 -2
  336. package/dist/storage-backends/cursor-hosted-v2.d.ts +4 -5
  337. package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
  338. package/dist/storage-backends/cursor-hosted-v2.js +4 -5
  339. package/dist/storage-backends/cursor-hosted.d.ts +7 -2
  340. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  341. package/dist/storage-backends/cursor-hosted.js +29 -31
  342. package/dist/storage-backends/file-kv.d.ts +9 -12
  343. package/dist/storage-backends/file-kv.d.ts.map +1 -1
  344. package/dist/storage-backends/file-kv.js +11 -47
  345. package/dist/storage-protocol.d.ts +3 -11
  346. package/dist/storage-protocol.d.ts.map +1 -1
  347. package/dist/storage-protocol.js +3 -11
  348. package/dist/storage.d.ts +8 -36
  349. package/dist/storage.d.ts.map +1 -1
  350. package/dist/storage.js +8 -44
  351. package/dist/types.d.ts +53 -62
  352. package/dist/types.d.ts.map +1 -1
  353. package/docs/README.md +14 -6
  354. package/docs/building-with-agents.md +3 -2
  355. package/docs/concepts.md +2 -4
  356. package/docs/deployment.md +7 -2
  357. package/docs/evals.md +613 -297
  358. package/docs/guides/bitbucket.md +89 -0
  359. package/docs/guides/cloud-agents.md +4 -3
  360. package/docs/guides/github.md +33 -1
  361. package/docs/guides/gitlab.md +97 -0
  362. package/docs/guides/grokbot-agents.md +2 -2
  363. package/docs/guides/improve.md +96 -0
  364. package/docs/guides/slack.md +2 -1
  365. package/docs/guides/webhooks.md +4 -2
  366. package/docs/hillclimbing.md +2 -2
  367. package/docs/reference/agent-config.md +5 -2
  368. package/docs/reference/channels.md +16 -3
  369. package/docs/reference/cli.md +24 -15
  370. package/docs/reference/connections.md +2 -1
  371. package/docs/reference/extensions.md +2 -3
  372. package/docs/reference/hooks.md +9 -12
  373. package/docs/reference/http-api.md +2 -3
  374. package/docs/reference/playground.md +0 -4
  375. package/docs/reference/project-layout.md +1 -8
  376. package/docs/reference/sessions.md +1 -2
  377. package/docs/scaffolding-agents.md +2 -1
  378. package/docs/skills/index.md +2 -2
  379. package/docs/storage.md +15 -24
  380. package/docs/troubleshooting.md +1 -1
  381. package/package.json +8 -7
  382. package/skills/create-agent/SKILL.md +1 -1
  383. package/skills/debug/SKILL.md +1 -1
  384. package/skills/deploy/SKILL.md +169 -0
  385. package/skills/evals/SKILL.md +45 -8
  386. package/skills/framework-map/SKILL.md +5 -4
  387. package/skills/github/SKILL.md +1 -1
  388. package/src/bin/agent-serve.ts +27 -2
  389. package/src/channels/bitbucket/api.ts +341 -0
  390. package/src/channels/bitbucket/binding.ts +25 -0
  391. package/src/channels/bitbucket/index.ts +2 -0
  392. package/src/channels/github/github-channel.ts +8 -8
  393. package/src/channels/github/types.ts +5 -0
  394. package/src/channels/gitlab/api.ts +123 -0
  395. package/src/channels/gitlab/binding.ts +12 -0
  396. package/src/channels/gitlab/index.ts +1 -0
  397. package/src/channels/origin/origin-channel.ts +29 -13
  398. package/src/channels/origin/types.ts +5 -0
  399. package/src/channels/slack/dispatch.ts +30 -0
  400. package/src/channels/slack/slack-channel.ts +69 -7
  401. package/src/channels.ts +157 -10
  402. package/src/connections.ts +2 -1
  403. package/src/extensions/improve/extension.ts +70 -0
  404. package/src/extensions/improve/skills/yourself.ts +50 -0
  405. package/src/extensions.ts +2 -6
  406. package/src/index.ts +0 -3
  407. package/src/internal/authored-alias-hooks.ts +32 -0
  408. package/src/internal/authored-loaders.ts +26 -2
  409. package/src/internal/builtin-tools/artifacts.ts +2 -3
  410. package/src/internal/channel-route-dispatch.ts +66 -0
  411. package/src/internal/channel-state.ts +96 -0
  412. package/src/internal/cli-ax.ts +111 -3
  413. package/src/internal/cli-cursor.ts +4 -1
  414. package/src/internal/cli-deploy.ts +50 -10
  415. package/src/internal/cli-mcp-oauth.ts +18 -0
  416. package/src/internal/cli-mcp.ts +11 -0
  417. package/src/internal/cli-slack.ts +15 -2
  418. package/src/internal/continuation-channel.ts +2 -1
  419. package/src/internal/continuation-identity.ts +10 -2
  420. package/src/internal/cursor/credentials.ts +35 -7
  421. package/src/internal/deploy-client.ts +54 -0
  422. package/src/internal/deploy-manifest.ts +115 -1
  423. package/src/internal/describe-error.ts +28 -0
  424. package/src/internal/discovery/agent.ts +1 -7
  425. package/src/internal/discovery/extension-overlay.ts +0 -18
  426. package/src/internal/discovery/extensions.ts +2 -26
  427. package/src/internal/discovery/info.ts +3 -13
  428. package/src/internal/discovery/modules.ts +0 -1
  429. package/src/internal/discovery/project.ts +0 -16
  430. package/src/internal/eval-runner.ts +0 -1
  431. package/src/internal/framework-file-storage.ts +4 -5
  432. package/src/internal/framework-storage-selection.ts +2 -2
  433. package/src/internal/guest-network.ts +43 -29
  434. package/src/internal/hosted-admission-adapter.ts +2 -0
  435. package/src/internal/hosted-catch-protocol.ts +130 -0
  436. package/src/internal/hosted-catch.ts +192 -0
  437. package/src/internal/hosted-delivery-protocol.ts +387 -0
  438. package/src/internal/hosted-delivery.ts +155 -22
  439. package/src/internal/hosted-execution-diag.ts +21 -3
  440. package/src/internal/hosted-execution-flush.ts +6 -3
  441. package/src/internal/http-control-plane-session.ts +104 -0
  442. package/src/internal/init-scaffold.ts +1 -2
  443. package/src/internal/install-cursor-skills.ts +38 -5
  444. package/src/internal/legacy-command-guard.ts +59 -0
  445. package/src/internal/platform-timers.ts +191 -0
  446. package/src/internal/reminder-control-plane-protocol.ts +15 -2
  447. package/src/internal/reminder-runner.ts +60 -9
  448. package/src/internal/resolve-prod-target.ts +15 -0
  449. package/src/internal/run-client.ts +1 -1
  450. package/src/internal/sdk-runner.ts +3 -2
  451. package/src/internal/server.ts +89 -95
  452. package/src/internal/session-engine.ts +155 -285
  453. package/src/internal/storage-coordinator.ts +5 -76
  454. package/src/internal/storage-roles.ts +4 -9
  455. package/src/storage-backends/cursor-hosted-v2.ts +4 -7
  456. package/src/storage-backends/cursor-hosted.ts +40 -38
  457. package/src/storage-backends/file-kv.ts +10 -51
  458. package/src/storage-protocol.ts +3 -17
  459. package/src/storage.ts +10 -101
  460. package/src/types.ts +58 -62
  461. package/templates/demo/README.md +10 -6
  462. package/templates/demo/agent/channels/github.ts +2 -0
  463. package/templates/demo/agent/channels/queue.ts +6 -2
  464. package/templates/demo/agent/lib/repos.ts +5 -0
  465. package/templates/demo/init.json +25 -0
  466. package/dist/ab.d.ts +0 -209
  467. package/dist/ab.d.ts.map +0 -1
  468. package/dist/ab.js +0 -246
  469. package/dist/docs/ab.html +0 -80
  470. package/dist/docs/ab.md +0 -332
  471. package/dist/docs/assets/ab.md.mlVgqvSk.js +0 -54
  472. package/dist/docs/assets/ab.md.mlVgqvSk.lean.js +0 -1
  473. package/dist/docs/assets/chunks/@localSearchIndexroot.DXXZxiMv.js +0 -1
  474. package/dist/docs/assets/concepts.md.DgEcZOfT.js +0 -1
  475. package/dist/docs/assets/evals.md.CbMoebP1.js +0 -85
  476. package/dist/docs/assets/evals.md.CbMoebP1.lean.js +0 -1
  477. package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +0 -9
  478. package/dist/docs/assets/index.md.BW_6tOgR.js +0 -5
  479. package/dist/docs/assets/reference_sessions.md.CueyOHSL.js +0 -1
  480. package/dist/docs/assets/skills_ab.md.CsFNatVx.js +0 -26
  481. package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +0 -1
  482. package/dist/docs/assets/skills_evals.md.723kpUmA.js +0 -25
  483. package/dist/docs/assets/skills_evals.md.723kpUmA.lean.js +0 -1
  484. package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +0 -1
  485. package/dist/docs/assets/skills_index.md.DKwIxzGg.js +0 -1
  486. package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +0 -1
  487. package/dist/docs/assets/troubleshooting.md.Cus_YZga.js +0 -1
  488. package/dist/docs/skills/ab.html +0 -52
  489. package/dist/docs/skills/ab.md +0 -50
  490. package/dist/internal/ab-collector.d.ts +0 -44
  491. package/dist/internal/ab-collector.d.ts.map +0 -1
  492. package/dist/internal/ab-collector.js +0 -142
  493. package/dist/internal/ab-fold.d.ts +0 -36
  494. package/dist/internal/ab-fold.d.ts.map +0 -1
  495. package/dist/internal/ab-fold.js +0 -175
  496. package/dist/internal/ab-snapshot.d.ts +0 -68
  497. package/dist/internal/ab-snapshot.d.ts.map +0 -1
  498. package/dist/internal/ab-snapshot.js +0 -208
  499. package/dist/internal/discovery/ab.d.ts +0 -9
  500. package/dist/internal/discovery/ab.d.ts.map +0 -1
  501. package/dist/internal/discovery/ab.js +0 -113
  502. package/dist/playground/assets/index-Bq2HpEQB.js +0 -67
  503. package/dist/playground/assets/index-CZKKNlmb.css +0 -1
  504. package/docs/ab.md +0 -337
  505. package/skills/ab/SKILL.md +0 -58
  506. package/src/ab.ts +0 -430
  507. package/src/internal/ab-collector.ts +0 -200
  508. package/src/internal/ab-fold.ts +0 -232
  509. package/src/internal/ab-snapshot.ts +0 -331
  510. package/src/internal/discovery/ab.ts +0 -131
  511. /package/dist/docs/assets/{concepts.md.DgEcZOfT.lean.js → concepts.md.B4o63Gul.lean.js} +0 -0
  512. /package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.lean.js → guides_grokbot-agents.md.DyV-WArv.lean.js} +0 -0
  513. /package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.lean.js → guides_webhooks.md.CJK484ex.lean.js} +0 -0
  514. /package/dist/docs/assets/{hillclimbing.md.CpTGTCle.lean.js → hillclimbing.md.BOiVo1tf.lean.js} +0 -0
  515. /package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.lean.js → reference_agent-config.md.CvoL6pof.lean.js} +0 -0
  516. /package/dist/docs/assets/{reference_connections.md.Di6jJAXF.lean.js → reference_connections.md.BojkC6c5.lean.js} +0 -0
  517. /package/dist/docs/assets/{reference_extensions.md.CGmMLblt.lean.js → reference_extensions.md.ZAVUyuEX.lean.js} +0 -0
  518. /package/dist/docs/assets/{reference_http-api.md.oySXBO8o.lean.js → reference_http-api.md.BwaCo-VO.lean.js} +0 -0
  519. /package/dist/docs/assets/{reference_sessions.md.CueyOHSL.lean.js → reference_sessions.md.CyXV1MUw.lean.js} +0 -0
  520. /package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.lean.js → scaffolding-agents.md.Kctn3OVb.lean.js} +0 -0
  521. /package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.lean.js → skills_create-agent.md.Q3h6Je-e.lean.js} +0 -0
  522. /package/dist/docs/assets/{skills_github.md.D0JahM8c.lean.js → skills_github.md.hgFX_oKY.lean.js} +0 -0
  523. /package/dist/docs/assets/{troubleshooting.md.Cus_YZga.lean.js → troubleshooting.md.CYEAO9bM.lean.js} +0 -0
@@ -9,19 +9,19 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.DCD_zyg3.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CtuckIiL.js"></script>
12
+ <script type="module" src="/docs/assets/app.Cr-wVbnB.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.DhpIe0Pa.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.Dnsd3XOn.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.BCISBCiQ.js">
16
- <link rel="modulepreload" href="/docs/assets/reference_sessions.md.CueyOHSL.lean.js">
16
+ <link rel="modulepreload" href="/docs/assets/reference_sessions.md.CyXV1MUw.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
18
18
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
19
19
  <link rel="alternate" type="text/plain" href="/docs/llms.txt">
20
20
  <link rel="alternate" type="text/markdown" href="/docs/reference/sessions.md">
21
21
  </head>
22
22
  <body>
23
- <div id="app"><div class="Layout" data-v-990b7706><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b74bec0></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b74bec0>Skip to content</a><!--]--><!----><header class="VPNav" data-v-990b7706 data-v-af996e33><div class="VPNavBar" data-v-af996e33 data-v-c7f322eb><div class="wrapper" data-v-c7f322eb><div class="container" data-v-c7f322eb><div class="title" data-v-c7f322eb><div class="VPNavBarTitle has-sidebar" data-v-c7f322eb data-v-d1664c59><a class="title" href="/docs/" data-v-d1664c59><!--[--><!--]--><!----><span data-v-d1664c59>Agent SDK</span><!--[--><!--[--><!--[--><!--[--><span class="agent-sdk-version" title="@cursor/july 0.1.107" data-v-c26a5f4f>0.1.107</span><!--]--><!--]--><!--]--><!--]--></a></div></div><div class="content" data-v-c7f322eb><div class="content-body" data-v-c7f322eb><!--[--><!--]--><div class="VPNavBarSearch search" data-v-c7f322eb><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-c7f322eb data-v-ab749b05><span id="main-nav-aria-label" class="visually-hidden" data-v-ab749b05> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-ab749b05 data-v-ef8d136f><!--[--><span data-v-ef8d136f>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-ab749b05 data-v-ef8d136f><!--[--><span data-v-ef8d136f>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/templates/demo.html" tabindex="0" data-v-ab749b05 data-v-ef8d136f><!--[--><span data-v-ef8d136f>Templates</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-ab749b05 data-v-ef8d136f><!--[--><span data-v-ef8d136f>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-c7f322eb data-v-7c6c0ede><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-7c6c0ede data-v-87b8a6bb data-v-9f798512><span class="check" data-v-9f798512><span class="icon" data-v-9f798512><!--[--><span class="vpi-sun sun" data-v-87b8a6bb></span><span class="vpi-moon moon" data-v-87b8a6bb></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-c7f322eb data-v-e53d4296 data-v-79fc383b><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-79fc383b><span class="vpi-more-horizontal icon" data-v-79fc383b></span></button><div class="menu" data-v-79fc383b><div class="VPMenu" data-v-79fc383b data-v-0d780c53><!----><!--[--><!--[--><!----><div class="group" data-v-e53d4296><div class="item appearance" data-v-e53d4296><p class="label" data-v-e53d4296>Appearance</p><div class="appearance-action" data-v-e53d4296><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e53d4296 data-v-87b8a6bb data-v-9f798512><span class="check" data-v-9f798512><span class="icon" data-v-9f798512><!--[--><span class="vpi-sun sun" data-v-87b8a6bb></span><span class="vpi-moon moon" data-v-87b8a6bb></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-c7f322eb data-v-edf597df><span class="container" data-v-edf597df><span class="top" data-v-edf597df></span><span class="middle" data-v-edf597df></span><span class="bottom" data-v-edf597df></span></span></button></div></div></div></div><div class="divider" data-v-c7f322eb><div class="divider-line" data-v-c7f322eb></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-990b7706 data-v-054265d6><div class="container" data-v-054265d6><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-054265d6><span class="vpi-align-left menu-icon" data-v-054265d6></span><span class="menu-text" data-v-054265d6>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-054265d6 data-v-65e16bd4><button data-v-65e16bd4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-990b7706 data-v-03069692><div class="curtain" data-v-03069692></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-03069692><span class="visually-hidden" id="sidebar-aria-label" data-v-03069692> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Getting started</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/convert-automation.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Convert a Cursor Automation</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/concepts.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Templates</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/demo.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Demo agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/grokbot-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/code-wiki.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Code wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/agents-md.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Living AGENTS.md</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/security-reviewer.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Security reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/security-help.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Security help</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/agentic-owners.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Agentic Owners</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/pr-autofixer.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>PR autofixer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/triage.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Triage agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Improving agents</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/evals.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/ab.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Live A/B metrics</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/storage.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0 collapsible collapsed" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Coding-agent skills</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9a4aac52><span class="vpi-chevron-right caret-icon" data-v-9a4aac52></span></div></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/ab.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>ab</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/create-agent.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>create-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/debug.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>debug</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/evals.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/framework-map.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>framework-map</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/github.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>github</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/hillclimb.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>hillclimb</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/mcp-auth.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>mcp-auth</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/otel.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>otel</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/setup-slack.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>setup-slack</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Guides</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Host MCP OAuth</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/cloud-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Cursor cloud agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/grokbot-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Cursor Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/opentelemetry.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>OpenTelemetry</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Operating</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/deployment.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0 collapsible has-active" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9a4aac52><span class="vpi-chevron-right caret-icon" data-v-9a4aac52></span></div></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/extensions.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Extensions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/result.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Turn result</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-990b7706 data-v-7a16121a><div class="VPDoc has-sidebar has-aside" data-v-7a16121a data-v-38549ef7><!--[--><!--]--><div class="container" data-v-38549ef7><div class="aside" data-v-38549ef7><div class="aside-curtain" data-v-38549ef7></div><div class="aside-container" data-v-38549ef7><div class="aside-content" data-v-38549ef7><div class="VPDocAside" data-v-38549ef7 data-v-da90486d><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-da90486d data-v-0895f2d7><div class="content" data-v-0895f2d7><div class="outline-marker" data-v-0895f2d7></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-0895f2d7>On this page</div><ul class="VPDocOutlineItem root" data-v-0895f2d7 data-v-0cae2091><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-da90486d></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-38549ef7><div class="content-container" data-v-38549ef7><!--[--><!--]--><main class="main" data-v-38549ef7><div style="position:relative;" class="vp-doc _docs_reference_sessions" data-v-38549ef7><div><h1 id="sessions-events-and-streaming" tabindex="-1">Sessions, events, and streaming <a class="header-anchor" href="#sessions-events-and-streaming" aria-label="Permalink to &quot;Sessions, events, and streaming&quot;">​</a></h1><p>A session keeps one conversation, its workspace, and an append-only record of every message and tool call.</p><h2 id="what-does-a-session-contain" tabindex="-1">What does a session contain? <a class="header-anchor" href="#what-does-a-session-contain" aria-label="Permalink to &quot;What does a session contain?&quot;">​</a></h2><p>Each session combines:</p><ul><li>A channel and authenticated caller</li><li>A conversation the caller can continue</li><li>A workspace for local turns</li><li>An NDJSON event stream</li><li>Runtime state needed to resume after a server restart</li></ul><p>Sessions belong to the principal that created them. Follow-up, stream, and list routes return <code>403</code> when another caller tries to access one.</p><h2 id="which-session-identifier-should-i-use" tabindex="-1">Which session identifier should I use? <a class="header-anchor" href="#which-session-identifier-should-i-use" aria-label="Permalink to &quot;Which session identifier should I use?&quot;">​</a></h2><p>Sessions have two identifiers because conversation routing and inspection are different jobs.</p><table tabindex="0"><thead><tr><th>Identifier</th><th>Use it for</th></tr></thead><tbody><tr><td><code>continuationToken</code></td><td>Continue a conversation through its channel</td></tr><tr><td><code>sessionId</code></td><td>Stream events, inspect state, resolve approvals, or run a session-bound tool call</td></tr></tbody></table><p>Channels decide what a continuation token looks like. Slack uses its thread identity. A PR channel can use a key such as <code>pr:owner/repo#1</code>. The built-in HTTP API returns an opaque token and rotates it after each accepted follow-up. Reusing a stale HTTP token returns <code>409</code>.</p><p>Use the continuation token to keep talking. Use the session ID to observe or manage the stored session.</p><h2 id="which-session-modes-are-available" tabindex="-1">Which session modes are available? <a class="header-anchor" href="#which-session-modes-are-available" aria-label="Permalink to &quot;Which session modes are available?&quot;">​</a></h2><table tabindex="0"><thead><tr><th>Mode</th><th>Created by</th><th>What happens after a turn</th></tr></thead><tbody><tr><td><code>chat</code></td><td>HTTP sessions, channel <code>send</code>, Slack, or MCP <code>ask</code></td><td>Waits in <code>session.waiting</code> and accepts follow-ups</td></tr><tr><td><code>task</code></td><td>Markdown schedules and fire-and-forget dispatch</td><td>Ends in <code>session.completed</code> or <code>session.failed</code></td></tr></tbody></table><p>Task sessions don&#39;t accept follow-ups. Trying one returns <code>409</code>.</p><h2 id="what-happens-when-i-send-a-follow-up" tabindex="-1">What happens when I send a follow-up? <a class="header-anchor" href="#what-happens-when-i-send-a-follow-up" aria-label="Permalink to &quot;What happens when I send a follow-up?&quot;">​</a></h2><p>A follow-up to an idle chat session starts another turn. Admission when the session is already busy depends on the channel:</p><table tabindex="0"><thead><tr><th>Path</th><th>Busy-session policy</th></tr></thead><tbody><tr><td>HTTP playground / <code>POST /v1/session/:id</code> / MCP <code>ask</code></td><td><strong>Preempt</strong> (default): interrupt the in-flight turn, wait for it to settle, then run the new message</td></tr><tr><td>Slack mentions / DMs / alert-watch</td><td><strong>Coalesce</strong>: leave the active turn running, enqueue the follow-up, and drain queued asks into one follow-up turn when the active turn finishes (no mid-turn tool/hook inject)</td></tr></tbody></table><p>Pass <code>admission: &quot;coalesce&quot;</code> on <code>send()</code> to opt into the Slack policy from other callers. Omit it (or pass <code>&quot;preempt&quot;</code>) to keep interrupt semantics.</p><p><code>POST /v1/session/:id/stop</code> interrupts a turn without sending a new message. Interrupted turns record <code>turn.failed</code> with <code>&quot;turn interrupted&quot;</code>. This means the turn was preempted. A whole-message Slack <code>stop</code> / <code>@agent stop</code> does the same for that thread and clears pending coalesced nudges.</p><p>Session-bound deterministic tool calls share the lock only for writes: a write-effect call returns <code>409 session_busy</code> while a model turn is running, a read-effect call runs alongside the turn (see <a href="./tools.html#call-a-tool-without-a-model-turn">Tools</a>).</p><h2 id="which-events-can-i-stream" tabindex="-1">Which events can I stream? <a class="header-anchor" href="#which-events-can-i-stream" aria-label="Permalink to &quot;Which events can I stream?&quot;">​</a></h2><p>Each NDJSON line uses this envelope: <code>{ type, index, sessionId, turnId?, at, data }</code>. The <code>index</code> increases within one session. The <code>at</code> field is an ISO-8601 timestamp.</p><table tabindex="0"><thead><tr><th>Phase</th><th>Events</th><th>What they tell you</th></tr></thead><tbody><tr><td>Session</td><td><code>session.started</code>, <a href="./../ab.html#assign-sticky-variants"><code>ab.assigned</code></a>, <code>session.waiting</code>, <code>session.completed</code>, <code>session.failed</code></td><td>Session creation, A/B enrollment, readiness, and task completion</td></tr><tr><td>Agent</td><td><code>agent.bound</code></td><td>Cloud conversation URL</td></tr><tr><td>Input</td><td><code>message.received</code></td><td>A user message was accepted</td></tr><tr><td>Turn</td><td><code>turn.queued</code>, <code>turn.started</code>, <code>turn.completed</code>, <code>turn.failed</code></td><td>Queue position under a <a href="./agent-config.html#concurrency"><code>maxRunningTurns</code> cap</a>, then turn status, final result, and token usage</td></tr><tr><td>Steps</td><td><code>step.started</code>, <code>step.completed</code></td><td>Model step boundaries and duration</td></tr><tr><td>Reasoning</td><td><code>reasoning.appended</code>, <code>reasoning.completed</code></td><td>Streamed reasoning blocks</td></tr><tr><td>Reply</td><td><code>message.appended</code>, <code>message.completed</code></td><td>Text deltas and finalized assistant messages</td></tr><tr><td>Tools</td><td><code>actions.requested</code>, <code>action.result</code></td><td>Tool names, validated arguments, outputs, and errors</td></tr><tr><td>Approvals</td><td><code>action.approval_requested</code>, <code>action.approval_resolved</code></td><td>A parked tool call and the human decision</td></tr><tr><td>Subagents</td><td><code>subagent.called</code>, <code>subagent.completed</code></td><td>Delegated work</td></tr><tr><td>Artifacts</td><td><code>artifact.tagged</code></td><td>A durable <a href="./artifacts.html">artifact</a> was tagged for this session, by host code or <code>tag_artifact</code></td></tr></tbody></table><p>Pair <code>actions.requested</code> with <code>action.result</code> to reconstruct the tool trajectory. Read <code>turn.completed.data.usage</code> for input, output, and cache token counts. When <code>agent/result.ts</code> is authored, a thrown <code>commit</code> or empty assistant text emits <code>turn.failed</code> instead of <code>turn.completed</code>. See <a href="./result.html">Turn result</a>.</p><h2 id="how-do-i-stream-or-replay-session-events" tabindex="-1">How do I stream or replay session events? <a class="header-anchor" href="#how-do-i-stream-or-replay-session-events" aria-label="Permalink to &quot;How do I stream or replay session events?&quot;">​</a></h2><p>One endpoint handles both live streaming and replay:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -N</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;http://127.0.0.1:3000/&lt;slug&gt;/v1/session/ses_…/stream?startIndex=0&#39;</span></span></code></pre></div><p>Pass <code>startIndex</code> to continue after the last event you received. Omit it or pass <code>0</code> to replay the full session before following new events. <code>GET /v1/session/:id/events</code> returns a one-time dump without staying connected.</p><p>Event streams replay from disk after a server restart. Conversation state resumes from the Cursor SDK store.</p><h2 id="what-goes-into-a-local-session-workspace" tabindex="-1">What goes into a local session workspace? <a class="header-anchor" href="#what-goes-into-a-local-session-workspace" aria-label="Permalink to &quot;What goes into a local session workspace?&quot;">​</a></h2><p>The Agent SDK creates a workspace before the first local turn:</p><table tabindex="0"><thead><tr><th>Source path</th><th>Lands as</th></tr></thead><tbody><tr><td><code>instructions.*</code></td><td><code>AGENTS.md</code></td></tr><tr><td><code>skills/*</code></td><td><code>.cursor/skills/&lt;name&gt;/SKILL.md</code></td></tr><tr><td>agent tools (<code>execution: &quot;agent&quot;</code>)</td><td>scripts in the session workspace, with a catalog in <code>AGENTS.md</code></td></tr><tr><td><code>sandbox/workspace/**</code></td><td>copied in as seed files</td></tr><tr><td>per-send <code>workspaceFiles</code></td><td>written before the turn</td></tr></tbody></table><p>The local harness uses this workspace as its working directory. Parent directories can contribute <code>AGENTS.md</code> and <code>.cursor</code> settings. Set <code>local.cwd</code> when you need a clean parent directory. A channel can also provide a different working directory for one session, such as a PR worktree.</p><p>See <a href="./agent-config.html#local-cwd">Agent config: local cwd</a> for the inheritance rules.</p><h2 id="where-does-the-agent-sdk-store-session-data" tabindex="-1">Where does the Agent SDK store session data? <a class="header-anchor" href="#where-does-the-agent-sdk-store-session-data" aria-label="Permalink to &quot;Where does the Agent SDK store session data?&quot;">​</a></h2><p>Local state lives under <code>--state-root</code>. Slugged mounts store it under a subdirectory named for the slug.</p><p>Deleting a session directory removes the session from the server: it disappears from listings and can no longer be streamed or continued. Cloud conversations remain on the Cursor backend.</p><p>Nested git checkouts already default <code>local.cwd</code> outside the enclosing repo. See <a href="./../concepts.html#what-files-can-a-local-session-access">local session workspaces</a>.</p><h2 id="how-do-i-inspect-a-saved-event-stream" tabindex="-1">How do I inspect a saved event stream? <a class="header-anchor" href="#how-do-i-inspect-a-saved-event-stream" aria-label="Permalink to &quot;How do I inspect a saved event stream?&quot;">​</a></h2><p>Use <code>trajectory</code> with a saved trace:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> trajectory</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --events</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">state-roo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/traces/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">sessionI</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">d</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">.ndjson</span></span></code></pre></div><p>The command prints tool calls, the reply, and token usage in the same JSON shape as <code>run</code>. Use <strong>Open trace</strong> in the playground for a visual view.</p><h2 id="related" tabindex="-1">Related <a class="header-anchor" href="#related" aria-label="Permalink to &quot;Related&quot;">​</a></h2><ul><li><a href="./http-api.html">HTTP API</a></li><li><a href="./hooks.html">Hooks</a></li><li><a href="./../ab.html">Live A/B metrics</a></li><li><a href="./../concepts.html">How the Agent SDK works</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-38549ef7 data-v-215f93e6><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-215f93e6><span class="visually-hidden" id="doc-footer-aria-label" data-v-215f93e6>Pager</span><div class="pager" data-v-215f93e6><a class="VPLink link pager-link prev" href="/docs/reference/result.html" data-v-215f93e6><!--[--><span class="desc" data-v-215f93e6>Previous page</span><span class="title" data-v-215f93e6>Turn result</span><!--]--></a></div><div class="pager" data-v-215f93e6><a class="VPLink link pager-link next" href="/docs/reference/playground.html" data-v-215f93e6><!--[--><span class="desc" data-v-215f93e6>Next page</span><span class="title" data-v-215f93e6>Playground</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
24
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"mlVgqvSk\",\"building-with-agents.md\":\"CUSWxlP_\",\"concepts.md\":\"DgEcZOfT\",\"deployment.md\":\"MFPKqsqI\",\"evals.md\":\"CbMoebP1\",\"guides_agent-to-agent.md\":\"BDb0t1QV\",\"guides_cloud-agents.md\":\"DS8RIjwx\",\"guides_convert-automation.md\":\"B4sjlodG\",\"guides_github.md\":\"c0gdGJ-D\",\"guides_grokbot-agents.md\":\"DVqdhBKb\",\"guides_human-in-the-loop.md\":\"By1G2T3_\",\"guides_mcp-oauth.md\":\"Dp6cDP7f\",\"guides_opentelemetry.md\":\"SCRMskno\",\"guides_slack.md\":\"9oHPye9o\",\"guides_webhooks.md\":\"DKdA43Qm\",\"hillclimbing.md\":\"CpTGTCle\",\"index.md\":\"BW_6tOgR\",\"quickstart.md\":\"DdQOF7Y8\",\"reference_agent-config.md\":\"CHNpiyp4\",\"reference_artifacts.md\":\"Dior32Qw\",\"reference_channels.md\":\"D-qTqwcq\",\"reference_cli.md\":\"Dm67hd2D\",\"reference_connections.md\":\"Di6jJAXF\",\"reference_extensions.md\":\"CGmMLblt\",\"reference_hooks.md\":\"Ddt5DdgJ\",\"reference_http-api.md\":\"oySXBO8o\",\"reference_instructions.md\":\"CR7XSsGk\",\"reference_playground.md\":\"4myJPxrf\",\"reference_project-layout.md\":\"DuBu9a96\",\"reference_prompt.md\":\"DnaD5dNK\",\"reference_result.md\":\"BK5SxDrf\",\"reference_schedules.md\":\"DI_JrHgq\",\"reference_sessions.md\":\"CueyOHSL\",\"reference_skills.md\":\"l2ezAcaN\",\"reference_subagents.md\":\"CfsIloPm\",\"reference_tools.md\":\"aGrn99hP\",\"scaffolding-agents.md\":\"em43xlY1\",\"skills_ab.md\":\"CsFNatVx\",\"skills_create-agent.md\":\"BVoWPcan\",\"skills_debug.md\":\"CDbPhHfg\",\"skills_evals.md\":\"723kpUmA\",\"skills_framework-map.md\":\"haibFyoB\",\"skills_github.md\":\"D0JahM8c\",\"skills_hillclimb.md\":\"B_zJerxA\",\"skills_index.md\":\"DKwIxzGg\",\"skills_mcp-auth.md\":\"DGvFP3HE\",\"skills_otel.md\":\"B5Ddv1xH\",\"skills_setup-slack.md\":\"BBgx8lUz\",\"storage.md\":\"BOHeqk2M\",\"templates_agentic-owners.md\":\"BZSH4N9z\",\"templates_agents-md.md\":\"CXSMZljE\",\"templates_code-wiki.md\":\"CDYZIBFN\",\"templates_demo.md\":\"BeQX9V3H\",\"templates_grokbot-agents.md\":\"c1s6Flp9\",\"templates_pr-autofixer.md\":\"Bds_XWcV\",\"templates_security-help.md\":\"C3Ny_Qr2\",\"templates_security-reviewer.md\":\"lshxbCLK\",\"templates_triage.md\":\"Co4UNzkZ\",\"troubleshooting.md\":\"Cus_YZga\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Agent SDK\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sdkVersion\":\"0.1.107\",\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Templates\",\"link\":\"/templates/demo\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Convert a Cursor Automation\",\"link\":\"/guides/convert-automation\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Templates\",\"items\":[{\"text\":\"Demo agent\",\"link\":\"/templates/demo\"},{\"text\":\"Grok Bot agents\",\"link\":\"/templates/grokbot-agents\"},{\"text\":\"Code wiki\",\"link\":\"/templates/code-wiki\"},{\"text\":\"Living AGENTS.md\",\"link\":\"/templates/agents-md\"},{\"text\":\"Security reviewer\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Security help\",\"link\":\"/templates/security-help\"},{\"text\":\"Agentic Owners\",\"link\":\"/templates/agentic-owners\"},{\"text\":\"PR autofixer\",\"link\":\"/templates/pr-autofixer\"},{\"text\":\"Triage agent\",\"link\":\"/templates/triage\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Coding-agent skills\",\"collapsed\":true,\"items\":[{\"text\":\"Overview\",\"link\":\"/skills/\"},{\"text\":\"ab\",\"link\":\"/skills/ab\"},{\"text\":\"create-agent\",\"link\":\"/skills/create-agent\"},{\"text\":\"debug\",\"link\":\"/skills/debug\"},{\"text\":\"evals\",\"link\":\"/skills/evals\"},{\"text\":\"framework-map\",\"link\":\"/skills/framework-map\"},{\"text\":\"github\",\"link\":\"/skills/github\"},{\"text\":\"hillclimb\",\"link\":\"/skills/hillclimb\"},{\"text\":\"mcp-auth\",\"link\":\"/skills/mcp-auth\"},{\"text\":\"otel\",\"link\":\"/skills/otel\"},{\"text\":\"setup-slack\",\"link\":\"/skills/setup-slack\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Host MCP OAuth\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Cursor cloud agents\",\"link\":\"/guides/cloud-agents\"},{\"text\":\"Cursor Grok Bot agents\",\"link\":\"/guides/grokbot-agents\"},{\"text\":\"OpenTelemetry\",\"link\":\"/guides/opentelemetry\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"prompt\",\"link\":\"/reference/prompt\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Extensions\",\"link\":\"/reference/extensions\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Artifacts\",\"link\":\"/reference/artifacts\"},{\"text\":\"Turn result\",\"link\":\"/reference/result\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
23
+ <div id="app"><div class="Layout" data-v-990b7706><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b74bec0></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b74bec0>Skip to content</a><!--]--><!----><header class="VPNav" data-v-990b7706 data-v-af996e33><div class="VPNavBar" data-v-af996e33 data-v-c7f322eb><div class="wrapper" data-v-c7f322eb><div class="container" data-v-c7f322eb><div class="title" data-v-c7f322eb><div class="VPNavBarTitle has-sidebar" data-v-c7f322eb data-v-d1664c59><a class="title" href="/docs/" data-v-d1664c59><!--[--><!--]--><!----><span data-v-d1664c59>Agent SDK</span><!--[--><!--[--><!--[--><!--[--><span class="agent-sdk-version" title="@cursor/july 0.1.109" data-v-c26a5f4f>0.1.109</span><!--]--><!--]--><!--]--><!--]--></a></div></div><div class="content" data-v-c7f322eb><div class="content-body" data-v-c7f322eb><!--[--><!--]--><div class="VPNavBarSearch search" data-v-c7f322eb><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-c7f322eb data-v-ab749b05><span id="main-nav-aria-label" class="visually-hidden" data-v-ab749b05> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-ab749b05 data-v-ef8d136f><!--[--><span data-v-ef8d136f>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-ab749b05 data-v-ef8d136f><!--[--><span data-v-ef8d136f>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/templates/demo.html" tabindex="0" data-v-ab749b05 data-v-ef8d136f><!--[--><span data-v-ef8d136f>Templates</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-ab749b05 data-v-ef8d136f><!--[--><span data-v-ef8d136f>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-c7f322eb data-v-7c6c0ede><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-7c6c0ede data-v-87b8a6bb data-v-9f798512><span class="check" data-v-9f798512><span class="icon" data-v-9f798512><!--[--><span class="vpi-sun sun" data-v-87b8a6bb></span><span class="vpi-moon moon" data-v-87b8a6bb></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-c7f322eb data-v-e53d4296 data-v-79fc383b><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-79fc383b><span class="vpi-more-horizontal icon" data-v-79fc383b></span></button><div class="menu" data-v-79fc383b><div class="VPMenu" data-v-79fc383b data-v-0d780c53><!----><!--[--><!--[--><!----><div class="group" data-v-e53d4296><div class="item appearance" data-v-e53d4296><p class="label" data-v-e53d4296>Appearance</p><div class="appearance-action" data-v-e53d4296><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e53d4296 data-v-87b8a6bb data-v-9f798512><span class="check" data-v-9f798512><span class="icon" data-v-9f798512><!--[--><span class="vpi-sun sun" data-v-87b8a6bb></span><span class="vpi-moon moon" data-v-87b8a6bb></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-c7f322eb data-v-edf597df><span class="container" data-v-edf597df><span class="top" data-v-edf597df></span><span class="middle" data-v-edf597df></span><span class="bottom" data-v-edf597df></span></span></button></div></div></div></div><div class="divider" data-v-c7f322eb><div class="divider-line" data-v-c7f322eb></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-990b7706 data-v-054265d6><div class="container" data-v-054265d6><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-054265d6><span class="vpi-align-left menu-icon" data-v-054265d6></span><span class="menu-text" data-v-054265d6>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-054265d6 data-v-65e16bd4><button data-v-65e16bd4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-990b7706 data-v-03069692><div class="curtain" data-v-03069692></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-03069692><span class="visually-hidden" id="sidebar-aria-label" data-v-03069692> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Getting started</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/convert-automation.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Convert a Cursor Automation</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/concepts.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Templates</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/demo.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Demo agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/grokbot-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/code-wiki.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Code wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/agents-md.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Living AGENTS.md</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/security-reviewer.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Security reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/security-help.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Security help</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/agentic-owners.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Agentic Owners</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/pr-autofixer.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>PR autofixer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/templates/triage.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Triage agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Improving agents</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/evals.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/storage.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0 collapsible collapsed" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Coding-agent skills</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9a4aac52><span class="vpi-chevron-right caret-icon" data-v-9a4aac52></span></div></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/create-agent.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>create-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/debug.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>debug</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/deploy.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>deploy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/evals.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/framework-map.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>framework-map</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/github.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>github</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/hillclimb.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>hillclimb</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/mcp-auth.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>mcp-auth</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/otel.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>otel</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/skills/setup-slack.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>setup-slack</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Guides</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/gitlab.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>GitLab</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/bitbucket.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Bitbucket</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Host MCP OAuth</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/cloud-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Cursor cloud agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/grokbot-agents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Cursor Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/improve.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Self-improvement</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/guides/opentelemetry.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>OpenTelemetry</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Operating</h2><!----></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/deployment.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-53da167f><section class="VPSidebarItem level-0 collapsible has-active" data-v-53da167f data-v-9a4aac52><div class="item" role="button" tabindex="0" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><h2 class="text" data-v-9a4aac52>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9a4aac52><span class="vpi-chevron-right caret-icon" data-v-9a4aac52></span></div></div><div class="items" data-v-9a4aac52><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/extensions.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Extensions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/result.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Turn result</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a4aac52><div class="item" data-v-9a4aac52><div class="indicator" data-v-9a4aac52></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-9a4aac52><!--[--><p class="text" data-v-9a4aac52>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-990b7706 data-v-7a16121a><div class="VPDoc has-sidebar has-aside" data-v-7a16121a data-v-38549ef7><!--[--><!--]--><div class="container" data-v-38549ef7><div class="aside" data-v-38549ef7><div class="aside-curtain" data-v-38549ef7></div><div class="aside-container" data-v-38549ef7><div class="aside-content" data-v-38549ef7><div class="VPDocAside" data-v-38549ef7 data-v-da90486d><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-da90486d data-v-0895f2d7><div class="content" data-v-0895f2d7><div class="outline-marker" data-v-0895f2d7></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-0895f2d7>On this page</div><ul class="VPDocOutlineItem root" data-v-0895f2d7 data-v-0cae2091><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-da90486d></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-38549ef7><div class="content-container" data-v-38549ef7><!--[--><!--]--><main class="main" data-v-38549ef7><div style="position:relative;" class="vp-doc _docs_reference_sessions" data-v-38549ef7><div><h1 id="sessions-events-and-streaming" tabindex="-1">Sessions, events, and streaming <a class="header-anchor" href="#sessions-events-and-streaming" aria-label="Permalink to &quot;Sessions, events, and streaming&quot;">​</a></h1><p>A session keeps one conversation, its workspace, and an append-only record of every message and tool call.</p><h2 id="what-does-a-session-contain" tabindex="-1">What does a session contain? <a class="header-anchor" href="#what-does-a-session-contain" aria-label="Permalink to &quot;What does a session contain?&quot;">​</a></h2><p>Each session combines:</p><ul><li>A channel and authenticated caller</li><li>A conversation the caller can continue</li><li>A workspace for local turns</li><li>An NDJSON event stream</li><li>Runtime state needed to resume after a server restart</li></ul><p>Sessions belong to the principal that created them. Follow-up, stream, and list routes return <code>403</code> when another caller tries to access one.</p><h2 id="which-session-identifier-should-i-use" tabindex="-1">Which session identifier should I use? <a class="header-anchor" href="#which-session-identifier-should-i-use" aria-label="Permalink to &quot;Which session identifier should I use?&quot;">​</a></h2><p>Sessions have two identifiers because conversation routing and inspection are different jobs.</p><table tabindex="0"><thead><tr><th>Identifier</th><th>Use it for</th></tr></thead><tbody><tr><td><code>continuationToken</code></td><td>Continue a conversation through its channel</td></tr><tr><td><code>sessionId</code></td><td>Stream events, inspect state, resolve approvals, or run a session-bound tool call</td></tr></tbody></table><p>Channels decide what a continuation token looks like. Slack uses its thread identity. A PR channel can use a key such as <code>pr:owner/repo#1</code>. The built-in HTTP API returns an opaque token and rotates it after each accepted follow-up. Reusing a stale HTTP token returns <code>409</code>.</p><p>Use the continuation token to keep talking. Use the session ID to observe or manage the stored session.</p><h2 id="which-session-modes-are-available" tabindex="-1">Which session modes are available? <a class="header-anchor" href="#which-session-modes-are-available" aria-label="Permalink to &quot;Which session modes are available?&quot;">​</a></h2><table tabindex="0"><thead><tr><th>Mode</th><th>Created by</th><th>What happens after a turn</th></tr></thead><tbody><tr><td><code>chat</code></td><td>HTTP sessions, channel <code>send</code>, Slack, or MCP <code>ask</code></td><td>Waits in <code>session.waiting</code> and accepts follow-ups</td></tr><tr><td><code>task</code></td><td>Markdown schedules and fire-and-forget dispatch</td><td>Ends in <code>session.completed</code> or <code>session.failed</code></td></tr></tbody></table><p>Task sessions don&#39;t accept follow-ups. Trying one returns <code>409</code>.</p><h2 id="what-happens-when-i-send-a-follow-up" tabindex="-1">What happens when I send a follow-up? <a class="header-anchor" href="#what-happens-when-i-send-a-follow-up" aria-label="Permalink to &quot;What happens when I send a follow-up?&quot;">​</a></h2><p>A follow-up to an idle chat session starts another turn. Admission when the session is already busy depends on the channel:</p><table tabindex="0"><thead><tr><th>Path</th><th>Busy-session policy</th></tr></thead><tbody><tr><td>HTTP playground / <code>POST /v1/session/:id</code> / MCP <code>ask</code></td><td><strong>Preempt</strong> (default): interrupt the in-flight turn, wait for it to settle, then run the new message</td></tr><tr><td>Slack mentions / DMs / alert-watch</td><td><strong>Coalesce</strong>: leave the active turn running, enqueue the follow-up, and drain queued asks into one follow-up turn when the active turn finishes (no mid-turn tool/hook inject)</td></tr></tbody></table><p>Pass <code>admission: &quot;coalesce&quot;</code> on <code>send()</code> to opt into the Slack policy from other callers. Omit it (or pass <code>&quot;preempt&quot;</code>) to keep interrupt semantics.</p><p><code>POST /v1/session/:id/stop</code> interrupts a turn without sending a new message. Interrupted turns record <code>turn.failed</code> with <code>&quot;turn interrupted&quot;</code>. This means the turn was preempted. A whole-message Slack <code>stop</code> / <code>@agent stop</code> does the same for that thread and clears pending coalesced nudges.</p><p>Session-bound deterministic tool calls share the lock only for writes: a write-effect call returns <code>409 session_busy</code> while a model turn is running, a read-effect call runs alongside the turn (see <a href="./tools.html#call-a-tool-without-a-model-turn">Tools</a>).</p><h2 id="which-events-can-i-stream" tabindex="-1">Which events can I stream? <a class="header-anchor" href="#which-events-can-i-stream" aria-label="Permalink to &quot;Which events can I stream?&quot;">​</a></h2><p>Each NDJSON line uses this envelope: <code>{ type, index, sessionId, turnId?, at, data }</code>. The <code>index</code> increases within one session. The <code>at</code> field is an ISO-8601 timestamp.</p><table tabindex="0"><thead><tr><th>Phase</th><th>Events</th><th>What they tell you</th></tr></thead><tbody><tr><td>Session</td><td><code>session.started</code>, <code>session.waiting</code>, <code>session.completed</code>, <code>session.failed</code></td><td>Session creation, readiness, and task completion</td></tr><tr><td>Agent</td><td><code>agent.bound</code></td><td>Cloud conversation URL</td></tr><tr><td>Input</td><td><code>message.received</code></td><td>A user message was accepted</td></tr><tr><td>Turn</td><td><code>turn.queued</code>, <code>turn.started</code>, <code>turn.completed</code>, <code>turn.failed</code></td><td>Queue position under a <a href="./agent-config.html#concurrency"><code>maxRunningTurns</code> cap</a>, then turn status, final result, and token usage</td></tr><tr><td>Steps</td><td><code>step.started</code>, <code>step.completed</code></td><td>Model step boundaries and duration</td></tr><tr><td>Reasoning</td><td><code>reasoning.appended</code>, <code>reasoning.completed</code></td><td>Streamed reasoning blocks</td></tr><tr><td>Reply</td><td><code>message.appended</code>, <code>message.completed</code></td><td>Text deltas and finalized assistant messages</td></tr><tr><td>Tools</td><td><code>actions.requested</code>, <code>action.result</code></td><td>Tool names, validated arguments, outputs, and errors</td></tr><tr><td>Approvals</td><td><code>action.approval_requested</code>, <code>action.approval_resolved</code></td><td>A parked tool call and the human decision</td></tr><tr><td>Subagents</td><td><code>subagent.called</code>, <code>subagent.completed</code></td><td>Delegated work</td></tr><tr><td>Artifacts</td><td><code>artifact.tagged</code></td><td>A durable <a href="./artifacts.html">artifact</a> was tagged for this session, by host code or <code>tag_artifact</code></td></tr></tbody></table><p>Pair <code>actions.requested</code> with <code>action.result</code> to reconstruct the tool trajectory. Read <code>turn.completed.data.usage</code> for input, output, and cache token counts. When <code>agent/result.ts</code> is authored, a thrown <code>commit</code> or empty assistant text emits <code>turn.failed</code> instead of <code>turn.completed</code>. See <a href="./result.html">Turn result</a>.</p><h2 id="how-do-i-stream-or-replay-session-events" tabindex="-1">How do I stream or replay session events? <a class="header-anchor" href="#how-do-i-stream-or-replay-session-events" aria-label="Permalink to &quot;How do I stream or replay session events?&quot;">​</a></h2><p>One endpoint handles both live streaming and replay:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -N</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;http://127.0.0.1:3000/&lt;slug&gt;/v1/session/ses_…/stream?startIndex=0&#39;</span></span></code></pre></div><p>Pass <code>startIndex</code> to continue after the last event you received. Omit it or pass <code>0</code> to replay the full session before following new events. <code>GET /v1/session/:id/events</code> returns a one-time dump without staying connected.</p><p>Event streams replay from disk after a server restart. Conversation state resumes from the Cursor SDK store.</p><h2 id="what-goes-into-a-local-session-workspace" tabindex="-1">What goes into a local session workspace? <a class="header-anchor" href="#what-goes-into-a-local-session-workspace" aria-label="Permalink to &quot;What goes into a local session workspace?&quot;">​</a></h2><p>The Agent SDK creates a workspace before the first local turn:</p><table tabindex="0"><thead><tr><th>Source path</th><th>Lands as</th></tr></thead><tbody><tr><td><code>instructions.*</code></td><td><code>AGENTS.md</code></td></tr><tr><td><code>skills/*</code></td><td><code>.cursor/skills/&lt;name&gt;/SKILL.md</code></td></tr><tr><td>agent tools (<code>execution: &quot;agent&quot;</code>)</td><td>scripts in the session workspace, with a catalog in <code>AGENTS.md</code></td></tr><tr><td><code>sandbox/workspace/**</code></td><td>copied in as seed files</td></tr><tr><td>per-send <code>workspaceFiles</code></td><td>written before the turn</td></tr></tbody></table><p>The local harness uses this workspace as its working directory. Parent directories can contribute <code>AGENTS.md</code> and <code>.cursor</code> settings. Set <code>local.cwd</code> when you need a clean parent directory. A channel can also provide a different working directory for one session, such as a PR worktree.</p><p>See <a href="./agent-config.html#local-cwd">Agent config: local cwd</a> for the inheritance rules.</p><h2 id="where-does-the-agent-sdk-store-session-data" tabindex="-1">Where does the Agent SDK store session data? <a class="header-anchor" href="#where-does-the-agent-sdk-store-session-data" aria-label="Permalink to &quot;Where does the Agent SDK store session data?&quot;">​</a></h2><p>Local state lives under <code>--state-root</code>. Slugged mounts store it under a subdirectory named for the slug.</p><p>Deleting a session directory removes the session from the server: it disappears from listings and can no longer be streamed or continued. Cloud conversations remain on the Cursor backend.</p><p>Nested git checkouts already default <code>local.cwd</code> outside the enclosing repo. See <a href="./../concepts.html#what-files-can-a-local-session-access">local session workspaces</a>.</p><h2 id="how-do-i-inspect-a-saved-event-stream" tabindex="-1">How do I inspect a saved event stream? <a class="header-anchor" href="#how-do-i-inspect-a-saved-event-stream" aria-label="Permalink to &quot;How do I inspect a saved event stream?&quot;">​</a></h2><p>Use <code>trajectory</code> with a saved trace:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> trajectory</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --events</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">state-roo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/traces/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">sessionI</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">d</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">.ndjson</span></span></code></pre></div><p>The command prints tool calls, the reply, and token usage in the same JSON shape as <code>run</code>. Use <strong>Open trace</strong> in the playground for a visual view.</p><h2 id="related" tabindex="-1">Related <a class="header-anchor" href="#related" aria-label="Permalink to &quot;Related&quot;">​</a></h2><ul><li><a href="./http-api.html">HTTP API</a></li><li><a href="./hooks.html">Hooks</a></li><li><a href="./../concepts.html">How the Agent SDK works</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-38549ef7 data-v-215f93e6><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-215f93e6><span class="visually-hidden" id="doc-footer-aria-label" data-v-215f93e6>Pager</span><div class="pager" data-v-215f93e6><a class="VPLink link pager-link prev" href="/docs/reference/result.html" data-v-215f93e6><!--[--><span class="desc" data-v-215f93e6>Previous page</span><span class="title" data-v-215f93e6>Turn result</span><!--]--></a></div><div class="pager" data-v-215f93e6><a class="VPLink link pager-link next" href="/docs/reference/playground.html" data-v-215f93e6><!--[--><span class="desc" data-v-215f93e6>Next page</span><span class="title" data-v-215f93e6>Playground</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
24
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"building-with-agents.md\":\"D0KbSkJn\",\"concepts.md\":\"B4o63Gul\",\"deployment.md\":\"JenwuCCB\",\"evals.md\":\"C7JLjoEP\",\"guides_agent-to-agent.md\":\"BDb0t1QV\",\"guides_bitbucket.md\":\"DZPzmUjU\",\"guides_cloud-agents.md\":\"BsloyHdY\",\"guides_convert-automation.md\":\"B4sjlodG\",\"guides_github.md\":\"TZaTZlfz\",\"guides_gitlab.md\":\"BmqwQfdG\",\"guides_grokbot-agents.md\":\"DyV-WArv\",\"guides_human-in-the-loop.md\":\"By1G2T3_\",\"guides_improve.md\":\"BGVk32bK\",\"guides_mcp-oauth.md\":\"Dp6cDP7f\",\"guides_opentelemetry.md\":\"SCRMskno\",\"guides_slack.md\":\"D4RVMM4G\",\"guides_webhooks.md\":\"CJK484ex\",\"hillclimbing.md\":\"BOiVo1tf\",\"index.md\":\"DD9Q2XuJ\",\"quickstart.md\":\"DdQOF7Y8\",\"reference_agent-config.md\":\"CvoL6pof\",\"reference_artifacts.md\":\"Dior32Qw\",\"reference_channels.md\":\"CAo-iK4j\",\"reference_cli.md\":\"Deg7849l\",\"reference_connections.md\":\"BojkC6c5\",\"reference_extensions.md\":\"ZAVUyuEX\",\"reference_hooks.md\":\"BlM_bOg6\",\"reference_http-api.md\":\"BwaCo-VO\",\"reference_instructions.md\":\"CR7XSsGk\",\"reference_playground.md\":\"DLnoaczX\",\"reference_project-layout.md\":\"BEU8MtQV\",\"reference_prompt.md\":\"DnaD5dNK\",\"reference_result.md\":\"BK5SxDrf\",\"reference_schedules.md\":\"DI_JrHgq\",\"reference_sessions.md\":\"CyXV1MUw\",\"reference_skills.md\":\"l2ezAcaN\",\"reference_subagents.md\":\"CfsIloPm\",\"reference_tools.md\":\"aGrn99hP\",\"scaffolding-agents.md\":\"Kctn3OVb\",\"skills_create-agent.md\":\"Q3h6Je-e\",\"skills_debug.md\":\"CVjCXMFF\",\"skills_deploy.md\":\"CWqi_ZxW\",\"skills_evals.md\":\"DFxYPErF\",\"skills_framework-map.md\":\"BxLSOhSY\",\"skills_github.md\":\"hgFX_oKY\",\"skills_hillclimb.md\":\"B_zJerxA\",\"skills_index.md\":\"DL7EHaQ-\",\"skills_mcp-auth.md\":\"DGvFP3HE\",\"skills_otel.md\":\"B5Ddv1xH\",\"skills_setup-slack.md\":\"BBgx8lUz\",\"storage.md\":\"BUrhJ-Zz\",\"templates_agentic-owners.md\":\"BZSH4N9z\",\"templates_agents-md.md\":\"CXSMZljE\",\"templates_code-wiki.md\":\"CDYZIBFN\",\"templates_demo.md\":\"BeQX9V3H\",\"templates_grokbot-agents.md\":\"c1s6Flp9\",\"templates_pr-autofixer.md\":\"Bds_XWcV\",\"templates_security-help.md\":\"C3Ny_Qr2\",\"templates_security-reviewer.md\":\"lshxbCLK\",\"templates_triage.md\":\"Co4UNzkZ\",\"troubleshooting.md\":\"CYEAO9bM\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Agent SDK\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sdkVersion\":\"0.1.109\",\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Templates\",\"link\":\"/templates/demo\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Convert a Cursor Automation\",\"link\":\"/guides/convert-automation\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Templates\",\"items\":[{\"text\":\"Demo agent\",\"link\":\"/templates/demo\"},{\"text\":\"Grok Bot agents\",\"link\":\"/templates/grokbot-agents\"},{\"text\":\"Code wiki\",\"link\":\"/templates/code-wiki\"},{\"text\":\"Living AGENTS.md\",\"link\":\"/templates/agents-md\"},{\"text\":\"Security reviewer\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Security help\",\"link\":\"/templates/security-help\"},{\"text\":\"Agentic Owners\",\"link\":\"/templates/agentic-owners\"},{\"text\":\"PR autofixer\",\"link\":\"/templates/pr-autofixer\"},{\"text\":\"Triage agent\",\"link\":\"/templates/triage\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Coding-agent skills\",\"collapsed\":true,\"items\":[{\"text\":\"Overview\",\"link\":\"/skills/\"},{\"text\":\"create-agent\",\"link\":\"/skills/create-agent\"},{\"text\":\"debug\",\"link\":\"/skills/debug\"},{\"text\":\"deploy\",\"link\":\"/skills/deploy\"},{\"text\":\"evals\",\"link\":\"/skills/evals\"},{\"text\":\"framework-map\",\"link\":\"/skills/framework-map\"},{\"text\":\"github\",\"link\":\"/skills/github\"},{\"text\":\"hillclimb\",\"link\":\"/skills/hillclimb\"},{\"text\":\"mcp-auth\",\"link\":\"/skills/mcp-auth\"},{\"text\":\"otel\",\"link\":\"/skills/otel\"},{\"text\":\"setup-slack\",\"link\":\"/skills/setup-slack\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"GitLab\",\"link\":\"/guides/gitlab\"},{\"text\":\"Bitbucket\",\"link\":\"/guides/bitbucket\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Host MCP OAuth\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Cursor cloud agents\",\"link\":\"/guides/cloud-agents\"},{\"text\":\"Cursor Grok Bot agents\",\"link\":\"/guides/grokbot-agents\"},{\"text\":\"Self-improvement\",\"link\":\"/guides/improve\"},{\"text\":\"OpenTelemetry\",\"link\":\"/guides/opentelemetry\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"prompt\",\"link\":\"/reference/prompt\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Extensions\",\"link\":\"/reference/extensions\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Artifacts\",\"link\":\"/reference/artifacts\"},{\"text\":\"Turn result\",\"link\":\"/reference/result\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
25
25
 
26
26
  </body>
27
27
  </html>
@@ -75,7 +75,7 @@ within one session. The `at` field is an ISO-8601 timestamp.
75
75
 
76
76
  | Phase | Events | What they tell you |
77
77
  | --- | --- | --- |
78
- | Session | `session.started`, [`ab.assigned`](/docs/ab.md#assign-sticky-variants), `session.waiting`, `session.completed`, `session.failed` | Session creation, A/B enrollment, readiness, and task completion |
78
+ | Session | `session.started`, `session.waiting`, `session.completed`, `session.failed` | Session creation, readiness, and task completion |
79
79
  | Agent | `agent.bound` | Cloud conversation URL |
80
80
  | Input | `message.received` | A user message was accepted |
81
81
  | Turn | `turn.queued`, `turn.started`, `turn.completed`, `turn.failed` | Queue position under a [`maxRunningTurns` cap](/docs/reference/agent-config.md#concurrency), then turn status, final result, and token usage |
@@ -159,5 +159,4 @@ view.
159
159
 
160
160
  - [HTTP API](/docs/reference/http-api.md)
161
161
  - [Hooks](/docs/reference/hooks.md)
162
- - [Live A/B metrics](/docs/ab.md)
163
162
  - [How the Agent SDK works](/docs/concepts.md)