@cursor/july 0.1.101 → 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 (374) hide show
  1. package/README.md +27 -0
  2. package/dist/channels/slack/api.d.ts +1 -1
  3. package/dist/channels/slack/api.d.ts.map +1 -1
  4. package/dist/channels/slack/api.js +3 -1
  5. package/dist/channels/slack/assistant.d.ts +1 -1
  6. package/dist/channels/slack/assistant.d.ts.map +1 -1
  7. package/dist/channels/slack/dispatch.d.ts +3 -2
  8. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  9. package/dist/channels/slack/dispatch.js +28 -8
  10. package/dist/channels/slack/inbound.d.ts +8 -0
  11. package/dist/channels/slack/inbound.d.ts.map +1 -1
  12. package/dist/channels/slack/inbound.js +28 -0
  13. package/dist/channels/slack/manifest.d.ts.map +1 -1
  14. package/dist/channels/slack/manifest.js +2 -1
  15. package/dist/docs/404.html +2 -2
  16. package/dist/docs/ab.html +4 -4
  17. package/dist/docs/assets/{app.BASO9Kih.js → app.CLA03RCz.js} +1 -1
  18. package/dist/docs/assets/chunks/@localSearchIndexroot.FAqdWIXo.js +1 -0
  19. package/dist/docs/assets/chunks/{VPLocalSearchBox.DwkqxoE0.js → VPLocalSearchBox.ifxv-cJV.js} +1 -1
  20. package/dist/docs/assets/chunks/{theme.CCil_13e.js → theme.DWCwM6p-.js} +2 -2
  21. package/dist/docs/assets/concepts.md.rPzW2HZN.js +1 -0
  22. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +9 -0
  23. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.lean.js +1 -0
  24. package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.js → guides_cloud-runtime.md.BRirbRAN.js} +1 -1
  25. package/dist/docs/assets/index.md.Kiht7ell.js +5 -0
  26. package/dist/docs/assets/{index.md.Bb4k8kUm.lean.js → index.md.Kiht7ell.lean.js} +1 -1
  27. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.js +56 -0
  28. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +1 -0
  29. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.js → reference_project-layout.md.CA6QP6Lw.js} +2 -2
  30. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.lean.js → reference_project-layout.md.CA6QP6Lw.lean.js} +1 -1
  31. package/dist/docs/assets/{reference_skills.md.BFW9retM.js → reference_skills.md.l2ezAcaN.js} +1 -1
  32. package/dist/docs/assets/{reference_tools.md.CvAHsdSp.js → reference_tools.md.B1up2r9W.js} +1 -1
  33. package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +1 -0
  34. package/dist/docs/assets/{skills_framework-map.md.BTi817yv.lean.js → skills_framework-map.md.DDa4MeEW.lean.js} +1 -1
  35. package/dist/docs/building-with-agents.html +4 -4
  36. package/dist/docs/concepts.html +5 -5
  37. package/dist/docs/concepts.md +3 -3
  38. package/dist/docs/deployment.html +4 -4
  39. package/dist/docs/evals.html +4 -4
  40. package/dist/docs/guides/agent-to-agent.html +4 -4
  41. package/dist/docs/guides/cloud-agents.html +35 -0
  42. package/dist/docs/guides/cloud-agents.md +93 -0
  43. package/dist/docs/guides/cloud-runtime.html +6 -6
  44. package/dist/docs/guides/cloud-runtime.md +2 -0
  45. package/dist/docs/guides/convert-automation.html +4 -4
  46. package/dist/docs/guides/github.html +4 -4
  47. package/dist/docs/guides/human-in-the-loop.html +4 -4
  48. package/dist/docs/guides/mcp-oauth.html +4 -4
  49. package/dist/docs/guides/opentelemetry.html +5 -5
  50. package/dist/docs/guides/slack.html +4 -4
  51. package/dist/docs/guides/webhooks.html +4 -4
  52. package/dist/docs/hashmap.json +1 -1
  53. package/dist/docs/hillclimbing.html +4 -4
  54. package/dist/docs/index.html +6 -6
  55. package/dist/docs/index.md +5 -1
  56. package/dist/docs/llms-full.txt +321 -4
  57. package/dist/docs/llms.txt +2 -0
  58. package/dist/docs/quickstart.html +4 -4
  59. package/dist/docs/reference/agent-config.html +4 -4
  60. package/dist/docs/reference/artifacts.html +4 -4
  61. package/dist/docs/reference/channels.html +5 -5
  62. package/dist/docs/reference/cli.html +4 -4
  63. package/dist/docs/reference/connections.html +4 -4
  64. package/dist/docs/reference/extensions.html +82 -0
  65. package/dist/docs/reference/extensions.md +200 -0
  66. package/dist/docs/reference/hooks.html +4 -4
  67. package/dist/docs/reference/http-api.html +4 -4
  68. package/dist/docs/reference/instructions.html +4 -4
  69. package/dist/docs/reference/playground.html +4 -4
  70. package/dist/docs/reference/project-layout.html +6 -6
  71. package/dist/docs/reference/project-layout.md +3 -0
  72. package/dist/docs/reference/prompt.html +4 -4
  73. package/dist/docs/reference/schedules.html +4 -4
  74. package/dist/docs/reference/sessions.html +4 -4
  75. package/dist/docs/reference/skills.html +6 -6
  76. package/dist/docs/reference/skills.md +2 -0
  77. package/dist/docs/reference/subagents.html +5 -5
  78. package/dist/docs/reference/tools.html +6 -6
  79. package/dist/docs/reference/tools.md +2 -0
  80. package/dist/docs/scaffolding-agents.html +4 -4
  81. package/dist/docs/skills/ab.html +4 -4
  82. package/dist/docs/skills/create-agent.html +4 -4
  83. package/dist/docs/skills/debug.html +4 -4
  84. package/dist/docs/skills/evals.html +4 -4
  85. package/dist/docs/skills/framework-map.html +5 -5
  86. package/dist/docs/skills/framework-map.md +1 -0
  87. package/dist/docs/skills/github.html +4 -4
  88. package/dist/docs/skills/hillclimb.html +4 -4
  89. package/dist/docs/skills/index.html +4 -4
  90. package/dist/docs/skills/mcp-auth.html +4 -4
  91. package/dist/docs/skills/otel.html +4 -4
  92. package/dist/docs/skills/setup-slack.html +4 -4
  93. package/dist/docs/storage.html +4 -4
  94. package/dist/docs/templates/agentic-owners.html +4 -4
  95. package/dist/docs/templates/agents-md.html +4 -4
  96. package/dist/docs/templates/code-wiki.html +4 -4
  97. package/dist/docs/templates/demo.html +4 -4
  98. package/dist/docs/templates/pr-autofixer.html +4 -4
  99. package/dist/docs/templates/security-help.html +4 -4
  100. package/dist/docs/templates/security-reviewer.html +4 -4
  101. package/dist/docs/templates/triage.html +4 -4
  102. package/dist/docs/troubleshooting.html +4 -4
  103. package/dist/extensions/cursor-cloud-agents/extension.d.ts +9 -7
  104. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  105. package/dist/extensions/cursor-cloud-agents/extension.js +9 -7
  106. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +78 -0
  107. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -0
  108. package/dist/extensions/cursor-cloud-agents/lib/backend.js +286 -0
  109. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +5 -0
  110. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -0
  111. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +4 -0
  112. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts +8 -0
  113. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts.map +1 -0
  114. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +15 -0
  115. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
  116. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts +4 -0
  117. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -0
  118. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +26 -0
  119. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts +4 -0
  120. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts.map +1 -0
  121. package/dist/extensions/cursor-cloud-agents/tools/dump.js +54 -0
  122. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts +4 -0
  123. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts.map +1 -0
  124. package/dist/extensions/cursor-cloud-agents/tools/get.js +25 -0
  125. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
  126. package/dist/extensions/cursor-cloud-agents/tools/launch.js +14 -38
  127. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  128. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts +4 -0
  129. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts.map +1 -0
  130. package/dist/extensions/cursor-cloud-agents/tools/{follow_up.js → reply.js} +12 -14
  131. package/dist/extensions.d.ts +38 -14
  132. package/dist/extensions.d.ts.map +1 -1
  133. package/dist/extensions.js +49 -12
  134. package/dist/files-backends/cursor-hosted.d.ts +0 -8
  135. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  136. package/dist/files-backends/cursor-hosted.js +1 -11
  137. package/dist/files.d.ts +5 -1
  138. package/dist/files.d.ts.map +1 -1
  139. package/dist/files.js +22 -18
  140. package/dist/index.d.ts +3 -3
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +2 -2
  143. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  144. package/dist/internal/conversation-mirror.js +13 -15
  145. package/dist/internal/cursor/backend-client.d.ts +8 -1
  146. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  147. package/dist/internal/cursor/backend-client.js +25 -9
  148. package/dist/internal/cursor/hosted-store-secrets.d.ts +11 -0
  149. package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
  150. package/dist/internal/cursor/hosted-store-secrets.js +15 -0
  151. package/dist/internal/discovery/ab.d.ts +9 -0
  152. package/dist/internal/discovery/ab.d.ts.map +1 -0
  153. package/dist/internal/discovery/ab.js +101 -0
  154. package/dist/internal/discovery/agent-config.d.ts +35 -0
  155. package/dist/internal/discovery/agent-config.d.ts.map +1 -0
  156. package/dist/internal/discovery/agent-config.js +173 -0
  157. package/dist/internal/discovery/agent.d.ts +11 -0
  158. package/dist/internal/discovery/agent.d.ts.map +1 -0
  159. package/dist/internal/discovery/agent.js +306 -0
  160. package/dist/internal/discovery/channels.d.ts +10 -0
  161. package/dist/internal/discovery/channels.d.ts.map +1 -0
  162. package/dist/internal/discovery/channels.js +97 -0
  163. package/dist/internal/discovery/connections.d.ts +17 -0
  164. package/dist/internal/discovery/connections.d.ts.map +1 -0
  165. package/dist/internal/discovery/connections.js +436 -0
  166. package/dist/internal/discovery/context.d.ts +20 -0
  167. package/dist/internal/discovery/context.d.ts.map +1 -0
  168. package/dist/internal/discovery/context.js +30 -0
  169. package/dist/internal/discovery/cursor-plugin.d.ts +25 -0
  170. package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -0
  171. package/dist/internal/discovery/cursor-plugin.js +570 -0
  172. package/dist/internal/discovery/extensions.d.ts +19 -0
  173. package/dist/internal/discovery/extensions.d.ts.map +1 -0
  174. package/dist/internal/discovery/extensions.js +238 -0
  175. package/dist/internal/discovery/fs.d.ts +15 -0
  176. package/dist/internal/discovery/fs.d.ts.map +1 -0
  177. package/dist/internal/discovery/fs.js +115 -0
  178. package/dist/internal/discovery/hooks.d.ts +7 -0
  179. package/dist/internal/discovery/hooks.d.ts.map +1 -0
  180. package/dist/internal/discovery/hooks.js +48 -0
  181. package/dist/internal/discovery/info.d.ts +6 -0
  182. package/dist/internal/discovery/info.d.ts.map +1 -0
  183. package/dist/internal/discovery/info.js +141 -0
  184. package/dist/internal/discovery/instructions.d.ts +7 -0
  185. package/dist/internal/discovery/instructions.d.ts.map +1 -0
  186. package/dist/internal/discovery/instructions.js +95 -0
  187. package/dist/internal/discovery/modules.d.ts +20 -0
  188. package/dist/internal/discovery/modules.d.ts.map +1 -0
  189. package/dist/internal/discovery/modules.js +101 -0
  190. package/dist/internal/discovery/names.d.ts +12 -0
  191. package/dist/internal/discovery/names.d.ts.map +1 -0
  192. package/dist/internal/discovery/names.js +36 -0
  193. package/dist/internal/discovery/project.d.ts +53 -0
  194. package/dist/internal/discovery/project.d.ts.map +1 -0
  195. package/dist/internal/discovery/project.js +239 -0
  196. package/dist/internal/discovery/runtime.d.ts +34 -0
  197. package/dist/internal/discovery/runtime.d.ts.map +1 -0
  198. package/dist/internal/discovery/runtime.js +98 -0
  199. package/dist/internal/discovery/schedules.d.ts +7 -0
  200. package/dist/internal/discovery/schedules.d.ts.map +1 -0
  201. package/dist/internal/discovery/schedules.js +97 -0
  202. package/dist/internal/discovery/seed-files.d.ts +7 -0
  203. package/dist/internal/discovery/seed-files.d.ts.map +1 -0
  204. package/dist/internal/discovery/seed-files.js +41 -0
  205. package/dist/internal/discovery/services.d.ts +17 -0
  206. package/dist/internal/discovery/services.d.ts.map +1 -0
  207. package/dist/internal/discovery/services.js +104 -0
  208. package/dist/internal/discovery/skills.d.ts +16 -0
  209. package/dist/internal/discovery/skills.d.ts.map +1 -0
  210. package/dist/internal/discovery/skills.js +151 -0
  211. package/dist/internal/discovery/subagent.d.ts +13 -0
  212. package/dist/internal/discovery/subagent.d.ts.map +1 -0
  213. package/dist/internal/discovery/subagent.js +19 -0
  214. package/dist/internal/discovery/tools.d.ts +18 -0
  215. package/dist/internal/discovery/tools.d.ts.map +1 -0
  216. package/dist/internal/discovery/tools.js +159 -0
  217. package/dist/internal/discovery.d.ts +8 -62
  218. package/dist/internal/discovery.d.ts.map +1 -1
  219. package/dist/internal/discovery.js +8 -2505
  220. package/dist/internal/framework-file-storage.js +6 -6
  221. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  222. package/dist/internal/framework-storage-selection.js +8 -7
  223. package/dist/internal/frontmatter.d.ts +11 -3
  224. package/dist/internal/frontmatter.d.ts.map +1 -1
  225. package/dist/internal/frontmatter.js +29 -3
  226. package/dist/internal/mcp-host.d.ts.map +1 -1
  227. package/dist/internal/mcp-host.js +37 -20
  228. package/dist/internal/otel/collector.d.ts +13 -0
  229. package/dist/internal/otel/collector.d.ts.map +1 -1
  230. package/dist/internal/otel/collector.js +84 -17
  231. package/dist/internal/otel/http.d.ts.map +1 -1
  232. package/dist/internal/otel/http.js +2 -10
  233. package/dist/internal/otel/mcp.d.ts +16 -0
  234. package/dist/internal/otel/mcp.d.ts.map +1 -0
  235. package/dist/internal/otel/mcp.js +68 -0
  236. package/dist/internal/otel/propagation.d.ts +6 -0
  237. package/dist/internal/otel/propagation.d.ts.map +1 -0
  238. package/dist/internal/otel/propagation.js +14 -0
  239. package/dist/internal/otel/runtime.d.ts.map +1 -1
  240. package/dist/internal/otel/runtime.js +2 -0
  241. package/dist/internal/session-engine.d.ts +5 -0
  242. package/dist/internal/session-engine.d.ts.map +1 -1
  243. package/dist/internal/session-engine.js +68 -32
  244. package/dist/internal/session-run-log.d.ts +2 -1
  245. package/dist/internal/session-run-log.d.ts.map +1 -1
  246. package/dist/internal/session-run-log.js +13 -14
  247. package/dist/internal/start-log-store.d.ts +1 -1
  248. package/dist/internal/start-log-store.d.ts.map +1 -1
  249. package/dist/internal/start-log-store.js +12 -14
  250. package/dist/internal/storage-coordinator.d.ts +4 -1
  251. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  252. package/dist/internal/storage-coordinator.js +15 -13
  253. package/dist/internal/tool-catalog.d.ts.map +1 -1
  254. package/dist/internal/tool-catalog.js +9 -6
  255. package/dist/internal/turn-cost.d.ts +14 -0
  256. package/dist/internal/turn-cost.d.ts.map +1 -1
  257. package/dist/internal/turn-cost.js +41 -9
  258. package/dist/internal/v2-hosting.d.ts +22 -0
  259. package/dist/internal/v2-hosting.d.ts.map +1 -0
  260. package/dist/internal/v2-hosting.js +23 -0
  261. package/dist/otel.d.ts +16 -0
  262. package/dist/otel.d.ts.map +1 -1
  263. package/dist/otel.js +26 -0
  264. package/dist/playground/assets/index-B6C9S9nG.css +1 -0
  265. package/dist/playground/index.html +2 -2
  266. package/dist/storage-protocol.d.ts +24 -23
  267. package/dist/storage-protocol.d.ts.map +1 -1
  268. package/dist/storage-protocol.js +68 -65
  269. package/dist/storage.d.ts +2 -2
  270. package/dist/storage.d.ts.map +1 -1
  271. package/dist/storage.js +1 -1
  272. package/dist/tools.d.ts +9 -0
  273. package/dist/tools.d.ts.map +1 -1
  274. package/dist/tools.js +9 -0
  275. package/dist/types.d.ts +39 -3
  276. package/dist/types.d.ts.map +1 -1
  277. package/docs/README.md +5 -1
  278. package/docs/concepts.md +3 -3
  279. package/docs/guides/cloud-agents.md +98 -0
  280. package/docs/guides/cloud-runtime.md +2 -0
  281. package/docs/reference/extensions.md +205 -0
  282. package/docs/reference/project-layout.md +3 -0
  283. package/docs/reference/skills.md +2 -0
  284. package/docs/reference/tools.md +2 -0
  285. package/package.json +1 -1
  286. package/skills/framework-map/SKILL.md +1 -0
  287. package/src/channels/slack/api.ts +4 -2
  288. package/src/channels/slack/assistant.ts +1 -1
  289. package/src/channels/slack/dispatch.ts +27 -2
  290. package/src/channels/slack/inbound.ts +37 -0
  291. package/src/channels/slack/manifest.ts +2 -1
  292. package/src/extensions/cursor-cloud-agents/extension.ts +9 -7
  293. package/src/extensions/cursor-cloud-agents/lib/backend.ts +395 -0
  294. package/src/extensions/cursor-cloud-agents/lib/inputs.ts +5 -0
  295. package/src/extensions/cursor-cloud-agents/lib/transcript.ts +23 -0
  296. package/src/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
  297. package/src/extensions/cursor-cloud-agents/tools/cancel.ts +19 -0
  298. package/src/extensions/cursor-cloud-agents/tools/dump.ts +51 -0
  299. package/src/extensions/cursor-cloud-agents/tools/get.ts +18 -0
  300. package/src/extensions/cursor-cloud-agents/tools/launch.ts +22 -42
  301. package/src/extensions/cursor-cloud-agents/tools/list.ts +1 -1
  302. package/src/extensions/cursor-cloud-agents/tools/reply.ts +34 -0
  303. package/src/extensions.ts +55 -12
  304. package/src/files-backends/cursor-hosted.ts +1 -17
  305. package/src/files.ts +43 -34
  306. package/src/index.ts +10 -1
  307. package/src/internal/conversation-mirror.ts +23 -18
  308. package/src/internal/cursor/backend-client.ts +32 -10
  309. package/src/internal/cursor/hosted-store-secrets.ts +27 -0
  310. package/src/internal/discovery/ab.ts +111 -0
  311. package/src/internal/discovery/agent-config.ts +222 -0
  312. package/src/internal/discovery/agent.ts +360 -0
  313. package/src/internal/discovery/channels.ts +103 -0
  314. package/src/internal/discovery/connections.ts +540 -0
  315. package/src/internal/discovery/context.ts +46 -0
  316. package/src/internal/discovery/cursor-plugin.ts +708 -0
  317. package/src/internal/discovery/extensions.ts +348 -0
  318. package/src/internal/discovery/fs.ts +108 -0
  319. package/src/internal/discovery/hooks.ts +45 -0
  320. package/src/internal/discovery/info.ts +179 -0
  321. package/src/internal/discovery/instructions.ts +113 -0
  322. package/src/internal/discovery/modules.ts +107 -0
  323. package/src/internal/discovery/names.ts +44 -0
  324. package/src/internal/discovery/project.ts +270 -0
  325. package/src/internal/discovery/runtime.ts +159 -0
  326. package/src/internal/discovery/schedules.ts +94 -0
  327. package/src/internal/discovery/seed-files.ts +37 -0
  328. package/src/internal/discovery/services.ts +124 -0
  329. package/src/internal/discovery/skills.ts +176 -0
  330. package/src/internal/discovery/subagent.ts +29 -0
  331. package/src/internal/discovery/tools.ts +182 -0
  332. package/src/internal/discovery.ts +20 -3081
  333. package/src/internal/framework-file-storage.ts +6 -6
  334. package/src/internal/framework-storage-selection.ts +9 -9
  335. package/src/internal/frontmatter.ts +36 -3
  336. package/src/internal/mcp-host.ts +84 -31
  337. package/src/internal/otel/collector.ts +125 -25
  338. package/src/internal/otel/http.ts +2 -12
  339. package/src/internal/otel/mcp.ts +69 -0
  340. package/src/internal/otel/propagation.ts +17 -0
  341. package/src/internal/otel/runtime.ts +2 -0
  342. package/src/internal/session-engine.ts +96 -11
  343. package/src/internal/session-run-log.ts +17 -16
  344. package/src/internal/start-log-store.ts +13 -16
  345. package/src/internal/storage-coordinator.ts +19 -16
  346. package/src/internal/tool-catalog.ts +9 -6
  347. package/src/internal/turn-cost.ts +47 -4
  348. package/src/internal/v2-hosting.ts +38 -0
  349. package/src/otel.ts +38 -0
  350. package/src/storage-protocol.ts +101 -91
  351. package/src/storage.ts +4 -0
  352. package/src/tools.ts +18 -0
  353. package/src/types.ts +43 -2
  354. package/dist/docs/assets/chunks/@localSearchIndexroot.DbFXINq2.js +0 -1
  355. package/dist/docs/assets/concepts.md.lwAgBIMI.js +0 -1
  356. package/dist/docs/assets/index.md.Bb4k8kUm.js +0 -5
  357. package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +0 -1
  358. package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts +0 -30
  359. package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts.map +0 -1
  360. package/dist/extensions/cursor-cloud-agents/lib/cloud.js +0 -45
  361. package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts +0 -4
  362. package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts.map +0 -1
  363. package/dist/extensions/cursor-cloud-agents/tools/status.d.ts +0 -4
  364. package/dist/extensions/cursor-cloud-agents/tools/status.d.ts.map +0 -1
  365. package/dist/extensions/cursor-cloud-agents/tools/status.js +0 -41
  366. package/dist/playground/assets/index-DBQCwFp0.css +0 -1
  367. package/src/extensions/cursor-cloud-agents/lib/cloud.ts +0 -79
  368. package/src/extensions/cursor-cloud-agents/tools/follow_up.ts +0 -29
  369. package/src/extensions/cursor-cloud-agents/tools/status.ts +0 -39
  370. /package/dist/docs/assets/{concepts.md.lwAgBIMI.lean.js → concepts.md.rPzW2HZN.lean.js} +0 -0
  371. /package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.lean.js → guides_cloud-runtime.md.BRirbRAN.lean.js} +0 -0
  372. /package/dist/docs/assets/{reference_skills.md.BFW9retM.lean.js → reference_skills.md.l2ezAcaN.lean.js} +0 -0
  373. /package/dist/docs/assets/{reference_tools.md.CvAHsdSp.lean.js → reference_tools.md.B1up2r9W.lean.js} +0 -0
  374. /package/dist/playground/assets/{index-BnNN1-EK.js → index-ZqNoT8Ie.js} +0 -0
