@cursor/july 0.1.107 → 0.1.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/AGENTS.md +2 -6
  2. package/README.md +13 -11
  3. package/dist/bin/agent-serve.js +30 -8
  4. package/dist/channels/bitbucket/api.d.ts +41 -0
  5. package/dist/channels/bitbucket/api.d.ts.map +1 -1
  6. package/dist/channels/bitbucket/api.js +260 -0
  7. package/dist/channels/bitbucket/binding.d.ts +4 -0
  8. package/dist/channels/bitbucket/binding.d.ts.map +1 -1
  9. package/dist/channels/bitbucket/binding.js +16 -0
  10. package/dist/channels/bitbucket/index.d.ts +1 -1
  11. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  12. package/dist/channels/bitbucket/index.js +1 -1
  13. package/dist/channels/github/github-channel.js +8 -5
  14. package/dist/channels/github/types.d.ts +5 -1
  15. package/dist/channels/github/types.d.ts.map +1 -1
  16. package/dist/channels/gitlab/api.d.ts +27 -0
  17. package/dist/channels/gitlab/api.d.ts.map +1 -1
  18. package/dist/channels/gitlab/api.js +88 -0
  19. package/dist/channels/gitlab/binding.d.ts +5 -0
  20. package/dist/channels/gitlab/binding.d.ts.map +1 -1
  21. package/dist/channels/gitlab/binding.js +10 -0
  22. package/dist/channels/gitlab/index.d.ts +1 -1
  23. package/dist/channels/gitlab/index.d.ts.map +1 -1
  24. package/dist/channels/gitlab/index.js +1 -1
  25. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  26. package/dist/channels/origin/origin-channel.js +27 -13
  27. package/dist/channels/origin/types.d.ts +5 -1
  28. package/dist/channels/origin/types.d.ts.map +1 -1
  29. package/dist/channels/slack/dispatch.d.ts +10 -0
  30. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  31. package/dist/channels/slack/dispatch.js +20 -3
  32. package/dist/channels/slack/slack-channel.d.ts +12 -5
  33. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  34. package/dist/channels/slack/slack-channel.js +59 -8
  35. package/dist/channels.d.ts +45 -0
  36. package/dist/channels.d.ts.map +1 -1
  37. package/dist/channels.js +106 -7
  38. package/dist/connections.d.ts +2 -1
  39. package/dist/connections.d.ts.map +1 -1
  40. package/dist/connections.js +2 -1
  41. package/dist/docs/404.html +2 -2
  42. package/dist/docs/assets/{app.CtuckIiL.js → app.Cr-wVbnB.js} +1 -1
  43. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.js → building-with-agents.md.D0KbSkJn.js} +2 -2
  44. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.lean.js → building-with-agents.md.D0KbSkJn.lean.js} +1 -1
  45. package/dist/docs/assets/chunks/@localSearchIndexroot.CFVQ4S17.js +1 -0
  46. package/dist/docs/assets/chunks/{VPLocalSearchBox.Bkkhnu8K.js → VPLocalSearchBox.CVQERt56.js} +1 -1
  47. package/dist/docs/assets/chunks/{theme.DhpIe0Pa.js → theme.Dnsd3XOn.js} +2 -2
  48. package/dist/docs/assets/concepts.md.B4o63Gul.js +1 -0
  49. package/dist/docs/assets/{deployment.md.MFPKqsqI.js → deployment.md.JenwuCCB.js} +4 -4
  50. package/dist/docs/assets/{deployment.md.MFPKqsqI.lean.js → deployment.md.JenwuCCB.lean.js} +1 -1
  51. package/dist/docs/assets/evals.md.C7JLjoEP.js +211 -0
  52. package/dist/docs/assets/evals.md.C7JLjoEP.lean.js +1 -0
  53. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.js +10 -0
  54. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.lean.js +1 -0
  55. package/dist/docs/assets/guides_cloud-agents.md.BsloyHdY.js +9 -0
  56. package/dist/docs/assets/{guides_cloud-agents.md.DS8RIjwx.lean.js → guides_cloud-agents.md.BsloyHdY.lean.js} +1 -1
  57. package/dist/docs/assets/{guides_github.md.c0gdGJ-D.js → guides_github.md.TZaTZlfz.js} +13 -3
  58. package/dist/docs/assets/{guides_github.md.c0gdGJ-D.lean.js → guides_github.md.TZaTZlfz.lean.js} +1 -1
  59. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.js +14 -0
  60. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.lean.js +1 -0
  61. package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.js → guides_grokbot-agents.md.DyV-WArv.js} +1 -1
  62. package/dist/docs/assets/guides_improve.md.BGVk32bK.js +14 -0
  63. package/dist/docs/assets/guides_improve.md.BGVk32bK.lean.js +1 -0
  64. package/dist/docs/assets/{guides_slack.md.9oHPye9o.js → guides_slack.md.D4RVMM4G.js} +3 -3
  65. package/dist/docs/assets/{guides_slack.md.9oHPye9o.lean.js → guides_slack.md.D4RVMM4G.lean.js} +1 -1
  66. package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.js → guides_webhooks.md.CJK484ex.js} +2 -2
  67. package/dist/docs/assets/{hillclimbing.md.CpTGTCle.js → hillclimbing.md.BOiVo1tf.js} +1 -1
  68. package/dist/docs/assets/index.md.DD9Q2XuJ.js +5 -0
  69. package/dist/docs/assets/{index.md.BW_6tOgR.lean.js → index.md.DD9Q2XuJ.lean.js} +1 -1
  70. package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.js → reference_agent-config.md.CvoL6pof.js} +1 -1
  71. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.js → reference_channels.md.CAo-iK4j.js} +2 -2
  72. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.lean.js → reference_channels.md.CAo-iK4j.lean.js} +1 -1
  73. package/dist/docs/assets/{reference_cli.md.Dm67hd2D.js → reference_cli.md.Deg7849l.js} +7 -7
  74. package/dist/docs/assets/{reference_cli.md.Dm67hd2D.lean.js → reference_cli.md.Deg7849l.lean.js} +1 -1
  75. package/dist/docs/assets/{reference_connections.md.Di6jJAXF.js → reference_connections.md.BojkC6c5.js} +1 -1
  76. package/dist/docs/assets/{reference_extensions.md.CGmMLblt.js → reference_extensions.md.ZAVUyuEX.js} +3 -3
  77. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.js → reference_hooks.md.BlM_bOg6.js} +3 -3
  78. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.lean.js → reference_hooks.md.BlM_bOg6.lean.js} +1 -1
  79. package/dist/docs/assets/{reference_http-api.md.oySXBO8o.js → reference_http-api.md.BwaCo-VO.js} +1 -1
  80. package/dist/docs/assets/{reference_playground.md.4myJPxrf.js → reference_playground.md.DLnoaczX.js} +1 -1
  81. package/dist/docs/assets/{reference_playground.md.4myJPxrf.lean.js → reference_playground.md.DLnoaczX.lean.js} +1 -1
  82. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.js → reference_project-layout.md.BEU8MtQV.js} +3 -3
  83. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.lean.js → reference_project-layout.md.BEU8MtQV.lean.js} +1 -1
  84. package/dist/docs/assets/reference_sessions.md.CyXV1MUw.js +1 -0
  85. package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.js → scaffolding-agents.md.Kctn3OVb.js} +1 -1
  86. package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.js → skills_create-agent.md.Q3h6Je-e.js} +1 -1
  87. package/dist/docs/assets/{skills_debug.md.CDbPhHfg.js → skills_debug.md.CVjCXMFF.js} +1 -1
  88. package/dist/docs/assets/{skills_debug.md.CDbPhHfg.lean.js → skills_debug.md.CVjCXMFF.lean.js} +1 -1
  89. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.js +35 -0
  90. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.lean.js +1 -0
  91. package/dist/docs/assets/skills_evals.md.DFxYPErF.js +25 -0
  92. package/dist/docs/assets/skills_evals.md.DFxYPErF.lean.js +1 -0
  93. package/dist/docs/assets/skills_framework-map.md.BxLSOhSY.js +1 -0
  94. package/dist/docs/assets/{skills_framework-map.md.haibFyoB.lean.js → skills_framework-map.md.BxLSOhSY.lean.js} +1 -1
  95. package/dist/docs/assets/{skills_github.md.D0JahM8c.js → skills_github.md.hgFX_oKY.js} +1 -1
  96. package/dist/docs/assets/skills_index.md.DL7EHaQ-.js +1 -0
  97. package/dist/docs/assets/skills_index.md.DL7EHaQ-.lean.js +1 -0
  98. package/dist/docs/assets/{storage.md.BOHeqk2M.js → storage.md.BUrhJ-Zz.js} +4 -4
  99. package/dist/docs/assets/{storage.md.BOHeqk2M.lean.js → storage.md.BUrhJ-Zz.lean.js} +1 -1
  100. package/dist/docs/assets/troubleshooting.md.CYEAO9bM.js +1 -0
  101. package/dist/docs/building-with-agents.html +5 -5
  102. package/dist/docs/building-with-agents.md +3 -2
  103. package/dist/docs/concepts.html +5 -5
  104. package/dist/docs/concepts.md +2 -4
  105. package/dist/docs/deployment.html +7 -7
  106. package/dist/docs/deployment.md +7 -2
  107. package/dist/docs/evals.html +161 -35
  108. package/dist/docs/evals.md +612 -296
  109. package/dist/docs/guides/agent-to-agent.html +4 -4
  110. package/dist/docs/guides/bitbucket.html +36 -0
  111. package/dist/docs/guides/bitbucket.md +84 -0
  112. package/dist/docs/guides/cloud-agents.html +6 -6
  113. package/dist/docs/guides/cloud-agents.md +4 -3
  114. package/dist/docs/guides/convert-automation.html +4 -4
  115. package/dist/docs/guides/github.html +17 -7
  116. package/dist/docs/guides/github.md +33 -1
  117. package/dist/docs/guides/gitlab.html +40 -0
  118. package/dist/docs/guides/gitlab.md +92 -0
  119. package/dist/docs/guides/grokbot-agents.html +6 -6
  120. package/dist/docs/guides/grokbot-agents.md +2 -2
  121. package/dist/docs/guides/human-in-the-loop.html +4 -4
  122. package/dist/docs/guides/improve.html +40 -0
  123. package/dist/docs/guides/improve.md +91 -0
  124. package/dist/docs/guides/mcp-oauth.html +4 -4
  125. package/dist/docs/guides/opentelemetry.html +5 -5
  126. package/dist/docs/guides/slack.html +7 -7
  127. package/dist/docs/guides/slack.md +2 -1
  128. package/dist/docs/guides/webhooks.html +6 -6
  129. package/dist/docs/guides/webhooks.md +4 -2
  130. package/dist/docs/hashmap.json +1 -1
  131. package/dist/docs/hillclimbing.html +6 -6
  132. package/dist/docs/hillclimbing.md +2 -2
  133. package/dist/docs/index.html +6 -6
  134. package/dist/docs/index.md +14 -6
  135. package/dist/docs/llms-full.txt +1274 -814
  136. package/dist/docs/llms.txt +7 -5
  137. package/dist/docs/quickstart.html +4 -4
  138. package/dist/docs/reference/agent-config.html +6 -6
  139. package/dist/docs/reference/agent-config.md +5 -2
  140. package/dist/docs/reference/artifacts.html +4 -4
  141. package/dist/docs/reference/channels.html +6 -6
  142. package/dist/docs/reference/channels.md +16 -3
  143. package/dist/docs/reference/cli.html +11 -11
  144. package/dist/docs/reference/cli.md +24 -15
  145. package/dist/docs/reference/connections.html +6 -6
  146. package/dist/docs/reference/connections.md +2 -1
  147. package/dist/docs/reference/extensions.html +8 -8
  148. package/dist/docs/reference/extensions.md +2 -3
  149. package/dist/docs/reference/hooks.html +7 -7
  150. package/dist/docs/reference/hooks.md +9 -12
  151. package/dist/docs/reference/http-api.html +6 -6
  152. package/dist/docs/reference/http-api.md +2 -3
  153. package/dist/docs/reference/instructions.html +4 -4
  154. package/dist/docs/reference/playground.html +5 -5
  155. package/dist/docs/reference/playground.md +0 -4
  156. package/dist/docs/reference/project-layout.html +7 -7
  157. package/dist/docs/reference/project-layout.md +1 -8
  158. package/dist/docs/reference/prompt.html +4 -4
  159. package/dist/docs/reference/result.html +4 -4
  160. package/dist/docs/reference/schedules.html +4 -4
  161. package/dist/docs/reference/sessions.html +5 -5
  162. package/dist/docs/reference/sessions.md +1 -2
  163. package/dist/docs/reference/skills.html +4 -4
  164. package/dist/docs/reference/subagents.html +4 -4
  165. package/dist/docs/reference/tools.html +4 -4
  166. package/dist/docs/scaffolding-agents.html +5 -5
  167. package/dist/docs/scaffolding-agents.md +2 -1
  168. package/dist/docs/skills/create-agent.html +6 -6
  169. package/dist/docs/skills/create-agent.md +1 -1
  170. package/dist/docs/skills/debug.html +5 -5
  171. package/dist/docs/skills/debug.md +1 -1
  172. package/dist/docs/skills/deploy.html +61 -0
  173. package/dist/docs/skills/deploy.md +161 -0
  174. package/dist/docs/skills/evals.html +8 -8
  175. package/dist/docs/skills/evals.md +44 -6
  176. package/dist/docs/skills/framework-map.html +5 -5
  177. package/dist/docs/skills/framework-map.md +5 -4
  178. package/dist/docs/skills/github.html +6 -6
  179. package/dist/docs/skills/github.md +1 -1
  180. package/dist/docs/skills/hillclimb.html +4 -4
  181. package/dist/docs/skills/index.html +6 -6
  182. package/dist/docs/skills/index.md +1 -1
  183. package/dist/docs/skills/mcp-auth.html +4 -4
  184. package/dist/docs/skills/otel.html +4 -4
  185. package/dist/docs/skills/setup-slack.html +4 -4
  186. package/dist/docs/storage.html +8 -8
  187. package/dist/docs/storage.md +15 -24
  188. package/dist/docs/templates/agentic-owners.html +4 -4
  189. package/dist/docs/templates/agents-md.html +4 -4
  190. package/dist/docs/templates/code-wiki.html +4 -4
  191. package/dist/docs/templates/demo.html +4 -4
  192. package/dist/docs/templates/grokbot-agents.html +4 -4
  193. package/dist/docs/templates/pr-autofixer.html +4 -4
  194. package/dist/docs/templates/security-help.html +4 -4
  195. package/dist/docs/templates/security-reviewer.html +4 -4
  196. package/dist/docs/templates/triage.html +4 -4
  197. package/dist/docs/troubleshooting.html +5 -5
  198. package/dist/docs/troubleshooting.md +1 -1
  199. package/dist/extensions/improve/extension.d.ts +46 -0
  200. package/dist/extensions/improve/extension.d.ts.map +1 -0
  201. package/dist/extensions/improve/extension.js +41 -0
  202. package/dist/extensions/improve/skills/yourself.d.ts +4 -0
  203. package/dist/extensions/improve/skills/yourself.d.ts.map +1 -0
  204. package/dist/extensions/improve/skills/yourself.js +43 -0
  205. package/dist/extensions.d.ts +2 -3
  206. package/dist/extensions.d.ts.map +1 -1
  207. package/dist/extensions.js +2 -5
  208. package/dist/index.d.ts +2 -3
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/index.js +1 -2
  211. package/dist/internal/authored-alias-hooks.d.ts +5 -0
  212. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  213. package/dist/internal/authored-alias-hooks.js +17 -0
  214. package/dist/internal/authored-loaders.d.ts +4 -0
  215. package/dist/internal/authored-loaders.d.ts.map +1 -1
  216. package/dist/internal/authored-loaders.js +21 -2
  217. package/dist/internal/builtin-tools/artifacts.d.ts.map +1 -1
  218. package/dist/internal/builtin-tools/artifacts.js +2 -3
  219. package/dist/internal/channel-route-dispatch.d.ts +13 -0
  220. package/dist/internal/channel-route-dispatch.d.ts.map +1 -0
  221. package/dist/internal/channel-route-dispatch.js +62 -0
  222. package/dist/internal/channel-state.d.ts +17 -0
  223. package/dist/internal/channel-state.d.ts.map +1 -0
  224. package/dist/internal/channel-state.js +78 -0
  225. package/dist/internal/cli-ax.d.ts +8 -2
  226. package/dist/internal/cli-ax.d.ts.map +1 -1
  227. package/dist/internal/cli-ax.js +100 -3
  228. package/dist/internal/cli-cursor.d.ts.map +1 -1
  229. package/dist/internal/cli-cursor.js +2 -0
  230. package/dist/internal/cli-deploy.d.ts.map +1 -1
  231. package/dist/internal/cli-deploy.js +38 -14
  232. package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
  233. package/dist/internal/cli-mcp-oauth.js +15 -0
  234. package/dist/internal/cli-mcp.d.ts.map +1 -1
  235. package/dist/internal/cli-mcp.js +12 -0
  236. package/dist/internal/cli-slack.d.ts.map +1 -1
  237. package/dist/internal/cli-slack.js +8 -2
  238. package/dist/internal/continuation-channel.d.ts.map +1 -1
  239. package/dist/internal/continuation-channel.js +2 -2
  240. package/dist/internal/continuation-identity.js +8 -3
  241. package/dist/internal/cursor/credentials.d.ts +8 -2
  242. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  243. package/dist/internal/cursor/credentials.js +27 -5
  244. package/dist/internal/deploy-client.d.ts +27 -0
  245. package/dist/internal/deploy-client.d.ts.map +1 -1
  246. package/dist/internal/deploy-client.js +32 -0
  247. package/dist/internal/deploy-manifest.d.ts +23 -0
  248. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  249. package/dist/internal/deploy-manifest.js +84 -1
  250. package/dist/internal/describe-error.d.ts +1 -0
  251. package/dist/internal/describe-error.d.ts.map +1 -1
  252. package/dist/internal/describe-error.js +25 -0
  253. package/dist/internal/discovery/agent.d.ts +1 -1
  254. package/dist/internal/discovery/agent.d.ts.map +1 -1
  255. package/dist/internal/discovery/agent.js +0 -5
  256. package/dist/internal/discovery/extension-overlay.d.ts +1 -2
  257. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -1
  258. package/dist/internal/discovery/extension-overlay.js +0 -14
  259. package/dist/internal/discovery/extensions.d.ts +1 -2
  260. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  261. package/dist/internal/discovery/extensions.js +4 -22
  262. package/dist/internal/discovery/info.d.ts.map +1 -1
  263. package/dist/internal/discovery/info.js +42 -24
  264. package/dist/internal/discovery/modules.js +0 -1
  265. package/dist/internal/discovery/project.d.ts.map +1 -1
  266. package/dist/internal/discovery/project.js +0 -16
  267. package/dist/internal/eval-runner.js +0 -1
  268. package/dist/internal/framework-file-storage.d.ts +4 -5
  269. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  270. package/dist/internal/framework-file-storage.js +4 -5
  271. package/dist/internal/framework-storage-selection.d.ts +2 -2
  272. package/dist/internal/framework-storage-selection.js +2 -2
  273. package/dist/internal/guest-network.d.ts +4 -10
  274. package/dist/internal/guest-network.d.ts.map +1 -1
  275. package/dist/internal/guest-network.js +42 -26
  276. package/dist/internal/hosted-admission-adapter.d.ts +2 -0
  277. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  278. package/dist/internal/hosted-catch-protocol.d.ts +51 -0
  279. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -0
  280. package/dist/internal/hosted-catch-protocol.js +103 -0
  281. package/dist/internal/hosted-catch.d.ts +40 -0
  282. package/dist/internal/hosted-catch.d.ts.map +1 -0
  283. package/dist/internal/hosted-catch.js +149 -0
  284. package/dist/internal/hosted-delivery-protocol.d.ts +41 -0
  285. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  286. package/dist/internal/hosted-delivery-protocol.js +249 -0
  287. package/dist/internal/hosted-delivery.d.ts +10 -1
  288. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  289. package/dist/internal/hosted-delivery.js +100 -22
  290. package/dist/internal/hosted-execution-diag.d.ts +4 -1
  291. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  292. package/dist/internal/hosted-execution-diag.js +13 -4
  293. package/dist/internal/hosted-execution-flush.d.ts +3 -0
  294. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  295. package/dist/internal/hosted-execution-flush.js +2 -4
  296. package/dist/internal/http-control-plane-session.d.ts +30 -0
  297. package/dist/internal/http-control-plane-session.d.ts.map +1 -0
  298. package/dist/internal/http-control-plane-session.js +83 -0
  299. package/dist/internal/init-scaffold.d.ts.map +1 -1
  300. package/dist/internal/init-scaffold.js +1 -2
  301. package/dist/internal/install-cursor-skills.d.ts +5 -2
  302. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  303. package/dist/internal/install-cursor-skills.js +25 -5
  304. package/dist/internal/legacy-command-guard.d.ts +22 -0
  305. package/dist/internal/legacy-command-guard.d.ts.map +1 -0
  306. package/dist/internal/legacy-command-guard.js +51 -0
  307. package/dist/internal/platform-timers.d.ts +7 -0
  308. package/dist/internal/platform-timers.d.ts.map +1 -1
  309. package/dist/internal/platform-timers.js +139 -0
  310. package/dist/internal/reminder-control-plane-protocol.d.ts +2 -0
  311. package/dist/internal/reminder-control-plane-protocol.d.ts.map +1 -1
  312. package/dist/internal/reminder-control-plane-protocol.js +9 -2
  313. package/dist/internal/reminder-runner.d.ts +8 -0
  314. package/dist/internal/reminder-runner.d.ts.map +1 -1
  315. package/dist/internal/reminder-runner.js +36 -9
  316. package/dist/internal/resolve-prod-target.d.ts +2 -0
  317. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  318. package/dist/internal/resolve-prod-target.js +13 -0
  319. package/dist/internal/run-client.d.ts +1 -1
  320. package/dist/internal/sdk-runner.d.ts.map +1 -1
  321. package/dist/internal/sdk-runner.js +5 -4
  322. package/dist/internal/server.d.ts.map +1 -1
  323. package/dist/internal/server.js +57 -70
  324. package/dist/internal/session-engine.d.ts +7 -41
  325. package/dist/internal/session-engine.d.ts.map +1 -1
  326. package/dist/internal/session-engine.js +110 -227
  327. package/dist/internal/storage-coordinator.d.ts +5 -19
  328. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  329. package/dist/internal/storage-coordinator.js +3 -62
  330. package/dist/internal/storage-roles.d.ts +4 -9
  331. package/dist/internal/storage-roles.d.ts.map +1 -1
  332. package/dist/internal/storage-roles.js +2 -2
  333. package/dist/playground/assets/index-Bhxzrcf6.css +1 -0
  334. package/dist/playground/assets/index-CqLX5uF3.js +67 -0
  335. package/dist/playground/index.html +2 -2
  336. package/dist/storage-backends/cursor-hosted-v2.d.ts +4 -5
  337. package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
  338. package/dist/storage-backends/cursor-hosted-v2.js +4 -5
  339. package/dist/storage-backends/cursor-hosted.d.ts +7 -2
  340. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  341. package/dist/storage-backends/cursor-hosted.js +29 -31
  342. package/dist/storage-backends/file-kv.d.ts +9 -12
  343. package/dist/storage-backends/file-kv.d.ts.map +1 -1
  344. package/dist/storage-backends/file-kv.js +11 -47
  345. package/dist/storage-protocol.d.ts +3 -11
  346. package/dist/storage-protocol.d.ts.map +1 -1
  347. package/dist/storage-protocol.js +3 -11
  348. package/dist/storage.d.ts +8 -36
  349. package/dist/storage.d.ts.map +1 -1
  350. package/dist/storage.js +8 -44
  351. package/dist/types.d.ts +53 -62
  352. package/dist/types.d.ts.map +1 -1
  353. package/docs/README.md +14 -6
  354. package/docs/building-with-agents.md +3 -2
  355. package/docs/concepts.md +2 -4
  356. package/docs/deployment.md +7 -2
  357. package/docs/evals.md +613 -297
  358. package/docs/guides/bitbucket.md +89 -0
  359. package/docs/guides/cloud-agents.md +4 -3
  360. package/docs/guides/github.md +33 -1
  361. package/docs/guides/gitlab.md +97 -0
  362. package/docs/guides/grokbot-agents.md +2 -2
  363. package/docs/guides/improve.md +96 -0
  364. package/docs/guides/slack.md +2 -1
  365. package/docs/guides/webhooks.md +4 -2
  366. package/docs/hillclimbing.md +2 -2
  367. package/docs/reference/agent-config.md +5 -2
  368. package/docs/reference/channels.md +16 -3
  369. package/docs/reference/cli.md +24 -15
  370. package/docs/reference/connections.md +2 -1
  371. package/docs/reference/extensions.md +2 -3
  372. package/docs/reference/hooks.md +9 -12
  373. package/docs/reference/http-api.md +2 -3
  374. package/docs/reference/playground.md +0 -4
  375. package/docs/reference/project-layout.md +1 -8
  376. package/docs/reference/sessions.md +1 -2
  377. package/docs/scaffolding-agents.md +2 -1
  378. package/docs/skills/index.md +2 -2
  379. package/docs/storage.md +15 -24
  380. package/docs/troubleshooting.md +1 -1
  381. package/package.json +8 -7
  382. package/skills/create-agent/SKILL.md +1 -1
  383. package/skills/debug/SKILL.md +1 -1
  384. package/skills/deploy/SKILL.md +169 -0
  385. package/skills/evals/SKILL.md +45 -8
  386. package/skills/framework-map/SKILL.md +5 -4
  387. package/skills/github/SKILL.md +1 -1
  388. package/src/bin/agent-serve.ts +27 -2
  389. package/src/channels/bitbucket/api.ts +341 -0
  390. package/src/channels/bitbucket/binding.ts +25 -0
  391. package/src/channels/bitbucket/index.ts +2 -0
  392. package/src/channels/github/github-channel.ts +8 -8
  393. package/src/channels/github/types.ts +5 -0
  394. package/src/channels/gitlab/api.ts +123 -0
  395. package/src/channels/gitlab/binding.ts +12 -0
  396. package/src/channels/gitlab/index.ts +1 -0
  397. package/src/channels/origin/origin-channel.ts +29 -13
  398. package/src/channels/origin/types.ts +5 -0
  399. package/src/channels/slack/dispatch.ts +30 -0
  400. package/src/channels/slack/slack-channel.ts +69 -7
  401. package/src/channels.ts +157 -10
  402. package/src/connections.ts +2 -1
  403. package/src/extensions/improve/extension.ts +70 -0
  404. package/src/extensions/improve/skills/yourself.ts +50 -0
  405. package/src/extensions.ts +2 -6
  406. package/src/index.ts +0 -3
  407. package/src/internal/authored-alias-hooks.ts +32 -0
  408. package/src/internal/authored-loaders.ts +26 -2
  409. package/src/internal/builtin-tools/artifacts.ts +2 -3
  410. package/src/internal/channel-route-dispatch.ts +66 -0
  411. package/src/internal/channel-state.ts +96 -0
  412. package/src/internal/cli-ax.ts +111 -3
  413. package/src/internal/cli-cursor.ts +4 -1
  414. package/src/internal/cli-deploy.ts +50 -10
  415. package/src/internal/cli-mcp-oauth.ts +18 -0
  416. package/src/internal/cli-mcp.ts +11 -0
  417. package/src/internal/cli-slack.ts +15 -2
  418. package/src/internal/continuation-channel.ts +2 -1
  419. package/src/internal/continuation-identity.ts +10 -2
  420. package/src/internal/cursor/credentials.ts +35 -7
  421. package/src/internal/deploy-client.ts +54 -0
  422. package/src/internal/deploy-manifest.ts +115 -1
  423. package/src/internal/describe-error.ts +28 -0
  424. package/src/internal/discovery/agent.ts +1 -7
  425. package/src/internal/discovery/extension-overlay.ts +0 -18
  426. package/src/internal/discovery/extensions.ts +2 -26
  427. package/src/internal/discovery/info.ts +3 -13
  428. package/src/internal/discovery/modules.ts +0 -1
  429. package/src/internal/discovery/project.ts +0 -16
  430. package/src/internal/eval-runner.ts +0 -1
  431. package/src/internal/framework-file-storage.ts +4 -5
  432. package/src/internal/framework-storage-selection.ts +2 -2
  433. package/src/internal/guest-network.ts +43 -29
  434. package/src/internal/hosted-admission-adapter.ts +2 -0
  435. package/src/internal/hosted-catch-protocol.ts +130 -0
  436. package/src/internal/hosted-catch.ts +192 -0
  437. package/src/internal/hosted-delivery-protocol.ts +387 -0
  438. package/src/internal/hosted-delivery.ts +155 -22
  439. package/src/internal/hosted-execution-diag.ts +21 -3
  440. package/src/internal/hosted-execution-flush.ts +6 -3
  441. package/src/internal/http-control-plane-session.ts +104 -0
  442. package/src/internal/init-scaffold.ts +1 -2
  443. package/src/internal/install-cursor-skills.ts +38 -5
  444. package/src/internal/legacy-command-guard.ts +59 -0
  445. package/src/internal/platform-timers.ts +191 -0
  446. package/src/internal/reminder-control-plane-protocol.ts +15 -2
  447. package/src/internal/reminder-runner.ts +60 -9
  448. package/src/internal/resolve-prod-target.ts +15 -0
  449. package/src/internal/run-client.ts +1 -1
  450. package/src/internal/sdk-runner.ts +3 -2
  451. package/src/internal/server.ts +89 -95
  452. package/src/internal/session-engine.ts +155 -285
  453. package/src/internal/storage-coordinator.ts +5 -76
  454. package/src/internal/storage-roles.ts +4 -9
  455. package/src/storage-backends/cursor-hosted-v2.ts +4 -7
  456. package/src/storage-backends/cursor-hosted.ts +40 -38
  457. package/src/storage-backends/file-kv.ts +10 -51
  458. package/src/storage-protocol.ts +3 -17
  459. package/src/storage.ts +10 -101
  460. package/src/types.ts +58 -62
  461. package/templates/demo/README.md +10 -6
  462. package/templates/demo/agent/channels/github.ts +2 -0
  463. package/templates/demo/agent/channels/queue.ts +6 -2
  464. package/templates/demo/agent/lib/repos.ts +5 -0
  465. package/templates/demo/init.json +25 -0
  466. package/dist/ab.d.ts +0 -209
  467. package/dist/ab.d.ts.map +0 -1
  468. package/dist/ab.js +0 -246
  469. package/dist/docs/ab.html +0 -80
  470. package/dist/docs/ab.md +0 -332
  471. package/dist/docs/assets/ab.md.mlVgqvSk.js +0 -54
  472. package/dist/docs/assets/ab.md.mlVgqvSk.lean.js +0 -1
  473. package/dist/docs/assets/chunks/@localSearchIndexroot.DXXZxiMv.js +0 -1
  474. package/dist/docs/assets/concepts.md.DgEcZOfT.js +0 -1
  475. package/dist/docs/assets/evals.md.CbMoebP1.js +0 -85
  476. package/dist/docs/assets/evals.md.CbMoebP1.lean.js +0 -1
  477. package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +0 -9
  478. package/dist/docs/assets/index.md.BW_6tOgR.js +0 -5
  479. package/dist/docs/assets/reference_sessions.md.CueyOHSL.js +0 -1
  480. package/dist/docs/assets/skills_ab.md.CsFNatVx.js +0 -26
  481. package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +0 -1
  482. package/dist/docs/assets/skills_evals.md.723kpUmA.js +0 -25
  483. package/dist/docs/assets/skills_evals.md.723kpUmA.lean.js +0 -1
  484. package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +0 -1
  485. package/dist/docs/assets/skills_index.md.DKwIxzGg.js +0 -1
  486. package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +0 -1
  487. package/dist/docs/assets/troubleshooting.md.Cus_YZga.js +0 -1
  488. package/dist/docs/skills/ab.html +0 -52
  489. package/dist/docs/skills/ab.md +0 -50
  490. package/dist/internal/ab-collector.d.ts +0 -44
  491. package/dist/internal/ab-collector.d.ts.map +0 -1
  492. package/dist/internal/ab-collector.js +0 -142
  493. package/dist/internal/ab-fold.d.ts +0 -36
  494. package/dist/internal/ab-fold.d.ts.map +0 -1
  495. package/dist/internal/ab-fold.js +0 -175
  496. package/dist/internal/ab-snapshot.d.ts +0 -68
  497. package/dist/internal/ab-snapshot.d.ts.map +0 -1
  498. package/dist/internal/ab-snapshot.js +0 -208
  499. package/dist/internal/discovery/ab.d.ts +0 -9
  500. package/dist/internal/discovery/ab.d.ts.map +0 -1
  501. package/dist/internal/discovery/ab.js +0 -113
  502. package/dist/playground/assets/index-Bq2HpEQB.js +0 -67
  503. package/dist/playground/assets/index-CZKKNlmb.css +0 -1
  504. package/docs/ab.md +0 -337
  505. package/skills/ab/SKILL.md +0 -58
  506. package/src/ab.ts +0 -430
  507. package/src/internal/ab-collector.ts +0 -200
  508. package/src/internal/ab-fold.ts +0 -232
  509. package/src/internal/ab-snapshot.ts +0 -331
  510. package/src/internal/discovery/ab.ts +0 -131
  511. /package/dist/docs/assets/{concepts.md.DgEcZOfT.lean.js → concepts.md.B4o63Gul.lean.js} +0 -0
  512. /package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.lean.js → guides_grokbot-agents.md.DyV-WArv.lean.js} +0 -0
  513. /package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.lean.js → guides_webhooks.md.CJK484ex.lean.js} +0 -0
  514. /package/dist/docs/assets/{hillclimbing.md.CpTGTCle.lean.js → hillclimbing.md.BOiVo1tf.lean.js} +0 -0
  515. /package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.lean.js → reference_agent-config.md.CvoL6pof.lean.js} +0 -0
  516. /package/dist/docs/assets/{reference_connections.md.Di6jJAXF.lean.js → reference_connections.md.BojkC6c5.lean.js} +0 -0
  517. /package/dist/docs/assets/{reference_extensions.md.CGmMLblt.lean.js → reference_extensions.md.ZAVUyuEX.lean.js} +0 -0
  518. /package/dist/docs/assets/{reference_http-api.md.oySXBO8o.lean.js → reference_http-api.md.BwaCo-VO.lean.js} +0 -0
  519. /package/dist/docs/assets/{reference_sessions.md.CueyOHSL.lean.js → reference_sessions.md.CyXV1MUw.lean.js} +0 -0
  520. /package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.lean.js → scaffolding-agents.md.Kctn3OVb.lean.js} +0 -0
  521. /package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.lean.js → skills_create-agent.md.Q3h6Je-e.lean.js} +0 -0
  522. /package/dist/docs/assets/{skills_github.md.D0JahM8c.lean.js → skills_github.md.hgFX_oKY.lean.js} +0 -0
  523. /package/dist/docs/assets/{troubleshooting.md.Cus_YZga.lean.js → troubleshooting.md.CYEAO9bM.lean.js} +0 -0
