@cursor/july 0.1.99 → 0.1.101

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 (420) hide show
  1. package/AGENTS.md +4 -2
  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/github/defaults.d.ts.map +1 -1
  9. package/dist/channels/github/defaults.js +28 -3
  10. package/dist/channels/github/progress.d.ts +7 -0
  11. package/dist/channels/github/progress.d.ts.map +1 -1
  12. package/dist/channels/origin/defaults.d.ts +43 -0
  13. package/dist/channels/origin/defaults.d.ts.map +1 -0
  14. package/dist/channels/origin/defaults.js +111 -0
  15. package/dist/channels/origin/index.d.ts +2 -0
  16. package/dist/channels/origin/index.d.ts.map +1 -1
  17. package/dist/channels/origin/index.js +2 -0
  18. package/dist/channels/origin/origin-channel.d.ts +2 -1
  19. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  20. package/dist/channels/origin/origin-channel.js +24 -3
  21. package/dist/channels/origin/state.d.ts +32 -0
  22. package/dist/channels/origin/state.d.ts.map +1 -0
  23. package/dist/channels/origin/state.js +23 -0
  24. package/dist/channels/origin/types.d.ts +23 -1
  25. package/dist/channels/origin/types.d.ts.map +1 -1
  26. package/dist/channels/slack/api.d.ts +16 -7
  27. package/dist/channels/slack/api.d.ts.map +1 -1
  28. package/dist/channels/slack/api.js +31 -14
  29. package/dist/channels/slack/code-fences.d.ts +17 -0
  30. package/dist/channels/slack/code-fences.d.ts.map +1 -0
  31. package/dist/channels/slack/code-fences.js +168 -0
  32. package/dist/channels/slack/constants.d.ts +6 -0
  33. package/dist/channels/slack/constants.d.ts.map +1 -1
  34. package/dist/channels/slack/constants.js +6 -0
  35. package/dist/channels/slack/defaults.d.ts +9 -4
  36. package/dist/channels/slack/defaults.d.ts.map +1 -1
  37. package/dist/channels/slack/defaults.js +154 -76
  38. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  39. package/dist/channels/slack/dispatch.js +3 -3
  40. package/dist/channels/slack/inbound.d.ts +9 -0
  41. package/dist/channels/slack/inbound.d.ts.map +1 -1
  42. package/dist/channels/slack/inbound.js +14 -0
  43. package/dist/channels/slack/index.d.ts +2 -0
  44. package/dist/channels/slack/index.d.ts.map +1 -1
  45. package/dist/channels/slack/index.js +2 -0
  46. package/dist/channels/slack/live-delivery.d.ts +5 -0
  47. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  48. package/dist/channels/slack/live-delivery.js +116 -21
  49. package/dist/channels/slack/reasoning-card.d.ts +38 -0
  50. package/dist/channels/slack/reasoning-card.d.ts.map +1 -0
  51. package/dist/channels/slack/reasoning-card.js +104 -0
  52. package/dist/channels/slack/redact.d.ts +2 -0
  53. package/dist/channels/slack/redact.d.ts.map +1 -0
  54. package/dist/channels/slack/redact.js +5 -0
  55. package/dist/channels/slack/reply-options.d.ts +40 -0
  56. package/dist/channels/slack/reply-options.d.ts.map +1 -0
  57. package/dist/channels/slack/reply-options.js +150 -0
  58. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  59. package/dist/channels/slack/slack-channel.js +8 -4
  60. package/dist/channels/slack/stream.d.ts +22 -10
  61. package/dist/channels/slack/stream.d.ts.map +1 -1
  62. package/dist/channels/slack/stream.js +9 -16
  63. package/dist/channels/slack/tool-cards.d.ts +22 -0
  64. package/dist/channels/slack/tool-cards.d.ts.map +1 -0
  65. package/dist/channels/slack/tool-cards.js +178 -0
  66. package/dist/channels/slack/types.d.ts +145 -6
  67. package/dist/channels/slack/types.d.ts.map +1 -1
  68. package/dist/connections.d.ts +18 -2
  69. package/dist/connections.d.ts.map +1 -1
  70. package/dist/connections.js +18 -2
  71. package/dist/docs/404.html +2 -2
  72. package/dist/docs/ab.html +6 -6
  73. package/dist/docs/ab.md +1 -1
  74. package/dist/docs/assets/{ab.md.DJo5r4R-.js → ab.md.mlVgqvSk.js} +1 -1
  75. package/dist/docs/assets/{app.BplEAZ3S.js → app.BASO9Kih.js} +1 -1
  76. package/dist/docs/assets/{building-with-agents.md.DI4mEzlt.js → building-with-agents.md.CUSWxlP_.js} +2 -2
  77. package/dist/docs/assets/chunks/@localSearchIndexroot.DbFXINq2.js +1 -0
  78. package/dist/docs/assets/chunks/{VPLocalSearchBox.CHXyv4wP.js → VPLocalSearchBox.DwkqxoE0.js} +1 -1
  79. package/dist/docs/assets/chunks/{theme.BTcsZmjQ.js → theme.CCil_13e.js} +2 -2
  80. package/dist/docs/assets/{evals.md.lfJoEVc8.js → evals.md.CPzDAwoH.js} +1 -1
  81. package/dist/docs/assets/{guides_github.md.Cnh2mL4a.js → guides_github.md.BtPr9GaP.js} +1 -1
  82. package/dist/docs/assets/{guides_mcp-oauth.md.CN-6YmTJ.js → guides_mcp-oauth.md.Dp6cDP7f.js} +1 -1
  83. package/dist/docs/assets/{guides_opentelemetry.md.bmPmkvJu.js → guides_opentelemetry.md.BVTXDCRg.js} +2 -2
  84. package/dist/docs/assets/{guides_slack.md.VDXQV3ja.js → guides_slack.md.9oHPye9o.js} +19 -3
  85. package/dist/docs/assets/{guides_slack.md.VDXQV3ja.lean.js → guides_slack.md.9oHPye9o.lean.js} +1 -1
  86. package/dist/docs/assets/hillclimbing.md.CpTGTCle.js +4 -0
  87. package/dist/docs/assets/{index.md.CVeRUOeZ.js → index.md.Bb4k8kUm.js} +1 -1
  88. package/dist/docs/assets/{quickstart.md.Nj_LjW_a.js → quickstart.md.DdQOF7Y8.js} +1 -1
  89. package/dist/docs/assets/{reference_connections.md.DxldvyIB.js → reference_connections.md.Di6jJAXF.js} +13 -3
  90. package/dist/docs/assets/{reference_connections.md.DxldvyIB.lean.js → reference_connections.md.Di6jJAXF.lean.js} +1 -1
  91. package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.js → reference_http-api.md.oySXBO8o.js} +1 -1
  92. package/dist/docs/assets/scaffolding-agents.md.em43xlY1.js +1 -0
  93. package/dist/docs/assets/skills_ab.md.CsFNatVx.js +26 -0
  94. package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +1 -0
  95. package/dist/docs/assets/skills_create-agent.md.BVoWPcan.js +8 -0
  96. package/dist/docs/assets/skills_create-agent.md.BVoWPcan.lean.js +1 -0
  97. package/dist/docs/assets/skills_debug.md.CDbPhHfg.js +1 -0
  98. package/dist/docs/assets/skills_debug.md.CDbPhHfg.lean.js +1 -0
  99. package/dist/docs/assets/skills_evals.md.723kpUmA.js +25 -0
  100. package/dist/docs/assets/skills_evals.md.723kpUmA.lean.js +1 -0
  101. package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +1 -0
  102. package/dist/docs/assets/skills_framework-map.md.BTi817yv.lean.js +1 -0
  103. package/dist/docs/assets/skills_github.md.D0JahM8c.js +16 -0
  104. package/dist/docs/assets/skills_github.md.D0JahM8c.lean.js +1 -0
  105. package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.js +7 -0
  106. package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.lean.js +1 -0
  107. package/dist/docs/assets/skills_index.md.DKwIxzGg.js +1 -0
  108. package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +1 -0
  109. package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.js +18 -0
  110. package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.lean.js +1 -0
  111. package/dist/docs/assets/skills_otel.md.CgiZryR3.js +8 -0
  112. package/dist/docs/assets/skills_otel.md.CgiZryR3.lean.js +1 -0
  113. package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.js +20 -0
  114. package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.lean.js +1 -0
  115. package/dist/docs/assets/{troubleshooting.md.DCiPBhYs.js → troubleshooting.md.Cus_YZga.js} +1 -1
  116. package/dist/docs/building-with-agents.html +6 -6
  117. package/dist/docs/building-with-agents.md +14 -11
  118. package/dist/docs/concepts.html +4 -4
  119. package/dist/docs/deployment.html +4 -4
  120. package/dist/docs/evals.html +6 -6
  121. package/dist/docs/evals.md +1 -1
  122. package/dist/docs/guides/agent-to-agent.html +4 -4
  123. package/dist/docs/guides/cloud-runtime.html +4 -4
  124. package/dist/docs/guides/convert-automation.html +4 -4
  125. package/dist/docs/guides/github.html +5 -5
  126. package/dist/docs/guides/github.md +1 -1
  127. package/dist/docs/guides/human-in-the-loop.html +4 -4
  128. package/dist/docs/guides/mcp-oauth.html +5 -5
  129. package/dist/docs/guides/mcp-oauth.md +1 -1
  130. package/dist/docs/guides/opentelemetry.html +7 -7
  131. package/dist/docs/guides/opentelemetry.md +2 -2
  132. package/dist/docs/guides/slack.html +22 -6
  133. package/dist/docs/guides/slack.md +80 -1
  134. package/dist/docs/guides/webhooks.html +5 -5
  135. package/dist/docs/hashmap.json +1 -1
  136. package/dist/docs/hillclimbing.html +6 -6
  137. package/dist/docs/hillclimbing.md +5 -5
  138. package/dist/docs/index.html +6 -6
  139. package/dist/docs/index.md +1 -1
  140. package/dist/docs/llms-full.txt +1073 -31
  141. package/dist/docs/llms.txt +14 -0
  142. package/dist/docs/quickstart.html +5 -5
  143. package/dist/docs/quickstart.md +1 -1
  144. package/dist/docs/reference/agent-config.html +4 -4
  145. package/dist/docs/reference/artifacts.html +4 -4
  146. package/dist/docs/reference/channels.html +4 -4
  147. package/dist/docs/reference/cli.html +4 -4
  148. package/dist/docs/reference/connections.html +17 -7
  149. package/dist/docs/reference/connections.md +32 -1
  150. package/dist/docs/reference/hooks.html +4 -4
  151. package/dist/docs/reference/http-api.html +6 -6
  152. package/dist/docs/reference/http-api.md +1 -1
  153. package/dist/docs/reference/instructions.html +4 -4
  154. package/dist/docs/reference/playground.html +4 -4
  155. package/dist/docs/reference/project-layout.html +4 -4
  156. package/dist/docs/reference/prompt.html +4 -4
  157. package/dist/docs/reference/schedules.html +4 -4
  158. package/dist/docs/reference/sessions.html +4 -4
  159. package/dist/docs/reference/skills.html +4 -4
  160. package/dist/docs/reference/subagents.html +4 -4
  161. package/dist/docs/reference/tools.html +4 -4
  162. package/dist/docs/scaffolding-agents.html +5 -5
  163. package/dist/docs/scaffolding-agents.md +3 -3
  164. package/dist/docs/skills/ab.html +52 -0
  165. package/dist/docs/skills/ab.md +50 -0
  166. package/dist/docs/skills/create-agent.html +34 -0
  167. package/dist/docs/skills/create-agent.md +160 -0
  168. package/dist/docs/skills/debug.html +27 -0
  169. package/dist/docs/skills/debug.md +36 -0
  170. package/dist/docs/skills/evals.html +51 -0
  171. package/dist/docs/skills/evals.md +99 -0
  172. package/dist/docs/skills/framework-map.html +27 -0
  173. package/dist/docs/skills/framework-map.md +95 -0
  174. package/dist/docs/skills/github.html +42 -0
  175. package/dist/docs/skills/github.md +93 -0
  176. package/dist/docs/skills/hillclimb.html +33 -0
  177. package/dist/docs/skills/hillclimb.md +55 -0
  178. package/dist/docs/skills/index.html +27 -0
  179. package/dist/docs/skills/index.md +21 -0
  180. package/dist/docs/skills/mcp-auth.html +44 -0
  181. package/dist/docs/skills/mcp-auth.md +76 -0
  182. package/dist/docs/skills/otel.html +34 -0
  183. package/dist/docs/skills/otel.md +48 -0
  184. package/dist/docs/skills/setup-slack.html +46 -0
  185. package/dist/docs/skills/setup-slack.md +141 -0
  186. package/dist/docs/storage.html +4 -4
  187. package/dist/docs/templates/agentic-owners.html +4 -4
  188. package/dist/docs/templates/agents-md.html +4 -4
  189. package/dist/docs/templates/code-wiki.html +4 -4
  190. package/dist/docs/templates/demo.html +4 -4
  191. package/dist/docs/templates/pr-autofixer.html +4 -4
  192. package/dist/docs/templates/security-help.html +4 -4
  193. package/dist/docs/templates/security-reviewer.html +4 -4
  194. package/dist/docs/templates/triage.html +4 -4
  195. package/dist/docs/troubleshooting.html +5 -5
  196. package/dist/docs/troubleshooting.md +1 -1
  197. package/dist/extensions/cursor-cloud-agents/extension.d.ts +55 -0
  198. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -0
  199. package/dist/extensions/cursor-cloud-agents/extension.js +64 -0
  200. package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts +30 -0
  201. package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts.map +1 -0
  202. package/dist/extensions/cursor-cloud-agents/lib/cloud.js +45 -0
  203. package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts +25 -0
  204. package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts.map +1 -0
  205. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +85 -0
  206. package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts +15 -0
  207. package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts.map +1 -0
  208. package/dist/extensions/cursor-cloud-agents/lib/repos.js +55 -0
  209. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +27 -0
  210. package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts +4 -0
  211. package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts.map +1 -0
  212. package/dist/extensions/cursor-cloud-agents/tools/follow_up.js +37 -0
  213. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts +4 -0
  214. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -0
  215. package/dist/extensions/cursor-cloud-agents/tools/launch.js +83 -0
  216. package/dist/extensions/cursor-cloud-agents/tools/list.d.ts +4 -0
  217. package/dist/extensions/cursor-cloud-agents/tools/list.d.ts.map +1 -0
  218. package/dist/extensions/cursor-cloud-agents/tools/list.js +36 -0
  219. package/dist/extensions/cursor-cloud-agents/tools/status.d.ts +4 -0
  220. package/dist/extensions/cursor-cloud-agents/tools/status.d.ts.map +1 -0
  221. package/dist/extensions/cursor-cloud-agents/tools/status.js +41 -0
  222. package/dist/extensions.d.ts +49 -0
  223. package/dist/extensions.d.ts.map +1 -0
  224. package/dist/extensions.js +75 -0
  225. package/dist/files-backends/cursor-hosted.d.ts +6 -0
  226. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  227. package/dist/files-backends/cursor-hosted.js +6 -9
  228. package/dist/index.d.ts +2 -1
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +2 -1
  231. package/dist/internal/advertise-tools.d.ts +4 -1
  232. package/dist/internal/advertise-tools.d.ts.map +1 -1
  233. package/dist/internal/advertise-tools.js +20 -1
  234. package/dist/internal/as-of.d.ts +18 -0
  235. package/dist/internal/as-of.d.ts.map +1 -1
  236. package/dist/internal/as-of.js +131 -0
  237. package/dist/internal/cli-deploy.d.ts.map +1 -1
  238. package/dist/internal/cli-deploy.js +66 -21
  239. package/dist/internal/continuation-identity.d.ts.map +1 -1
  240. package/dist/internal/continuation-identity.js +3 -1
  241. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  242. package/dist/internal/conversation-mirror.js +3 -4
  243. package/dist/internal/cursor/hosted-deployment-secrets.d.ts +16 -0
  244. package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -0
  245. package/dist/internal/cursor/hosted-deployment-secrets.js +61 -0
  246. package/dist/internal/cursor/hosted-store-secrets.d.ts +15 -0
  247. package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -0
  248. package/dist/internal/cursor/hosted-store-secrets.js +48 -0
  249. package/dist/internal/cursor-deployment-relay.d.ts +15 -1
  250. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  251. package/dist/internal/cursor-deployment-relay.js +46 -7
  252. package/dist/internal/deploy-client.d.ts +29 -6
  253. package/dist/internal/deploy-client.d.ts.map +1 -1
  254. package/dist/internal/deploy-client.js +61 -19
  255. package/dist/internal/discovery.d.ts.map +1 -1
  256. package/dist/internal/discovery.js +426 -121
  257. package/dist/internal/distribution.d.ts.map +1 -1
  258. package/dist/internal/distribution.js +5 -0
  259. package/dist/internal/framework-file-storage.d.ts +15 -8
  260. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  261. package/dist/internal/framework-file-storage.js +70 -10
  262. package/dist/internal/framework-storage-selection.d.ts +12 -12
  263. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  264. package/dist/internal/framework-storage-selection.js +33 -39
  265. package/dist/internal/hosted-delivery.d.ts +3 -1
  266. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  267. package/dist/internal/hosted-delivery.js +19 -32
  268. package/dist/internal/hosted-execution-diag.d.ts +5 -0
  269. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  270. package/dist/internal/hosted-execution-diag.js +5 -0
  271. package/dist/internal/hosted-execution-flush.d.ts +46 -0
  272. package/dist/internal/hosted-execution-flush.d.ts.map +1 -0
  273. package/dist/internal/hosted-execution-flush.js +81 -0
  274. package/dist/internal/mcp-endpoint.js +1 -0
  275. package/dist/internal/mcp-host.d.ts +2 -1
  276. package/dist/internal/mcp-host.d.ts.map +1 -1
  277. package/dist/internal/mcp-host.js +35 -15
  278. package/dist/internal/review-comments.d.ts +1 -1
  279. package/dist/internal/review-comments.d.ts.map +1 -1
  280. package/dist/internal/review-comments.js +4 -4
  281. package/dist/internal/server.d.ts +3 -0
  282. package/dist/internal/server.d.ts.map +1 -1
  283. package/dist/internal/server.js +79 -104
  284. package/dist/internal/session-engine.d.ts +9 -7
  285. package/dist/internal/session-engine.d.ts.map +1 -1
  286. package/dist/internal/session-engine.js +45 -34
  287. package/dist/internal/session-run-log.d.ts +5 -4
  288. package/dist/internal/session-run-log.d.ts.map +1 -1
  289. package/dist/internal/session-run-log.js +8 -8
  290. package/dist/internal/start-log-store.d.ts +60 -0
  291. package/dist/internal/start-log-store.d.ts.map +1 -0
  292. package/dist/internal/start-log-store.js +151 -0
  293. package/dist/internal/storage-coordinator.d.ts +0 -6
  294. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  295. package/dist/internal/storage-coordinator.js +1 -9
  296. package/dist/internal/tool-policy.d.ts +8 -0
  297. package/dist/internal/tool-policy.d.ts.map +1 -1
  298. package/dist/internal/tool-policy.js +19 -7
  299. package/dist/playground/assets/{index-jzNbJENa.js → index-BnNN1-EK.js} +45 -45
  300. package/dist/playground/assets/index-DBQCwFp0.css +1 -0
  301. package/dist/playground/index.html +2 -2
  302. package/dist/storage-backends/cursor-hosted-v2.d.ts +83 -0
  303. package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -0
  304. package/dist/storage-backends/cursor-hosted-v2.js +164 -0
  305. package/dist/storage-backends/cursor-hosted.d.ts +6 -0
  306. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  307. package/dist/storage-backends/cursor-hosted.js +6 -1
  308. package/dist/storage-protocol.d.ts +24 -0
  309. package/dist/storage-protocol.d.ts.map +1 -1
  310. package/dist/storage-protocol.js +33 -0
  311. package/dist/storage.d.ts +1 -1
  312. package/dist/storage.d.ts.map +1 -1
  313. package/dist/storage.js +1 -1
  314. package/dist/types.d.ts +123 -6
  315. package/dist/types.d.ts.map +1 -1
  316. package/dist/types.js +29 -1
  317. package/docs/README.md +1 -1
  318. package/docs/ab.md +1 -1
  319. package/docs/building-with-agents.md +14 -11
  320. package/docs/evals.md +1 -1
  321. package/docs/guides/github.md +1 -1
  322. package/docs/guides/mcp-oauth.md +1 -1
  323. package/docs/guides/opentelemetry.md +2 -2
  324. package/docs/guides/slack.md +80 -1
  325. package/docs/hillclimbing.md +5 -5
  326. package/docs/quickstart.md +1 -1
  327. package/docs/reference/connections.md +32 -1
  328. package/docs/reference/http-api.md +1 -1
  329. package/docs/scaffolding-agents.md +3 -3
  330. package/docs/skills/index.md +26 -0
  331. package/docs/troubleshooting.md +1 -1
  332. package/package.json +18 -4
  333. package/src/bin/agent-serve.ts +11 -2
  334. package/src/channels/deployments/deployments-channel.ts +117 -8
  335. package/src/channels/deployments/types.ts +4 -3
  336. package/src/channels/github/defaults.ts +36 -3
  337. package/src/channels/github/progress.ts +7 -0
  338. package/src/channels/origin/defaults.ts +143 -0
  339. package/src/channels/origin/index.ts +2 -0
  340. package/src/channels/origin/origin-channel.ts +37 -1
  341. package/src/channels/origin/state.ts +54 -0
  342. package/src/channels/origin/types.ts +24 -0
  343. package/src/channels/slack/api.ts +37 -18
  344. package/src/channels/slack/code-fences.ts +183 -0
  345. package/src/channels/slack/constants.ts +6 -0
  346. package/src/channels/slack/defaults.ts +173 -92
  347. package/src/channels/slack/dispatch.ts +8 -1
  348. package/src/channels/slack/inbound.ts +17 -0
  349. package/src/channels/slack/index.ts +2 -0
  350. package/src/channels/slack/live-delivery.ts +142 -28
  351. package/src/channels/slack/reasoning-card.ts +140 -0
  352. package/src/channels/slack/redact.ts +6 -0
  353. package/src/channels/slack/reply-options.ts +229 -0
  354. package/src/channels/slack/slack-channel.ts +7 -2
  355. package/src/channels/slack/stream.ts +31 -24
  356. package/src/channels/slack/tool-cards.ts +221 -0
  357. package/src/channels/slack/types.ts +159 -6
  358. package/src/connections.ts +18 -1
  359. package/src/extensions/cursor-cloud-agents/extension.ts +118 -0
  360. package/src/extensions/cursor-cloud-agents/lib/cloud.ts +79 -0
  361. package/src/extensions/cursor-cloud-agents/lib/fleet.ts +109 -0
  362. package/src/extensions/cursor-cloud-agents/lib/repos.ts +81 -0
  363. package/src/extensions/cursor-cloud-agents/skills/handoff.md +27 -0
  364. package/src/extensions/cursor-cloud-agents/tools/follow_up.ts +29 -0
  365. package/src/extensions/cursor-cloud-agents/tools/launch.ts +84 -0
  366. package/src/extensions/cursor-cloud-agents/tools/list.ts +31 -0
  367. package/src/extensions/cursor-cloud-agents/tools/status.ts +39 -0
  368. package/src/extensions.ts +98 -0
  369. package/src/files-backends/cursor-hosted.ts +15 -5
  370. package/src/index.ts +2 -0
  371. package/src/internal/advertise-tools.ts +37 -12
  372. package/src/internal/as-of.ts +163 -0
  373. package/src/internal/cli-deploy.ts +88 -25
  374. package/src/internal/continuation-identity.ts +3 -1
  375. package/src/internal/conversation-mirror.ts +3 -8
  376. package/src/internal/cursor/hosted-deployment-secrets.ts +72 -0
  377. package/src/internal/cursor/hosted-store-secrets.ts +72 -0
  378. package/src/internal/cursor-deployment-relay.ts +65 -8
  379. package/src/internal/deploy-client.ts +83 -28
  380. package/src/internal/discovery.ts +479 -114
  381. package/src/internal/distribution.ts +5 -0
  382. package/src/internal/framework-file-storage.ts +80 -10
  383. package/src/internal/framework-storage-selection.ts +31 -44
  384. package/src/internal/hosted-delivery.ts +38 -63
  385. package/src/internal/hosted-execution-diag.ts +6 -0
  386. package/src/internal/hosted-execution-flush.ts +142 -0
  387. package/src/internal/mcp-endpoint.ts +1 -0
  388. package/src/internal/mcp-host.ts +40 -14
  389. package/src/internal/review-comments.ts +5 -2
  390. package/src/internal/server.ts +81 -100
  391. package/src/internal/session-engine.ts +56 -28
  392. package/src/internal/session-run-log.ts +8 -12
  393. package/src/internal/start-log-store.ts +177 -0
  394. package/src/internal/storage-coordinator.ts +1 -11
  395. package/src/internal/tool-policy.ts +39 -9
  396. package/src/storage-backends/cursor-hosted-v2.ts +219 -0
  397. package/src/storage-backends/cursor-hosted.ts +6 -1
  398. package/src/storage-protocol.ts +37 -0
  399. package/src/storage.ts +1 -0
  400. package/src/types.ts +177 -14
  401. package/dist/docs/assets/chunks/@localSearchIndexroot.DpuI4i7Z.js +0 -1
  402. package/dist/docs/assets/hillclimbing.md.DhESf3OO.js +0 -4
  403. package/dist/docs/assets/scaffolding-agents.md.D7UUkWw0.js +0 -1
  404. package/dist/internal/null-kv-storage.d.ts +0 -48
  405. package/dist/internal/null-kv-storage.d.ts.map +0 -1
  406. package/dist/internal/null-kv-storage.js +0 -58
  407. package/dist/playground/assets/index-D7rGZNjy.css +0 -1
  408. package/src/internal/null-kv-storage.ts +0 -74
  409. /package/dist/docs/assets/{ab.md.DJo5r4R-.lean.js → ab.md.mlVgqvSk.lean.js} +0 -0
  410. /package/dist/docs/assets/{building-with-agents.md.DI4mEzlt.lean.js → building-with-agents.md.CUSWxlP_.lean.js} +0 -0
  411. /package/dist/docs/assets/{evals.md.lfJoEVc8.lean.js → evals.md.CPzDAwoH.lean.js} +0 -0
  412. /package/dist/docs/assets/{guides_github.md.Cnh2mL4a.lean.js → guides_github.md.BtPr9GaP.lean.js} +0 -0
  413. /package/dist/docs/assets/{guides_mcp-oauth.md.CN-6YmTJ.lean.js → guides_mcp-oauth.md.Dp6cDP7f.lean.js} +0 -0
  414. /package/dist/docs/assets/{guides_opentelemetry.md.bmPmkvJu.lean.js → guides_opentelemetry.md.BVTXDCRg.lean.js} +0 -0
  415. /package/dist/docs/assets/{hillclimbing.md.DhESf3OO.lean.js → hillclimbing.md.CpTGTCle.lean.js} +0 -0
  416. /package/dist/docs/assets/{index.md.CVeRUOeZ.lean.js → index.md.Bb4k8kUm.lean.js} +0 -0
  417. /package/dist/docs/assets/{quickstart.md.Nj_LjW_a.lean.js → quickstart.md.DdQOF7Y8.lean.js} +0 -0
  418. /package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.lean.js → reference_http-api.md.oySXBO8o.lean.js} +0 -0
  419. /package/dist/docs/assets/{scaffolding-agents.md.D7UUkWw0.lean.js → scaffolding-agents.md.em43xlY1.lean.js} +0 -0
  420. /package/dist/docs/assets/{troubleshooting.md.DCiPBhYs.lean.js → troubleshooting.md.Cus_YZga.lean.js} +0 -0