@@ -2,7 +2,8 @@
2
2
  * Minimal Connect-JSON client for the handful of `aiserver.v1.DashboardService`
3
3
  * RPCs agent-serve needs — `GetMe`, `ListSandMcpTools`, `ExecuteSandMcpTool`,
4
4
  * and the login-time key lifecycle (`CreateUserApiKey`, `ListUserApiKeys`,
5
- * `RevokeUserApiKey`).
5
+ * `RevokeUserApiKey`) — plus {@link CursorBackendClient.serviceRpc} for the
6
+ * odd unary call on another `aiserver.v1` service under the same token.
6
7
  *
7
8
  * Plain `fetch` POSTs with proto-JSON bodies and zod-validated responses:
8
9
  * agent-serve is a published package and should not pull the generated
@@ -25,7 +26,7 @@ import {
25
26
  } from "./session-token.js";
26
27
 
27
28
  const CLIENT_VERSION = "agent-serve-0.1.0";
28
- const SERVICE_PREFIX = "/aiserver.v1.DashboardService";
29
+ const DASHBOARD_SERVICE = "DashboardService";
29
30
  const LIST_TIMEOUT_MS = 60_000;
30
31
  /** Backend-executed tools call out to third-party servers; be generous. */
31
32
  const EXECUTE_TIMEOUT_MS = 120_000;
