@cursor/july 0.1.108 → 0.1.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/AGENTS.md +2 -6
  2. package/README.md +3 -6
  3. package/dist/channels/bitbucket/api.d.ts +41 -0
  4. package/dist/channels/bitbucket/api.d.ts.map +1 -1
  5. package/dist/channels/bitbucket/api.js +260 -0
  6. package/dist/channels/bitbucket/binding.d.ts +4 -0
  7. package/dist/channels/bitbucket/binding.d.ts.map +1 -1
  8. package/dist/channels/bitbucket/binding.js +16 -0
  9. package/dist/channels/bitbucket/index.d.ts +1 -1
  10. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  11. package/dist/channels/bitbucket/index.js +1 -1
  12. package/dist/channels/gitlab/api.d.ts +27 -0
  13. package/dist/channels/gitlab/api.d.ts.map +1 -1
  14. package/dist/channels/gitlab/api.js +88 -0
  15. package/dist/channels/gitlab/binding.d.ts +5 -0
  16. package/dist/channels/gitlab/binding.d.ts.map +1 -1
  17. package/dist/channels/gitlab/binding.js +10 -0
  18. package/dist/channels/gitlab/index.d.ts +1 -1
  19. package/dist/channels/gitlab/index.d.ts.map +1 -1
  20. package/dist/channels/gitlab/index.js +1 -1
  21. package/dist/channels/slack/dispatch.d.ts +10 -0
  22. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  23. package/dist/channels/slack/dispatch.js +20 -3
  24. package/dist/channels/slack/slack-channel.d.ts +12 -5
  25. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  26. package/dist/channels/slack/slack-channel.js +59 -8
  27. package/dist/docs/404.html +2 -2
  28. package/dist/docs/assets/{app.BASKM3M4.js → app.Cr-wVbnB.js} +1 -1
  29. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.js → building-with-agents.md.D0KbSkJn.js} +2 -2
  30. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.lean.js → building-with-agents.md.D0KbSkJn.lean.js} +1 -1
  31. package/dist/docs/assets/chunks/@localSearchIndexroot.CFVQ4S17.js +1 -0
  32. package/dist/docs/assets/chunks/{VPLocalSearchBox.BOKxlYGP.js → VPLocalSearchBox.CVQERt56.js} +1 -1
  33. package/dist/docs/assets/chunks/{theme.DbDZW-zb.js → theme.Dnsd3XOn.js} +2 -2
  34. package/dist/docs/assets/concepts.md.B4o63Gul.js +1 -0
  35. package/dist/docs/assets/evals.md.C7JLjoEP.js +211 -0
  36. package/dist/docs/assets/evals.md.C7JLjoEP.lean.js +1 -0
  37. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.js +10 -0
  38. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.lean.js +1 -0
  39. package/dist/docs/assets/{guides_github.md.BH33UEBJ.js → guides_github.md.TZaTZlfz.js} +13 -3
  40. package/dist/docs/assets/{guides_github.md.BH33UEBJ.lean.js → guides_github.md.TZaTZlfz.lean.js} +1 -1
  41. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.js +14 -0
  42. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.lean.js +1 -0
  43. package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.js → guides_webhooks.md.CJK484ex.js} +2 -2
  44. package/dist/docs/assets/{hillclimbing.md.CpTGTCle.js → hillclimbing.md.BOiVo1tf.js} +1 -1
  45. package/dist/docs/assets/index.md.DD9Q2XuJ.js +5 -0
  46. package/dist/docs/assets/{index.md.BjH1w2ZW.lean.js → index.md.DD9Q2XuJ.lean.js} +1 -1
  47. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.js → reference_channels.md.CAo-iK4j.js} +2 -2
  48. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.lean.js → reference_channels.md.CAo-iK4j.lean.js} +1 -1
  49. package/dist/docs/assets/{reference_cli.md.Ca26u0Es.js → reference_cli.md.Deg7849l.js} +1 -1
  50. package/dist/docs/assets/{reference_extensions.md.CPWt00ds.js → reference_extensions.md.ZAVUyuEX.js} +2 -2
  51. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.js → reference_hooks.md.BlM_bOg6.js} +3 -3
  52. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.lean.js → reference_hooks.md.BlM_bOg6.lean.js} +1 -1
  53. package/dist/docs/assets/{reference_http-api.md.oySXBO8o.js → reference_http-api.md.BwaCo-VO.js} +1 -1
  54. package/dist/docs/assets/{reference_playground.md.4myJPxrf.js → reference_playground.md.DLnoaczX.js} +1 -1
  55. package/dist/docs/assets/{reference_playground.md.4myJPxrf.lean.js → reference_playground.md.DLnoaczX.lean.js} +1 -1
  56. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.js → reference_project-layout.md.BEU8MtQV.js} +3 -3
  57. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.lean.js → reference_project-layout.md.BEU8MtQV.lean.js} +1 -1
  58. package/dist/docs/assets/reference_sessions.md.CyXV1MUw.js +1 -0
  59. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.js +35 -0
  60. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.lean.js +1 -0
  61. package/dist/docs/assets/{skills_evals.md.BhovOvrl.js → skills_evals.md.DFxYPErF.js} +3 -3
  62. package/dist/docs/assets/skills_evals.md.DFxYPErF.lean.js +1 -0
  63. package/dist/docs/assets/{skills_framework-map.md.D-tFZhFS.js → skills_framework-map.md.BxLSOhSY.js} +1 -1
  64. package/dist/docs/assets/skills_index.md.DL7EHaQ-.js +1 -0
  65. package/dist/docs/assets/skills_index.md.DL7EHaQ-.lean.js +1 -0
  66. package/dist/docs/assets/{storage.md.BOHeqk2M.js → storage.md.BUrhJ-Zz.js} +4 -4
  67. package/dist/docs/assets/{storage.md.BOHeqk2M.lean.js → storage.md.BUrhJ-Zz.lean.js} +1 -1
  68. package/dist/docs/building-with-agents.html +5 -5
  69. package/dist/docs/building-with-agents.md +3 -2
  70. package/dist/docs/concepts.html +5 -5
  71. package/dist/docs/concepts.md +2 -4
  72. package/dist/docs/deployment.html +4 -4
  73. package/dist/docs/evals.html +161 -35
  74. package/dist/docs/evals.md +612 -297
  75. package/dist/docs/guides/agent-to-agent.html +4 -4
  76. package/dist/docs/guides/bitbucket.html +36 -0
  77. package/dist/docs/guides/bitbucket.md +84 -0
  78. package/dist/docs/guides/cloud-agents.html +4 -4
  79. package/dist/docs/guides/convert-automation.html +4 -4
  80. package/dist/docs/guides/github.html +17 -7
  81. package/dist/docs/guides/github.md +31 -0
  82. package/dist/docs/guides/gitlab.html +40 -0
  83. package/dist/docs/guides/gitlab.md +92 -0
  84. package/dist/docs/guides/grokbot-agents.html +4 -4
  85. package/dist/docs/guides/human-in-the-loop.html +4 -4
  86. package/dist/docs/guides/improve.html +4 -4
  87. package/dist/docs/guides/mcp-oauth.html +4 -4
  88. package/dist/docs/guides/opentelemetry.html +4 -4
  89. package/dist/docs/guides/slack.html +5 -5
  90. package/dist/docs/guides/webhooks.html +6 -6
  91. package/dist/docs/guides/webhooks.md +4 -2
  92. package/dist/docs/hashmap.json +1 -1
  93. package/dist/docs/hillclimbing.html +6 -6
  94. package/dist/docs/hillclimbing.md +2 -2
  95. package/dist/docs/index.html +6 -6
  96. package/dist/docs/index.md +10 -6
  97. package/dist/docs/llms-full.txt +1113 -778
  98. package/dist/docs/llms.txt +6 -5
  99. package/dist/docs/quickstart.html +4 -4
  100. package/dist/docs/reference/agent-config.html +4 -4
  101. package/dist/docs/reference/artifacts.html +4 -4
  102. package/dist/docs/reference/channels.html +6 -6
  103. package/dist/docs/reference/channels.md +16 -3
  104. package/dist/docs/reference/cli.html +6 -6
  105. package/dist/docs/reference/cli.md +6 -4
  106. package/dist/docs/reference/connections.html +4 -4
  107. package/dist/docs/reference/extensions.html +7 -7
  108. package/dist/docs/reference/extensions.md +0 -3
  109. package/dist/docs/reference/hooks.html +7 -7
  110. package/dist/docs/reference/hooks.md +9 -12
  111. package/dist/docs/reference/http-api.html +6 -6
  112. package/dist/docs/reference/http-api.md +2 -3
  113. package/dist/docs/reference/instructions.html +4 -4
  114. package/dist/docs/reference/playground.html +5 -5
  115. package/dist/docs/reference/playground.md +0 -4
  116. package/dist/docs/reference/project-layout.html +7 -7
  117. package/dist/docs/reference/project-layout.md +1 -8
  118. package/dist/docs/reference/prompt.html +4 -4
  119. package/dist/docs/reference/result.html +4 -4
  120. package/dist/docs/reference/schedules.html +4 -4
  121. package/dist/docs/reference/sessions.html +5 -5
  122. package/dist/docs/reference/sessions.md +1 -2
  123. package/dist/docs/reference/skills.html +4 -4
  124. package/dist/docs/reference/subagents.html +4 -4
  125. package/dist/docs/reference/tools.html +4 -4
  126. package/dist/docs/scaffolding-agents.html +4 -4
  127. package/dist/docs/skills/create-agent.html +4 -4
  128. package/dist/docs/skills/debug.html +4 -4
  129. package/dist/docs/skills/deploy.html +61 -0
  130. package/dist/docs/skills/deploy.md +161 -0
  131. package/dist/docs/skills/evals.html +8 -8
  132. package/dist/docs/skills/evals.md +44 -6
  133. package/dist/docs/skills/framework-map.html +5 -5
  134. package/dist/docs/skills/framework-map.md +1 -2
  135. package/dist/docs/skills/github.html +4 -4
  136. package/dist/docs/skills/hillclimb.html +4 -4
  137. package/dist/docs/skills/index.html +6 -6
  138. package/dist/docs/skills/index.md +1 -1
  139. package/dist/docs/skills/mcp-auth.html +4 -4
  140. package/dist/docs/skills/otel.html +4 -4
  141. package/dist/docs/skills/setup-slack.html +4 -4
  142. package/dist/docs/storage.html +8 -8
  143. package/dist/docs/storage.md +15 -24
  144. package/dist/docs/templates/agentic-owners.html +4 -4
  145. package/dist/docs/templates/agents-md.html +4 -4
  146. package/dist/docs/templates/code-wiki.html +4 -4
  147. package/dist/docs/templates/demo.html +4 -4
  148. package/dist/docs/templates/grokbot-agents.html +4 -4
  149. package/dist/docs/templates/pr-autofixer.html +4 -4
  150. package/dist/docs/templates/security-help.html +4 -4
  151. package/dist/docs/templates/security-reviewer.html +4 -4
  152. package/dist/docs/templates/triage.html +4 -4
  153. package/dist/docs/troubleshooting.html +4 -4
  154. package/dist/extensions.d.ts +2 -3
  155. package/dist/extensions.d.ts.map +1 -1
  156. package/dist/extensions.js +2 -5
  157. package/dist/index.d.ts +2 -3
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +1 -2
  160. package/dist/internal/authored-alias-hooks.d.ts +5 -0
  161. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  162. package/dist/internal/authored-alias-hooks.js +17 -0
  163. package/dist/internal/authored-loaders.d.ts +4 -0
  164. package/dist/internal/authored-loaders.d.ts.map +1 -1
  165. package/dist/internal/authored-loaders.js +21 -2
  166. package/dist/internal/cli-ax.d.ts +1 -2
  167. package/dist/internal/cli-ax.d.ts.map +1 -1
  168. package/dist/internal/cli-ax.js +1 -2
  169. package/dist/internal/continuation-channel.d.ts.map +1 -1
  170. package/dist/internal/continuation-channel.js +2 -2
  171. package/dist/internal/continuation-identity.js +8 -3
  172. package/dist/internal/discovery/agent.d.ts +1 -1
  173. package/dist/internal/discovery/agent.d.ts.map +1 -1
  174. package/dist/internal/discovery/agent.js +0 -5
  175. package/dist/internal/discovery/extension-overlay.d.ts +1 -2
  176. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -1
  177. package/dist/internal/discovery/extension-overlay.js +0 -14
  178. package/dist/internal/discovery/extensions.d.ts +1 -2
  179. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  180. package/dist/internal/discovery/extensions.js +4 -22
  181. package/dist/internal/discovery/info.d.ts.map +1 -1
  182. package/dist/internal/discovery/info.js +42 -24
  183. package/dist/internal/discovery/modules.js +0 -1
  184. package/dist/internal/discovery/project.d.ts.map +1 -1
  185. package/dist/internal/discovery/project.js +0 -16
  186. package/dist/internal/eval-runner.js +0 -1
  187. package/dist/internal/framework-file-storage.d.ts +4 -5
  188. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  189. package/dist/internal/framework-file-storage.js +4 -5
  190. package/dist/internal/framework-storage-selection.d.ts +2 -2
  191. package/dist/internal/framework-storage-selection.js +2 -2
  192. package/dist/internal/init-scaffold.d.ts.map +1 -1
  193. package/dist/internal/init-scaffold.js +1 -2
  194. package/dist/internal/install-cursor-skills.d.ts +5 -2
  195. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  196. package/dist/internal/install-cursor-skills.js +25 -5
  197. package/dist/internal/run-client.d.ts +1 -1
  198. package/dist/internal/sdk-runner.js +1 -1
  199. package/dist/internal/server.js +0 -14
  200. package/dist/internal/session-engine.d.ts +5 -35
  201. package/dist/internal/session-engine.d.ts.map +1 -1
  202. package/dist/internal/session-engine.js +17 -162
  203. package/dist/internal/storage-coordinator.d.ts +5 -19
  204. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  205. package/dist/internal/storage-coordinator.js +3 -62
  206. package/dist/internal/storage-roles.d.ts +4 -9
  207. package/dist/internal/storage-roles.d.ts.map +1 -1
  208. package/dist/internal/storage-roles.js +2 -2
  209. package/dist/playground/assets/index-Bhxzrcf6.css +1 -0
  210. package/dist/playground/assets/index-CqLX5uF3.js +67 -0
  211. package/dist/playground/index.html +2 -2
  212. package/dist/storage-backends/cursor-hosted-v2.d.ts +4 -5
  213. package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
  214. package/dist/storage-backends/cursor-hosted-v2.js +4 -5
  215. package/dist/storage-backends/cursor-hosted.d.ts +1 -2
  216. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  217. package/dist/storage-backends/cursor-hosted.js +0 -30
  218. package/dist/storage-backends/file-kv.d.ts +9 -12
  219. package/dist/storage-backends/file-kv.d.ts.map +1 -1
  220. package/dist/storage-backends/file-kv.js +11 -47
  221. package/dist/storage-protocol.d.ts +3 -11
  222. package/dist/storage-protocol.d.ts.map +1 -1
  223. package/dist/storage-protocol.js +3 -11
  224. package/dist/storage.d.ts +8 -36
  225. package/dist/storage.d.ts.map +1 -1
  226. package/dist/storage.js +8 -44
  227. package/dist/types.d.ts +20 -57
  228. package/dist/types.d.ts.map +1 -1
  229. package/docs/README.md +10 -6
  230. package/docs/building-with-agents.md +3 -2
  231. package/docs/concepts.md +2 -4
  232. package/docs/evals.md +613 -298
  233. package/docs/guides/bitbucket.md +89 -0
  234. package/docs/guides/github.md +31 -0
  235. package/docs/guides/gitlab.md +97 -0
  236. package/docs/guides/webhooks.md +4 -2
  237. package/docs/hillclimbing.md +2 -2
  238. package/docs/reference/channels.md +16 -3
  239. package/docs/reference/cli.md +6 -4
  240. package/docs/reference/extensions.md +0 -3
  241. package/docs/reference/hooks.md +9 -12
  242. package/docs/reference/http-api.md +2 -3
  243. package/docs/reference/playground.md +0 -4
  244. package/docs/reference/project-layout.md +1 -8
  245. package/docs/reference/sessions.md +1 -2
  246. package/docs/skills/index.md +2 -2
  247. package/docs/storage.md +15 -24
  248. package/package.json +1 -7
  249. package/skills/deploy/SKILL.md +169 -0
  250. package/skills/evals/SKILL.md +45 -8
  251. package/skills/framework-map/SKILL.md +1 -2
  252. package/src/channels/bitbucket/api.ts +341 -0
  253. package/src/channels/bitbucket/binding.ts +25 -0
  254. package/src/channels/bitbucket/index.ts +2 -0
  255. package/src/channels/gitlab/api.ts +123 -0
  256. package/src/channels/gitlab/binding.ts +12 -0
  257. package/src/channels/gitlab/index.ts +1 -0
  258. package/src/channels/slack/dispatch.ts +30 -0
  259. package/src/channels/slack/slack-channel.ts +69 -7
  260. package/src/extensions.ts +2 -6
  261. package/src/index.ts +0 -3
  262. package/src/internal/authored-alias-hooks.ts +32 -0
  263. package/src/internal/authored-loaders.ts +26 -2
  264. package/src/internal/cli-ax.ts +1 -2
  265. package/src/internal/continuation-channel.ts +2 -1
  266. package/src/internal/continuation-identity.ts +10 -2
  267. package/src/internal/discovery/agent.ts +1 -7
  268. package/src/internal/discovery/extension-overlay.ts +0 -18
  269. package/src/internal/discovery/extensions.ts +2 -26
  270. package/src/internal/discovery/info.ts +3 -13
  271. package/src/internal/discovery/modules.ts +0 -1
  272. package/src/internal/discovery/project.ts +0 -16
  273. package/src/internal/eval-runner.ts +0 -1
  274. package/src/internal/framework-file-storage.ts +4 -5
  275. package/src/internal/framework-storage-selection.ts +2 -2
  276. package/src/internal/init-scaffold.ts +1 -2
  277. package/src/internal/install-cursor-skills.ts +38 -5
  278. package/src/internal/run-client.ts +1 -1
  279. package/src/internal/sdk-runner.ts +1 -1
  280. package/src/internal/server.ts +0 -16
  281. package/src/internal/session-engine.ts +14 -202
  282. package/src/internal/storage-coordinator.ts +5 -76
  283. package/src/internal/storage-roles.ts +4 -9
  284. package/src/storage-backends/cursor-hosted-v2.ts +4 -7
  285. package/src/storage-backends/cursor-hosted.ts +0 -37
  286. package/src/storage-backends/file-kv.ts +10 -51
  287. package/src/storage-protocol.ts +3 -17
  288. package/src/storage.ts +10 -101
  289. package/src/types.ts +19 -56
  290. package/templates/demo/README.md +10 -6
  291. package/templates/demo/agent/channels/github.ts +2 -0
  292. package/templates/demo/agent/channels/queue.ts +6 -2
  293. package/templates/demo/agent/lib/repos.ts +5 -0
  294. package/templates/demo/init.json +25 -0
  295. package/dist/ab.d.ts +0 -209
  296. package/dist/ab.d.ts.map +0 -1
  297. package/dist/ab.js +0 -246
  298. package/dist/docs/ab.html +0 -80
  299. package/dist/docs/ab.md +0 -332
  300. package/dist/docs/assets/ab.md.mlVgqvSk.js +0 -54
  301. package/dist/docs/assets/ab.md.mlVgqvSk.lean.js +0 -1
  302. package/dist/docs/assets/chunks/@localSearchIndexroot.BHZYsNVi.js +0 -1
  303. package/dist/docs/assets/concepts.md.DgEcZOfT.js +0 -1
  304. package/dist/docs/assets/evals.md.C1ekS3k2.js +0 -85
  305. package/dist/docs/assets/evals.md.C1ekS3k2.lean.js +0 -1
  306. package/dist/docs/assets/index.md.BjH1w2ZW.js +0 -5
  307. package/dist/docs/assets/reference_sessions.md.CueyOHSL.js +0 -1
  308. package/dist/docs/assets/skills_ab.md.CsFNatVx.js +0 -26
  309. package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +0 -1
  310. package/dist/docs/assets/skills_evals.md.BhovOvrl.lean.js +0 -1
  311. package/dist/docs/assets/skills_index.md.DKwIxzGg.js +0 -1
  312. package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +0 -1
  313. package/dist/docs/skills/ab.html +0 -52
  314. package/dist/docs/skills/ab.md +0 -50
  315. package/dist/internal/ab-collector.d.ts +0 -44
  316. package/dist/internal/ab-collector.d.ts.map +0 -1
  317. package/dist/internal/ab-collector.js +0 -142
  318. package/dist/internal/ab-fold.d.ts +0 -36
  319. package/dist/internal/ab-fold.d.ts.map +0 -1
  320. package/dist/internal/ab-fold.js +0 -175
  321. package/dist/internal/ab-snapshot.d.ts +0 -68
  322. package/dist/internal/ab-snapshot.d.ts.map +0 -1
  323. package/dist/internal/ab-snapshot.js +0 -208
  324. package/dist/internal/discovery/ab.d.ts +0 -9
  325. package/dist/internal/discovery/ab.d.ts.map +0 -1
  326. package/dist/internal/discovery/ab.js +0 -113
  327. package/dist/playground/assets/index-BMDqAeXu.js +0 -67
  328. package/dist/playground/assets/index-LUgJoWdL.css +0 -1
  329. package/docs/ab.md +0 -337
  330. package/skills/ab/SKILL.md +0 -58
  331. package/src/ab.ts +0 -430
  332. package/src/internal/ab-collector.ts +0 -200
  333. package/src/internal/ab-fold.ts +0 -232
  334. package/src/internal/ab-snapshot.ts +0 -331
  335. package/src/internal/discovery/ab.ts +0 -131
  336. /package/dist/docs/assets/{concepts.md.DgEcZOfT.lean.js → concepts.md.B4o63Gul.lean.js} +0 -0
  337. /package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.lean.js → guides_webhooks.md.CJK484ex.lean.js} +0 -0
  338. /package/dist/docs/assets/{hillclimbing.md.CpTGTCle.lean.js → hillclimbing.md.BOiVo1tf.lean.js} +0 -0
  339. /package/dist/docs/assets/{reference_cli.md.Ca26u0Es.lean.js → reference_cli.md.Deg7849l.lean.js} +0 -0
  340. /package/dist/docs/assets/{reference_extensions.md.CPWt00ds.lean.js → reference_extensions.md.ZAVUyuEX.lean.js} +0 -0
  341. /package/dist/docs/assets/{reference_http-api.md.oySXBO8o.lean.js → reference_http-api.md.BwaCo-VO.lean.js} +0 -0
  342. /package/dist/docs/assets/{reference_sessions.md.CueyOHSL.lean.js → reference_sessions.md.CyXV1MUw.lean.js} +0 -0
  343. /package/dist/docs/assets/{skills_framework-map.md.D-tFZhFS.lean.js → skills_framework-map.md.BxLSOhSY.lean.js} +0 -0
