@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
@@ -152,12 +152,11 @@ These read-only routes describe the running agent.
152
152
 
153
153
  | Route | What it does |
154
154
  | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
155
- | `GET /v1/info` | The discovered surface: model, tools, skills, MCP connections, subagents, channels and routes (with schemas), schedules, hooks, A/B experiments, diagnostics |
155
+ | `GET /v1/info` | The discovered surface: model, tools, skills, MCP connections, subagents, channels and routes (with schemas), schedules, hooks, diagnostics |
156
156
  | `GET /v1/tools` | The live tool catalog: authored server tools plus advertised MCP passthroughs under model-facing names, as light `{ name, title?, source? }` entries. `session` / `continuationToken` query parameters bind the listing to a session identity (advertised inventories can be tenant-scoped); a connection whose listing fails is skipped and reported in `connectionErrors` |
157
157
  | `GET /v1/tools/:name` | One catalog tool's full description: description, execution, `needsApproval`, `effect`, input and output schemas, source connection. Same session binding as the listing; unknown names get `404` with the available names |
158
158
  | `GET /v1/health` | Per-agent liveness, no auth |
159
159
  | `GET /v1/logs?after=N` | Recent server log lines, with a polling cursor |
160
- | `GET /v1/abs` | [Live A/B metrics](../ab.md): per-session assignments and aggregate arm totals |
161
160
 
162
161
  ## Artifacts
163
162
 
@@ -216,7 +215,7 @@ the final `completed` or `failed` status. Batch errors appear on the
216
215
  snapshot returned by the poll. Entries within `filterIds` and `tags`
217
216
  use OR semantics. When both fields are present, a case must match one
218
217
  entry from each field. Listed runs persist across restarts when storage is configured; see