@@ -235,9 +236,10 @@ export interface AccountMcpCallResult {
235
236
  // ============================================================================
236
237
 
237
238
  /** One DashboardService Connect-JSON POST; auth is the caller's bearer. */
238
- async function dashboardRpc(args: {
239
+ async function connectRpc(args: {
239
240
  fetchImpl: typeof fetch;
240
241
  backendUrl: string;
242
+ service: string;
241
243
  method: string;
242
244
  bearer: string;
243
245
  body: unknown;
@@ -246,7 +248,7 @@ async function dashboardRpc(args: {
246
248
  }): Promise<Response> {
247
249
  try {
248
250
  return await args.fetchImpl(
249
- `${args.backendUrl}${SERVICE_PREFIX}/${args.method}`,
251
+ `${args.backendUrl}/aiserver.v1.${args.service}/${args.method}`,
250
252
  {
251
253
  method: "POST",
252
254
  headers: {
@@ -485,20 +487,36 @@ export class CursorBackendClient {
485
487
  return githubTokenResponseSchema.parse(parsed);
486
488
  }
487
489
 
490
+ /**
491
+ * One unary Connect-JSON call on `aiserver.v1.<service>` with the same
492
+ * token exchange and 401 retry as the dashboard RPCs. Callers parse the
493
+ * proto-JSON response themselves.
494
+ */
495
+ serviceRpc(
496
+ service: string,
497
+ method: string,
498
+ body: unknown,
499
+ timeoutMs: number = LIST_TIMEOUT_MS
500
+ ): Promise<unknown> {
501
+ return this.rpc(method, body, timeoutMs, { service });
502
+ }
503
+
488
504
  private async rpc(
489
505
  method: string,
490
506
  body: unknown,
491
507
  timeoutMs = LIST_TIMEOUT_MS,
492
- options?: { teamId?: number }
508
+ options?: { teamId?: number; service?: string }
493
509
  ): Promise<unknown> {
510
+ const service = options?.service ?? DASHBOARD_SERVICE;
494
511
  const extraHeaders =
495
512
  options?.teamId === undefined
496
513
  ? undefined
497
514
  : { "x-cursor-team-id": String(options.teamId) };
498
515
  const bearer = await this.getAccessToken();
499
- const first = await dashboardRpc({
516
+ const first = await connectRpc({
500
517
  fetchImpl: this.fetchImpl,
501
518
  backendUrl: this.backendUrl,
519
+ service,
502
520
  method,
503
521
  bearer,
504
522
  body,
@@ -516,9 +534,10 @@ export class CursorBackendClient {
516
534
  this.token = undefined;
517
535
  }
518
536
  const retryBearer = await this.getAccessToken();
519
- const second = await dashboardRpc({
537
+ const second = await connectRpc({
520
538
  fetchImpl: this.fetchImpl,
521
539
  backendUrl: this.backendUrl,
540
+ service,
522
541
  method,
523
542
  bearer: retryBearer,
524
543
  body,
@@ -612,11 +631,12 @@ export async function createUserApiKeyWithSessionToken(args: {
612
631
  keyName: string;
613
632
  fetchImpl?: typeof fetch;
614
633
  }): Promise<string> {
615
- const response = await dashboardRpc({
634
+ const response = await connectRpc({
616
635
  fetchImpl: args.fetchImpl ?? fetch,
617
636
  backendUrl: args.backendUrl.endsWith("/")
618
637
  ? args.backendUrl.slice(0, -1)
619
638
  : args.backendUrl,
639
+ service: DASHBOARD_SERVICE,
620
640
  method: "CreateUserApiKey",
621
641
  bearer: args.sessionToken,
622
642
  body: { name: args.keyName },
@@ -666,9 +686,10 @@ export async function revokeMintedUserApiKey(args: {
666
686
  ? args.backendUrl.slice(0, -1)
667
687
  : args.backendUrl;
668
688
 
669
- const listResponse = await dashboardRpc({
689
+ const listResponse = await connectRpc({
670
690
  fetchImpl,
671
691
  backendUrl,
692
+ service: DASHBOARD_SERVICE,
672
693
  method: "ListUserApiKeys",
673
694
  bearer: args.sessionToken,
674
695
  body: {},
@@ -686,9 +707,10 @@ export async function revokeMintedUserApiKey(args: {
686
707
  // lagging replica — skip rather than touch any other key.
687
708
  return;
688
709
  }
689
- const revokeResponse = await dashboardRpc({
710
+ const revokeResponse = await connectRpc({
690
711
  fetchImpl,
691
712
  backendUrl,
713
+ service: DASHBOARD_SERVICE,
692
714
  method: "RevokeUserApiKey",
693
715
  bearer: args.sessionToken,
694
716
  body: { id: match.id },
@@ -70,3 +70,30 @@ export function resolveFrameworkStoreSourceIdSync(
70
70
  env
71
71
  );
72
72
  }
73
+
74
+ export type CursorManagedV2StoreIds = {
75
+ deploymentStoreSourceId: string;
76
+ frameworkStoreSourceId: string;
77
+ };
78
+
79
+ /**
80
+ * Resolve the complete managed-v2 store identity at the process boundary.
81
+ *
82
+ * Freeze snapshots construct storage before task bind, so callers keep this
83
+ * resolver lazy. Once an operation needs storage, both ids are mandatory.
84
+ */
85
+ export function requireCursorManagedV2StoreIdsSync(
86
+ env: NodeJS.ProcessEnv = process.env
87
+ ): CursorManagedV2StoreIds {
88
+ const deploymentStoreSourceId = resolveDeploymentStoreSourceIdSync(env);
89
+ const frameworkStoreSourceId = resolveFrameworkStoreSourceIdSync(env);
90
+ if (
91
+ deploymentStoreSourceId === undefined ||
92
+ frameworkStoreSourceId === undefined
93
+ ) {
94
+ throw new Error(
95
+ "Cursor-managed AgentSDK v2 requires AGENT_SERVE_STORE_SOURCE_ID and AGENT_SERVE_FRAMEWORK_STORE_SOURCE_ID"
96
+ );
97
+ }
98
+ return { deploymentStoreSourceId, frameworkStoreSourceId };
99
+ }
@@ -0,0 +1,111 @@
1
+ /**
2
+ * `agent/ab.ts` or `agent/ab/*.ts` plus `agent/ab.config.ts`: live A/B experiments.
3
+ */
4
+
5
+ import { basename, extname, join, relative } from "node:path";
6
+ import type { ABConfigFile } from "../../ab.js";
7
+ import type { DiscoveredAB } from "../../types.js";
8
+ import { type DiscoveryContext, displayPath } from "./context.js";
9
+ import {
10
+ findModuleFile,
11
+ isDirectory,
12
+ isModuleFile,
13
+ toPosix,
14
+ walkFiles,
15
+ } from "./fs.js";
16
+ import { importDefault } from "./modules.js";
17
+
18
+ export async function loadABs(
19
+ ctx: DiscoveryContext,
20
+ agentDir: string
21
+ ): Promise<DiscoveredAB[]> {
22
+ const abs: DiscoveredAB[] = [];
23
+ const seen = new Set<string>();
24
+
25
+ const single = await findModuleFile(agentDir, "ab");
26
+ if (single !== undefined) {
27
+ const definition = await importDefault(ctx, single, "ab");
28
+ if (definition !== undefined) {
29
+ const name = resolveABName(definition, "ab");
30
+ seen.add(name);
31
+ abs.push({
32
+ name,
33
+ definition: definition as DiscoveredAB["definition"],
34
+ });
35
+ }
36
+ }
37
+
38
+ const absDir = join(agentDir, "ab");
39
+ if (await isDirectory(absDir)) {
40
+ for (const filePath of await walkFiles(absDir)) {
41
+ if (!isModuleFile(basename(filePath))) {
42
+ continue;
43
+ }
44
+ const rel = toPosix(relative(absDir, filePath));
45
+ const stem = rel.slice(0, -extname(rel).length);
46
+ const definition = await importDefault(ctx, filePath, "ab");
47
+ if (definition === undefined) {
48
+ continue;
49
+ }
50
+ const name = resolveABName(definition, stem);
51
+ if (seen.has(name)) {
52
+ ctx.diagnostics.push({
53
+ severity: "error",
54
+ path: displayPath(ctx, filePath),
55
+ message: `Duplicate A/B experiment name ${JSON.stringify(name)}.`,
56
+ });
57
+ continue;
58
+ }
59
+ seen.add(name);
60
+ abs.push({
61
+ name,
62
+ definition: definition as DiscoveredAB["definition"],
63
+ });
64
+ }
65
+ }
66
+
67
+ return abs;
68
+ }
69
+
70
+ export async function loadABConfig(
71
+ ctx: DiscoveryContext,
72
+ agentDir: string
73
+ ): Promise<ABConfigFile | undefined> {
74
+ const path = await findModuleFile(agentDir, "ab.config");
75
+ if (path === undefined) {
76
+ return undefined;
77
+ }
78
+ try {
79
+ const mod = await ctx.importModule(path);
80
+ if (mod.default === null || typeof mod.default !== "object") {
81
+ ctx.diagnostics.push({
82
+ severity: "error",
83
+ path: displayPath(ctx, path),
84
+ message:
85
+ "ab.config.ts must default-export defineABConfig({ ... }) from @cursor/july/ab.",
86
+ });
87
+ return undefined;
88
+ }
89
+ return mod.default as ABConfigFile;
90
+ } catch (error) {
91
+ ctx.diagnostics.push({
92
+ severity: "error",
93
+ path: displayPath(ctx, path),
94
+ message: `Failed to load ab.config: ${error instanceof Error ? error.message : String(error)}`,
95
+ });
96
+ return undefined;
97
+ }
98
+ }
99
+
100
+ function resolveABName(definition: unknown, fallback: string): string {
101
+ if (
102
+ typeof definition === "object" &&
103
+ definition !== null &&
104
+ "name" in definition &&
105
+ typeof (definition as { name: unknown }).name === "string" &&
106
+ (definition as { name: string }).name.length > 0
107
+ ) {
108
+ return (definition as { name: string }).name;
109
+ }
110
+ return fallback;
111
+ }
@@ -0,0 +1,222 @@
1
+ /**
2
+ * `agent/agent.ts`: model, runtime architecture, working directory, hosting, and concurrency.
3
+ */
4
+
5
+ import { basename, isAbsolute, join, resolve } from "node:path";
6
+ import {
7
+ type AgentArchitecture,
8
+ type AgentConcurrencyOptions,
9
+ type AgentConfigDefinition,
10
+ type AgentHostingOptions,
11
+ type AgentRuntime,
12
+ MAX_RUNNING_TURNS_LIMIT,
13
+ type ModelSetting,
14
+ } from "../../types.js";
15
+ import { normalizePositiveInt } from "../bounded-int.js";
16
+ import {
17
+ isReservedSecretName,
18
+ MAX_EGRESS_DOMAINS,
19
+ validateEgressDomain,
20
+ validateSecretName,
21
+ } from "../hosting.js";
22
+ import { defaultLocalHarnessCwd, isNestedInGitRepo } from "../workspace.js";
23
+ import { type DiscoveryContext, displayPath, isBlank } from "./context.js";
24
+ import { findModuleFile } from "./fs.js";
25
+ import { importDefault } from "./modules.js";
26
+
27
+ export function runtimeArchitectureCompatibilityError(agent: {
28
+ runtime: AgentRuntime;
29
+ architecture?: AgentArchitecture;
30
+ }): string | undefined {
31
+ return agent.architecture === "v2" && agent.runtime === "grokbot"
32
+ ? 'architecture: "v2" cannot use runtime: "grokbot": the grokbot runtime executes through the signed-in account\'s hosted /v0/grokbot box, not a deployment-scoped v2 runtime.'
33
+ : undefined;
34
+ }
35
+
36
+ export function resolveArchitecture(
37
+ ctx: DiscoveryContext,
38
+ agentDir: string,
39
+ architecture: AgentArchitecture | undefined
40
+ ): AgentArchitecture | undefined {
41
+ if (
42
+ architecture === undefined ||
43
+ architecture === "v1" ||
44
+ architecture === "v2"
45
+ ) {
46
+ return architecture;
47
+ }
48
+ ctx.diagnostics.push({
49
+ severity: "error",
50
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
51
+ message: `architecture must be "v1" or "v2"; got ${JSON.stringify(architecture)}.`,
52
+ });
53
+ return undefined;
54
+ }
55
+
56
+ /** Absolute harness cwd parent, or undefined when unset / blank. */
57
+ export function resolveAgentCwd(
58
+ ctx: DiscoveryContext,
59
+ authored: string | undefined
60
+ ): string | undefined {
61
+ if (authored === undefined) {
62
+ return undefined;
63
+ }
64
+ const trimmed = authored.trim();
65
+ if (trimmed === "") {
66
+ return undefined;
67
+ }
68
+ return isAbsolute(trimmed) ? trimmed : resolve(ctx.rootDir, trimmed);
69
+ }
70
+
71
+ /**
72
+ * Nested git checkouts inherit ancestor AGENTS.md / .cursor rules and MCP.
73
+ * Point those harnesses at ~/.cache/agent-serve/<dir> unless the agent
74
+ * already set cwd or workspaceDir.
75
+ */
76
+ export async function resolveLocalCwd(
77
+ ctx: DiscoveryContext,
78
+ authoredCwd: string | undefined,
79
+ authoredWorkspaceDir: string | undefined
80
+ ): Promise<string | undefined> {
81
+ const cwd = resolveAgentCwd(ctx, authoredCwd);
82
+ if (cwd !== undefined) {
83
+ return cwd;
84
+ }
85
+ if (resolveAgentCwd(ctx, authoredWorkspaceDir) !== undefined) {
86
+ return undefined;
87
+ }
88
+ if (!(await isNestedInGitRepo(ctx.rootDir))) {
89
+ return undefined;
90
+ }
91
+ return defaultLocalHarnessCwd(basename(ctx.rootDir));
92
+ }
93
+
94
+ /**
95
+ * Validate the authored `hosting` block against the same grammar the
96
+ * backend enforces on deploy. Violations are warning diagnostics (reported
97
+ * by `agent-sdk validate`), not hard failures: the backend stays
98
+ * authoritative and `agent-sdk deploy` re-checks before any network call.
99
+ */
100
+ export function resolveHosting(
101
+ ctx: DiscoveryContext,
102
+ agentDir: string,
103
+ hosting: AgentHostingOptions | undefined
104
+ ): AgentHostingOptions | undefined {
105
+ if (hosting === undefined) {
106
+ return undefined;
107
+ }
108
+ const agentPath = displayPath(ctx, join(agentDir, "agent.ts"));
109
+ const warn = (message: string): void => {
110
+ ctx.diagnostics.push({ severity: "warning", path: agentPath, message });
111
+ };
112
+
113
+ const egressDomains = hosting.egressDomains ?? [];
114
+ for (const domain of egressDomains) {
115
+ const domainError = validateEgressDomain(domain);
116
+ if (domainError !== undefined) {
117
+ warn(`hosting.egressDomains: ${domainError}`);
118
+ }
119
+ }
120
+ if (egressDomains.length > MAX_EGRESS_DOMAINS) {
121
+ warn(
122
+ `hosting.egressDomains lists ${egressDomains.length} domains; deploys are capped at ${MAX_EGRESS_DOMAINS}.`
123
+ );
124
+ }
125
+
126
+ for (const name of hosting.secretNames ?? []) {
127
+ const nameError = validateSecretName(name);
128
+ if (nameError !== undefined) {
129
+ warn(`hosting.secretNames: ${nameError}`);
130
+ } else if (isReservedSecretName(name)) {
131
+ warn(
132
+ `hosting.secretNames: ${JSON.stringify(name)} is platform-managed (CURSOR_* / reserved hosted-storage names); omit it from secretNames.`
133
+ );
134
+ }
135
+ }
136
+
137
+ return {
138
+ ...(hosting.egressDomains === undefined
139
+ ? {}
140
+ : { egressDomains: [...hosting.egressDomains] }),
141
+ ...(hosting.secretNames === undefined
142
+ ? {}
143
+ : { secretNames: [...hosting.secretNames] }),
144
+ };
145
+ }
146
+
147
+ /**
148
+ * Validate the authored `concurrency` block. Invalid values are **error**
149
+ * diagnostics (serve refuses to start): silently dropping a turn ceiling
150
+ * would fail open to unlimited parallelism, the opposite of what the
151
+ * author asked for.
152
+ */
153
+ export function resolveConcurrency(
154
+ ctx: DiscoveryContext,
155
+ agentDir: string,
156
+ concurrency: AgentConcurrencyOptions | undefined
157
+ ): AgentConcurrencyOptions | undefined {
158
+ if (concurrency === undefined || concurrency.maxRunningTurns === undefined) {
159
+ return undefined;
160
+ }
161
+ try {
162
+ return {
163
+ maxRunningTurns: normalizePositiveInt(concurrency.maxRunningTurns, {
164
+ label: "concurrency.maxRunningTurns",
165
+ max: MAX_RUNNING_TURNS_LIMIT,
166
+ }),
167
+ };
168
+ } catch (error) {
169
+ ctx.diagnostics.push({
170
+ severity: "error",
171
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
172
+ message: error instanceof Error ? error.message : String(error),
173
+ });
174
+ return undefined;
175
+ }
176
+ }
177
+
178
+ export async function loadAgentConfig(
179
+ ctx: DiscoveryContext,
180
+ agentDir: string,
181
+ isRoot: boolean
182
+ ): Promise<AgentConfigDefinition | undefined> {
183
+ const configPath = await findModuleFile(agentDir, "agent");
184
+ if (configPath === undefined) {
185
+ ctx.diagnostics.push({
186
+ severity: "error",
187
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
188
+ message: isRoot
189
+ ? "agent.ts is required on the root agent: default-export defineAgent({ ... })"
190
+ : "agent.ts is required on a subagent: default-export defineAgent({ description: ... })",
191
+ });
192
+ return undefined;
193
+ }
194
+
195
+ const definition = await importDefault(ctx, configPath, "agent");
196
+ if (definition === undefined) {
197
+ return undefined;
198
+ }
199
+ const config = definition as AgentConfigDefinition;
200
+
201
+ if (!isRoot && isBlank(config.description)) {
202
+ ctx.diagnostics.push({
203
+ severity: "error",
204
+ path: displayPath(ctx, configPath),
205
+ message:
206
+ "Subagents require a description; the parent model reads it to decide when to delegate.",
207
+ });
208
+ }
209
+ return config;
210
+ }
211
+
212
+ export function isValidModelSetting(model: unknown): model is ModelSetting {
213
+ if (typeof model === "string") {
214
+ return model.trim() !== "";
215
+ }
216
+ return (
217
+ typeof model === "object" &&
218
+ model !== null &&
219
+ typeof (model as { id?: unknown }).id === "string" &&
220
+ (model as { id: string }).id.trim() !== ""
221
+ );
222
+ }