@cursor/july 0.1.100 → 0.1.102

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 (484) hide show
  1. package/README.md +27 -0
  2. package/dist/bin/agent-serve.js +3 -2
  3. package/dist/channels/deployments/deployments-channel.d.ts +41 -5
  4. package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
  5. package/dist/channels/deployments/deployments-channel.js +88 -8
  6. package/dist/channels/deployments/types.d.ts +4 -3
  7. package/dist/channels/deployments/types.d.ts.map +1 -1
  8. package/dist/channels/origin/defaults.d.ts +43 -0
  9. package/dist/channels/origin/defaults.d.ts.map +1 -0
  10. package/dist/channels/origin/defaults.js +111 -0
  11. package/dist/channels/origin/index.d.ts +2 -0
  12. package/dist/channels/origin/index.d.ts.map +1 -1
  13. package/dist/channels/origin/index.js +2 -0
  14. package/dist/channels/origin/origin-channel.d.ts +2 -1
  15. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  16. package/dist/channels/origin/origin-channel.js +24 -3
  17. package/dist/channels/origin/state.d.ts +32 -0
  18. package/dist/channels/origin/state.d.ts.map +1 -0
  19. package/dist/channels/origin/state.js +23 -0
  20. package/dist/channels/origin/types.d.ts +23 -1
  21. package/dist/channels/origin/types.d.ts.map +1 -1
  22. package/dist/channels/slack/api.d.ts +1 -1
  23. package/dist/channels/slack/api.d.ts.map +1 -1
  24. package/dist/channels/slack/api.js +5 -2
  25. package/dist/channels/slack/assistant.d.ts +1 -1
  26. package/dist/channels/slack/assistant.d.ts.map +1 -1
  27. package/dist/channels/slack/code-fences.d.ts +17 -0
  28. package/dist/channels/slack/code-fences.d.ts.map +1 -0
  29. package/dist/channels/slack/code-fences.js +168 -0
  30. package/dist/channels/slack/dispatch.d.ts +3 -2
  31. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  32. package/dist/channels/slack/dispatch.js +28 -8
  33. package/dist/channels/slack/inbound.d.ts +8 -0
  34. package/dist/channels/slack/inbound.d.ts.map +1 -1
  35. package/dist/channels/slack/inbound.js +28 -0
  36. package/dist/channels/slack/index.d.ts +1 -0
  37. package/dist/channels/slack/index.d.ts.map +1 -1
  38. package/dist/channels/slack/index.js +1 -0
  39. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  40. package/dist/channels/slack/live-delivery.js +11 -4
  41. package/dist/channels/slack/manifest.d.ts.map +1 -1
  42. package/dist/channels/slack/manifest.js +2 -1
  43. package/dist/connections.d.ts +18 -2
  44. package/dist/connections.d.ts.map +1 -1
  45. package/dist/connections.js +18 -2
  46. package/dist/docs/404.html +2 -2
  47. package/dist/docs/ab.html +4 -4
  48. package/dist/docs/assets/{app.DZ1e0Ycq.js → app.CLA03RCz.js} +1 -1
  49. package/dist/docs/assets/chunks/@localSearchIndexroot.FAqdWIXo.js +1 -0
  50. package/dist/docs/assets/chunks/{VPLocalSearchBox.l8omwc6D.js → VPLocalSearchBox.ifxv-cJV.js} +1 -1
  51. package/dist/docs/assets/chunks/{theme.JVcD6gel.js → theme.DWCwM6p-.js} +2 -2
  52. package/dist/docs/assets/concepts.md.rPzW2HZN.js +1 -0
  53. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +9 -0
  54. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.lean.js +1 -0
  55. package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.js → guides_cloud-runtime.md.BRirbRAN.js} +1 -1
  56. package/dist/docs/assets/index.md.Kiht7ell.js +5 -0
  57. package/dist/docs/assets/{index.md.Bb4k8kUm.lean.js → index.md.Kiht7ell.lean.js} +1 -1
  58. package/dist/docs/assets/{reference_connections.md.BiGoBAk2.js → reference_connections.md.Di6jJAXF.js} +12 -2
  59. package/dist/docs/assets/{reference_connections.md.BiGoBAk2.lean.js → reference_connections.md.Di6jJAXF.lean.js} +1 -1
  60. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.js +56 -0
  61. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +1 -0
  62. package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.js → reference_http-api.md.oySXBO8o.js} +1 -1
  63. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.js → reference_project-layout.md.CA6QP6Lw.js} +2 -2
  64. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.lean.js → reference_project-layout.md.CA6QP6Lw.lean.js} +1 -1
  65. package/dist/docs/assets/{reference_skills.md.BFW9retM.js → reference_skills.md.l2ezAcaN.js} +1 -1
  66. package/dist/docs/assets/{reference_tools.md.CvAHsdSp.js → reference_tools.md.B1up2r9W.js} +1 -1
  67. package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +1 -0
  68. package/dist/docs/assets/{skills_framework-map.md.BTi817yv.lean.js → skills_framework-map.md.DDa4MeEW.lean.js} +1 -1
  69. package/dist/docs/building-with-agents.html +4 -4
  70. package/dist/docs/concepts.html +5 -5
  71. package/dist/docs/concepts.md +3 -3
  72. package/dist/docs/deployment.html +4 -4
  73. package/dist/docs/evals.html +4 -4
  74. package/dist/docs/guides/agent-to-agent.html +4 -4
  75. package/dist/docs/guides/cloud-agents.html +35 -0
  76. package/dist/docs/guides/cloud-agents.md +93 -0
  77. package/dist/docs/guides/cloud-runtime.html +6 -6
  78. package/dist/docs/guides/cloud-runtime.md +2 -0
  79. package/dist/docs/guides/convert-automation.html +4 -4
  80. package/dist/docs/guides/github.html +4 -4
  81. package/dist/docs/guides/human-in-the-loop.html +4 -4
  82. package/dist/docs/guides/mcp-oauth.html +4 -4
  83. package/dist/docs/guides/opentelemetry.html +5 -5
  84. package/dist/docs/guides/slack.html +4 -4
  85. package/dist/docs/guides/webhooks.html +4 -4
  86. package/dist/docs/hashmap.json +1 -1
  87. package/dist/docs/hillclimbing.html +4 -4
  88. package/dist/docs/index.html +6 -6
  89. package/dist/docs/index.md +5 -1
  90. package/dist/docs/llms-full.txt +353 -5
  91. package/dist/docs/llms.txt +2 -0
  92. package/dist/docs/quickstart.html +4 -4
  93. package/dist/docs/reference/agent-config.html +4 -4
  94. package/dist/docs/reference/artifacts.html +4 -4
  95. package/dist/docs/reference/channels.html +5 -5
  96. package/dist/docs/reference/cli.html +4 -4
  97. package/dist/docs/reference/connections.html +16 -6
  98. package/dist/docs/reference/connections.md +31 -0
  99. package/dist/docs/reference/extensions.html +82 -0
  100. package/dist/docs/reference/extensions.md +200 -0
  101. package/dist/docs/reference/hooks.html +4 -4
  102. package/dist/docs/reference/http-api.html +6 -6
  103. package/dist/docs/reference/http-api.md +1 -1
  104. package/dist/docs/reference/instructions.html +4 -4
  105. package/dist/docs/reference/playground.html +4 -4
  106. package/dist/docs/reference/project-layout.html +6 -6
  107. package/dist/docs/reference/project-layout.md +3 -0
  108. package/dist/docs/reference/prompt.html +4 -4
  109. package/dist/docs/reference/schedules.html +4 -4
  110. package/dist/docs/reference/sessions.html +4 -4
  111. package/dist/docs/reference/skills.html +6 -6
  112. package/dist/docs/reference/skills.md +2 -0
  113. package/dist/docs/reference/subagents.html +5 -5
  114. package/dist/docs/reference/tools.html +6 -6
  115. package/dist/docs/reference/tools.md +2 -0
  116. package/dist/docs/scaffolding-agents.html +4 -4
  117. package/dist/docs/skills/ab.html +4 -4
  118. package/dist/docs/skills/create-agent.html +4 -4
  119. package/dist/docs/skills/debug.html +4 -4
  120. package/dist/docs/skills/evals.html +4 -4
  121. package/dist/docs/skills/framework-map.html +5 -5
  122. package/dist/docs/skills/framework-map.md +1 -0
  123. package/dist/docs/skills/github.html +4 -4
  124. package/dist/docs/skills/hillclimb.html +4 -4
  125. package/dist/docs/skills/index.html +4 -4
  126. package/dist/docs/skills/mcp-auth.html +4 -4
  127. package/dist/docs/skills/otel.html +4 -4
  128. package/dist/docs/skills/setup-slack.html +4 -4
  129. package/dist/docs/storage.html +4 -4
  130. package/dist/docs/templates/agentic-owners.html +4 -4
  131. package/dist/docs/templates/agents-md.html +4 -4
  132. package/dist/docs/templates/code-wiki.html +4 -4
  133. package/dist/docs/templates/demo.html +4 -4
  134. package/dist/docs/templates/pr-autofixer.html +4 -4
  135. package/dist/docs/templates/security-help.html +4 -4
  136. package/dist/docs/templates/security-reviewer.html +4 -4
  137. package/dist/docs/templates/triage.html +4 -4
  138. package/dist/docs/troubleshooting.html +4 -4
  139. package/dist/extensions/cursor-cloud-agents/extension.d.ts +57 -0
  140. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -0
  141. package/dist/extensions/cursor-cloud-agents/extension.js +66 -0
  142. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +78 -0
  143. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -0
  144. package/dist/extensions/cursor-cloud-agents/lib/backend.js +286 -0
  145. package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts +25 -0
  146. package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts.map +1 -0
  147. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +85 -0
  148. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +5 -0
  149. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -0
  150. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +4 -0
  151. package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts +15 -0
  152. package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts.map +1 -0
  153. package/dist/extensions/cursor-cloud-agents/lib/repos.js +55 -0
  154. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts +8 -0
  155. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts.map +1 -0
  156. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +15 -0
  157. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +41 -0
  158. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts +4 -0
  159. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -0
  160. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +26 -0
  161. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts +4 -0
  162. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts.map +1 -0
  163. package/dist/extensions/cursor-cloud-agents/tools/dump.js +54 -0
  164. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts +4 -0
  165. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts.map +1 -0
  166. package/dist/extensions/cursor-cloud-agents/tools/get.js +25 -0
  167. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts +4 -0
  168. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -0
  169. package/dist/extensions/cursor-cloud-agents/tools/launch.js +59 -0
  170. package/dist/extensions/cursor-cloud-agents/tools/list.d.ts +4 -0
  171. package/dist/extensions/cursor-cloud-agents/tools/list.d.ts.map +1 -0
  172. package/dist/extensions/cursor-cloud-agents/tools/list.js +36 -0
  173. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts +4 -0
  174. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts.map +1 -0
  175. package/dist/extensions/cursor-cloud-agents/tools/reply.js +35 -0
  176. package/dist/extensions.d.ts +73 -0
  177. package/dist/extensions.d.ts.map +1 -0
  178. package/dist/extensions.js +112 -0
  179. package/dist/files-backends/cursor-hosted.d.ts +0 -8
  180. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  181. package/dist/files-backends/cursor-hosted.js +1 -11
  182. package/dist/files.d.ts +5 -1
  183. package/dist/files.d.ts.map +1 -1
  184. package/dist/files.js +22 -18
  185. package/dist/index.d.ts +4 -3
  186. package/dist/index.d.ts.map +1 -1
  187. package/dist/index.js +3 -2
  188. package/dist/internal/advertise-tools.d.ts +4 -1
  189. package/dist/internal/advertise-tools.d.ts.map +1 -1
  190. package/dist/internal/advertise-tools.js +20 -1
  191. package/dist/internal/as-of.d.ts +18 -0
  192. package/dist/internal/as-of.d.ts.map +1 -1
  193. package/dist/internal/as-of.js +131 -0
  194. package/dist/internal/cli-deploy.d.ts.map +1 -1
  195. package/dist/internal/cli-deploy.js +64 -19
  196. package/dist/internal/continuation-identity.d.ts.map +1 -1
  197. package/dist/internal/continuation-identity.js +3 -1
  198. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  199. package/dist/internal/conversation-mirror.js +13 -15
  200. package/dist/internal/cursor/backend-client.d.ts +8 -1
  201. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  202. package/dist/internal/cursor/backend-client.js +25 -9
  203. package/dist/internal/cursor/hosted-deployment-secrets.d.ts +16 -0
  204. package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -0
  205. package/dist/internal/cursor/hosted-deployment-secrets.js +61 -0
  206. package/dist/internal/cursor/hosted-store-secrets.d.ts +11 -0
  207. package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
  208. package/dist/internal/cursor/hosted-store-secrets.js +15 -0
  209. package/dist/internal/cursor-deployment-relay.d.ts +15 -1
  210. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  211. package/dist/internal/cursor-deployment-relay.js +46 -7
  212. package/dist/internal/deploy-client.d.ts +23 -0
  213. package/dist/internal/deploy-client.d.ts.map +1 -1
  214. package/dist/internal/deploy-client.js +54 -12
  215. package/dist/internal/discovery/ab.d.ts +9 -0
  216. package/dist/internal/discovery/ab.d.ts.map +1 -0
  217. package/dist/internal/discovery/ab.js +101 -0
  218. package/dist/internal/discovery/agent-config.d.ts +35 -0
  219. package/dist/internal/discovery/agent-config.d.ts.map +1 -0
  220. package/dist/internal/discovery/agent-config.js +173 -0
  221. package/dist/internal/discovery/agent.d.ts +11 -0
  222. package/dist/internal/discovery/agent.d.ts.map +1 -0
  223. package/dist/internal/discovery/agent.js +306 -0
  224. package/dist/internal/discovery/channels.d.ts +10 -0
  225. package/dist/internal/discovery/channels.d.ts.map +1 -0
  226. package/dist/internal/discovery/channels.js +97 -0
  227. package/dist/internal/discovery/connections.d.ts +17 -0
  228. package/dist/internal/discovery/connections.d.ts.map +1 -0
  229. package/dist/internal/discovery/connections.js +436 -0
  230. package/dist/internal/discovery/context.d.ts +20 -0
  231. package/dist/internal/discovery/context.d.ts.map +1 -0
  232. package/dist/internal/discovery/context.js +30 -0
  233. package/dist/internal/discovery/cursor-plugin.d.ts +25 -0
  234. package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -0
  235. package/dist/internal/discovery/cursor-plugin.js +570 -0
  236. package/dist/internal/discovery/extensions.d.ts +19 -0
  237. package/dist/internal/discovery/extensions.d.ts.map +1 -0
  238. package/dist/internal/discovery/extensions.js +238 -0
  239. package/dist/internal/discovery/fs.d.ts +15 -0
  240. package/dist/internal/discovery/fs.d.ts.map +1 -0
  241. package/dist/internal/discovery/fs.js +115 -0
  242. package/dist/internal/discovery/hooks.d.ts +7 -0
  243. package/dist/internal/discovery/hooks.d.ts.map +1 -0
  244. package/dist/internal/discovery/hooks.js +48 -0
  245. package/dist/internal/discovery/info.d.ts +6 -0
  246. package/dist/internal/discovery/info.d.ts.map +1 -0
  247. package/dist/internal/discovery/info.js +141 -0
  248. package/dist/internal/discovery/instructions.d.ts +7 -0
  249. package/dist/internal/discovery/instructions.d.ts.map +1 -0
  250. package/dist/internal/discovery/instructions.js +95 -0
  251. package/dist/internal/discovery/modules.d.ts +20 -0
  252. package/dist/internal/discovery/modules.d.ts.map +1 -0
  253. package/dist/internal/discovery/modules.js +101 -0
  254. package/dist/internal/discovery/names.d.ts +12 -0
  255. package/dist/internal/discovery/names.d.ts.map +1 -0
  256. package/dist/internal/discovery/names.js +36 -0
  257. package/dist/internal/discovery/project.d.ts +53 -0
  258. package/dist/internal/discovery/project.d.ts.map +1 -0
  259. package/dist/internal/discovery/project.js +239 -0
  260. package/dist/internal/discovery/runtime.d.ts +34 -0
  261. package/dist/internal/discovery/runtime.d.ts.map +1 -0
  262. package/dist/internal/discovery/runtime.js +98 -0
  263. package/dist/internal/discovery/schedules.d.ts +7 -0
  264. package/dist/internal/discovery/schedules.d.ts.map +1 -0
  265. package/dist/internal/discovery/schedules.js +97 -0
  266. package/dist/internal/discovery/seed-files.d.ts +7 -0
  267. package/dist/internal/discovery/seed-files.d.ts.map +1 -0
  268. package/dist/internal/discovery/seed-files.js +41 -0
  269. package/dist/internal/discovery/services.d.ts +17 -0
  270. package/dist/internal/discovery/services.d.ts.map +1 -0
  271. package/dist/internal/discovery/services.js +104 -0
  272. package/dist/internal/discovery/skills.d.ts +16 -0
  273. package/dist/internal/discovery/skills.d.ts.map +1 -0
  274. package/dist/internal/discovery/skills.js +151 -0
  275. package/dist/internal/discovery/subagent.d.ts +13 -0
  276. package/dist/internal/discovery/subagent.d.ts.map +1 -0
  277. package/dist/internal/discovery/subagent.js +19 -0
  278. package/dist/internal/discovery/tools.d.ts +18 -0
  279. package/dist/internal/discovery/tools.d.ts.map +1 -0
  280. package/dist/internal/discovery/tools.js +159 -0
  281. package/dist/internal/discovery.d.ts +8 -62
  282. package/dist/internal/discovery.d.ts.map +1 -1
  283. package/dist/internal/discovery.js +8 -2210
  284. package/dist/internal/distribution.d.ts.map +1 -1
  285. package/dist/internal/distribution.js +5 -0
  286. package/dist/internal/framework-file-storage.d.ts +3 -3
  287. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  288. package/dist/internal/framework-file-storage.js +38 -9
  289. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  290. package/dist/internal/framework-storage-selection.js +8 -7
  291. package/dist/internal/frontmatter.d.ts +11 -3
  292. package/dist/internal/frontmatter.d.ts.map +1 -1
  293. package/dist/internal/frontmatter.js +29 -3
  294. package/dist/internal/hosted-delivery.d.ts +3 -1
  295. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  296. package/dist/internal/hosted-delivery.js +19 -32
  297. package/dist/internal/hosted-execution-diag.d.ts +5 -0
  298. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  299. package/dist/internal/hosted-execution-diag.js +5 -0
  300. package/dist/internal/hosted-execution-flush.d.ts +46 -0
  301. package/dist/internal/hosted-execution-flush.d.ts.map +1 -0
  302. package/dist/internal/hosted-execution-flush.js +81 -0
  303. package/dist/internal/mcp-endpoint.js +1 -0
  304. package/dist/internal/mcp-host.d.ts +2 -1
  305. package/dist/internal/mcp-host.d.ts.map +1 -1
  306. package/dist/internal/mcp-host.js +66 -29
  307. package/dist/internal/otel/collector.d.ts +13 -0
  308. package/dist/internal/otel/collector.d.ts.map +1 -1
  309. package/dist/internal/otel/collector.js +84 -17
  310. package/dist/internal/otel/http.d.ts.map +1 -1
  311. package/dist/internal/otel/http.js +2 -10
  312. package/dist/internal/otel/mcp.d.ts +16 -0
  313. package/dist/internal/otel/mcp.d.ts.map +1 -0
  314. package/dist/internal/otel/mcp.js +68 -0
  315. package/dist/internal/otel/propagation.d.ts +6 -0
  316. package/dist/internal/otel/propagation.d.ts.map +1 -0
  317. package/dist/internal/otel/propagation.js +14 -0
  318. package/dist/internal/otel/runtime.d.ts.map +1 -1
  319. package/dist/internal/otel/runtime.js +2 -0
  320. package/dist/internal/review-comments.d.ts +1 -1
  321. package/dist/internal/review-comments.d.ts.map +1 -1
  322. package/dist/internal/review-comments.js +4 -4
  323. package/dist/internal/server.d.ts +3 -0
  324. package/dist/internal/server.d.ts.map +1 -1
  325. package/dist/internal/server.js +79 -104
  326. package/dist/internal/session-engine.d.ts +14 -7
  327. package/dist/internal/session-engine.d.ts.map +1 -1
  328. package/dist/internal/session-engine.js +113 -66
  329. package/dist/internal/session-run-log.d.ts +3 -1
  330. package/dist/internal/session-run-log.d.ts.map +1 -1
  331. package/dist/internal/session-run-log.js +14 -14
  332. package/dist/internal/start-log-store.d.ts +60 -0
  333. package/dist/internal/start-log-store.d.ts.map +1 -0
  334. package/dist/internal/start-log-store.js +149 -0
  335. package/dist/internal/storage-coordinator.d.ts +4 -1
  336. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  337. package/dist/internal/storage-coordinator.js +15 -13
  338. package/dist/internal/tool-catalog.d.ts.map +1 -1
  339. package/dist/internal/tool-catalog.js +9 -6
  340. package/dist/internal/tool-policy.d.ts +8 -0
  341. package/dist/internal/tool-policy.d.ts.map +1 -1
  342. package/dist/internal/tool-policy.js +19 -7
  343. package/dist/internal/turn-cost.d.ts +14 -0
  344. package/dist/internal/turn-cost.d.ts.map +1 -1
  345. package/dist/internal/turn-cost.js +41 -9
  346. package/dist/internal/v2-hosting.d.ts +22 -0
  347. package/dist/internal/v2-hosting.d.ts.map +1 -0
  348. package/dist/internal/v2-hosting.js +23 -0
  349. package/dist/otel.d.ts +16 -0
  350. package/dist/otel.d.ts.map +1 -1
  351. package/dist/otel.js +26 -0
  352. package/dist/playground/assets/index-B6C9S9nG.css +1 -0
  353. package/dist/playground/assets/{index-DVs98vPL.js → index-ZqNoT8Ie.js} +45 -45
  354. package/dist/playground/index.html +2 -2
  355. package/dist/storage-protocol.d.ts +47 -22
  356. package/dist/storage-protocol.d.ts.map +1 -1
  357. package/dist/storage-protocol.js +90 -54
  358. package/dist/storage.d.ts +2 -2
  359. package/dist/storage.d.ts.map +1 -1
  360. package/dist/storage.js +1 -1
  361. package/dist/tools.d.ts +9 -0
  362. package/dist/tools.d.ts.map +1 -1
  363. package/dist/tools.js +9 -0
  364. package/dist/types.d.ts +154 -6
  365. package/dist/types.d.ts.map +1 -1
  366. package/dist/types.js +29 -1
  367. package/docs/README.md +5 -1
  368. package/docs/concepts.md +3 -3
  369. package/docs/guides/cloud-agents.md +98 -0
  370. package/docs/guides/cloud-runtime.md +2 -0
  371. package/docs/reference/connections.md +31 -0
  372. package/docs/reference/extensions.md +205 -0
  373. package/docs/reference/http-api.md +1 -1
  374. package/docs/reference/project-layout.md +3 -0
  375. package/docs/reference/skills.md +2 -0
  376. package/docs/reference/tools.md +2 -0
  377. package/package.json +18 -4
  378. package/skills/framework-map/SKILL.md +1 -0
  379. package/src/bin/agent-serve.ts +11 -2
  380. package/src/channels/deployments/deployments-channel.ts +117 -8
  381. package/src/channels/deployments/types.ts +4 -3
  382. package/src/channels/origin/defaults.ts +143 -0
  383. package/src/channels/origin/index.ts +2 -0
  384. package/src/channels/origin/origin-channel.ts +37 -1
  385. package/src/channels/origin/state.ts +54 -0
  386. package/src/channels/origin/types.ts +24 -0
  387. package/src/channels/slack/api.ts +6 -3
  388. package/src/channels/slack/assistant.ts +1 -1
  389. package/src/channels/slack/code-fences.ts +183 -0
  390. package/src/channels/slack/dispatch.ts +27 -2
  391. package/src/channels/slack/inbound.ts +37 -0
  392. package/src/channels/slack/index.ts +1 -0
  393. package/src/channels/slack/live-delivery.ts +16 -13
  394. package/src/channels/slack/manifest.ts +2 -1
  395. package/src/connections.ts +18 -1
  396. package/src/extensions/cursor-cloud-agents/extension.ts +120 -0
  397. package/src/extensions/cursor-cloud-agents/lib/backend.ts +395 -0
  398. package/src/extensions/cursor-cloud-agents/lib/fleet.ts +109 -0
  399. package/src/extensions/cursor-cloud-agents/lib/inputs.ts +5 -0
  400. package/src/extensions/cursor-cloud-agents/lib/repos.ts +81 -0
  401. package/src/extensions/cursor-cloud-agents/lib/transcript.ts +23 -0
  402. package/src/extensions/cursor-cloud-agents/skills/handoff.md +41 -0
  403. package/src/extensions/cursor-cloud-agents/tools/cancel.ts +19 -0
  404. package/src/extensions/cursor-cloud-agents/tools/dump.ts +51 -0
  405. package/src/extensions/cursor-cloud-agents/tools/get.ts +18 -0
  406. package/src/extensions/cursor-cloud-agents/tools/launch.ts +64 -0
  407. package/src/extensions/cursor-cloud-agents/tools/list.ts +31 -0
  408. package/src/extensions/cursor-cloud-agents/tools/reply.ts +34 -0
  409. package/src/extensions.ts +141 -0
  410. package/src/files-backends/cursor-hosted.ts +1 -17
  411. package/src/files.ts +43 -34
  412. package/src/index.ts +11 -0
  413. package/src/internal/advertise-tools.ts +37 -12
  414. package/src/internal/as-of.ts +163 -0
  415. package/src/internal/cli-deploy.ts +86 -23
  416. package/src/internal/continuation-identity.ts +3 -1
  417. package/src/internal/conversation-mirror.ts +23 -18
  418. package/src/internal/cursor/backend-client.ts +32 -10
  419. package/src/internal/cursor/hosted-deployment-secrets.ts +72 -0
  420. package/src/internal/cursor/hosted-store-secrets.ts +27 -0
  421. package/src/internal/cursor-deployment-relay.ts +65 -8
  422. package/src/internal/deploy-client.ts +73 -18
  423. package/src/internal/discovery/ab.ts +111 -0
  424. package/src/internal/discovery/agent-config.ts +222 -0
  425. package/src/internal/discovery/agent.ts +360 -0
  426. package/src/internal/discovery/channels.ts +103 -0
  427. package/src/internal/discovery/connections.ts +540 -0
  428. package/src/internal/discovery/context.ts +46 -0
  429. package/src/internal/discovery/cursor-plugin.ts +708 -0
  430. package/src/internal/discovery/extensions.ts +348 -0
  431. package/src/internal/discovery/fs.ts +108 -0
  432. package/src/internal/discovery/hooks.ts +45 -0
  433. package/src/internal/discovery/info.ts +179 -0
  434. package/src/internal/discovery/instructions.ts +113 -0
  435. package/src/internal/discovery/modules.ts +107 -0
  436. package/src/internal/discovery/names.ts +44 -0
  437. package/src/internal/discovery/project.ts +270 -0
  438. package/src/internal/discovery/runtime.ts +159 -0
  439. package/src/internal/discovery/schedules.ts +94 -0
  440. package/src/internal/discovery/seed-files.ts +37 -0
  441. package/src/internal/discovery/services.ts +124 -0
  442. package/src/internal/discovery/skills.ts +176 -0
  443. package/src/internal/discovery/subagent.ts +29 -0
  444. package/src/internal/discovery/tools.ts +182 -0
  445. package/src/internal/discovery.ts +20 -2724
  446. package/src/internal/distribution.ts +5 -0
  447. package/src/internal/framework-file-storage.ts +43 -9
  448. package/src/internal/framework-storage-selection.ts +9 -9
  449. package/src/internal/frontmatter.ts +36 -3
  450. package/src/internal/hosted-delivery.ts +38 -63
  451. package/src/internal/hosted-execution-diag.ts +6 -0
  452. package/src/internal/hosted-execution-flush.ts +142 -0
  453. package/src/internal/mcp-endpoint.ts +1 -0
  454. package/src/internal/mcp-host.ts +116 -37
  455. package/src/internal/otel/collector.ts +125 -25
  456. package/src/internal/otel/http.ts +2 -12
  457. package/src/internal/otel/mcp.ts +69 -0
  458. package/src/internal/otel/propagation.ts +17 -0
  459. package/src/internal/otel/runtime.ts +2 -0
  460. package/src/internal/review-comments.ts +5 -2
  461. package/src/internal/server.ts +81 -100
  462. package/src/internal/session-engine.ts +152 -39
  463. package/src/internal/session-run-log.ts +18 -16
  464. package/src/internal/start-log-store.ts +174 -0
  465. package/src/internal/storage-coordinator.ts +19 -16
  466. package/src/internal/tool-catalog.ts +9 -6
  467. package/src/internal/tool-policy.ts +39 -9
  468. package/src/internal/turn-cost.ts +47 -4
  469. package/src/internal/v2-hosting.ts +38 -0
  470. package/src/otel.ts +38 -0
  471. package/src/storage-protocol.ts +126 -79
  472. package/src/storage.ts +5 -0
  473. package/src/tools.ts +18 -0
  474. package/src/types.ts +213 -14
  475. package/dist/docs/assets/chunks/@localSearchIndexroot.j70vvPL4.js +0 -1
  476. package/dist/docs/assets/concepts.md.lwAgBIMI.js +0 -1
  477. package/dist/docs/assets/index.md.Bb4k8kUm.js +0 -5
  478. package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +0 -1
  479. package/dist/playground/assets/index-BszoQDc6.css +0 -1
  480. /package/dist/docs/assets/{concepts.md.lwAgBIMI.lean.js → concepts.md.rPzW2HZN.lean.js} +0 -0
  481. /package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.lean.js → guides_cloud-runtime.md.BRirbRAN.lean.js} +0 -0
  482. /package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.lean.js → reference_http-api.md.oySXBO8o.lean.js} +0 -0
  483. /package/dist/docs/assets/{reference_skills.md.BFW9retM.lean.js → reference_skills.md.l2ezAcaN.lean.js} +0 -0
  484. /package/dist/docs/assets/{reference_tools.md.CvAHsdSp.lean.js → reference_tools.md.B1up2r9W.lean.js} +0 -0