package/src/types.ts CHANGED
@@ -10,7 +10,6 @@
10
10
 
11
11
  import type { InteractionUpdate, SDKCustomTool, ToolName } from "@cursor/sdk";
12
12
  import type { z } from "zod";
13
- import type { ABConfigFile } from "./ab.js";
14
13
  import type { FileSystem } from "./filesystem.js";
15
14
  import type {
16
15
  ContinuationClaim,
@@ -55,7 +54,6 @@ export type DefinitionKind =
55
54
  | "reminder"
56
55
  | "hook"
57
56
  | "eval"
58
- | "ab"
59
57
  | "storage"
60
58
  | "artifacts"
61
59
  | "otel"
@@ -1202,8 +1200,8 @@ export type DisabledConnectionDefinition =
1202
1200
  /**
1203
1201
  * `export default disable()` / `disableSkill()` / `disableHook()` /
1204
1202
  * `disableChannel()` / `disableSchedule()` / `disableSubagent()` /
1205
- * `disableInstructions()` / `disableAB()` / `disableArtifacts()` in a
1206
- * directory mount removes that contribution from the matching overlay slot.
1203
+ * `disableInstructions()` / `disableArtifacts()` in a directory mount
1204
+ * removes that contribution from the matching overlay slot.
1207
1205
  */
1208
1206
  export type DisabledDefinition = BrandedDefinition<"disabled">;
1209
1207
 
@@ -1232,8 +1230,6 @@ export interface DiscoveredExtension {
1232
1230
  instructions: boolean;
1233
1231
  /** Workspace seed paths the mount contributed. */
1234
1232
  seedFiles: string[];
1235
- /** Composed A/B experiment names (`<ns>__<name>`). */
1236
- abs: string[];
1237
1233
  /** Composed artifact kind names (`<ns>__<kind>`). */
1238
1234
  artifactKinds: string[];
1239
1235
  }
@@ -1615,15 +1611,6 @@ export interface PendingAuth {
1615
1611
 
1616
1612
  export type SessionEventPayload =
1617
1613
  | { type: "session.started"; data: { channelId: string; dryRun?: boolean } }
1618
- | {
1619
- /**
1620
- * Sticky A/B enrollment for one experiment (`defineAB` under `agent/ab`).
1621
- * Appended at session creation (before the first turn). `variant` is a
1622
- * key of the experiment's `variants`, or `null` for sticky skip.
1623
- */
1624
- type: "ab.assigned";
1625
- data: { experiment: string; variant: string | null };
1626
- }
1627
1614
  | {
1628
1615
  /** Cursor SDK agent id is known (cloud: `bc-…`; local: session id). */
1629
1616
  type: "agent.bound";
@@ -1778,7 +1765,14 @@ export type SessionEventPayload =
1778
1765
  type: "turn.bound";
1779
1766
  data: { requestId: string };
1780
1767
  }
1781
- | { type: "turn.failed"; data: { message: string } }
1768
+ | {
1769
+ type: "turn.failed";
1770
+ data: {
1771
+ message: string;
1772
+ /** Machine-readable terminal status. Omitted on legacy stored events. */
1773
+ status?: "error" | "cancelled";
1774
+ };
1775
+ }
1782
1776
  | {
1783
1777
  /**
1784
1778
  * A Slack follow-up queued mid-turn reached the running agent: the
@@ -1806,8 +1800,8 @@ export interface TurnUsage {
1806
1800
 
1807
1801
  /**
1808
1802
  * Dollar cost of one turn's token usage (one agent loop pass).
1809
- * Recorded on `turn.completed` events so traces, the playground, A/B
1810
- * metrics, and the CLI can aggregate spend. Computed by
1803
+ * Recorded on `turn.completed` events so traces, the playground, and the
1804
+ * CLI can aggregate spend. Computed by
1811
1805
  * `POST /v1/models/estimate-cost` — billed usage events when available
1812
1806
  * (credits, discounts, CTF), otherwise live catalog pricing.
1813
1807
  */
@@ -1834,8 +1828,7 @@ export type SessionMode = "chat" | "task";
1834
1828
 
1835
1829
  /**
1836
1830
  * Why the session exists. `"eval"` is regression traffic (`defineEval` /
1837
- * `agent-sdk eval` / playground Evals) and is excluded from live A/B
1838
- * enrollment. Default `"live"`.
1831
+ * `agent-sdk eval` / playground Evals). Default `"live"`.
1839
1832
  */
1840
1833
  export type SessionPurpose = "live" | "eval";
1841
1834
 
@@ -1852,12 +1845,6 @@ export interface SessionInfo {
1852
1845
  asOf?: string;
1853
1846
  auth: AuthContext | null;
1854
1847
  title?: string;
1855
- /**
1856
- * Sticky A/B arms for this session (`defineAB`): experiment name → variant
1857
- * key, or `null` for sticky skip. Present after enrollment at session
1858
- * create (live traffic only). Tools/hooks/harness overlays read this.
1859
- */
1860
- abs?: Readonly<Record<string, string | null>>;
1861
1848
  /**
1862
1849
  * Channel-local continuation key when the session is addressable for
1863
1850
  * follow-ups / reminders. Null when the session is not re-keyable.
@@ -1878,20 +1865,14 @@ export interface SessionRecord {
1878
1865
  channelId: string;
1879
1866
  mode: SessionMode;
1880
1867
  /**
1881
- * `"eval"` for harness sessions skipped by {@link defineAB} enrollment.
1882
- * Older records omit this (treated as `"live"`).
1868
+ * `"eval"` for harness sessions. Older records omit this (treated as
1869
+ * `"live"`).
1883
1870
  */
1884
1871
  purpose?: SessionPurpose;
1885
1872
  /** Frozen at create from {@link SendMessageOptions.dryRun}. */
1886
1873
  dryRun?: boolean;
1887
1874
  /** Frozen at create from {@link SendMessageOptions.asOf}. */
1888
1875
  asOf?: string;
1889
- /**
1890
- * Denormalized sticky A/B arms (mirrors durable `ab.assigned` events) so
1891
- * the agent loop / tools can read arms without re-folding the log. Source
1892
- * of truth for stickiness remains the event stream.
1893
- */
1894
- abs?: Record<string, string | null>;
1895
1876
  /** Channel-local continuation key; null when the session is not addressable. */
1896
1877
  continuationKey: string | null;
1897
1878
  /**
@@ -1953,6 +1934,10 @@ export interface TurnOutcome {
1953
1934
  status: "finished" | "error" | "cancelled";
1954
1935
  result?: string;
1955
1936
  errorMessage?: string;
1937
+ /** Stable machine-readable runner code when the failure supplied one. */
1938
+ errorCode?: string;
1939
+ /** Why a cancelled turn stopped, when the engine observed the boundary. */
1940
+ cancellationReason?: "signal" | "runner";
1956
1941
  usage?: TurnUsage;
1957
1942
  /** Cost of {@link usage} from the Cloud Agents cost endpoint. */
1958
1943
  cost?: TurnCost;
@@ -2023,7 +2008,10 @@ export interface ChannelSession {
2023
2008
  getEventStream(options?: {
2024
2009
  startIndex?: number;
2025
2010
  }): Promise<ReadableStream<Uint8Array>>;
2026
- /** Resolves when the currently running turn reaches a terminal event. */
2011
+ /**
2012
+ * Resolves after the currently running turn reaches a terminal event and
2013
+ * handlers already queued for that session have settled.
2014
+ */
2027
2015
  waitForCompletion(): Promise<TurnOutcome>;
2028
2016
  /** Re-key the session's channel-local continuation token. */
2029
2017
  setContinuationToken(token: string | null): Promise<void>;
@@ -2069,8 +2057,8 @@ export interface SendMessageOptions {
2069
2057
  /** Session display title (applied when creating a new session). */
2070
2058
  title?: string;
2071
2059
  /**
2072
- * Session purpose at create time. `"eval"` skips sticky A/B enrollment
2073
- * (`defineAB`) so regression runs do not mix into live metrics.
2060
+ * Session purpose at create time. `"eval"` marks regression traffic so
2061
+ * hooks, `defineResult`, and telemetry can tell it from live sessions.
2074
2062
  */
2075
2063
  purpose?: SessionPurpose;
2076
2064
  /**
@@ -2384,7 +2372,14 @@ export interface ReceiveInput {
2384
2372
  target?: JsonObject;
2385
2373
  }
2386
2374
 
2387
- /** Per-event channel context: live (persisted) state plus session ops. */
2375
+ /**
2376
+ * Per-event channel context. `state` is mutable. Turn events receive the
2377
+ * state snapshot captured for that turn; handler mutations are recursively
2378
+ * merged into the latest persisted state so fields refreshed by overlapping
2379
+ * deliveries survive. At paths changed by the handler, objects merge
2380
+ * recursively, arrays and scalars replace the latest value, and deletion
2381
+ * removes the latest value. Events outside a turn receive current live state.
2382
+ */
2388
2383
  export interface ChannelEventContext<TState = JsonValue> {
2389
2384
  channelId: string;
2390
2385
  state: TState;
@@ -2401,6 +2396,11 @@ export interface SessionContext {
2401
2396
  * relative path cannot read another session's files.
2402
2397
  */
2403
2398
  host: HostContext;
2399
+ /**
2400
+ * Durable artifacts bound to this event's session and turn. `tag`
2401
+ * auto-fills both ids and rejects a conflicting explicit `sessionId`.
2402
+ */
2403
+ artifacts: ArtifactsApi;
2404
2404
  }
2405
2405
 
2406
2406
  export type ChannelEventHandler<
@@ -2548,6 +2548,14 @@ export interface ChannelMeta {
2548
2548
  * `deploymentEventTypes`.
2549
2549
  */
2550
2550
  factoryEventTypes?: readonly string[];
2551
+ /**
2552
+ * For Slack packs: the Events API event types this channel dispatches on
2553
+ * (`app_mention`, `message`), derived from `engagement`. Extracted into
2554
+ * the deploy manifest as `eventTypes` so hosted v2 fanout subscribes to
2555
+ * exactly these. Local Socket Mode ignores it (the socket delivers
2556
+ * whatever the app manifest subscribed to).
2557
+ */
2558
+ slackEventTypes?: readonly string[];
2551
2559
  /**
2552
2560
  * For Slack packs with the opt-in channel watch: the allowlisted channels
2553
2561
  * (ids or `#names`) this channel dispatches on without a mention. Surfaced
@@ -2711,6 +2719,8 @@ export type ArtifactsDefinition = ArtifactsConfig &
2711
2719
  */
2712
2720
  export interface ResultContext {
2713
2721
  session: SessionInfo;
2722
+ /** Durable channel state captured for this turn. */
2723
+ channelState: JsonValue;
2714
2724
  host: HostContext;
2715
2725
  artifacts: ArtifactsApi;
2716
2726
  stateRoot: string;
@@ -3198,15 +3208,6 @@ export interface DiscoveredHook {
3198
3208
  definition: HookDefinition;
3199
3209
  }
3200
3210
 
3201
- /** Live A/B metrics experiment (`agent/ab.ts` or `agent/ab/<name>.ts`). */
3202
- export interface DiscoveredAB {
3203
- name: string;
3204
- /** File stem the experiment was loaded from (`ab` or a path under `ab/`). */
3205
- source?: string;
3206
- /** Branded `defineAB({ ... })` config (see `@cursor/july/ab`). */
3207
- definition: BrandedDefinition<"ab">;
3208
- }
3209
-
3210
3211
  export interface SeedFile {
3211
3212
  /** Path inside the session workspace. */
3212
3213
  relativePath: string;
@@ -3287,10 +3288,6 @@ export interface AgentProject {
3287
3288
  /** Named reminder handlers from `agent/reminders/*` (optional / additive). */
3288
3289
  reminders?: DiscoveredReminder[];
3289
3290
  hooks: DiscoveredHook[];
3290
- /** Live A/B metric experiments (`defineAB`). */
3291
- abs: DiscoveredAB[];
3292
- /** Optional `agent/ab.config.ts` (`defineABConfig`). */
3293
- abConfig?: ABConfigFile;
3294
3291
  /** Optional `agent/storage.ts` (`defineStorage`). */
3295
3292
  storage?: StorageDefinition;
3296
3293
  /** Optional `agent/artifacts.ts` (`defineArtifacts`). */
@@ -3387,6 +3384,8 @@ export interface AgentProjectInfo {
3387
3384
  deploymentEventTypes?: readonly string[];
3388
3385
  /** Change Monitor checkpoint or Factory issue event types the channel dispatches on, when declared. */
3389
3386
  factoryEventTypes?: readonly string[];
3387
+ /** Slack Events API event types the channel dispatches on, when declared. */
3388
+ slackEventTypes?: readonly string[];
3390
3389
  /** Slack channels watched for posts (opt-in channel watch), when declared. */
3391
3390
  slackChannelPosts?: readonly string[];
3392
3391
  }>;
@@ -3394,14 +3393,6 @@ export interface AgentProjectInfo {
3394
3393
  /** Named reminder handlers (`agent/reminders/<name>.ts`) when present. */
3395
3394
  reminders?: Array<{ name: string }>;
3396
3395
  hooks: string[];
3397
- /** Live A/B experiment names (`defineAB` under `agent/ab`). */
3398
- abs: string[];
3399
- /** Playground fold / durable-sink meta from `agent/ab.config.ts`. */
3400
- abConfig?: {
3401
- maxPlaygroundSessions?: number;
3402
- durableSamples: boolean;
3403
- durableSnapshots: boolean;
3404
- };
3405
3396
  /** Project storage sink from `agent/storage.ts`, when authored. */
3406
3397
  storage?: { name?: string };
3407
3398
  otel?: { serviceName?: string; enabled: true };
@@ -3542,8 +3533,11 @@ export interface ServeOptions {
3542
3533
  stateRoot?: string;
3543
3534
  /**
3544
3535
  * Cursor API key for the SDK runner and Cursor account MCP connections.
3545
- * When omitted, falls back to `CURSOR_API_KEY`, then to the credential
3546
- * stored by `agent-sdk login`.
3536
+ * When omitted, falls back to `CURSOR_API_KEY`, then
3537
+ * `CURSOR_API_KEY_FILE` (hosted default `/run/cursor/secrets/CURSOR_API_KEY`
3538
+ * when unset), then `CURSOR_SERVICE_ACCOUNT_KEY`, then the credential
3539
+ * stored by `agent-sdk login`. A bind file wins over
3540
+ * `CURSOR_SERVICE_ACCOUNT_KEY`.
3547
3541
  */
3548
3542
  apiKey?: string;
3549
3543
  /** Run schedules on their cron cadence. Defaults to `!dev`. */
@@ -3628,7 +3622,9 @@ export interface ServeOptions {
3628
3622
  * GitHub and Origin subscriptions are registered independently.
3629
3623
  * The stream is read as the host's Cursor user, so this requires a signed-in
3630
3624
  * host: `serve` throws when no key resolves from `apiKey` here,
3631
- * {@link ServeOptions.apiKey}, `CURSOR_API_KEY`, or `agent-sdk login`.
3625
+ * {@link ServeOptions.apiKey}, `CURSOR_API_KEY`, `CURSOR_API_KEY_FILE`
3626
+ * (hosted default `/run/cursor/secrets/CURSOR_API_KEY` when unset),
3627
+ * `CURSOR_SERVICE_ACCOUNT_KEY`, or `agent-sdk login`.
3632
3628
  */
3633
3629
  cursorEvents?: {
3634
3630
  repos: string[];
@@ -7,19 +7,22 @@ walkthrough and comments the result.
7
7
  npx @cursor/july init ./my-demo --template demo
8
8
  ```
9
9
 
10
+ `init` asks which repos to watch. Skip the prompt with
11
+ `--var repos=owner/repo`.
12
+
10
13
  ## Run
11
14
 
15
+ Connect GitHub in Cursor for those repos. Then sign the host in:
16
+
12
17
  ```bash
13
18
  agent-sdk login
14
19
  agent-sdk dev
15
20
  ```
16
21
 
17
- In the playground, run `/queue/pr` with a PR URL or `owner/repo#N`.
18
- Turns are sandboxed with `read` and `grep` only.
19
-
20
- GitHub: label `demo` or comment `/demo` on a host that terminates
21
- webhooks (`GITHUB_WEBHOOK_SECRET`). The host needs `GITHUB_TOKEN` or
22
- `gh auth` to read the PR and comment.
22
+ In the playground, run `/queue/pr` with a PR URL or `owner/repo#N` from
23
+ a watched repo. On GitHub, label a PR `demo` or comment `/demo`. Events
24
+ and API calls use your Cursor GitHub connection. Turns are sandboxed
25
+ with `read` and `grep` only.
23
26
 
24
27
  ```text
25
28
  POST /<slug>/v1/channels/queue/pr
@@ -29,5 +32,6 @@ POST /<slug>/v1/channels/queue/pr
29
32
 
30
33
  ## Files to edit
31
34
 
35
+ - `agent/lib/repos.ts`: watched repos
32
36
  - `agent/instructions.md`: how to record
33
37
  - `evals/demo.eval.ts`: smoke case
@@ -6,6 +6,7 @@ import {
6
6
  parseGitHubPrRef,
7
7
  } from "@cursor/july/channels/github";
8
8
  import { startDemo } from "../lib/collect.js";
9
+ import { REPOS } from "../lib/repos.js";
9
10
 
10
11
  let send: SendMessageFn | undefined;
11
12
 
@@ -21,6 +22,7 @@ function wake(url: string, github: GitHubHandle) {
21
22
  export default githubChannel({
22
23
  botName: "demo-agent",
23
24
  webhookEvents: ["pull_request", "issue_comment"],
25
+ cursorAccount: { repos: REPOS },
24
26
  deliverReplies: false,
25
27
  onStart: async (args: ChannelStartArgs) => {
26
28
  send = args.send;
@@ -2,6 +2,7 @@ import { defineChannel, POST } from "@cursor/july/channels";
2
2
  import { parseGitHubPrRef } from "@cursor/july/channels/github";
3
3
  import { z } from "zod";
4
4
  import { startDemo } from "../lib/collect.js";
5
+ import { REPOS, watches } from "../lib/repos.js";
5
6
 
6
7
  export default defineChannel({
7
8
  routes: [
@@ -12,9 +13,12 @@ export default defineChannel({
12
13
  }),
13
14
  handler: async (_req, { send, host, body }) => {
14
15
  const ref = parseGitHubPrRef(body.pr);
15
- if (ref === undefined) {
16
+ if (ref === undefined || !watches(`${ref.owner}/${ref.repo}`)) {
16
17
  return Response.json(
17
- { ok: false, error: "need a PR URL or owner/repo#N" },
18
+ {
19
+ ok: false,
20
+ error: `need a PR URL or owner/repo#N in ${REPOS.join(", ")}`,
21
+ },
18
22
  { status: 400 }
19
23
  );
20
24
  }
@@ -0,0 +1,5 @@
1
+ export const REPOS: readonly string[] = ["owner/repo"];
2
+
3
+ export function watches(fullName: string): boolean {
4
+ return REPOS.some((repo) => repo.toLowerCase() === fullName.toLowerCase());
5
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "questions": [
3
+ {
4
+ "id": "repos",
5
+ "prompt": "Which GitHub repos should this agent record walkthroughs for?",
6
+ "hint": "Comma-separated owner/repo. One GitHub owner.",
7
+ "placeholder": "acme/api, acme/web",
8
+ "parse": "owner-repo-list"
9
+ }
10
+ ],
11
+ "replace": [
12
+ {
13
+ "file": "agent/lib/repos.ts",
14
+ "find": "[\"owner/repo\"]",
15
+ "answer": "repos",
16
+ "as": "json-array"
17
+ },
18
+ {
19
+ "file": "README.md",
20
+ "find": "owner/repo",
21
+ "answer": "repos",
22
+ "as": "first"
23
+ }
24
+ ]
25
+ }
package/dist/ab.d.ts DELETED
@@ -1,209 +0,0 @@
1
- /**
2
- * Live A/B metrics plug-in for agent-serve.
3
- *
4
- * Author `agent/ab.ts` (or `agent/ab/<name>.ts`) with {@link defineAB}. At
5
- * session creation the engine runs {@link ABConfig.split} and appends durable
6
- * `ab.assigned` events; arms are exposed on {@link SessionInfo.abs} for the
7
- * agent loop (tools / optional per-variant `instructions`). {@link ABCollector}
8
- * folds the event stream into metrics and calls {@link ABConfig.onSample}.
9
- * There is no `agent-sdk ab` test runner.
10
- *
11
- * Assignments and foldable metrics live in each session's `events.ndjson`
12
- * (survive serve restart). Optional project defaults in `agent/ab.config.ts`
13
- * ({@link defineABConfig}) cap the playground fold window; durable
14
- * sample/snapshot export lives on the `defineStorage` `abs` table.
15
- *
16
- * ```ts
17
- * import { defineAB, splitBySessionHash } from "@cursor/july/ab";
18
- *
19
- * export default defineAB({
20
- * name: "concise-instructions",
21
- * variants: {
22
- * control: { label: "Baseline" },
23
- * treatment: { label: "Shorter" },
24
- * },
25
- * split: splitBySessionHash({ holdout: 0.1 }),
26
- * onSample(sample) {
27
- * console.log(sample.variant, sample.metrics);
28
- * },
29
- * });
30
- * ```
31
- */
32
- import type { SessionEvent, SessionInfo } from "./types.js";
33
- export type { ABSnapshot } from "./internal/ab-snapshot.js";
34
- export interface ABVariantMeta {
35
- label?: string;
36
- description?: string;
37
- /**
38
- * Optional prompt overlay for this arm. Appended to the agent's
39
- * instructions for the session (local `AGENTS.md` + cloud first-turn
40
- * preamble) after sticky enrollment.
41
- */
42
- instructions?: string;
43
- }
44
- export interface ABSplitContext {
45
- agent: {
46
- name: string;
47
- };
48
- channel: {
49
- id: string;
50
- };
51
- /**
52
- * Live sessions only — the engine never calls `split` for
53
- * `purpose: "eval"` harness sessions.
54
- */
55
- session: SessionInfo;
56
- experiment: string;
57
- /** Variant keys from {@link ABConfig.variants}, in declaration order. */
58
- variants: string[];
59
- }
60
- export interface ABCollectContext {
61
- agent: {
62
- name: string;
63
- };
64
- channel: {
65
- id: string;
66
- };
67
- session: SessionInfo;
68
- experiment: string;
69
- variant: string;
70
- }
71
- /** Cumulative per-session metrics for one experiment arm. */
72
- export interface ABMetrics {
73
- turns: number;
74
- turnFailures: number;
75
- toolCalls: number;
76
- toolErrors: number;
77
- inputTokens: number;
78
- outputTokens: number;
79
- cacheReadTokens: number;
80
- cacheWriteTokens: number;
81
- /**
82
- * Sum of estimated turn costs in USD (the `cost.totalUsd` recorded on
83
- * `turn.completed` events). Turns whose model has no known rates
84
- * contribute 0.
85
- */
86
- costUsd: number;
87
- /** Sum of turn wall times (turn.started → turn.completed/failed). */
88
- wallTimeMs: number;
89
- /** Custom counters from {@link ABConfig.derive}. */
90
- custom: Record<string, number>;
91
- }
92
- export type ABSampleReason = "turn.completed" | "turn.failed";
93
- export interface ABMetricSample {
94
- experiment: string;
95
- variant: string;
96
- variantLabel?: string;
97
- sessionId: string;
98
- channelId: string;
99
- metrics: ABMetrics;
100
- reason: ABSampleReason;
101
- at: string;
102
- }
103
- /** Variant key to enroll, or `null` to leave the session out (sticky). */
104
- export type ABSplitResult = string | null;
105
- /**
106
- * Sticky enrollment decision. Return a variant key, or `null` to skip.
107
- * Prefer helpers ({@link splitBySessionHash}, {@link splitIf}, …).
108
- */
109
- export type ABSplit = (ctx: ABSplitContext) => ABSplitResult | Promise<ABSplitResult>;
110
- export interface ABSplitOptions {
111
- /** Relative weights per variant key (default: equal). */
112
- weights?: Record<string, number>;
113
- /** Fraction of sessions left out (`0`–`1`, sticky). */
114
- holdout?: number;
115
- /** Salt so a new rollout reshuffles without renaming the experiment. */
116
- salt?: string;
117
- }
118
- /** Sticky hash of session id → arm (recommended default). */
119
- export declare function splitBySessionHash(options?: ABSplitOptions): ABSplit;
120
- /** Random draw once per new session (then sticky via persistence). */
121
- export declare function splitByRandom(options?: Omit<ABSplitOptions, "salt">): ABSplit;
122
- /** Pin every new session to one arm. */
123
- export declare function splitAlways(variant: string): ABSplit;
124
- /** Skip every session (pause without deleting the experiment). */
125
- export declare function splitNone(): ABSplit;
126
- /** Run `inner` only when `predicate` is true; otherwise skip. */
127
- export declare function splitIf(predicate: (ctx: ABSplitContext) => boolean | Promise<boolean>, inner: ABSplit): ABSplit;
128
- export interface ABConfig {
129
- /** Experiment id. Defaults to the file stem (`ab/concise.ts` → `concise`). */
130
- name?: string;
131
- /**
132
- * Named arms (at least two). Prefer `control` / `treatment` over `a` / `b`.
133
- */
134
- variants: Record<string, ABVariantMeta>;
135
- /**
136
- * Choose an arm at session creation, or return `null` to skip. The engine
137
- * appends a durable `ab.assigned` event; the collector folds that stream.
138
- */
139
- split: ABSplit;
140
- /**
141
- * Optional custom metric extractors. Return a numeric delta, or
142
- * `null`/`undefined` to skip. Called on **every** session event (including
143
- * high-frequency `message.appended` deltas) — keep these synchronous and
144
- * cheap; do not await I/O.
145
- */
146
- derive?: Record<string, (event: SessionEvent, ctx: ABCollectContext) => number | null | undefined | Promise<number | null | undefined>>;
147
- /**
148
- * Called on turn complete/fail for enrolled sessions only. Observe-only;
149
- * errors are logged and never fatal.
150
- */
151
- onSample: (sample: ABMetricSample) => void | Promise<void>;
152
- }
153
- export type ABDefinition = ABConfig & {
154
- readonly __agentServe: "ab";
155
- };
156
- /** Author a live A/B metrics experiment under `agent/ab`. */
157
- export declare function defineAB(config: ABConfig): ABDefinition;
158
- /** Resolve {@link ABConfig.split} to a variant key or `null`. */
159
- export declare function resolveABSplit(split: ABSplit, ctx: ABSplitContext): Promise<ABSplitResult>;
160
- /** FNV-1a → [0, 1). */
161
- export declare function hashToUnitInterval(input: string): number;
162
- export declare function pickWeightedVariant(variantKeys: readonly string[], weights: Record<string, number> | undefined, unitInterval: number): string;
163
- export declare function emptyABMetrics(): ABMetrics;
164
- export declare function cloneABMetrics(metrics: ABMetrics): ABMetrics;
165
- /**
166
- * Append enrolled per-variant `instructions` overlays onto the base agent
167
- * prompt. Used by the session engine before materializing the harness.
168
- */
169
- export declare function mergeABInstructions(base: string | undefined, abs: Readonly<Record<string, string | null>> | undefined, experiments: ReadonlyArray<{
170
- name: string;
171
- definition: ABDefinition;
172
- }>): string | undefined;
173
- /** Default sessions folded into `GET /v1/abs` / the A/Bs tab. */
174
- export declare const AB_DEFAULT_MAX_PLAYGROUND_SESSIONS = 200;
175
- /** Hard ceiling for {@link ABConfigFile.maxPlaygroundSessions}. */
176
- export declare const AB_MAX_PLAYGROUND_SESSIONS = 10000;
177
- /**
178
- * Project-wide A/B defaults (`agent/ab.config.ts`).
179
- *
180
- * **Assignments and foldable metrics** already persist in each session's
181
- * `events.ndjson` under `--state-root`; durable sample/snapshot export
182
- * lives on the `defineStorage` `abs` table (`agent/storage.ts`). This
183
- * config only caps how many sessions the playground / `GET /v1/abs` folds.
184
- */
185
- export interface ABConfigFile {
186
- /**
187
- * Optional. Max newest sessions folded into **`GET /v1/abs` / the A/Bs
188
- * tab**. Does not prune session logs or change assignment.
189
- *
190
- * Default {@link AB_DEFAULT_MAX_PLAYGROUND_SESSIONS}; hard-capped at
191
- * {@link AB_MAX_PLAYGROUND_SESSIONS}.
192
- */
193
- maxPlaygroundSessions?: number;
194
- }
195
- /**
196
- * Defaults for every experiment under `agent/ab*` (`agent/ab.config.ts`).
197
- *
198
- * Session event logs remain the assignment/metrics source of truth;
199
- * durable exports go through the `defineStorage` `abs` table.
200
- */
201
- export declare function defineABConfig(config: ABConfigFile): ABConfigFile;
202
- /** Validate {@link ABConfigFile.maxPlaygroundSessions}. */
203
- export declare function normalizeABMaxPlaygroundSessions(value: unknown): number;
204
- /**
205
- * Effective `GET /v1/abs` fold window. Invalid values fall back to
206
- * {@link AB_DEFAULT_MAX_PLAYGROUND_SESSIONS}.
207
- */
208
- export declare function resolveABMaxPlaygroundSessions(value: unknown): number;
209
- //# sourceMappingURL=ab.d.ts.map
package/dist/ab.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ab.d.ts","sourceRoot":"","sources":["../src/ab.ts"],"names":[],"mappings":"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"}