@@ -8,7 +8,6 @@ import { join, resolve } from "node:path";
8
8
  import type {
9
9
  ArtifactsDefinition,
10
10
  ConnectionDefinition,
11
- DiscoveredAB,
12
11
  DiscoveredChannel,
13
12
  DiscoveredConnection,
14
13
  DiscoveredExtension,
@@ -22,7 +21,6 @@ import type {
22
21
  ToolDefinition,
23
22
  } from "../../types.js";
24
23
  import { buildIdentityPreamble, withIdentityPreamble } from "../workspace.js";
25
- import { loadABs } from "./ab.js";
26
24
  import { loadChannels } from "./channels.js";
27
25
  import {
28
26
  compileConnection,
@@ -33,7 +31,6 @@ import {
33
31
  import { type DiscoveryContext, displayPath } from "./context.js";
34
32
  import { type CursorPluginAgent, readCursorPlugin } from "./cursor-plugin.js";
35
33
  import {
36
- overlayAbs,
37
34
  overlayArtifacts,
38
35
  overlayChannels,
39
36
  overlayHooks,
@@ -74,7 +71,6 @@ export interface ExtensionContributions {
74
71
  schedules: DiscoveredSchedule[];
75
72
  instructionParts: string[];
76
73
  seedFiles: SeedFile[];
77
- abs: DiscoveredAB[];
78
74
  artifacts: ArtifactsDefinition | undefined;
79
75
  }
80
76
 
@@ -171,7 +167,6 @@ interface ExtensionTree {
171
167
  schedules: DiscoveredSchedule[];
172
168
  instructions?: string;
173
169
  seedFiles: SeedFile[];
174
- abs: DiscoveredAB[];
175
170
  artifacts?: ArtifactsDefinition;
176
171
  }
177
172
 
@@ -192,7 +187,6 @@ function emptyDiscovered(
192
187
  schedules: [],
193
188
  instructions: false,
194
189
  seedFiles: [],
195
- abs: [],
196
190
  artifactKinds: [],
197
191
  };
198
192
  }
@@ -242,7 +236,6 @@ async function mountExtension(
242
236
  const seedFiles = new Map(
243
237
  tree.seedFiles.map((seed) => [seed.relativePath, seed])
244
238
  );
245
- const abs = byAbSource(tree.abs);
246
239
  let artifacts = tree.artifacts;
247
240
  let instructions = tree.instructions;
248
241
 
@@ -333,7 +326,6 @@ async function mountExtension(
333
326
  for (const seed of await loadSeedFiles(ctx, site.overlayDir)) {
334
327
  seedFiles.set(seed.relativePath, seed);
335
328
  }
336
- await overlayAbs(ctx, site, abs, site.overlayDir);
337
329
  artifacts = await overlayArtifacts(ctx, site.overlayDir, artifacts);
338
330
  }
339
331
 
@@ -407,14 +399,6 @@ async function mountExtension(
407
399
  into.seedFiles.push(seed);
408
400
  mounted.seedFiles.push(seed.relativePath);
409
401
  }
410
- for (const experiment of abs.values()) {
411
- const composed = `${site.ns}__${experiment.name}`;
412
- into.abs.push({
413
- name: composed,
414
- definition: experiment.definition,
415
- });
416
- mounted.abs.push(composed);
417
- }
418
402
  if (artifacts !== undefined) {
419
403
  const kinds: NonNullable<ArtifactsDefinition["kinds"]> = {};
420
404
  for (const [kind, config] of Object.entries(artifacts.kinds ?? {})) {
@@ -464,7 +448,6 @@ async function readExtensionTree(
464
448
  channels: [],
465
449
  schedules: [],
466
450
  seedFiles: [],
467
- abs: [],
468
451
  };
469
452
  }
470
453
  return readNativeTree(ctx, root);
@@ -490,7 +473,6 @@ async function readNativeTree(
490
473
  schedules: await loadSchedules(ctx, join(root, "schedules")),
491
474
  instructions: await loadInstructions(ctx, root, undefined, false),
492
475
  seedFiles: await loadSeedFiles(ctx, root),
493
- abs: await loadABs(ctx, root),
494
476
  artifacts: await loadArtifacts(ctx, root),
495
477
  };
496
478
  }
@@ -519,19 +501,14 @@ function byName<T extends { name: string }>(items: T[]): Map<string, T> {
519
501
  return new Map(items.map((item) => [item.name, item]));
520
502
  }
521
503
 
522
- function byAbSource(items: DiscoveredAB[]): Map<string, DiscoveredAB> {
523
- return new Map(items.map((item) => [item.source ?? item.name, item]));
524
- }
525
-
526
504
  function byId<T extends { id: string }>(items: T[]): Map<string, T> {
527
505
  return new Map(items.map((item) => [item.id, item]));
528
506
  }
529
507
 
530
508
  /**
531
509
  * Agent-singleton slots: one runtime (`agent.ts`), one storage backend,
532
- * one OTLP exporter, one A/B platform config. Playground chips are a
533
- * Vite glob of the agent tree, not a discovery walk. Nested
534
- * `extensions/` are not mounted.
510
+ * one OTLP exporter. Playground chips are a Vite glob of the agent tree,
511
+ * not a discovery walk. Nested `extensions/` are not mounted.
535
512
  */
536
513
  async function warnAgentRootOnlySlots(
537
514
  ctx: DiscoveryContext,
@@ -541,7 +518,6 @@ async function warnAgentRootOnlySlots(
541
518
  ["agent.ts", "agent.ts"],
542
519
  ["storage.ts", "storage"],
543
520
  ["otel.ts", "otel"],
544
- ["ab.config.ts", "A/B config"],
545
521
  ] as const;
546
522
  for (const [file, label] of files) {
547
523
  const path = join(root, file);
@@ -2,7 +2,6 @@
2
2
  * The `info` / `GET /v1/info` projection of an {@link AgentProject}.
3
3
  */
4
4
 
5
- import { resolveABMaxPlaygroundSessions } from "../../ab.js";
6
5
  import { resolveArtifactsMax } from "../../artifacts.js";
7
6
  import {
8
7
  type AgentProject,
@@ -140,6 +139,9 @@ export function projectInfo(project: AgentProject): AgentProjectInfo {
140
139
  if (meta?.factoryEventTypes !== undefined) {
141
140
  info.factoryEventTypes = meta.factoryEventTypes;
142
141
  }
142
+ if (meta?.slackEventTypes !== undefined) {
143
+ info.slackEventTypes = meta.slackEventTypes;
144
+ }
143
145
  if (meta?.slackChannelPosts !== undefined) {
144
146
  info.slackChannelPosts = meta.slackChannelPosts;
145
147
  }
@@ -158,18 +160,6 @@ export function projectInfo(project: AgentProject): AgentProjectInfo {
158
160
  name: reminder.name,
159
161
  })),
160
162
  hooks: project.hooks.map((hook) => hook.name),
161
- abs: project.abs.map((experiment) => experiment.name),
162
- ...(project.abConfig === undefined && project.abs.length === 0
163
- ? {}
164
- : {
165
- abConfig: {
166
- maxPlaygroundSessions: resolveABMaxPlaygroundSessions(
167
- project.abConfig?.maxPlaygroundSessions
168
- ),
169
- durableSamples: project.storage?.abs !== undefined,
170
- durableSnapshots: project.storage?.abs?.putSnapshot !== undefined,
171
- },
172
- }),
173
163
  storage:
174
164
  project.storage === undefined
175
165
  ? undefined
@@ -103,7 +103,6 @@ const DEFINE_HELPER_NAME: Record<ImportableKind, string> = {
103
103
  schedule: "defineSchedule",
104
104
  reminder: "defineReminder",
105
105
  hook: "defineHook",
106
- ab: "defineAB",
107
106
  storage: "defineStorage",
108
107
  artifacts: "defineArtifacts",
109
108
  otel: "defineOtel",
@@ -14,7 +14,6 @@ import {
14
14
  applyAgentContinuationDefaults,
15
15
  warnOmittedContinuationDowngrades,
16
16
  } from "../continuation-channel.js";
17
- import { loadABConfig, loadABs } from "./ab.js";
18
17
  import { loadAgent, warnUnknownSlots } from "./agent.js";
19
18
  import { loadChannels } from "./channels.js";
20
19
  import {
@@ -240,19 +239,6 @@ export async function loadAgentProject(
240
239
  const reminders = await loadReminders(ctx, join(agentDir, "reminders"));
241
240
  const hooks = await loadHooks(ctx, join(agentDir, "hooks"));
242
241
  hooks.push(...projectSlots.hooks);
243
- const abs = await loadABs(ctx, agentDir);
244
- for (const experiment of projectSlots.abs) {
245
- if (abs.some((existing) => existing.name === experiment.name)) {
246
- ctx.diagnostics.push({
247
- severity: "error",
248
- path: displayPath(ctx, join(agentDir, "extensions")),
249
- message: `Extension A/B experiment "${experiment.name}" collides with an agent experiment.`,
250
- });
251
- continue;
252
- }
253
- abs.push(experiment);
254
- }
255
- const abConfig = await loadABConfig(ctx, agentDir);
256
242
  const storage = await loadStorage(ctx, agentDir, agent.architecture);
257
243
  const artifacts = await mergeProjectArtifacts(
258
244
  ctx,
@@ -295,8 +281,6 @@ export async function loadAgentProject(
295
281
  schedules,
296
282
  reminders,
297
283
  hooks,
298
- abs,
299
- abConfig,
300
284
  storage,
301
285
  artifacts,
302
286
  result,
@@ -633,7 +633,6 @@ async function runOneEval(
633
633
  sessionId,
634
634
  continuationToken,
635
635
  startIndex: nextEventIndex,
636
- // Keep defineEval traffic out of live defineAB enrollment/metrics.
637
636
  purpose: "eval",
638
637
  bearerToken: opts.bearerToken,
639
638
  headers: opts.headers,
@@ -21,9 +21,8 @@
21
21
  * `continuation` go to the framework file store (file-shaped; the store
22
22
  * accepts values up to 64 MiB per
23
23
  * object without chunking, versus the KV proxy's 1 MiB row cap), while
24
- * author `kv`, eval runs, A/B samples, and conditional writes stay on the
25
- * control-plane KV proxy (the dashboard reads them there, and CAS needs a
26
- * database).
24
+ * author `kv`, eval runs, and conditional writes stay on the control-plane
25
+ * KV proxy (the dashboard reads them there, and CAS needs a database).
27
26
  *
28
27
  * v2 only, by construction: the composite is selected in
29
28
  * framework-storage-selection.ts, which v1 never reaches with a
@@ -202,8 +201,8 @@ function decodeDocument(key: string, bytes: Uint8Array): JsonValue {
202
201
  /**
203
202
  * Split one storage core by key kind: framework session state to `files`,
204
203
  * everything else to `kv`. Spread over the KV backend when building the
205
- * full definition so its `evals` / `abs` groups (and the cursor-hosted
206
- * marker) ride along untouched; wrap the KV `cas` group with
204
+ * full definition so its `evals` group (and the cursor-hosted marker)
205
+ * rides along untouched; wrap the KV `cas` group with
207
206
  * {@link frameworkGuardedCas} rather than spreading it as-is.
208
207
  */
209
208
  export function composeFrameworkStorage(input: {
@@ -24,8 +24,8 @@
24
24
  * (`AGENT_SERVE_FRAMEWORK_STORE_SOURCE_ID`, bound at task time) holds
25
25
  * session records, event transcripts, and the continuation index —
26
26
  * file-shaped state on file storage, apart from the author-facing user
27
- * store. Author `host.kv`, eval runs, A/B samples, and conditional writes
28
- * ride the AgentSDK v2 KV proxy (cursor-hosted-v2.ts), which resolves the
27
+ * store. Author `host.kv`, eval runs, and conditional writes ride the
28
+ * AgentSDK v2 KV proxy (cursor-hosted-v2.ts), which resolves the
29
29
  * pod service account to the factorydb deployment row (the v1 Bugbot
30
30
  * proxy cannot resolve v2 pods at all). Framework session state never
31
31
  * routes to the KV proxy — the composite splits by key kind — so
@@ -20,7 +20,6 @@ const EMPTY_DIRS: readonly string[] = [
20
20
  "agent/subagents",
21
21
  "agent/channels",
22
22
  "agent/hooks",
23
- "agent/ab",
24
23
  "agent/schedules",
25
24
  "agent/sandbox/workspace",
26
25
  "agent/lib",
@@ -101,7 +100,7 @@ Run the CLI under Node, never Bun.
101
100
  ## Pointers
102
101
 
103
102
  - Package loop: \`node_modules/${PACKAGE_NAME}/AGENTS.md\`
104
- - Skills: \`node_modules/${PACKAGE_NAME}/skills/\` (\`create-agent\`, \`evals\`, \`hillclimb\`, \`debug\`)
103
+ - Skills: \`node_modules/${PACKAGE_NAME}/skills/\` (\`create-agent\`, \`deploy\`, \`evals\`, \`hillclimb\`, \`debug\`)
105
104
  - Docs: \`npx ${PACKAGE_NAME} docs\`
106
105
  - LLM docs index: \`node_modules/${PACKAGE_NAME}/dist/docs/llms.txt\`
107
106
  `;
@@ -57,6 +57,8 @@ export interface PackageSkill {
57
57
  leafDir: string;
58
58
  /** Absolute path to the source skill directory in the package. */
59
59
  sourceDir: string;
60
+ /** Exact package version that supplied this skill. */
61
+ packageVersion: string;
60
62
  }
61
63
 
62
64
  export function cursorSkillsHome(home?: string): string {
@@ -116,6 +118,7 @@ export async function listShippedPackageSkills(
116
118
  } catch {
117
119
  return [];
118
120
  }
121
+ const packageVersion = await readPackageVersion(packageRoot);
119
122
 
120
123
  const skills: PackageSkill[] = [];
121
124
  for (const entry of entries) {
@@ -133,12 +136,23 @@ export async function listShippedPackageSkills(
133
136
  const name =
134
137
  parseFrontmatter(raw).data.name ||
135
138
  `${CURSOR_SKILLS_NAMESPACE}-${entry.name}`;
136
- skills.push({ name, leafDir: entry.name, sourceDir });
139
+ skills.push({ name, leafDir: entry.name, sourceDir, packageVersion });
137
140
  }
138
141
  skills.sort((a, b) => a.leafDir.localeCompare(b.leafDir));
139
142
  return skills;
140
143
  }
141
144
 
145
+ const PACKAGE_VERSION_PLACEHOLDER = "__CURSOR_JULY_VERSION__";
146
+
147
+ async function readPackageVersion(packageRoot: string): Promise<string> {
148
+ const raw = await readFile(join(packageRoot, "package.json"), "utf8");
149
+ const manifest = JSON.parse(raw) as { version?: unknown };
150
+ if (typeof manifest.version !== "string" || manifest.version.trim() === "") {
151
+ throw new Error("The @cursor/july package must declare a version.");
152
+ }
153
+ return manifest.version;
154
+ }
155
+
142
156
  /**
143
157
  * Skills that do not yet have a SKILL.md under ~/.cursor/skills/agentsdk/.
144
158
  * Install still overwrites every shipped skill when the user confirms — this
@@ -200,7 +214,10 @@ export async function installCursorSkills(
200
214
  await makeTreeWritable(target);
201
215
  const skillMdPath = join(target, "SKILL.md");
202
216
  const raw = await readFile(skillMdPath, "utf8");
203
- const adjusted = prepareSkillMarkdownForCursorInstall(raw);
217
+ const adjusted = prepareSkillMarkdownForCursorInstall(
218
+ raw,
219
+ skill.packageVersion
220
+ );
204
221
  if (adjusted !== raw) {
205
222
  await writeFile(skillMdPath, adjusted, "utf8");
206
223
  }
@@ -276,9 +293,13 @@ async function hasLegacyCursorSkillsNamespace(
276
293
 
277
294
  /**
278
295
  * Drop monorepo `paths` globs, set `alwaysApply: true` so Cursor injects the
279
- * body as a global rule, and fix package doc links for ~/.cursor installs.
296
+ * body as a global rule, bind package commands to the installing version, and
297
+ * fix package doc links for ~/.cursor installs.
280
298
  */
281
- export function prepareSkillMarkdownForCursorInstall(content: string): string {
299
+ export function prepareSkillMarkdownForCursorInstall(
300
+ content: string,
301
+ packageVersion?: string
302
+ ): string {
282
303
  const match = /^---\r?\n([\s\S]*?)\r?\n---/.exec(content);
283
304
  if (match === null) {
284
305
  return content;
@@ -291,7 +312,19 @@ export function prepareSkillMarkdownForCursorInstall(content: string): string {
291
312
  /\[`docs\/([^`]+)`\]\(\.\.\/\.\.\/docs\/[^)]+\)/g,
292
313
  "docs/$1 in the @cursor/july package"
293
314
  );
294
- return `---\n${frontmatter.trimEnd()}\n---${adjustedBody}`;
315
+ if (
316
+ adjustedBody.includes(PACKAGE_VERSION_PLACEHOLDER) &&
317
+ (packageVersion === undefined || packageVersion.trim() === "")
318
+ ) {
319
+ throw new Error(
320
+ "Cannot install an Agent SDK skill without a package version."
321
+ );
322
+ }
323
+ const versionBoundBody =
324
+ packageVersion === undefined
325
+ ? adjustedBody
326
+ : adjustedBody.replaceAll(PACKAGE_VERSION_PLACEHOLDER, packageVersion);
327
+ return `---\n${frontmatter.trimEnd()}\n---${versionBoundBody}`;
295
328
  }
296
329
 
297
330
  function stripPathsFromFrontmatter(frontmatter: string): string {
@@ -34,7 +34,7 @@ export interface RunClientOptions extends RequestAuth {
34
34
  onEvent?: (event: SessionEvent) => void;
35
35
  /**
36
36
  * Create-time session purpose. Pass `"eval"` from the eval harness so
37
- * live `defineAB` enrollment is skipped. Default `"live"`.
37
+ * the session is marked as regression traffic. Default `"live"`.
38
38
  */
39
39
  purpose?: SessionPurpose;
40
40
  }
@@ -355,7 +355,7 @@ export class CursorSdkRunner implements AgentRunner {
355
355
  ) {
356
356
  // Cloud `wait()` drops usage after stream reconnect / getRun replay,
357
357
  // or returns an all-zero stub. `getUsage` still has the run's tokens
358
- // (eventually); without them traces/ABs never record an estimated cost.
358
+ // (eventually); without them traces never record an estimated cost.
359
359
  outcome = await fillMissingCloudUsage(agent, result.id, outcome);
360
360
  }
361
361
  return outcome;
@@ -1777,22 +1777,6 @@ function mountAgentRoutes(
1777
1777
  },
1778
1778
  });
1779
1779
 
1780
- // Playground A/Bs tab: fold durable event streams into per-session
1781
- // assignments and aggregate arm metrics (built-ins + derive).
1782
- router.add({
1783
- method: "GET",
1784
- pattern: `${base}/v1/abs`,
1785
- auth: httpAuth,
1786
- handler: async (_request, ctx) => {
1787
- const includeAll =
1788
- dev === true &&
1789
- (args.allowAnonymous === true ||
1790
- (typeof ctx.requestIp === "string" &&
1791
- isLoopbackAddress(ctx.requestIp)));
1792
- return jsonResponse(await engine.abSnapshot(ctx.auth, { includeAll }));
1793
- },
1794
- });
1795
-
1796
1780
  // Durable artifacts (ctx.artifacts / tag_artifact), newest-updated first.
1797
1781
  router.add({
1798
1782
  method: "GET",