@@ -508,9 +508,9 @@ name. For example, `agent/tools/get_weather.ts` creates a tool named
508
508
  | `agent/ab.ts` or `agent/ab/*.ts` | Sticky variants and live performance metrics |
509
509
  | `evals/**/*.eval.ts` | Repeatable checks at the project root |
510
510
 
511
- Other folders add subagents, hooks, schedules, and workspace files. You
512
- don't register them elsewhere. Run `agent-sdk validate` to catch
513
- invalid files before serving the project.
511
+ Other folders add subagents, extensions, hooks, schedules, and workspace
512
+ files. You don't register them elsewhere. Run `agent-sdk validate` to
513
+ catch invalid files before serving the project.
514
514
 
515
515
  See [Project layout](/docs/reference/project-layout.md) for the folder
516
516
  structure.
@@ -3436,6 +3436,104 @@ Continue with these pages:
3436
3436
 
3437
3437
  ---
3438
3438
 
3439
+ Source: /docs/guides/cloud-agents.md
3440
+
3441
+ # Cursor cloud agents
3442
+
3443
+ The `cursor-cloud-agents` extension lets an agent delegate coding work
3444
+ to Cursor cloud agents and stay in the conversation while they do it.
3445
+ The cloud agents work on real repository checkouts and push branches and
3446
+ pull requests; your agent hands off the task, reports back, and answers
3447
+ questions in the meantime. A Slack triage agent turns a bug report into
3448
+ a PR, a planner fans a refactor out across repositories, a reviewer asks
3449
+ a cloud agent to address its own comments.
3450
+
3451
+ This is different from the [cloud runtime](/docs/guides/cloud-runtime.md). The
3452
+ runtime moves *this* agent's turns onto a cloud VM. The extension keeps
3453
+ the agent where it is and lets it start *other* cloud agents.
3454
+
3455
+ ## Mount it
3456
+
3457
+ The extension ships with `@cursor/july`. Mount it with one file.
3458
+
3459
+ ```ts
3460
+ // agent/extensions/cloud.ts
3461
+ import cursorCloudAgents from "@cursor/july/extensions/cursor-cloud-agents";
3462
+
3463
+ export default cursorCloudAgents({
3464
+ cloud: {
3465
+ repos: [{ url: "https://github.com/acme/api", startingRef: "main" }],
3466
+ autoCreatePR: true,
3467
+ },
3468
+ });
3469
+ ```
3470
+
3471
+ Launches run under the host's signed-in account (`agent-sdk login` or
3472
+ `CURSOR_API_KEY`) and spend its cloud-agent budget. Name the
3473
+ repositories the agent may target, and keep approval on when you can't.
3474
+
3475
+ Mount it on an agent that runs on the local runtime; that is where
3476
+ launches park for approval. On the
3477
+ [cloud runtime](/docs/guides/cloud-runtime.md#what-changes-on-cloud) approvals
3478
+ don't resolve.
3479
+
3480
+ ## What the agent can do
3481
+
3482
+ With the extension mounted, the agent can hand off coding work and stay
3483
+ in the conversation while it happens:
3484
+
3485
+ - **Hand off a task.** Launch a cloud agent on one of your repositories,
3486
+ or on a pull request, with a self-contained brief. It gets back an
3487
+ agent id and a URL to share.
3488
+ - **Check on it.** See whether the agent is still running, what it
3489
+ produced, and which branches or pull requests it pushed.
3490
+ - **Read what was done.** Pull the agent's full conversation into the
3491
+ workspace, quote its final report, or trace the exact edits before
3492
+ summarizing for a person.
3493
+ - **Steer or stop.** Send a follow-up to an agent it launched; it queues
3494
+ behind the current run, or interrupts it on request. Cancel a run that
3495
+ went sideways.
3496
+ - **Keep track.** List the agents launched in this conversation, or
3497
+ everything it has launched before.
3498
+
3499
+ A skill teaches the model when to delegate, how to write a brief a cloud
3500
+ agent can act on alone, and how to follow up. Everything the extension
3501
+ launches stays bound to whoever launched it: an agent started by another
3502
+ user, or outside the extension, is out of reach. That separation is only
3503
+ as fine as your host's auth; a shared bearer token or `--allow-anonymous`
3504
+ makes every caller one principal, so use
3505
+ [authored auth](/docs/reference/channels.md#auth-policies) when callers need
3506
+ their own.
3507
+
3508
+ ## Configure it
3509
+
3510
+ | Option | What it controls |
3511
+ | --- | --- |
3512
+ | `cloud` | Launch defaults, in the same shape as the agent's own [cloud options](/docs/reference/agent-config.md#cloud-options). |
3513
+ | `cloud.repos` | The repositories the agent may hand work to, with a default branch or pull request for each. Without it, launches run with no repository and the model can't name one, so secrets in `cloud.envVars` never reach a repository you didn't list. |
3514
+ | `model` | The model launched agents run. Omit it to use the account default. |
3515
+ | `needsApproval` | Park launches and follow-ups for a [human decision](/docs/guides/human-in-the-loop.md). Defaults to `true` when no `cloud.repos` are configured, `false` otherwise. |
3516
+ | `apiKey` | A Cursor API key to launch with instead of the host's own. |
3517
+
3518
+ ## Adjust it
3519
+
3520
+ To take a capability away, such as sending follow-ups, mount as a
3521
+ directory and disable that tool; see
3522
+ [overlays](/docs/reference/extensions.md#adjust-a-mounted-extension).
3523
+
3524
+ ## What's next
3525
+
3526
+ Continue with these pages:
3527
+
3528
+ - [Extensions](/docs/reference/extensions.md): how mounts, namespaces, and
3529
+ overrides work
3530
+ - [Human-in-the-loop approvals](/docs/guides/human-in-the-loop.md): where parked
3531
+ launches get approved
3532
+ - [Cloud runtime](/docs/guides/cloud-runtime.md): run the agent's own turns on
3533
+ cloud agents instead
3534
+
3535
+ ---
3536
+
3439
3537
  Source: /docs/guides/cloud-runtime.md
3440
3538
 
3441
3539
  # Cloud runtime
@@ -3553,6 +3651,8 @@ Continue with these pages:
3553
3651
  `cloud` fields
3554
3652
  - [GitHub guide](/docs/guides/github.md): the webhook patterns that pair with
3555
3653
  cloud triage
3654
+ - [Cursor cloud agents](/docs/guides/cloud-agents.md): keep the agent local and
3655
+ let it launch cloud agents instead
3556
3656
 
3557
3657
  ---
3558
3658
 
@@ -5404,6 +5504,7 @@ npx @cursor/july docs
5404
5504
  | Starting from a packaged template | [Demo](/docs/templates/demo.md), [Code wiki](/docs/templates/code-wiki.md), [Living AGENTS.md](/docs/templates/agents-md.md), [Security reviewer](/docs/templates/security-reviewer.md), [Security help](/docs/templates/security-help.md), [Triage](/docs/templates/triage.md), or [Agentic Owners](/docs/templates/agentic-owners.md) |
5405
5505
  | Wiring an agent to GitHub webhooks | [GitHub guide](/docs/guides/github.md) |
5406
5506
  | Driving PRs from a cloud VM | [PR autofixer template](/docs/templates/pr-autofixer.md) |
5507
+ | Handing coding work to Cursor cloud agents | [Cursor cloud agents](/docs/guides/cloud-agents.md) |
5407
5508
  | Driving an agent from Linear (or another tracker) | [Webhooks guide: Linear example](/docs/guides/webhooks.md#example-linear-as-the-control-plane) |
5408
5509
  | Making an existing agent measurably better | [Evals](/docs/evals.md), then [Hillclimbing](/docs/hillclimbing.md) |
5409
5510
  | Comparing variants on live traffic | [Live A/B metrics](/docs/ab.md) |
@@ -5470,6 +5571,8 @@ npx @cursor/july docs
5470
5571
  server; agents can delegate to each other.
5471
5572
  - [Cloud runtime](/docs/guides/cloud-runtime.md): run turns on Cursor cloud
5472
5573
  agents instead of the local harness.
5574
+ - [Cursor cloud agents](/docs/guides/cloud-agents.md): let the agent launch
5575
+ and steer cloud agents through the `cursor-cloud-agents` extension.
5473
5576
  - [OpenTelemetry](/docs/guides/opentelemetry.md): push session, turn, and
5474
5577
  tool traces to an OTLP collector you run.
5475
5578
 
@@ -5489,7 +5592,8 @@ npx @cursor/july docs
5489
5592
  [`prompt`](/docs/reference/prompt.md) ·
5490
5593
  [Skills](/docs/reference/skills.md) ·
5491
5594
  [MCP connections](/docs/reference/connections.md) ·
5492
- [Subagents](/docs/reference/subagents.md)
5595
+ [Subagents](/docs/reference/subagents.md) ·
5596
+ [Extensions](/docs/reference/extensions.md)
5493
5597
  - [Channels](/docs/reference/channels.md) ·
5494
5598
  [Schedules and reminders](/docs/reference/schedules.md) ·
5495
5599
  [Hooks](/docs/reference/hooks.md) ·
@@ -7606,6 +7710,37 @@ be called through the direct tool API.
7606
7710
  In a dry-run session, MCP tools marked read-only run normally. Tools marked
7607
7711
  as writes are stubbed. Tools without effect annotations are unavailable.
7608
7712
 
7713
+ ## Restrict which tools a connection serves
7714
+
7715
+ Use `tools` the same way you allowlist harness tools on the agent. When
7716
+ set, the connection serves only those names. Use `disallowedTools` to
7717
+ drop names instead. The two combine as deny-wins, same as the Cursor
7718
+ SDK. The model and `host.mcp` only see what remains. On a model-visible
7719
+ connection, set `advertiseTools: true` so the raw server is not attached.
7720
+
7721
+ ```ts
7722
+ export default defineConnection({
7723
+ url: "https://mcp.example.com/inventory",
7724
+ advertiseTools: true,
7725
+ tools: ["search_skus", "get_stock"],
7726
+ });
7727
+
7728
+ export default defineConnection({
7729
+ url: "https://mcp.example.com/inventory",
7730
+ advertiseTools: true,
7731
+ disallowedTools: ["place_order", "delete_sku"],
7732
+ });
7733
+ ```
7734
+
7735
+ Names are the server's `tools/list` names. Unknown names are omitted. A
7736
+ filter that matches nothing on the server fails the turn. Combine with
7737
+ `effects: "read"` to keep only the listed tools the server classifies as
7738
+ reads.
7739
+
7740
+ A list of names is an allowlist. An object of handlers authors TypeScript
7741
+ tools. On `host-connections/`, a name list restricts `host.mcp` without
7742
+ advertising.
7743
+
7609
7744
  ## Local stdio MCP server
7610
7745
 
7611
7746
  Run a local MCP server as a child process with `command`.
@@ -7758,6 +7893,211 @@ Continue with these pages:
7758
7893
 
7759
7894
  ---
7760
7895
 
7896
+ Source: /docs/reference/extensions.md
7897
+
7898
+ # Extensions
7899
+
7900
+ An extension packages tools and skills an agent installs as one unit. You
7901
+ mount it with a single file under `agent/extensions/`, and its
7902
+ contributions join the agent under a namespace. The package updates
7903
+ like any other dependency; nothing is copied into your project. A Cursor
7904
+ plugin mounts the same way; see [Mount a Cursor plugin](#mount-a-cursor-plugin).
7905
+
7906
+ ## Mount an extension
7907
+
7908
+ Install the package, then add one file. The filename is the namespace.
7909
+
7910
+ ```ts
7911
+ // agent/extensions/ci.ts
7912
+ import ci from "@acme/ci-triage";
7913
+
7914
+ export default ci({ org: "acme", token: process.env.BUILDKITE_TOKEN! });
7915
+ ```
7916
+
7917
+ Every contribution is exposed as `<namespace>__<name>`. A `failed_jobs`
7918
+ tool from this mount runs in the agent as `ci__failed_jobs`, and a
7919
+ `triage` skill loads as `ci__triage`. `agent-sdk info` lists each mount
7920
+ with what it contributed, and `GET /v1/info` returns the same under
7921
+ `extensions`.
7922
+
7923
+ Pass the configuration the extension asks for. The extension validates it
7924
+ when the agent loads, so a missing or mistyped field fails
7925
+ `agent-sdk validate` instead of a tool call later.
7926
+
7927
+ Namespaces follow the tool-name rule, and `__` is reserved: an authored
7928
+ `agent/tools/ci__failed_jobs.ts` fails discovery, so nothing outside a
7929
+ mount can pose as one of its tools.
7930
+
7931
+ ## Adjust a mounted extension
7932
+
7933
+ To replace or remove a contribution, mount the extension as a directory
7934
+ and overlay the slot you want to change.
7935
+
7936
+ ```text
7937
+ agent/extensions/ci/
7938
+ ├── extension.ts # the mount: export default ci({ ... })
7939
+ ├── tools/
7940
+ │ ├── job_log.ts # replaces ci__job_log with your own defineTool
7941
+ │ └── retry_job.ts # export default disableTool() removes ci__retry_job
7942
+ └── skills/
7943
+ └── triage.md # replaces ci__triage
7944
+ ```
7945
+
7946
+ Use the extension's own names inside the directory, without the
7947
+ namespace. A file with a name the extension doesn't contribute adds a
7948
+ new tool or skill under the namespace. `disableTool()` comes from
7949
+ `@cursor/july/extensions` and fails discovery when it names a tool the
7950
+ extension doesn't have, so a typo can't silently keep a tool alive.
7951
+ A Cursor plugin mount overlays its MCP servers the same way; see below.
7952
+
7953
+ ## Mount a Cursor plugin
7954
+
7955
+ A Cursor plugin is a directory with `.cursor-plugin/plugin.json` (or
7956
+ `.claude-plugin/plugin.json`, or `plugin.json`) and any of `skills/`,
7957
+ `commands/`, `agents/`, and `mcp.json`. Copy the plugin into your project
7958
+ and mount it with `cursorPlugin`. The filename is the namespace, as with
7959
+ any extension.
7960
+
7961
+ ```ts
7962
+ // agent/extensions/notion.ts
7963
+ import { cursorPlugin } from "@cursor/july/extensions";
7964
+
7965
+ export default cursorPlugin({
7966
+ path: "plugins/notion-workspace", // relative to the project root
7967
+ variables: { NOTION_TOKEN: process.env.NOTION_TOKEN! },
7968
+ });
7969
+ ```
7970
+
7971
+ The plugin joins the agent under that namespace:
7972
+
7973
+ | Plugin content | Becomes |
7974
+ | --- | --- |
7975
+ | `skills/<name>/SKILL.md` | skill `notion__<name>` |
7976
+ | `commands/<name>.md` | skill `notion__<name>`, since a command is a procedure the model runs on request |
7977
+ | `agents/<name>.md` | subagent `notion__<name>` |
7978
+ | MCP servers in `mcp.json` or the manifest | connection `notion__<server>` |
7979
+
7980
+ `variables` fills the `${NAME}` placeholders the plugin's MCP config
7981
+ declares; names you leave out come from the environment by exact name. A
7982
+ placeholder nothing fills fails `agent-sdk validate`, so a server never
7983
+ attaches half configured. A server that declares an OAuth client
7984
+ authorizes through [host MCP OAuth](/docs/guides/mcp-oauth.md) as
7985
+ `agent-sdk mcp oauth notion__<server>`; its secret names collapse the
7986
+ namespace separator, so `notion__notion` stores `MCP_OAUTH_NOTION_NOTION_*`.
7987
+ A server that lists `enabledTools` mounts as an advertised connection with
7988
+ that allowlist and requires the local runtime; `agent-sdk validate` fails
7989
+ otherwise.
7990
+
7991
+ Mounting a plugin trusts it like authored code: its servers run the
7992
+ commands and read the environment variables its config names. Review a
7993
+ plugin before you vendor it.
7994
+
7995
+ Plugin rules and hooks are not mounted; `agent-sdk validate` warns when a
7996
+ plugin carries them. To drop or reconfigure one of the plugin's servers,
7997
+ mount as a directory and overlay `mcp-connections/<server>.ts`. An
7998
+ overlaid server is never read from the plugin, so it needs no variables.
7999
+
8000
+ ```text
8001
+ agent/extensions/cloudflare/
8002
+ ├── extension.ts # export default cursorPlugin({ path: "plugins/cloudflare" })
8003
+ └── mcp-connections/
8004
+ ├── cloudflare-docs.ts # replaces cloudflare__cloudflare-docs with your defineConnection
8005
+ └── cloudflare-bindings.ts # export default disableConnection() drops it
8006
+ ```
8007
+
8008
+ `disableConnection()` comes from `@cursor/july/extensions` and fails
8009
+ discovery when it names a server the plugin doesn't declare.
8010
+
8011
+ ## Build an extension
8012
+
8013
+ An extension is a directory laid out like `agent/`. `extension.ts`
8014
+ declares it; `tools/` and `skills/` hold the contributions in the same
8015
+ authoring forms as [Tools](/docs/reference/tools.md) and [Skills](/docs/reference/skills.md).
8016
+
8017
+ ```text
8018
+ @acme/ci-triage/
8019
+ ├── package.json
8020
+ ├── extension.ts # defineExtension
8021
+ ├── tools/
8022
+ │ ├── failed_jobs.ts
8023
+ │ ├── job_log.ts
8024
+ │ └── retry_job.ts
8025
+ ├── skills/
8026
+ │ └── triage.md
8027
+ └── lib/
8028
+ └── buildkite.ts # shared code, never discovered
8029
+ ```
8030
+
8031
+ Declare the extension with its root and, when consumers must configure
8032
+ it, a schema for their settings.
8033
+
8034
+ ```ts
8035
+ // extension.ts
8036
+ import { defineExtension } from "@cursor/july/extensions";
8037
+ import { z } from "zod";
8038
+
8039
+ export default defineExtension({
8040
+ root: import.meta.dirname,
8041
+ description: "Investigate failing CI builds on Buildkite.",
8042
+ config: z.object({
8043
+ org: z.string(),
8044
+ token: z.string(),
8045
+ logTailLines: z.number().int().positive().default(200),
8046
+ }),
8047
+ });
8048
+ ```
8049
+
8050
+ The default export is what consumers call to mount the extension, and it
8051
+ is also how your own modules read the consumer's settings. Import it and
8052
+ read `extension.config`; the value is validated and has defaults applied.
8053
+
8054
+ ```ts
8055
+ // tools/job_log.ts
8056
+ import { defineTool } from "@cursor/july/tools";
8057
+ import { z } from "zod";
8058
+ import extension from "../extension.js";
8059
+ import { jobLogTail } from "../lib/buildkite.js";
8060
+
8061
+ export default defineTool({
8062
+ description: "Read the tail of a CI job's log.",
8063
+ effect: "read",
8064
+ inputSchema: z.object({ pipeline: z.string(), build: z.number(), job: z.string() }),
8065
+ async execute({ pipeline, build, job }) {
8066
+ const { org, token, logTailLines } = extension.config;
8067
+ return jobLogTail({ org, token, pipeline, build, job, lines: logTailLines });
8068
+ },
8069
+ });
8070
+ ```
8071
+
8072
+ Because the consumer picks the namespace, have skills and tool
8073
+ descriptions refer to sibling tools by their short names and say they
8074
+ appear under the mount's namespace (`<namespace>__job_log`).
8075
+
8076
+ Publish the built `extension.js` as the package entry point with
8077
+ `tools/` and `skills/` beside it. `root` is read from the built file, so
8078
+ copy `skills/*.md` into the build output or author skills as `.ts` with
8079
+ `defineSkill`.
8080
+
8081
+ Only `tools/` and `skills/` are mounted from an extension tree.
8082
+ Instructions, connections, hooks, channels, and the runtime
8083
+ configuration belong to the agent that mounts the extension;
8084
+ `agent-sdk validate` warns when a tree carries agent slots such as
8085
+ `instructions.md`, `connections/`, `hooks/`, `channels/`, or
8086
+ `schedules/`.
8087
+
8088
+ ## What's next
8089
+
8090
+ Continue with these pages:
8091
+
8092
+ - [Cursor cloud agents](/docs/guides/cloud-agents.md): the extension that
8093
+ lets an agent launch and steer cloud agents
8094
+ - [Tools](/docs/reference/tools.md): the tool contract extensions contribute to
8095
+ - [Skills](/docs/reference/skills.md): the skill forms an extension can carry
8096
+ - [Project layout](/docs/reference/project-layout.md): where `agent/extensions/` sits
8097
+ in the tree
8098
+
8099
+ ---
8100
+
7761
8101
  Source: /docs/reference/hooks.md
7762
8102
 
7763
8103
  # Hooks
@@ -7912,7 +8252,7 @@ and `playgroundUrl` deep-links the session in the playground.
7912
8252
  | `message` | Required user message |
7913
8253
  | `title` | Session title |
7914
8254
  | `dryRun` | Run read tools and stub write tools |
7915
- | `asOf` | ISO-8601 instant with a timezone, frozen at create; the prompt states it, `ctx.now()` returns it, and tools declaring `timeArgs` refuse calls not bounded at or before it. `400` when unusable |
8255
+ | `asOf` | ISO-8601 instant with a timezone, frozen at create; the prompt states it, `ctx.now()` returns it, and tool calls with relative, later-than-`asOf`, or omitted schema-declared time bounds are refused. `400` when unusable |
7916
8256
  | `workspaceFiles` | UTF-8 files written into the session workspace |
7917
8257
  | `cloud` | Per-session cloud options merged over the agent defaults |
7918
8258
 
@@ -8283,6 +8623,8 @@ experiments can override their file-derived name.
8283
8623
  | `agent/host-connections/anytool.ts` | Host MCP connection `anytool` (host + `mcp oauth` only) |
8284
8624
  | `agent/skills/pr-review.md` | skill `pr-review` |
8285
8625
  | `agent/subagents/reviewer/` | subagent `reviewer` |
8626
+ | `agent/extensions/ci.ts` | extension mount `ci`; its tools and skills become `ci__<name>` |
8627
+ | `agent/extensions/notion.ts` | Cursor plugin mount `notion` (`cursorPlugin`); its skills, agents, and MCP servers become `notion__<name>` |
8286
8628
  | `agent/channels/drive.ts` | channel `drive`, routes under `/v1/channels/drive` |
8287
8629
  | `agent/ab.ts` | A/B experiment `ab` unless `name` overrides it |
8288
8630
  | `agent/ab/concise.ts` | A/B experiment `concise` unless `name` overrides it |
@@ -8333,6 +8675,7 @@ Each path maps to a capability and a reference page.
8333
8675
  | `agent/mcp-connections/<name>.ts` | MCP servers, available to the model, to server tools (`ctx.host.mcp`), and to channel/schedule handlers (`args.host.mcp`) | [MCP connections](/docs/reference/connections.md) |
8334
8676
  | `agent/host-connections/<name>.ts` | Privileged MCP servers for `ctx.host.mcp` and `mcp oauth`. The model never sees them. | [MCP connections](/docs/reference/connections.md) |
8335
8677
  | `agent/subagents/<id>/` | Child agent directory; `description` required | [Subagents](/docs/reference/subagents.md) |
8678
+ | `agent/extensions/<ns>.ts` or `agent/extensions/<ns>/` | A mounted extension or Cursor plugin; its contributions become `<ns>__<name>` | [Extensions](/docs/reference/extensions.md) |
8336
8679
  | `agent/channels/*.ts` | HTTP surfaces beyond the built-in session API; `slack.ts` and `github.ts` use the platform packs | [Channels](/docs/reference/channels.md) |
8337
8680
  | `agent/hooks/*.ts` | Observe-only event subscribers, never fatal | [Hooks](/docs/reference/hooks.md) |
8338
8681
  | `agent/otel.ts` | `defineOtel` OTLP export (traces, metrics, optional logs) | [OpenTelemetry](/docs/guides/opentelemetry.md) |
@@ -8895,6 +9238,8 @@ Continue with these pages:
8895
9238
 
8896
9239
  - [Instructions](/docs/reference/instructions.md): what stays always-on
8897
9240
  - [Tools](/docs/reference/tools.md): when prose needs to become code
9241
+ - [Extensions](/docs/reference/extensions.md): skills installed as a package under a
9242
+ namespace
8898
9243
  - [Project layout](/docs/reference/project-layout.md): where skills sit in the tree
8899
9244
 
8900
9245
  ---
@@ -9317,6 +9662,8 @@ Continue with these pages:
9317
9662
  lifecycle in full
9318
9663
  - [MCP connections](/docs/reference/connections.md): tools that come from MCP servers
9319
9664
  instead
9665
+ - [Extensions](/docs/reference/extensions.md): tools installed as a package under a
9666
+ namespace
9320
9667
  - [Evals](/docs/evals.md): gating tool decisions with `calledTool`
9321
9668
 
9322
9669
  ---
@@ -9860,6 +10207,7 @@ Path is identity. Full list: README "Folder structure".
9860
10207
  | `agent/mcp-connections/<name>.ts` | MCP. Never name an account file `cursor.ts`. `advertiseTools: true` for named local tools |
9861
10208
  | `agent/host-connections/<name>.ts` | Privileged MCP for `ctx.host.mcp` / `mcp oauth` |
9862
10209
  | `agent/subagents/<id>/` | Child agent (`description` required) |
10210
+ | `agent/extensions/<ns>.ts` | Mounted extension or Cursor plugin (`cursorPlugin({ path })`); contributions are `<ns>__<name>` |
9863
10211
  | `agent/channels/*.ts` | Slack / GitHub / custom HTTP |
9864
10212
  | `agent/hooks/*.ts` | Observe-only |
9865
10213
  | `agent/ab.ts` or `agent/ab/*.ts` | Live A/B (`defineAB`) |
@@ -34,6 +34,7 @@
34
34
  ## Guides
35
35
 
36
36
  - [Agent-to-agent](/docs/guides/agent-to-agent.md): Every agent is an MCP server. Peer MCP connections let one agent delegate to another that keeps its own tools, sessions, and context.
37
+ - [Cursor cloud agents](/docs/guides/cloud-agents.md): Let an agent-sdk agent hand coding work to Cursor cloud agents and steer them: mount the extension, pick the repositories it may touch, and decide what needs approval.
37
38
  - [Cloud runtime](/docs/guides/cloud-runtime.md): Run turns on Cursor cloud agents instead of the local harness: when to switch, what changes, and the patterns that hold up.
38
39
  - [Convert a Cursor Automation](/docs/guides/convert-automation.md): Export a dashboard Automation into a local Agent SDK project, then review, validate, and run it.
39
40
  - [GitHub](/docs/guides/github.md): Wake your agent from pull requests, CI, and comments by pulling Cursor SCM events, with fixtures and replay for local tests.
@@ -64,6 +65,7 @@
64
65
  - [Channels](/docs/reference/channels.md): The authoring reference for defineChannel, the built-in HTTP channel, route schemas, handler args, and the auth policies.
65
66
  - [CLI](/docs/reference/cli.md): Commands and common flags for local development, running servers, and Cursor-managed hosting.
66
67
  - [MCP Connections](/docs/reference/connections.md): Pull in tools from MCP servers: remote, stdio, the signed-in Cursor account's connectors, and peer agents.
68
+ - [Extensions](/docs/reference/extensions.md): Mount a package of tools and skills or a Cursor plugin under a namespace with one file, adjust what it contributes, and author your own as a directory laid out like agent/.
67
69
  - [Hooks](/docs/reference/hooks.md): Observe-only subscribers to the session event stream: audit logs, metrics, transcript mirrors, derived state.
68
70
  - [HTTP API](/docs/reference/http-api.md): Public session, discovery, and channel routes callers use.
69
71
  - [Instructions](/docs/reference/instructions.md): The always-on system prompt: authoring forms, how it reaches the model on each runtime, and what makes instructions hold up.