@@ -33,17 +33,33 @@ interface SubscriptionStatus {
33
33
  detail?: string;
34
34
  }
35
35
 
36
+ export type DeploymentSubscriptionSource =
37
+ | readonly ResolvedSubscription[]
38
+ | (() => readonly ResolvedSubscription[]);
39
+
36
40
  export interface DeploymentEventRelayOptions {
37
41
  baseUrl: string;
38
42
  apiKey: string;
39
43
  stateDir: string;
40
- subscriptions: readonly ResolvedSubscription[];
44
+ /**
45
+ * Snapshot or a getter. A getter is re-read on every registration
46
+ * heartbeat so a channel that refreshes `deploySourceUris` after start
47
+ * can add sources without restarting the relay.
48
+ */
49
+ subscriptions: DeploymentSubscriptionSource;
41
50
  dispatch: (event: DeploymentEvent) => Promise<void>;
42
51
  logger: (line: string) => void;
43
52
  fetchImpl?: typeof fetch;
44
53
  pollWaitMs?: number;
45
54
  }
46
55
 
56
+ /** Current subscriptions: a live getter, otherwise the snapshot. */
57
+ export function currentDeploymentSubscriptions(
58
+ subscriptions: DeploymentSubscriptionSource
59
+ ): readonly ResolvedSubscription[] {
60
+ return typeof subscriptions === "function" ? subscriptions() : subscriptions;
61
+ }
62
+
47
63
  /** Normalize the channel's `deploySourceUris` option into concrete subscriptions. */