219
- [Storage](../storage.md#eval-and-a-b-tables). Otherwise they are
218
+ [Storage](../storage.md#eval-table). Otherwise they are
220
219
  process-memory only.
221
220
 
222
221
  ## Dev-mode routes
@@ -37,8 +37,6 @@ Use the playground to chat, try channel routes, and inspect sessions.
37
37
  an [extension](./extensions.md) cannot contribute them.
38
38
  - **Raw events pane**: flip it on to inspect the event stream.
39
39
  - **Logs tab**: recent server log lines, polled from `GET /v1/logs`.
40
- - **A/Bs tab**: per-session and aggregate
41
- [live A/B metrics](../ab.md) from `GET /v1/abs`.
42
40
 
43
41
  In multi-agent mode each agent has its own playground at
44
42
  `/<slug>/playground`, and `/` is an index of them all.
@@ -61,5 +59,3 @@ Continue with these pages:
61
59
  - [Sessions and streaming](./sessions.md): the streams it renders
62
60
  - [Human-in-the-loop](../guides/human-in-the-loop.md): the approval
63
61
  buttons in context
64
- - [Live A/B metrics](../ab.md): the assignments and results in the A/Bs
65
- tab
@@ -11,8 +11,7 @@ how the Agent SDK loads it.
11
11
 
12
12
  ## Folder structure
13
13
 
14
- For the capabilities below, identity usually comes from the path. A/B
15
- experiments can override their file-derived name.
14
+ For the capabilities below, identity comes from the path.
16
15
 
17
16
  | Path | Resolves to |
18
17
  | --- | --- |
@@ -24,8 +23,6 @@ experiments can override their file-derived name.
24
23
  | `agent/extensions/ci.ts` | extension mount `ci`; its contributions become `ci__<name>` |
25
24
  | `agent/extensions/notion.ts` | Cursor plugin mount `notion` (`cursorPlugin`); its skills, agents, and MCP servers become `notion__<name>` |
26
25
  | `agent/channels/drive.ts` | channel `drive`, routes under `/v1/channels/drive` |
27
- | `agent/ab.ts` | A/B experiment `ab` unless `name` overrides it |
28
- | `agent/ab/concise.ts` | A/B experiment `concise` unless `name` overrides it |
29
26
 
30
27
  The root agent takes its name from `package.json` `name`, falling back
31
28
  to the directory name. When serving multiple agents, the slug is the
@@ -77,8 +74,6 @@ Each path maps to a capability and a reference page.
77
74
  | `agent/channels/*.ts` | HTTP surfaces beyond the built-in session API; `slack.ts` and `github.ts` use the platform packs | [Channels](./channels.md) |
78
75
  | `agent/hooks/*.ts` | Observe-only event subscribers, never fatal | [Hooks](./hooks.md) |
79
76
  | `agent/otel.ts` | `defineOtel` OTLP export (traces, metrics, optional logs) | [OpenTelemetry](../guides/opentelemetry.md) |
80
- | `agent/ab.ts`, `agent/ab/*.ts` | `defineAB` experiments with sticky variants and live metrics | [Live A/B metrics](../ab.md) |
81
- | `agent/ab.config.ts` | `defineABConfig` shared A/B settings | [Live A/B metrics](../ab.md) |
82
77
  | `agent/storage.ts` | `defineStorage` backend for the durable `host.kv` / `host.files` APIs | [Storage](../storage.md) |
83
78
  | `agent/artifacts.ts` | `defineArtifacts` kinds, the `tag_artifact` opt-in, and retention | [Artifacts](./artifacts.md) |
84
79
  | `agent/result.ts` | `defineResult` host `commit` on the final assistant text | [Turn result](./result.md) |
@@ -115,6 +110,4 @@ Continue with these pages:
115
110
 
116
111
  - [Agent config](./agent-config.md): the runtime config at the root
117
112
  - [Tools](./tools.md): add typed actions under `agent/tools/`
118
- - [Live A/B metrics](../ab.md): compare variants from `agent/ab.ts` or
119
- `agent/ab/`
120
113
  - [Concepts](../concepts.md): why the filesystem is the interface
@@ -80,7 +80,7 @@ within one session. The `at` field is an ISO-8601 timestamp.
80
80
 
81
81
  | Phase | Events | What they tell you |
82
82
  | --- | --- | --- |
83
- | Session | `session.started`, [`ab.assigned`](../ab.md#assign-sticky-variants), `session.waiting`, `session.completed`, `session.failed` | Session creation, A/B enrollment, readiness, and task completion |
83
+ | Session | `session.started`, `session.waiting`, `session.completed`, `session.failed` | Session creation, readiness, and task completion |
84
84
  | Agent | `agent.bound` | Cloud conversation URL |
85
85
  | Input | `message.received` | A user message was accepted |
86
86
  | Turn | `turn.queued`, `turn.started`, `turn.completed`, `turn.failed` | Queue position under a [`maxRunningTurns` cap](./agent-config.md#concurrency), then turn status, final result, and token usage |
@@ -164,5 +164,4 @@ view.
164
164
 
165
165
  - [HTTP API](./http-api.md)
166
166
  - [Hooks](./hooks.md)
167
- - [Live A/B metrics](../ab.md)
168
167
  - [How the Agent SDK works](../concepts.md)
@@ -113,7 +113,8 @@ Cursor checks the project in this order:
113
113
 
114
114
  Validation, discovery, direct server-tool calls, and server startup work
115
115
  without a Cursor credential. Model turns and evals need
116
- `CURSOR_API_KEY` or a saved `agent-sdk login`.
116
+ `CURSOR_API_KEY`, then `CURSOR_API_KEY_FILE` (hosted default `/run/cursor/secrets/CURSOR_API_KEY`), then `CURSOR_SERVICE_ACCOUNT_KEY`, then a saved
117
+ `agent-sdk login`.
117
118
 
118
119
  ## What happens after the first agent works?
119
120
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: "Coding-agent skills"
3
- description: "Task guides that ship with the Agent SDK for scaffolding, evals, channels, and hillclimbing."
3
+ description: "Task guides that ship with the Agent SDK for scaffolding, deployment, evals, channels, and hillclimbing."
4
4
  ---
5
5
 
6
6
  # Coding-agent skills
@@ -17,10 +17,10 @@ to use each one.
17
17
  | [framework-map](./framework-map.md) | Learn the project layout and runtimes |
18
18
  | [create-agent](./create-agent.md) | Scaffold and verify a new agent |
19
19
  | [evals](./evals.md) | Write fixtures and regression checks |
20
- | [ab](./ab.md) | Compare variants on live traffic |
21
20
  | [otel](./otel.md) | Export OpenTelemetry traces |
22
21
  | [hillclimb](./hillclimb.md) | Improve an agent against fixed inputs |
23
22
  | [github](./github.md) | Add GitHub webhooks and replay events |
24
23
  | [setup-slack](./setup-slack.md) | Connect an agent to Slack |
25
24
  | [mcp-auth](./mcp-auth.md) | Authorize host MCP OAuth |
25
+ | [deploy](./deploy.md) | Deploy with an attached service account |
26
26
  | [debug](./debug.md) | Diagnose a local run |
package/docs/storage.md CHANGED
@@ -6,8 +6,8 @@ description: "Point the Agent SDK's durable storage at a backend you own with de
6
6
  # Storage
7
7
 
8
8
  The Agent SDK owns durable storage for sessions, continuation tokens,
9
- reminders, playground eval history, and live A/B samples. It chooses the
10
- keys, when to read and write, and how to restore after restart.
9
+ reminders, and playground eval history. It chooses the keys, when to
10
+ read and write, and how to restore after restart.
11
11
 
12
12
  The Agent SDK owns key encoding. Backends must accept the keys they are
13
13
  given. Do not fail `put` to enforce a shorter cap.
@@ -41,9 +41,9 @@ export default defineStorage({
41
41
  ## Which fields to provide
42
42
 
43
43
  Implement the small KV core (`put`/`get`/`delete`/`list` plus the `cas`
44
- group) and you get **full functionality**: eval-run and A/B history are
45
- derived over the core automatically. The dedicated `evals` / `abs` groups
46
- are backend-native optimizations, not required-or-lose-history hooks.
44
+ group) and you get **full functionality**: eval-run history is derived
45
+ over the core automatically. The dedicated `evals` group is a
46
+ backend-native optimization, not a required-or-lose-history hook.
47
47
 
48
48
  | Field | Required | Role |
49
49
  | --- | --- | --- |
@@ -54,36 +54,28 @@ are backend-native optimizations, not required-or-lose-history hooks.
54
54
  | `delete` | For cleanup | Remove a key |
55
55
  | `name` | No | Label surfaced on `GET /v1/info` diagnostics |
56
56
  | `policy` | No | Timing knobs; see [Policy](#policy) |
57
- | `evals` | No | Backend-native eval-runs table; derived over the core when omitted. See [Eval and A/B tables](#eval-and-a-b-tables) |
58
- | `abs` | No | Backend-native A/B metrics table; derived over the core when omitted. See [Eval and A/B tables](#eval-and-a-b-tables) |
57
+ | `evals` | No | Backend-native eval-runs table; derived over the core when omitted. See [Eval table](#eval-table) |
59
58
 
60
59
  A throwing `put` is logged and dropped. It never fails a turn. When
61
60
  resolving a missing continuation token, a throwing `get` fails the
62
61
  follow-up so a store outage does not open a new session. Return
63
62
  `undefined` only for a real miss.
64
63
 
65
- ## Eval and A/B tables
64
+ ## Eval table
66
65
 
67
- Two dedicated table groups carry structured rows instead of opaque KV
68
- values. Both are **optional optimizations**: when a group is not
69
- authored, `defineStorage` derives it over the KV core, so a backend that
70
- implements only the core loses nothing. Author a group only when the
71
- backend has a better native shape (a real database table, an analytics
72
- pipeline). The built-in `fileKv` and `cursorHostedStorage` both do.
66
+ The dedicated `evals` table group carries structured rows instead of
67
+ opaque KV values. It is an **optional optimization**: when the group is
68
+ not authored, `defineStorage` derives it over the KV core, so a backend
69
+ that implements only the core loses nothing. Author the group only when
70
+ the backend has a better native shape (a real database table, an
71
+ analytics pipeline). The built-in `fileKv` and `cursorHostedStorage`
72
+ both do.
73
73
 
74
74
  `evals` keeps playground eval batches across restarts (`put`, `delete`,
75
75
  `list` over run snapshots keyed by `runId`). A core missing `delete` or
76
76
  `list` leaves eval history in memory until restart.
77
77
  See [Evals](./evals.md#configure-eval-runs).
78
78
 
79
- `abs` exports live A/B metrics: `putSample` appends one cumulative
80
- metric sample per enrolled experiment on each completed or failed turn;
81
- optional `putSnapshot` / `getSnapshot` store and serve back the latest
82
- aggregate so a replacement host can still serve the A/Bs surface.
83
- `putSample` and `putSnapshot` need only core `put`; `getSnapshot` needs
84
- core `get`. Session event logs remain the assignment source of truth
85
- either way. See [Live A/B metrics](./ab.md).
86
-
87
79
  ## Policy
88
80
 
89
81
  Two knobs change behavior:
@@ -118,8 +110,7 @@ With `get` and `list`, serve can rebuild local state from your store:
118
110
  - At startup, the Agent SDK loads recent sessions up to the restore caps.
119
111
  - On demand, a missing continuation token resolves through the store
120
112
  and resumes that session.
121
- - Playground eval history and A/B aggregates can load from the same
122
- sink.
113
+ - Playground eval history can load from the same sink.
123
114
 
124
115
  A turn in flight at crash time is not replayed. The next follow-up
125
116
  resumes from the last flushed state.
@@ -30,7 +30,7 @@ not on `PATH`, use `npx @cursor/july`.
30
30
  | What you see | What to do |
31
31
  | --- | --- |
32
32
  | Built-in file reads and greps fail; the turn retries for a long time | Run under Node 22.13+ (or `tsx`), never Bun. Look for `NGHTTP2_FRAME_SIZE_ERROR` in logs. |
33
- | The turn fails immediately with an API-key error | Sign in with `agent-sdk login`, or set `CURSOR_API_KEY`. Discovery, `info`, `call`, and serve bring-up work without a key; model turns need one. |
33
+ | The turn fails immediately with an API-key error | Sign in with `agent-sdk login`, or set `CURSOR_API_KEY` or `CURSOR_SERVICE_ACCOUNT_KEY`. Discovery, `info`, `call`, and serve bring-up work without a key; model turns need one. |
34
34
  | Replies quote rules or `AGENTS.md` from outside your agent project | The session workspace inherited parent-folder config. Nested git checkouts default `local.cwd` to a per-project cache directory under `~/.cache`. Point `defineAgent({ local: { cwd } })` at a checkout only when the agent should inherit that tree, or set `--state-root` to a clean directory (for example under `/tmp`). |
35
35
  | Yellow box shows Datadog/Linear tools, but the model lists `GetDynamicTools` / IDE `cursor` tools and never calls them | Attached MCP sits behind harness meta-tools, or the harness cwd is still inside another checkout. Set `advertiseTools: true` for named tools on local turns. Check `GET /v1/info` `local.cwd` and `connections[].advertiseTools`. |
36
36
  | Server tools, skills, or workspace seed files never appear | Server tools and sandbox seeds apply on the local runtime (cloud server tools need `--public-url` / `--cloud-tools-url`). Skills reach cloud through the Agent Store when hosting or a personal `CURSOR_API_KEY` is available; otherwise only skills already in the cloud repo. `validate` warns when this combination is present. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cursor/july",
3
- "version": "0.1.107",
3
+ "version": "0.1.109",
4
4
  "description": "(early alpha) Filesystem-first framework for defining Cursor agents as markdown and TypeScript and serving them over channels with the Cursor SDK.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "repository": {
@@ -146,6 +146,13 @@
146
146
  "import": "./dist/extensions/cursor-grokbot-agents/extension.js",
147
147
  "default": "./dist/extensions/cursor-grokbot-agents/extension.js"
148
148
  },
149
+ "./extensions/improve": {
150
+ "anysphere-source": "./src/extensions/improve/extension.ts",
151
+ "bun": "./dist/extensions/improve/extension.js",
152
+ "types": "./dist/extensions/improve/extension.d.ts",
153
+ "import": "./dist/extensions/improve/extension.js",
154
+ "default": "./dist/extensions/improve/extension.js"
155
+ },
149
156
  "./schedules": {
150
157
  "anysphere-source": "./src/schedules.ts",
151
158
  "types": "./dist/schedules.d.ts",
@@ -207,12 +214,6 @@
207
214
  "import": "./dist/evals/loaders.js",
208
215
  "default": "./dist/evals/loaders.js"
209
216
  },
210
- "./ab": {
211
- "anysphere-source": "./src/ab.ts",
212
- "types": "./dist/ab.d.ts",
213
- "import": "./dist/ab.js",
214
- "default": "./dist/ab.js"
215
- },
216
217
  "./artifacts": {
217
218
  "anysphere-source": "./src/artifacts.ts",
218
219
  "types": "./dist/artifacts.d.ts",
@@ -133,7 +133,7 @@ npx tsc --noEmit -p ./<slug>
133
133
  tsx does not typecheck. Tool `execute` must return JSON-shaped
134
134
  values: object literals or `type` aliases, not `interface` types.
135
135
 
136
- Model turns need `CURSOR_API_KEY`. Without one, finish the
136
+ Model turns need a Cursor credential (`CURSOR_API_KEY`, then `CURSOR_API_KEY_FILE`, then `CURSOR_SERVICE_ACCOUNT_KEY`, then `agent-sdk login`). Without one, finish the
137
137
  key-free checks, confirm `run` fails with only the API-key error,
138
138
  and hand these over:
139
139
 
@@ -34,7 +34,7 @@ Local `agent-sdk serve`. Hosted start or health failures:
34
34
  | `403` on stream | Wrong principal. Same auth as create; beyond loopback send `--bearer-token`. |
35
35
  | Works on loopback, blocked via tunnel | `localDevStrict()` rejects forwarded headers. Use `--bearer-token`. Never `--allow-anonymous` with account MCP. |
36
36
  | Slack `channel idle … missing credentials` | Expected. `slack doctor --prefix <PREFIX>`. |
37
- | Immediate API-key error | Model turns need `CURSOR_API_KEY`. |
37
+ | Immediate API-key error | Model turns need a Cursor credential (`CURSOR_API_KEY`, then `CURSOR_API_KEY_FILE`, then `CURSOR_SERVICE_ACCOUNT_KEY`, then `agent-sdk login`). |
38
38
  | Approvals or sandbox seeds missing | `runtime: "cloud"`. Those are local only. `validate` warns. |
39
39
  | `validate` clean, CI typecheck fails | tsx skipped types. JSON-shaped returns; `type` not `interface`. |
40
40
 
@@ -0,0 +1,169 @@
1
+ ---
2
+ name: agentsdk-deploy
3
+ description: >-
4
+ Deploy or redeploy an Agent SDK project to Cursor-managed hosting
5
+ with an attached service account. Use when asked to deploy,
6
+ redeploy, publish, or update a hosted Agent SDK agent.
7
+ ---
8
+
9
+ # Deploy an Agent SDK agent
10
+
11
+ Use this skill only after a person asks for a deployment. It deploys a
12
+ pushed Git ref to Cursor-managed hosting. Local files never upload.
13
+
14
+ Use the exact published `@cursor/july` release embedded in the installed
15
+ skill. Do not use a floating npm tag or a workspace build of the CLI.
16
+
17
+ ## Gather the target
18
+
19
+ Resolve these values from the request and checkout:
20
+
21
+ - Agent directory. Default to the current directory only when it contains
22
+ one Agent SDK project.
23
+ - Deployment slug. Default to the normalized directory name.
24
+ - Git ref. Default to the exact pushed `HEAD` commit.
25
+ - Team. Use the service account's team unless the request names another.
26
+ - Cursor-event repositories and CLI-only egress domains.
27
+
28
+ Ask one focused question when the target or requested ref is ambiguous.
29
+ Do not ask for values the checkout or existing deployment supplies.
30
+
31
+ ## Use the attached service account
32
+
33
+ Continue only when `CURSOR_SERVICE_ACCOUNT_KEY` is present. Never print
34
+ the value. Do not run `agent-sdk login`.
35
+
36
+ On Linux and macOS, run every Agent SDK command through this wrapper:
37
+
38
+ ```bash
39
+ CURSOR_JULY_VERSION="__CURSOR_JULY_VERSION__"
40
+ case "$CURSOR_JULY_VERSION" in
41
+ __CURSOR_JULY_*__)
42
+ echo "The Agent SDK deploy skill is not bound to a package version." >&2
43
+ exit 1
44
+ ;;
45
+ esac
46
+
47
+ run_agent_sdk() {
48
+ env -u NODE_OPTIONS -u CURSOR_API_KEY \
49
+ CURSOR_API_KEY_FILE=/dev/null \
50
+ npx --yes "@cursor/july@$CURSOR_JULY_VERSION" "$@"
51
+ }
52
+ ```
53
+
54
+ The installed copy pins the release it came from. The wrapper isolates that
55
+ published CLI and the attached service account. The presence check prevents a
56
+ stored personal login from being used when the attachment is missing.
57
+
58
+ Verify the principal before any write:
59
+
60
+ ```bash
61
+ test -n "${CURSOR_SERVICE_ACCOUNT_KEY:-}" || {
62
+ echo "No attached Cursor service account." >&2
63
+ exit 1
64
+ }
65
+ run_agent_sdk whoami --json
66
+ ```
67
+
68
+ Continue only when `credentialSource` is `service-account`. Record the
69
+ team and complete service-account ID for the final report. Stop on an
70
+ authentication, team-access, repository-scope, or hosting-entitlement
71
+ error.
72
+
73
+ ## Pin pushed source
74
+
75
+ Find the Git root and commit:
76
+
77
+ ```bash
78
+ GIT_ROOT="$(git -C "$AGENT_DIR" rev-parse --show-toplevel)"
79
+ SOURCE_REF="$(git -C "$GIT_ROOT" rev-parse HEAD)"
80
+ git -C "$GIT_ROOT" status --short
81
+ git -C "$GIT_ROOT" branch -r --contains "$SOURCE_REF"
82
+ ```
83
+
84
+ Use a ref from the request instead of `SOURCE_REF` when the person names
85
+ one. Confirm the selected commit exists on the remote. If intended
86
+ changes are uncommitted or unpushed, stop and explain they will not ship.
87
+ Do not commit or push unless the request includes that work.
88
+
89
+ The CLI infers the normalized HTTPS `origin`, agent path, and slug from
90
+ `--dir`. Pass `--repo`, `--path`, or `--slug` when the request overrides
91
+ the inferred value. Never print a remote URL that contains credentials.
92
+
93
+ ## Preserve deployment inputs
94
+
95
+ A redeploy replaces its source, Cursor-event repositories, and
96
+ CLI-supplied egress domains. Preserve the existing
97
+ `cursorEventRepos` and `egressAllowedDomains` unless the request or
98
+ project changes them. Reapply each value with:
99
+
100
+ ```text
101
+ --cursor-events-repo <owner/repo>
102
+ --allow-domain <hostname>
103
+ ```
104
+
105
+ Read existing settings through a filter that selects only those two
106
+ fields:
107
+
108
+ ```bash
109
+ run_agent_sdk deployment "$SLUG" --json |
110
+ node -e '
111
+ let raw = "";
112
+ process.stdin.setEncoding("utf8");
113
+ process.stdin.on("data", (chunk) => { raw += chunk; });
114
+ process.stdin.on("end", () => {
115
+ const value = JSON.parse(raw);
116
+ console.log(JSON.stringify({
117
+ cursorEventRepos: value.cursorEventRepos ?? [],
118
+ egressAllowedDomains: value.egressAllowedDomains ?? [],
119
+ }, null, 2));
120
+ });
121
+ '
122
+ ```
123
+
124
+ Never print or save the full response because it can contain short-lived
125
+ engine-access headers.
126
+
127
+ For a new SCM-channel deployment, ask which repositories should wake the
128
+ agent when the project does not declare the answer. The source repository
129
+ is not always the event repository.
130
+
131
+ ## Validate, deploy, and verify
132
+
133
+ Validate with the same published package and principal:
134
+
135
+ ```bash
136
+ run_agent_sdk validate --dir "$AGENT_DIR"
137
+ ```
138
+
139
+ Stop on validation errors. Review hosting warnings about secret names,
140
+ egress domains, and channel configuration before continuing.
141
+
142
+ Deploy the pinned source. Add the preserved or requested repeatable
143
+ flags:
144
+
145
+ ```bash
146
+ run_agent_sdk deploy \
147
+ --dir "$AGENT_DIR" \
148
+ --ref "$SOURCE_REF"
149
+ ```
150
+
151
+ The command waits for a terminal deployment state. Do not treat
152
+ `pending`, `accepted`, or `deploying` as success. If the command is
153
+ interrupted, resume inspection with:
154
+
155
+ ```bash
156
+ run_agent_sdk deployment "$SLUG"
157
+ ```
158
+
159
+ A first deployment prints a one-time alias token. Never paste it into
160
+ chat or expose it in an agent-captured terminal. Before a first deploy,
161
+ ask for a secure destination or ask the person to run the final command
162
+ in a private terminal. When writing the token, use mode `0600` and print
163
+ only the path. Redeploys do not print the token. JSON deployment output
164
+ can also contain credentials, so filter it before display.
165
+
166
+ Finish only when the deployment reports `running`. Report the slug,
167
+ team, generation, pinned ref, and complete service-account ID. On
168
+ failure, report the deployment status and sanitized error without
169
+ retrying a different ref or principal.
@@ -3,17 +3,17 @@ name: agentsdk-evals
3
3
  description: >-
4
4
  Author and run defineEval cases. Use when writing, fixing, seeding,
5
5
  or hillclimbing evals. Ask whether to generate samples or take
6
- uploaded data. Materialize API-backed fixtures first. Live A/B is
7
- defineAB (skills/ab), not defineEval.
6
+ uploaded data. Materialize API-backed fixtures first.
8
7
  ---
9
8
 
10
9
  # Agent SDK evals
11
10
 
12
11
  Fixed input, model turn, gates on the trajectory. Files live at
13
12
  project-root `evals/**/*.eval.ts`. `agent/evals/` is ignored.
13
+ Guide: `docs/evals.md`.
14
14
 
15
- Live traffic variants: `skills/ab/SKILL.md`. That is not a test
16
- runner.
15
+ Observing production: hooks. Tool logic without a model:
16
+ `agent-sdk call <tool> --input '{...}'`.
17
17
 
18
18
  ```bash
19
19
  agent-sdk eval --dir . --list
@@ -27,9 +27,13 @@ agent-sdk eval --dir . --tag smoke
27
27
  | `evals/weather.eval.ts` + `test` | `weather` |
28
28
  | `evals/weather/nyc.eval.ts` + `test` | `weather/nyc` |
29
29
  | `evals/weather.eval.ts` + `{ id: "nyc" }` | `weather/nyc` |
30
+ | `evals/sql.eval.ts` exporting an array of `defineEval` calls | `sql/0000`, `sql/0001`, ... |
30
31
 
31
32
  `eval` boots an ephemeral server and a temp state root. `--url`
32
- points at a running agent. Model turns need `CURSOR_API_KEY`.
33
+ points at a running agent. Model turns need a Cursor credential
34
+ (`CURSOR_API_KEY`, then `CURSOR_API_KEY_FILE`, then
35
+ `CURSOR_SERVICE_ACCOUNT_KEY`, then `agent-sdk login`); `--list` does
36
+ not. Node 22.13+, never Bun.
33
37
 
34
38
  ## Seeding
35
39
 
@@ -79,9 +83,30 @@ export default defineEvalConfig({
79
83
  });
80
84
  ```
81
85
 
82
- Either `test(t)` or `cases`, not both. `t.send` waits for park/fail.
83
- `workspaceFiles` seeds the first turn. Assert with `t.succeeded()`,
84
- `calledTool` / `notCalledTool`, `t.check(t.reply, …)`, `t.metric`.
86
+ Either `test(t)` or `cases`, not both. `t.send` waits for the turn to
87
+ settle (complete, park, or fail) and returns it; `turn.calledTool(...)`
88
+ reads only that turn, `t.*` reads the whole run. First-send options:
89
+ `workspaceFiles`, `workspaceDir`, `cloud`.
90
+
91
+ Gates: `t.succeeded()` / `t.parked()`,
92
+ `calledTool(name, { input, output, status, count })` / `notCalledTool`,
93
+ `toolOrder`, `maxToolCalls`, `taggedArtifact`, `event` / `notEvent`,
94
+ `t.check(value, includes | equals | matches | similarity | satisfies)`.
95
+ Records: `t.metric`, `t.log`, `t.score` (soft 0-1).
96
+
97
+ Severity is on the handle: default gate; `.soft()` tracked;
98
+ `.atLeast(0.8)` soft with a bar (verdict `scored`, exit 1 only under
99
+ `--strict`); `.gate(0.8)` hard. `t.judge.factuality`, `summarizes`,
100
+ `closedQA`, and `sql` are soft by default and need a judge model
101
+ (`judge` in `evals.config.ts`, on the eval or case, or per-call
102
+ `{ model }`).
103
+
104
+ ## Side effects
105
+
106
+ Eval sessions run real tools. Guard actuation with
107
+ `ctx.session.purpose === "eval"` in the tool, hook, or `defineResult`
108
+ and return a shaped result so `calledTool` can still assert the
109
+ decision.
85
110
 
86
111
  ## What to gate
87
112
 
@@ -103,6 +128,18 @@ drifting inputs (pin them).
103
128
  | GitHub | `github replay … --dry-run --out fixtures/github` |
104
129
  | Host-prep PR review | A team-owned PR; gate findings shape, not counts |
105
130
  | Workspace | `workspaceFiles` in `t.send` |
131
+ | Dataset | `loadJson` / `loadJsonl` / `loadYaml` from `@cursor/july/evals/loaders`, paths from the project root |
132
+
133
+ ## Debug and CI
134
+
135
+ A failed local run leaves `evals/<case-id>.json` (assertions, inputs,
136
+ tool I/O, final text, logs) under `evals/<stamp>/` in the project state
137
+ directory (the CLI prints the path); read it before editing the eval.
138
+ `--state-root <path>` keeps the raw session events too.
139
+
140
+ CI: `agent-sdk eval --dir . --json --no-stream --junit reports/evals.xml`.
141
+ Exit `1` on a failed gate, `2` when nothing matched, `--strict` to fail
142
+ on `scored`.
106
143
 
107
144
  Every kept hillclimb change lands an eval that would have failed
108
145
  before it. Never weaken a gate to pass a round.
@@ -28,8 +28,10 @@ Public docs: `node_modules/@cursor/july/dist/docs/llms.txt` or
28
28
  per-project cache directory under `~/.cache`. Point cwd at a
29
29
  checkout only when the agent must inherit that tree.
30
30
  5. **Attached MCP is nameless** until `advertiseTools: true`.
31
- 6. **Model turns need `CURSOR_API_KEY`.** `validate`, `info`, `call`,
32
- and `serve` bring-up do not.
31
+ 6. **Model turns need a Cursor credential** (`CURSOR_API_KEY`, then
32
+ `CURSOR_API_KEY_FILE`, then `CURSOR_SERVICE_ACCOUNT_KEY`, then
33
+ `agent-sdk login`). `validate`,
34
+ `info`, `call`, and `serve` bring-up do not.
33
35
 
34
36
  ## Folder structure
35
37
 
@@ -49,7 +51,6 @@ Path is identity. Full list: README "Folder structure".
49
51
  | `agent/hooks/*.ts` | Observe-only |
50
52
  | `agent/artifacts.ts` | Durable tagged outputs (`defineArtifacts`) |
51
53
  | `agent/result.ts` | Host `commit` on the final assistant text (`defineResult`) |
52
- | `agent/ab.ts` or `agent/ab/*.ts` | Live A/B (`defineAB`) |
53
54
  | `agent/otel.ts` | OpenTelemetry (`defineOtel`) |
54
55
  | `agent/schedules/*` | Cron. Never auto-fire under `--dev` |
55
56
  | `agent/sandbox/workspace/` | Session seed files (local only) |
@@ -97,10 +98,10 @@ only this agent's directory.
97
98
  | --- | --- |
98
99
  | Scaffold | `skills/create-agent/SKILL.md` |
99
100
  | Evals | `skills/evals/SKILL.md` |
100
- | Live A/B | `skills/ab/SKILL.md` |
101
101
  | OpenTelemetry | `skills/otel/SKILL.md` |
102
102
  | GitHub | `skills/github/SKILL.md` |
103
103
  | Slack | `skills/setup-slack/SKILL.md` |
104
104
  | Host MCP OAuth | `skills/mcp-auth/SKILL.md` |
105
+ | Managed deployment | `skills/deploy/SKILL.md` |
105
106
  | Local triage | `skills/debug/SKILL.md` |
106
107
  | Measured improvement | `skills/hillclimb/SKILL.md` |
@@ -48,7 +48,7 @@ at deploy. Repos must share one GitHub owner.
48
48
 
49
49
  | Source | When |
50
50
  | --- | --- |
51
- | `cursorAccount` + `serve --cursor-events` | Preferred. Signed-in host (`agent-sdk login` / `CURSOR_API_KEY`). Repos from the channel and from repeatable `--repo owner/name`. Cap 20, one GitHub owner |
51
+ | `cursorAccount` + `serve --cursor-events` | Preferred. Signed-in host (`agent-sdk login`, `CURSOR_API_KEY`, or `CURSOR_SERVICE_ACCOUNT_KEY`). Repos from the channel and from repeatable `--repo owner/name`. Cap 20, one GitHub owner |
52
52
  | HTTP `POST /<slug>/v1/channels/github` with a webhook secret | `allowAll()` + `X-Hub-Signature-256` |
53
53
  | HTTP, no secret | Loopback only. `serve --dev` also admits unsigned loopback (fixtures / forward) |
54
54