48
64
  export function resolveDeploymentSubscriptions(options: {
49
65
  deploySourceUris: readonly (string | DeploymentSubscription)[];
@@ -90,10 +106,46 @@ export function resolveDeploymentSubscriptions(options: {
90
106
  ? []
91
107
  : [...new Set([...existing.environments, ...environments])];
92
108
  }
93
- // Empty is legal here and means "this channel wants nothing", which is how
94
- // an env-configured channel stays inert without a deploy-source list. The
95
- // wire-level empty list means deregister, so the host simply never
96
- // registers it.
109
+ // Empty is legal here and means "this channel wants nothing". The
110
+ // wire-level empty list means deregister. The host re-resolves on each
111
+ // heartbeat, so a channel that later fills `deploySourceUris` can
112
+ // register without a restart.
113
+ return [...bySource.values()];
114
+ }
115
+
116
+ /**
117
+ * Union per-channel subscriptions, widening events and environments when
118
+ * the same deploy source appears more than once. An empty environment
119
+ * list means every environment and absorbs a narrower list.
120
+ */
121
+ export function mergeResolvedSubscriptions(
122
+ groups: readonly (readonly ResolvedSubscription[])[]
123
+ ): ResolvedSubscription[] {
124
+ const bySource = new Map<string, ResolvedSubscription>();
125
+ for (const group of groups) {
126
+ for (const subscription of group) {
127
+ const existing = bySource.get(subscription.deploySourceUri);
128
+ if (existing === undefined) {
129
+ bySource.set(subscription.deploySourceUri, {
130
+ deploySourceUri: subscription.deploySourceUri,
131
+ environments: [...subscription.environments],
132
+ events: new Set(subscription.events),
133
+ });
134
+ continue;
135
+ }
136
+ for (const event of subscription.events) existing.events.add(event);
137
+ existing.environments =
138
+ existing.environments.length === 0 ||
139
+ subscription.environments.length === 0
140
+ ? []
141
+ : [
142
+ ...new Set([
143
+ ...existing.environments,
144
+ ...subscription.environments,
145
+ ]),
146
+ ];
147
+ }
148
+ }
97
149
  return [...bySource.values()];
98
150
  }
99
151
 
@@ -176,7 +228,9 @@ export class DeploymentEventRelay {
176
228
  pollPath: "/v0/deployment-events",
177
229
  buildRegistrationBody: (consumerId) => ({
178
230
  consumerId,
179
- subscriptions: options.subscriptions.map((subscription) => ({
231
+ subscriptions: currentDeploymentSubscriptions(
232
+ options.subscriptions
233
+ ).map((subscription) => ({
180
234
  deploySourceUri: subscription.deploySourceUri,
181
235
  environments: subscription.environments,
182
236
  events: [...subscription.events],
@@ -190,12 +244,15 @@ export class DeploymentEventRelay {
190
244
  }),
191
245
  applyRegistrationResponse: (json) => {
192
246
  const result = json as { deploySourceUris?: SubscriptionStatus[] };
247
+ const wantedSubscriptions = currentDeploymentSubscriptions(
248
+ options.subscriptions
249
+ );
193
250
  this.subscribed = new Map();
194
251
  this.loggedSkippedSources.clear();
195
252
  const lines: string[] = [];
196
253
  const confirmed: string[] = [];
197
254
  for (const status of result.deploySourceUris ?? []) {
198
- const wanted = options.subscriptions.find(
255
+ const wanted = wantedSubscriptions.find(
199
256
  (subscription) =>
200
257
  subscription.deploySourceUri === status.deploySourceUri
201
258
  );
@@ -210,7 +267,7 @@ export class DeploymentEventRelay {
210
267
  }
211
268
  if (confirmed.length > 0) {
212
269
  const kinds = [
213
- ...new Set(options.subscriptions.flatMap((s) => [...s.events])),
270
+ ...new Set(wantedSubscriptions.flatMap((s) => [...s.events])),
214
271
  ];
215
272
  lines.push(
216
273
  `subscribed to ${confirmed.join(", ")} for events: ${kinds.join(", ")}`
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Thin client for the Agent Serve deployment management API
3
3
  * (`/internal/agent-serve/deployments` on the Cursor backend) and the v2
4
- * AgentSDK accept path (`/internal/agentkit/deployments`). Pure
4
+ * AgentSDK accept path (`/internal/agentsdk/deployments`). Pure
5
5
  * request/response + error mapping — no console I/O, no polling loops;
6
6
  * rendering lives in `cli-deploy.ts`.
7
7
  *
@@ -214,7 +214,7 @@ export interface StopAccepted {
214
214
  export type DeleteAccepted = StopAccepted;
215
215
 
216
216
  /**
217
- * `POST /internal/agentkit/deployments` 202 body. Distinct from v1
217
+ * `POST /internal/agentsdk/deployments` 202 body. Distinct from v1
218
218
  * {@link DeployAccepted}: the v2 control plane returns catalog ids, not
219
219
  * an engine alias or one-shot alias token.
220
220
  */
@@ -234,7 +234,7 @@ export interface AgentkitDeployComponent {
234
234
  agentPath?: string;
235
235
  }
236
236
 
237
- /** Customer-visible v2 deploy status (`GET /internal/agentkit/deployments/:slug`). */
237
+ /** Customer-visible v2 deploy status (`GET /internal/agentsdk/deployments/:slug`). */
238
238
  export type AgentkitCustomerStatus =
239
239
  | "pending"
240
240
  | "deploying"
@@ -267,13 +267,15 @@ export interface AgentkitDeployStatus {
267
267
  * Absent on control planes that predate the field.
268
268
  */
269
269
  repositories?: string[];
270
+ /** Names of application-scoped secrets (values are never returned). */
271
+ secretNames?: string[];
270
272
  }
271
273
 
272
274
  export const TERMINAL_AGENTKIT_DEPLOY_STATUSES: ReadonlySet<AgentkitCustomerStatus> =
273
275
  new Set(["running", "failed", "stopped"]);
274
276
 
275
277
  /**
276
- * `POST /internal/agentkit/deployments/:slug/stop` 202 body. Like v1
278
+ * `POST /internal/agentsdk/deployments/:slug/stop` 202 body. Like v1
277
279
  * {@link StopAccepted} but keyed by catalog ids instead of the numeric
278
280
  * deployment row id.
279
281
  */
@@ -359,6 +361,7 @@ const agentkitDeployStatusSchema = z
359
361
  statusMessage: z.string().nullable(),
360
362
  // Optional: backends that predate the v2 bake-failure column omit it.
361
363
  lastError: z.string().nullable().optional(),
364
+ secretNames: z.array(z.string()).optional(),
362
365
  })
363
366
  .passthrough();
364
367
 
@@ -594,7 +597,7 @@ export class AgentServeDeployClient {
594
597
 
595
598
  /**
596
599
  * Create or redeploy onto the v2 control plane
597
- * (`POST /internal/agentkit/deployments`). 202 means accepted; poll
600
+ * (`POST /internal/agentsdk/deployments`). 202 means accepted; poll
598
601
  * {@link getAgentkitDeploy} until a terminal status. `components` deploys
599
602
  * one application with several release components (one per agent
600
603
  * directory); it is mutually exclusive with `agentPath`.
@@ -625,7 +628,7 @@ export class AgentServeDeployClient {
625
628
  }
626
629
  const raw = await this.request({
627
630
  method: "POST",
628
- path: "/internal/agentkit/deployments",
631
+ path: "/internal/agentsdk/deployments",
629
632
  body: {
630
633
  teamId: args.teamId,
631
634
  slug: args.slug,
@@ -650,14 +653,14 @@ export class AgentServeDeployClient {
650
653
  }): Promise<AgentkitDeployStatus> {
651
654
  const raw = await this.request({
652
655
  method: "GET",
653
- path: `/internal/agentkit/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
656
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
654
657
  context: { verb: "get deployment", slug: args.slug },
655
658
  });
656
659
  return agentkitDeployStatusSchema.parse(raw);
657
660
  }
658
661
 
659
662
  /**
660
- * Stop a v2 deployment (`POST /internal/agentkit/deployments/:slug/stop`).
663
+ * Stop a v2 deployment (`POST /internal/agentsdk/deployments/:slug/stop`).
661
664
  * 202 means accepted; poll {@link getAgentkitDeploy} until `stopped`.
662
665
  */
663
666
  async stopAgentkit(args: {
@@ -666,7 +669,7 @@ export class AgentServeDeployClient {
666
669
  }): Promise<AgentkitStopAccepted> {
667
670
  const raw = await this.request({
668
671
  method: "POST",
669
- path: `/internal/agentkit/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}`,
672
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}`,
670
673
  context: { verb: "stop", slug: args.slug },
671
674
  });
672
675
  return agentkitStopAcceptedSchema.parse(raw);
@@ -740,24 +743,7 @@ export class AgentServeDeployClient {
740
743
  slug: string;
741
744
  secrets: Array<{ name: string; value: string }>;
742
745
  }): Promise<string[]> {
743
- for (const { name, value } of args.secrets) {
744
- const nameError = validateSettableSecretName(name);
745
- if (nameError !== undefined) {
746
- throw new DeployApiError(nameError, 400);
747
- }
748
- if (Buffer.byteLength(value, "utf8") > MAX_SECRET_VALUE_BYTES) {
749
- throw new DeployApiError(
750
- `The value for ${name} is too large (max ${MAX_SECRET_VALUE_BYTES} bytes).`,
751
- 400
752
- );
753
- }
754
- }
755
- if (args.secrets.length > MAX_SECRETS) {
756
- throw new DeployApiError(
757
- `Too many secrets in one request (${args.secrets.length}); deployments hold at most ${MAX_SECRETS}.`,
758
- 400
759
- );
760
- }
746
+ this.validateSecrets(args.secrets);
761
747
  const raw = await this.request({
762
748
  method: "PUT",
763
749
  path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets`,
@@ -767,6 +753,22 @@ export class AgentServeDeployClient {
767
753
  return setSecretsResponseSchema.parse(raw).secretNames;
768
754
  }
769
755
 
756
+ /** Upsert application-scoped secrets on an AgentSDK v2 deployment. */
757
+ async setAgentkitSecrets(args: {
758
+ teamId: number;
759
+ slug: string;
760
+ secrets: Array<{ name: string; value: string }>;
761
+ }): Promise<string[]> {
762
+ this.validateSecrets(args.secrets);
763
+ const raw = await this.request({
764
+ method: "PUT",
765
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets`,
766
+ body: { teamId: args.teamId, secrets: args.secrets },
767
+ context: { verb: "set secrets", slug: args.slug },
768
+ });
769
+ return setSecretsResponseSchema.parse(raw).secretNames;
770
+ }
771
+
770
772
  /** Secret names + creation times; values are never returned. */
771
773
  async listSecrets(args: {
772
774
  teamId: number;
@@ -780,6 +782,19 @@ export class AgentServeDeployClient {
780
782
  return listSecretsResponseSchema.parse(raw).secrets;
781
783
  }
782
784
 
785
+ /** Secret names + creation times for an AgentSDK v2 application. */
786
+ async listAgentkitSecrets(args: {
787
+ teamId: number;
788
+ slug: string;
789
+ }): Promise<SecretInfo[]> {
790
+ const raw = await this.request({
791
+ method: "GET",
792
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
793
+ context: { verb: "list secrets", slug: args.slug },
794
+ });
795
+ return listSecretsResponseSchema.parse(raw).secrets;
796
+ }
797
+
783
798
  /** Remove one secret by name; 404 when it is not set. */
784
799
  async deleteSecret(args: {
785
800
  teamId: number;
@@ -797,6 +812,46 @@ export class AgentServeDeployClient {
797
812
  });
798
813
  }
799
814
 
815
+ /** Remove one application-scoped secret from an AgentSDK v2 deployment. */
816
+ async deleteAgentkitSecret(args: {
817
+ teamId: number;
818
+ slug: string;
819
+ name: string;
820
+ }): Promise<void> {
821
+ const nameError = validateSettableSecretName(args.name);
822
+ if (nameError !== undefined) {
823
+ throw new DeployApiError(nameError, 400);
824
+ }
825
+ await this.request({
826
+ method: "DELETE",
827
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
828
+ context: { verb: "unset secret", slug: args.slug },
829
+ });
830
+ }
831
+
832
+ private validateSecrets(
833
+ secrets: Array<{ name: string; value: string }>
834
+ ): void {
835
+ for (const { name, value } of secrets) {
836
+ const nameError = validateSettableSecretName(name);
837
+ if (nameError !== undefined) {
838
+ throw new DeployApiError(nameError, 400);
839
+ }
840
+ if (Buffer.byteLength(value, "utf8") > MAX_SECRET_VALUE_BYTES) {
841
+ throw new DeployApiError(
842
+ `The value for ${name} is too large (max ${MAX_SECRET_VALUE_BYTES} bytes).`,
843
+ 400
844
+ );
845
+ }
846
+ }
847
+ if (secrets.length > MAX_SECRETS) {
848
+ throw new DeployApiError(
849
+ `Too many secrets in one request (${secrets.length}); deployments hold at most ${MAX_SECRETS}.`,
850
+ 400
851
+ );
852
+ }
853
+ }
854
+
800
855
  /**
801
856
  * Rotate the deployment's pod credential. Returns the masked new key —
802
857
  * the raw key is injected into the pod on the next deploy, never
@@ -977,7 +1032,7 @@ function mapErrorResponse(
977
1032
  // (api2 vs api.cursor.com), not a missing deployment / closed gate.
978
1033
  if (/Route \S+ not found/i.test(bodyText)) {
979
1034
  return new DeployApiError(
980
- `Agent Serve deploy API not found on this host — use the default api.cursor.com (unset CURSOR_API_BASE_URL), or point CURSOR_API_BASE_URL at a backend that mounts /internal/agent-serve/* and /internal/agentkit/*.`,
1035
+ `Agent Serve deploy API not found on this host — use the default api.cursor.com (unset CURSOR_API_BASE_URL), or point CURSOR_API_BASE_URL at a backend that mounts /internal/agent-serve/* and /internal/agentsdk/*.`,
981
1036
  404
982
1037
  );
983
1038
  }