@cursor/july 0.1.102 → 0.1.103

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 (715) hide show
  1. package/AGENTS.md +34 -32
  2. package/README.md +10 -12
  3. package/dist/ab.d.ts +1 -1
  4. package/dist/ab.js +1 -1
  5. package/dist/bin/agent-serve.d.ts +12 -12
  6. package/dist/bin/agent-serve.js +114 -36
  7. package/dist/channels/bitbucket/api.d.ts +176 -0
  8. package/dist/channels/bitbucket/api.d.ts.map +1 -0
  9. package/dist/channels/bitbucket/api.js +419 -0
  10. package/dist/channels/bitbucket/binding.d.ts +71 -0
  11. package/dist/channels/bitbucket/binding.d.ts.map +1 -0
  12. package/dist/channels/bitbucket/binding.js +269 -0
  13. package/dist/channels/bitbucket/bitbucket-channel.d.ts +33 -0
  14. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -0
  15. package/dist/channels/bitbucket/bitbucket-channel.js +120 -0
  16. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +61 -0
  17. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -0
  18. package/dist/channels/bitbucket/bitbucket-webhook.js +394 -0
  19. package/dist/channels/bitbucket/checks.d.ts +67 -0
  20. package/dist/channels/bitbucket/checks.d.ts.map +1 -0
  21. package/dist/channels/bitbucket/checks.js +102 -0
  22. package/dist/channels/bitbucket/cursor-account.d.ts +37 -0
  23. package/dist/channels/bitbucket/cursor-account.d.ts.map +1 -0
  24. package/dist/channels/bitbucket/cursor-account.js +65 -0
  25. package/dist/channels/bitbucket/defaults.d.ts +26 -0
  26. package/dist/channels/bitbucket/defaults.d.ts.map +1 -0
  27. package/dist/channels/bitbucket/defaults.js +73 -0
  28. package/dist/channels/bitbucket/events.d.ts +22 -0
  29. package/dist/channels/bitbucket/events.d.ts.map +1 -0
  30. package/dist/channels/bitbucket/events.js +64 -0
  31. package/dist/channels/bitbucket/index.d.ts +34 -0
  32. package/dist/channels/bitbucket/index.d.ts.map +1 -0
  33. package/dist/channels/bitbucket/index.js +33 -0
  34. package/dist/channels/bitbucket/replay.d.ts +63 -0
  35. package/dist/channels/bitbucket/replay.d.ts.map +1 -0
  36. package/dist/channels/bitbucket/replay.js +304 -0
  37. package/dist/channels/bitbucket/state.d.ts +35 -0
  38. package/dist/channels/bitbucket/state.d.ts.map +1 -0
  39. package/dist/channels/bitbucket/state.js +21 -0
  40. package/dist/channels/bitbucket/types.d.ts +229 -0
  41. package/dist/channels/bitbucket/types.d.ts.map +1 -0
  42. package/dist/channels/bitbucket/types.js +1 -0
  43. package/dist/channels/deployments/deployments-channel.d.ts +22 -14
  44. package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
  45. package/dist/channels/deployments/deployments-channel.js +25 -27
  46. package/dist/channels/deployments/types.d.ts +12 -6
  47. package/dist/channels/deployments/types.d.ts.map +1 -1
  48. package/dist/channels/github/binding.d.ts +6 -0
  49. package/dist/channels/github/binding.d.ts.map +1 -1
  50. package/dist/channels/github/binding.js +3 -3
  51. package/dist/channels/github/cursor-account.d.ts +7 -3
  52. package/dist/channels/github/cursor-account.d.ts.map +1 -1
  53. package/dist/channels/github/cursor-account.js +10 -6
  54. package/dist/channels/github/events.d.ts +1 -1
  55. package/dist/channels/github/events.js +1 -1
  56. package/dist/channels/github/forward.d.ts +1 -1
  57. package/dist/channels/github/forward.d.ts.map +1 -1
  58. package/dist/channels/github/forward.js +3 -2
  59. package/dist/channels/github/github-channel.d.ts +29 -39
  60. package/dist/channels/github/github-channel.d.ts.map +1 -1
  61. package/dist/channels/github/github-channel.js +68 -101
  62. package/dist/channels/github/replay.d.ts +1 -1
  63. package/dist/channels/github/replay.js +1 -1
  64. package/dist/channels/github/state.d.ts +2 -0
  65. package/dist/channels/github/state.d.ts.map +1 -1
  66. package/dist/channels/github/state.js +14 -11
  67. package/dist/channels/github/types.d.ts +2 -4
  68. package/dist/channels/github/types.d.ts.map +1 -1
  69. package/dist/channels/gitlab/api.d.ts +91 -0
  70. package/dist/channels/gitlab/api.d.ts.map +1 -0
  71. package/dist/channels/gitlab/api.js +150 -0
  72. package/dist/channels/gitlab/binding.d.ts +58 -0
  73. package/dist/channels/gitlab/binding.d.ts.map +1 -0
  74. package/dist/channels/gitlab/binding.js +139 -0
  75. package/dist/channels/gitlab/checks.d.ts +110 -0
  76. package/dist/channels/gitlab/checks.d.ts.map +1 -0
  77. package/dist/channels/gitlab/checks.js +126 -0
  78. package/dist/channels/gitlab/cursor-account.d.ts +36 -0
  79. package/dist/channels/gitlab/cursor-account.d.ts.map +1 -0
  80. package/dist/channels/gitlab/cursor-account.js +65 -0
  81. package/dist/channels/gitlab/defaults.d.ts +25 -0
  82. package/dist/channels/gitlab/defaults.d.ts.map +1 -0
  83. package/dist/channels/gitlab/defaults.js +60 -0
  84. package/dist/channels/gitlab/events.d.ts +12 -0
  85. package/dist/channels/gitlab/events.d.ts.map +1 -0
  86. package/dist/channels/gitlab/events.js +28 -0
  87. package/dist/channels/gitlab/gitlab-channel.d.ts +33 -0
  88. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -0
  89. package/dist/channels/gitlab/gitlab-channel.js +120 -0
  90. package/dist/channels/gitlab/gitlab-webhook.d.ts +45 -0
  91. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -0
  92. package/dist/channels/gitlab/gitlab-webhook.js +397 -0
  93. package/dist/channels/gitlab/index.d.ts +31 -0
  94. package/dist/channels/gitlab/index.d.ts.map +1 -0
  95. package/dist/channels/gitlab/index.js +30 -0
  96. package/dist/channels/gitlab/replay.d.ts +105 -0
  97. package/dist/channels/gitlab/replay.d.ts.map +1 -0
  98. package/dist/channels/gitlab/replay.js +206 -0
  99. package/dist/channels/gitlab/state.d.ts +33 -0
  100. package/dist/channels/gitlab/state.d.ts.map +1 -0
  101. package/dist/channels/gitlab/state.js +23 -0
  102. package/dist/channels/gitlab/types.d.ts +214 -0
  103. package/dist/channels/gitlab/types.d.ts.map +1 -0
  104. package/dist/channels/gitlab/types.js +1 -0
  105. package/dist/channels/origin/api.d.ts.map +1 -1
  106. package/dist/channels/origin/api.js +4 -2
  107. package/dist/channels/origin/origin-channel.d.ts +4 -9
  108. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  109. package/dist/channels/origin/origin-channel.js +8 -48
  110. package/dist/channels/origin/types.d.ts +20 -2
  111. package/dist/channels/origin/types.d.ts.map +1 -1
  112. package/dist/channels/slack/eval-directive.d.ts.map +1 -1
  113. package/dist/channels/slack/eval-directive.js +1 -7
  114. package/dist/channels/slack/init.d.ts.map +1 -1
  115. package/dist/channels/slack/init.js +3 -3
  116. package/dist/channels/slack/setup.d.ts +1 -1
  117. package/dist/channels/slack/setup.d.ts.map +1 -1
  118. package/dist/channels/slack/setup.js +6 -13
  119. package/dist/channels/slack/types.d.ts +1 -1
  120. package/dist/channels/slack/types.d.ts.map +1 -1
  121. package/dist/channels.d.ts +1 -1
  122. package/dist/channels.d.ts.map +1 -1
  123. package/dist/client.d.ts +1 -1
  124. package/dist/client.js +1 -1
  125. package/dist/connections.d.ts +1 -1
  126. package/dist/connections.js +1 -1
  127. package/dist/docs/404.html +2 -2
  128. package/dist/docs/ab.html +4 -4
  129. package/dist/docs/assets/{app.CLA03RCz.js → app.DW9pXkpL.js} +1 -1
  130. package/dist/docs/assets/chunks/@localSearchIndexroot.nrl1ifBq.js +1 -0
  131. package/dist/docs/assets/chunks/{VPLocalSearchBox.ifxv-cJV.js → VPLocalSearchBox.CdEIUwDg.js} +1 -1
  132. package/dist/docs/assets/chunks/{theme.DWCwM6p-.js → theme.YZMHgPgg.js} +2 -2
  133. package/dist/docs/assets/concepts.md.DgEcZOfT.js +1 -0
  134. package/dist/docs/assets/{concepts.md.rPzW2HZN.lean.js → concepts.md.DgEcZOfT.lean.js} +1 -1
  135. package/dist/docs/assets/{evals.md.CPzDAwoH.js → evals.md.CbMoebP1.js} +1 -1
  136. package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +9 -0
  137. package/dist/docs/assets/{guides_github.md.BtPr9GaP.js → guides_github.md.DKYiT9do.js} +1 -1
  138. package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.js → guides_opentelemetry.md.COh9jFVg.js} +7 -8
  139. package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.lean.js → guides_opentelemetry.md.COh9jFVg.lean.js} +1 -1
  140. package/dist/docs/assets/{index.md.Kiht7ell.js → index.md.D75GWhPl.js} +1 -1
  141. package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.js → reference_agent-config.md.CHNpiyp4.js} +3 -3
  142. package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.js → reference_channels.md.Dz8Cnudp.js} +2 -2
  143. package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.lean.js → reference_channels.md.Dz8Cnudp.lean.js} +1 -1
  144. package/dist/docs/assets/{reference_cli.md.DfoeyvL0.js → reference_cli.md.CJNc_xYK.js} +1 -1
  145. package/dist/docs/assets/{reference_extensions.md.9WQMZe1l.js → reference_extensions.md.DykHW3qL.js} +11 -5
  146. package/dist/docs/assets/reference_extensions.md.DykHW3qL.lean.js +1 -0
  147. package/dist/docs/assets/reference_hooks.md.Ddt5DdgJ.js +73 -0
  148. package/dist/docs/assets/{reference_hooks.md.a8BJxMR5.lean.js → reference_hooks.md.Ddt5DdgJ.lean.js} +1 -1
  149. package/dist/docs/assets/{reference_playground.md.DnX5nL-B.js → reference_playground.md.4myJPxrf.js} +1 -1
  150. package/dist/docs/assets/{reference_project-layout.md.CA6QP6Lw.js → reference_project-layout.md.DuBu9a96.js} +2 -2
  151. package/dist/docs/assets/reference_result.md.BK5SxDrf.js +19 -0
  152. package/dist/docs/assets/reference_result.md.BK5SxDrf.lean.js +1 -0
  153. package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.js → reference_sessions.md.CueyOHSL.js} +1 -1
  154. package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.lean.js → reference_sessions.md.CueyOHSL.lean.js} +1 -1
  155. package/dist/docs/assets/{reference_tools.md.B1up2r9W.js → reference_tools.md.aGrn99hP.js} +1 -1
  156. package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +1 -0
  157. package/dist/docs/assets/{skills_otel.md.CgiZryR3.js → skills_otel.md.CqhobH3B.js} +3 -3
  158. package/dist/docs/assets/{skills_otel.md.CgiZryR3.lean.js → skills_otel.md.CqhobH3B.lean.js} +1 -1
  159. package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.js → templates_pr-autofixer.md.Bds_XWcV.js} +2 -2
  160. package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.lean.js → templates_pr-autofixer.md.Bds_XWcV.lean.js} +1 -1
  161. package/dist/docs/building-with-agents.html +4 -4
  162. package/dist/docs/concepts.html +5 -5
  163. package/dist/docs/concepts.md +2 -4
  164. package/dist/docs/deployment.html +4 -4
  165. package/dist/docs/design/runtime-abstraction.md +2 -3
  166. package/dist/docs/evals.html +6 -6
  167. package/dist/docs/evals.md +9 -7
  168. package/dist/docs/guides/agent-to-agent.html +4 -4
  169. package/dist/docs/guides/cloud-agents.html +6 -6
  170. package/dist/docs/guides/cloud-agents.md +4 -6
  171. package/dist/docs/guides/convert-automation.html +4 -4
  172. package/dist/docs/guides/github.html +6 -6
  173. package/dist/docs/guides/github.md +0 -1
  174. package/dist/docs/guides/human-in-the-loop.html +4 -4
  175. package/dist/docs/guides/mcp-oauth.html +5 -5
  176. package/dist/docs/guides/opentelemetry.html +10 -11
  177. package/dist/docs/guides/opentelemetry.md +41 -17
  178. package/dist/docs/guides/slack.html +4 -4
  179. package/dist/docs/guides/webhooks.html +4 -4
  180. package/dist/docs/hashmap.json +1 -1
  181. package/dist/docs/hillclimbing.html +4 -4
  182. package/dist/docs/index.html +6 -6
  183. package/dist/docs/index.md +2 -2
  184. package/dist/docs/llms-full.txt +501 -262
  185. package/dist/docs/llms.txt +2 -2
  186. package/dist/docs/quickstart.html +4 -4
  187. package/dist/docs/reference/agent-config.html +8 -8
  188. package/dist/docs/reference/agent-config.md +6 -10
  189. package/dist/docs/reference/artifacts.html +5 -5
  190. package/dist/docs/reference/channels.html +6 -6
  191. package/dist/docs/reference/channels.md +18 -8
  192. package/dist/docs/reference/cli.html +5 -5
  193. package/dist/docs/reference/cli.md +3 -4
  194. package/dist/docs/reference/connections.html +4 -4
  195. package/dist/docs/reference/extensions.html +16 -10
  196. package/dist/docs/reference/extensions.md +86 -22
  197. package/dist/docs/reference/hooks.html +69 -10
  198. package/dist/docs/reference/hooks.md +215 -46
  199. package/dist/docs/reference/http-api.html +4 -4
  200. package/dist/docs/reference/instructions.html +4 -4
  201. package/dist/docs/reference/playground.html +5 -5
  202. package/dist/docs/reference/playground.md +3 -0
  203. package/dist/docs/reference/project-layout.html +6 -6
  204. package/dist/docs/reference/project-layout.md +2 -1
  205. package/dist/docs/reference/prompt.html +4 -4
  206. package/dist/docs/reference/result.html +45 -0
  207. package/dist/docs/reference/result.md +89 -0
  208. package/dist/docs/reference/schedules.html +4 -4
  209. package/dist/docs/reference/sessions.html +5 -5
  210. package/dist/docs/reference/sessions.md +3 -1
  211. package/dist/docs/reference/skills.html +4 -4
  212. package/dist/docs/reference/subagents.html +4 -4
  213. package/dist/docs/reference/tools.html +5 -5
  214. package/dist/docs/reference/tools.md +1 -2
  215. package/dist/docs/scaffolding-agents.html +4 -4
  216. package/dist/docs/skills/ab.html +4 -4
  217. package/dist/docs/skills/create-agent.html +4 -4
  218. package/dist/docs/skills/debug.html +4 -4
  219. package/dist/docs/skills/evals.html +4 -4
  220. package/dist/docs/skills/framework-map.html +5 -5
  221. package/dist/docs/skills/framework-map.md +3 -1
  222. package/dist/docs/skills/github.html +4 -4
  223. package/dist/docs/skills/hillclimb.html +4 -4
  224. package/dist/docs/skills/index.html +4 -4
  225. package/dist/docs/skills/mcp-auth.html +4 -4
  226. package/dist/docs/skills/otel.html +7 -7
  227. package/dist/docs/skills/otel.md +8 -3
  228. package/dist/docs/skills/setup-slack.html +4 -4
  229. package/dist/docs/storage.html +4 -4
  230. package/dist/docs/templates/agentic-owners.html +4 -4
  231. package/dist/docs/templates/agents-md.html +4 -4
  232. package/dist/docs/templates/code-wiki.html +4 -4
  233. package/dist/docs/templates/demo.html +4 -4
  234. package/dist/docs/templates/pr-autofixer.html +6 -6
  235. package/dist/docs/templates/pr-autofixer.md +0 -3
  236. package/dist/docs/templates/security-help.html +4 -4
  237. package/dist/docs/templates/security-reviewer.html +4 -4
  238. package/dist/docs/templates/triage.html +4 -4
  239. package/dist/docs/troubleshooting.html +4 -4
  240. package/dist/evals.d.ts +1 -1
  241. package/dist/evals.d.ts.map +1 -1
  242. package/dist/extensions.d.ts +20 -7
  243. package/dist/extensions.d.ts.map +1 -1
  244. package/dist/extensions.js +36 -5
  245. package/dist/files.d.ts +16 -3
  246. package/dist/files.d.ts.map +1 -1
  247. package/dist/files.js +16 -3
  248. package/dist/index.d.ts +4 -4
  249. package/dist/index.d.ts.map +1 -1
  250. package/dist/index.js +3 -3
  251. package/dist/internal/ab-snapshot.d.ts.map +1 -1
  252. package/dist/internal/ab-snapshot.js +0 -1
  253. package/dist/internal/advertise-tools.d.ts.map +1 -1
  254. package/dist/internal/advertise-tools.js +1 -3
  255. package/dist/internal/authored-alias-hooks.d.ts +4 -13
  256. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  257. package/dist/internal/authored-alias-hooks.js +4 -20
  258. package/dist/internal/authored-loaders.d.ts +2 -3
  259. package/dist/internal/authored-loaders.d.ts.map +1 -1
  260. package/dist/internal/authored-loaders.js +6 -20
  261. package/dist/internal/channel-dispatch.d.ts +43 -0
  262. package/dist/internal/channel-dispatch.d.ts.map +1 -0
  263. package/dist/internal/channel-dispatch.js +77 -0
  264. package/dist/internal/chat-client.d.ts +1 -1
  265. package/dist/internal/chat-client.js +1 -1
  266. package/dist/internal/cli-ax.d.ts +5 -5
  267. package/dist/internal/cli-ax.d.ts.map +1 -1
  268. package/dist/internal/cli-ax.js +5 -5
  269. package/dist/internal/cli-bitbucket.d.ts +33 -0
  270. package/dist/internal/cli-bitbucket.d.ts.map +1 -0
  271. package/dist/internal/cli-bitbucket.js +359 -0
  272. package/dist/internal/cli-convert-automation.d.ts +1 -1
  273. package/dist/internal/cli-convert-automation.js +2 -2
  274. package/dist/internal/cli-cursor.d.ts +1 -1
  275. package/dist/internal/cli-cursor.d.ts.map +1 -1
  276. package/dist/internal/cli-cursor.js +2 -4
  277. package/dist/internal/cli-deploy.d.ts.map +1 -1
  278. package/dist/internal/cli-deploy.js +2 -6
  279. package/dist/internal/cli-github.d.ts +1 -1
  280. package/dist/internal/cli-github.js +3 -3
  281. package/dist/internal/cli-gitlab.d.ts +37 -0
  282. package/dist/internal/cli-gitlab.d.ts.map +1 -0
  283. package/dist/internal/cli-gitlab.js +380 -0
  284. package/dist/internal/cli-mcp.d.ts.map +1 -1
  285. package/dist/internal/cli-mcp.js +2 -6
  286. package/dist/internal/cli-slack.d.ts +1 -1
  287. package/dist/internal/cli-slack.d.ts.map +1 -1
  288. package/dist/internal/cli-slack.js +2 -4
  289. package/dist/internal/continuation-channel.d.ts +14 -0
  290. package/dist/internal/continuation-channel.d.ts.map +1 -1
  291. package/dist/internal/continuation-channel.js +56 -3
  292. package/dist/internal/continuation-identity.d.ts +14 -15
  293. package/dist/internal/continuation-identity.d.ts.map +1 -1
  294. package/dist/internal/continuation-identity.js +182 -7
  295. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  296. package/dist/internal/conversation-mirror.js +4 -3
  297. package/dist/internal/convert-automation/types.d.ts +1 -1
  298. package/dist/internal/convert-automation/types.js +1 -1
  299. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  300. package/dist/internal/cursor/account-mcp.js +1 -3
  301. package/dist/internal/cursor/backend-client.d.ts +5 -4
  302. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  303. package/dist/internal/cursor/backend-client.js +5 -6
  304. package/dist/internal/cursor/bound-secret-file.d.ts +56 -0
  305. package/dist/internal/cursor/bound-secret-file.d.ts.map +1 -0
  306. package/dist/internal/cursor/bound-secret-file.js +88 -0
  307. package/dist/internal/cursor/credentials.d.ts +39 -5
  308. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  309. package/dist/internal/cursor/credentials.js +58 -8
  310. package/dist/internal/cursor/hosted-bound-secrets.d.ts +41 -0
  311. package/dist/internal/cursor/hosted-bound-secrets.d.ts.map +1 -0
  312. package/dist/internal/cursor/hosted-bound-secrets.js +54 -0
  313. package/dist/internal/cursor/hosted-deployment-secrets.d.ts +19 -5
  314. package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -1
  315. package/dist/internal/cursor/hosted-deployment-secrets.js +29 -9
  316. package/dist/internal/cursor/hosted-store-secrets.d.ts +1 -1
  317. package/dist/internal/cursor/hosted-store-secrets.js +1 -1
  318. package/dist/internal/cursor-account-mcp-auth.d.ts.map +1 -1
  319. package/dist/internal/cursor-account-mcp-auth.js +2 -4
  320. package/dist/internal/cursor-deployment-relay.d.ts +6 -2
  321. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  322. package/dist/internal/cursor-deployment-relay.js +13 -9
  323. package/dist/internal/deploy-manifest.d.ts +1 -1
  324. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  325. package/dist/internal/deploy-manifest.js +1 -1
  326. package/dist/internal/discovery/ab.d.ts +1 -1
  327. package/dist/internal/discovery/ab.d.ts.map +1 -1
  328. package/dist/internal/discovery/ab.js +21 -9
  329. package/dist/internal/discovery/agent.d.ts +6 -1
  330. package/dist/internal/discovery/agent.d.ts.map +1 -1
  331. package/dist/internal/discovery/agent.js +65 -116
  332. package/dist/internal/discovery/channels.d.ts +1 -1
  333. package/dist/internal/discovery/channels.d.ts.map +1 -1
  334. package/dist/internal/discovery/channels.js +14 -14
  335. package/dist/internal/discovery/connections.d.ts +1 -5
  336. package/dist/internal/discovery/connections.d.ts.map +1 -1
  337. package/dist/internal/discovery/connections.js +30 -44
  338. package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -1
  339. package/dist/internal/discovery/cursor-plugin.js +1 -3
  340. package/dist/internal/discovery/extension-overlay.d.ts +32 -0
  341. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -0
  342. package/dist/internal/discovery/extension-overlay.js +191 -0
  343. package/dist/internal/discovery/extensions.d.ts +11 -2
  344. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  345. package/dist/internal/discovery/extensions.js +211 -74
  346. package/dist/internal/discovery/hooks.d.ts +1 -1
  347. package/dist/internal/discovery/hooks.d.ts.map +1 -1
  348. package/dist/internal/discovery/hooks.js +15 -2
  349. package/dist/internal/discovery/info.d.ts.map +1 -1
  350. package/dist/internal/discovery/info.js +7 -1
  351. package/dist/internal/discovery/modules.d.ts.map +1 -1
  352. package/dist/internal/discovery/modules.js +8 -2
  353. package/dist/internal/discovery/names.d.ts +1 -1
  354. package/dist/internal/discovery/names.d.ts.map +1 -1
  355. package/dist/internal/discovery/names.js +1 -0
  356. package/dist/internal/discovery/project.d.ts +0 -2
  357. package/dist/internal/discovery/project.d.ts.map +1 -1
  358. package/dist/internal/discovery/project.js +64 -10
  359. package/dist/internal/discovery/runtime.d.ts.map +1 -1
  360. package/dist/internal/discovery/runtime.js +1 -2
  361. package/dist/internal/discovery/schedules.d.ts +1 -1
  362. package/dist/internal/discovery/schedules.d.ts.map +1 -1
  363. package/dist/internal/discovery/schedules.js +23 -2
  364. package/dist/internal/discovery/services.d.ts +6 -2
  365. package/dist/internal/discovery/services.d.ts.map +1 -1
  366. package/dist/internal/discovery/services.js +31 -1
  367. package/dist/internal/discovery/skills.d.ts +1 -6
  368. package/dist/internal/discovery/skills.d.ts.map +1 -1
  369. package/dist/internal/discovery/skills.js +8 -3
  370. package/dist/internal/discovery/subagent.d.ts +3 -0
  371. package/dist/internal/discovery/subagent.d.ts.map +1 -1
  372. package/dist/internal/discovery/subagent.js +109 -0
  373. package/dist/internal/discovery.d.ts +1 -2
  374. package/dist/internal/discovery.d.ts.map +1 -1
  375. package/dist/internal/discovery.js +1 -2
  376. package/dist/internal/distribution.d.ts +10 -27
  377. package/dist/internal/distribution.d.ts.map +1 -1
  378. package/dist/internal/distribution.js +25 -73
  379. package/dist/internal/docs-site.js +1 -1
  380. package/dist/internal/eval-run-store.d.ts +0 -1
  381. package/dist/internal/eval-run-store.d.ts.map +1 -1
  382. package/dist/internal/eval-runner.d.ts.map +1 -1
  383. package/dist/internal/framework-file-storage.d.ts +8 -0
  384. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  385. package/dist/internal/framework-file-storage.js +8 -8
  386. package/dist/internal/github-fanout.d.ts +1 -1
  387. package/dist/internal/github-fanout.js +1 -1
  388. package/dist/internal/guest-network.d.ts +101 -0
  389. package/dist/internal/guest-network.d.ts.map +1 -0
  390. package/dist/internal/guest-network.js +304 -0
  391. package/dist/internal/host-otel.d.ts +3 -3
  392. package/dist/internal/host-otel.d.ts.map +1 -1
  393. package/dist/internal/host-otel.js +8 -4
  394. package/dist/internal/hosted-admission-adapter.d.ts +8 -7
  395. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  396. package/dist/internal/hosted-delivery-protocol.d.ts +6 -0
  397. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  398. package/dist/internal/hosted-delivery-protocol.js +18 -5
  399. package/dist/internal/hosted-delivery.d.ts +18 -0
  400. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  401. package/dist/internal/hosted-delivery.js +248 -118
  402. package/dist/internal/http-channel.d.ts.map +1 -1
  403. package/dist/internal/http-channel.js +1 -3
  404. package/dist/internal/init-interview.d.ts.map +1 -1
  405. package/dist/internal/init-interview.js +1 -3
  406. package/dist/internal/init-project.d.ts +2 -2
  407. package/dist/internal/init-project.js +2 -2
  408. package/dist/internal/inline-stdio-define-stub.d.ts +1 -1
  409. package/dist/internal/inline-stdio-define-stub.d.ts.map +1 -1
  410. package/dist/internal/inline-stdio-define-stub.js +1 -1
  411. package/dist/internal/is-record.d.ts +2 -0
  412. package/dist/internal/is-record.d.ts.map +1 -0
  413. package/dist/internal/is-record.js +3 -0
  414. package/dist/internal/json-schema.d.ts.map +1 -1
  415. package/dist/internal/json-schema.js +18 -10
  416. package/dist/internal/local-control-plane.d.ts +1 -2
  417. package/dist/internal/local-control-plane.d.ts.map +1 -1
  418. package/dist/internal/local-control-plane.js +3 -20
  419. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  420. package/dist/internal/mcp-endpoint.js +1 -3
  421. package/dist/internal/otel/collector.d.ts +12 -3
  422. package/dist/internal/otel/collector.d.ts.map +1 -1
  423. package/dist/internal/otel/collector.js +77 -125
  424. package/dist/internal/otel/config.d.ts +0 -2
  425. package/dist/internal/otel/config.d.ts.map +1 -1
  426. package/dist/internal/otel/config.js +17 -20
  427. package/dist/internal/otel/http.d.ts +2 -0
  428. package/dist/internal/otel/http.d.ts.map +1 -1
  429. package/dist/internal/otel/http.js +7 -1
  430. package/dist/internal/otel/mcp.d.ts.map +1 -1
  431. package/dist/internal/otel/mcp.js +3 -16
  432. package/dist/internal/otel/runtime.d.ts +26 -1
  433. package/dist/internal/otel/runtime.d.ts.map +1 -1
  434. package/dist/internal/otel/runtime.js +164 -15
  435. package/dist/internal/package-inline-stdio.d.ts.map +1 -1
  436. package/dist/internal/package-inline-stdio.js +3 -11
  437. package/dist/internal/playground/toolchain.d.ts +1 -1
  438. package/dist/internal/playground/toolchain.d.ts.map +1 -1
  439. package/dist/internal/playground/toolchain.js +1 -1
  440. package/dist/internal/request-error-status.d.ts +12 -0
  441. package/dist/internal/request-error-status.d.ts.map +1 -0
  442. package/dist/internal/request-error-status.js +52 -0
  443. package/dist/internal/resolve-prod-target.d.ts +1 -1
  444. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  445. package/dist/internal/resolve-prod-target.js +3 -7
  446. package/dist/internal/result-output.d.ts +18 -0
  447. package/dist/internal/result-output.d.ts.map +1 -0
  448. package/dist/internal/result-output.js +33 -0
  449. package/dist/internal/run-client.d.ts +2 -2
  450. package/dist/internal/run-client.js +2 -2
  451. package/dist/internal/runtime-dispatch-runner.d.ts +1 -11
  452. package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
  453. package/dist/internal/runtime-dispatch-runner.js +2 -15
  454. package/dist/internal/sdk-runner.d.ts.map +1 -1
  455. package/dist/internal/sdk-runner.js +3 -6
  456. package/dist/internal/server.d.ts.map +1 -1
  457. package/dist/internal/server.js +110 -35
  458. package/dist/internal/session-cost.d.ts +3 -3
  459. package/dist/internal/session-cost.d.ts.map +1 -1
  460. package/dist/internal/session-cost.js +3 -3
  461. package/dist/internal/session-engine.d.ts +26 -11
  462. package/dist/internal/session-engine.d.ts.map +1 -1
  463. package/dist/internal/session-engine.js +146 -76
  464. package/dist/internal/session-run-log.d.ts.map +1 -1
  465. package/dist/internal/session-run-log.js +1 -3
  466. package/dist/internal/skills-sync.d.ts +1 -4
  467. package/dist/internal/skills-sync.d.ts.map +1 -1
  468. package/dist/internal/skills-sync.js +10 -50
  469. package/dist/internal/sleep.d.ts +2 -0
  470. package/dist/internal/sleep.d.ts.map +1 -0
  471. package/dist/internal/sleep.js +3 -0
  472. package/dist/internal/store-mirror.d.ts +29 -0
  473. package/dist/internal/store-mirror.d.ts.map +1 -0
  474. package/dist/internal/store-mirror.js +70 -0
  475. package/dist/internal/tenant-slack/relay.d.ts +73 -0
  476. package/dist/internal/tenant-slack/relay.d.ts.map +1 -0
  477. package/dist/internal/tenant-slack/relay.js +138 -0
  478. package/dist/internal/testing/scm-continuation-fixtures.d.ts +33 -0
  479. package/dist/internal/testing/scm-continuation-fixtures.d.ts.map +1 -0
  480. package/dist/internal/testing/scm-continuation-fixtures.js +253 -0
  481. package/dist/internal/workspace-sync.d.ts +22 -0
  482. package/dist/internal/workspace-sync.d.ts.map +1 -0
  483. package/dist/internal/workspace-sync.js +49 -0
  484. package/dist/internal/workspace.d.ts +7 -0
  485. package/dist/internal/workspace.d.ts.map +1 -1
  486. package/dist/internal/workspace.js +13 -0
  487. package/dist/otel.d.ts +23 -1
  488. package/dist/otel.d.ts.map +1 -1
  489. package/dist/otel.js +93 -2
  490. package/dist/playground/assets/index-59KvgREd.js +67 -0
  491. package/dist/playground/assets/index-MbMxXg-y.css +1 -0
  492. package/dist/playground/index.html +2 -2
  493. package/dist/result.d.ts +24 -0
  494. package/dist/result.d.ts.map +1 -0
  495. package/dist/result.js +27 -0
  496. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  497. package/dist/storage-backends/cursor-hosted.js +7 -4
  498. package/dist/storage-protocol.d.ts.map +1 -1
  499. package/dist/storage-protocol.js +1 -3
  500. package/dist/types.d.ts +90 -23
  501. package/dist/types.d.ts.map +1 -1
  502. package/docs/README.md +2 -2
  503. package/docs/concepts.md +2 -4
  504. package/docs/design/runtime-abstraction.md +2 -3
  505. package/docs/evals.md +9 -7
  506. package/docs/guides/cloud-agents.md +4 -6
  507. package/docs/guides/github.md +0 -1
  508. package/docs/guides/opentelemetry.md +41 -17
  509. package/docs/reference/agent-config.md +6 -10
  510. package/docs/reference/channels.md +18 -8
  511. package/docs/reference/cli.md +3 -4
  512. package/docs/reference/extensions.md +87 -23
  513. package/docs/reference/hooks.md +215 -46
  514. package/docs/reference/playground.md +3 -0
  515. package/docs/reference/project-layout.md +2 -1
  516. package/docs/reference/result.md +94 -0
  517. package/docs/reference/sessions.md +3 -1
  518. package/docs/reference/tools.md +1 -2
  519. package/docs/templates/pr-autofixer.md +0 -3
  520. package/package.json +29 -10
  521. package/skills/framework-map/SKILL.md +3 -1
  522. package/skills/otel/SKILL.md +8 -3
  523. package/src/ab.ts +1 -1
  524. package/src/bin/agent-serve.ts +121 -21
  525. package/src/channels/bitbucket/api.ts +623 -0
  526. package/src/channels/bitbucket/binding.ts +414 -0
  527. package/src/channels/bitbucket/bitbucket-channel.ts +182 -0
  528. package/src/channels/bitbucket/bitbucket-webhook.ts +576 -0
  529. package/src/channels/bitbucket/checks.ts +154 -0
  530. package/src/channels/bitbucket/cursor-account.ts +117 -0
  531. package/src/channels/bitbucket/defaults.ts +110 -0
  532. package/src/channels/bitbucket/events.ts +84 -0
  533. package/src/channels/bitbucket/index.ts +49 -0
  534. package/src/channels/bitbucket/replay.ts +439 -0
  535. package/src/channels/bitbucket/state.ts +59 -0
  536. package/src/channels/bitbucket/types.ts +266 -0
  537. package/src/channels/deployments/deployments-channel.ts +25 -43
  538. package/src/channels/deployments/types.ts +12 -6
  539. package/src/channels/github/binding.ts +8 -1
  540. package/src/channels/github/cursor-account.ts +17 -6
  541. package/src/channels/github/events.ts +1 -1
  542. package/src/channels/github/forward.ts +3 -2
  543. package/src/channels/github/github-channel.ts +74 -221
  544. package/src/channels/github/replay.ts +1 -1
  545. package/src/channels/github/state.ts +6 -0
  546. package/src/channels/github/types.ts +2 -5
  547. package/src/channels/gitlab/api.ts +228 -0
  548. package/src/channels/gitlab/binding.ts +233 -0
  549. package/src/channels/gitlab/checks.ts +243 -0
  550. package/src/channels/gitlab/cursor-account.ts +114 -0
  551. package/src/channels/gitlab/defaults.ts +93 -0
  552. package/src/channels/gitlab/events.ts +44 -0
  553. package/src/channels/gitlab/gitlab-channel.ts +176 -0
  554. package/src/channels/gitlab/gitlab-webhook.ts +555 -0
  555. package/src/channels/gitlab/index.ts +43 -0
  556. package/src/channels/gitlab/replay.ts +347 -0
  557. package/src/channels/gitlab/state.ts +55 -0
  558. package/src/channels/gitlab/types.ts +263 -0
  559. package/src/channels/origin/api.ts +4 -2
  560. package/src/channels/origin/origin-channel.ts +19 -94
  561. package/src/channels/origin/types.ts +23 -2
  562. package/src/channels/slack/eval-directive.ts +1 -6
  563. package/src/channels/slack/init.ts +6 -3
  564. package/src/channels/slack/setup.ts +7 -6
  565. package/src/channels/slack/types.ts +1 -1
  566. package/src/channels.ts +0 -1
  567. package/src/client.ts +1 -1
  568. package/src/connections.ts +1 -1
  569. package/src/evals.ts +1 -1
  570. package/src/extensions.ts +47 -5
  571. package/src/files.ts +21 -3
  572. package/src/index.ts +20 -28
  573. package/src/internal/ab-snapshot.ts +0 -3
  574. package/src/internal/advertise-tools.ts +1 -4
  575. package/src/internal/authored-alias-hooks.ts +4 -21
  576. package/src/internal/authored-loaders.ts +6 -23
  577. package/src/internal/channel-dispatch.ts +160 -0
  578. package/src/internal/chat-client.ts +1 -1
  579. package/src/internal/cli-ax.ts +5 -5
  580. package/src/internal/cli-bitbucket.ts +477 -0
  581. package/src/internal/cli-convert-automation.ts +7 -7
  582. package/src/internal/cli-cursor.ts +2 -5
  583. package/src/internal/cli-deploy.ts +2 -8
  584. package/src/internal/cli-github.ts +3 -3
  585. package/src/internal/cli-gitlab.ts +485 -0
  586. package/src/internal/cli-mcp.ts +2 -7
  587. package/src/internal/cli-slack.ts +2 -5
  588. package/src/internal/continuation-channel.ts +82 -1
  589. package/src/internal/continuation-identity.ts +229 -11
  590. package/src/internal/conversation-mirror.ts +4 -3
  591. package/src/internal/convert-automation/types.ts +1 -1
  592. package/src/internal/cursor/account-mcp.ts +1 -4
  593. package/src/internal/cursor/backend-client.ts +9 -10
  594. package/src/internal/cursor/bound-secret-file.ts +108 -0
  595. package/src/internal/cursor/credentials.ts +75 -10
  596. package/src/internal/cursor/hosted-bound-secrets.ts +75 -0
  597. package/src/internal/cursor/hosted-deployment-secrets.ts +42 -11
  598. package/src/internal/cursor/hosted-store-secrets.ts +1 -1
  599. package/src/internal/cursor-account-mcp-auth.ts +2 -5
  600. package/src/internal/cursor-deployment-relay.ts +11 -7
  601. package/src/internal/deploy-manifest.ts +4 -2
  602. package/src/internal/discovery/ab.ts +29 -9
  603. package/src/internal/discovery/agent.ts +94 -135
  604. package/src/internal/discovery/channels.ts +15 -13
  605. package/src/internal/discovery/connections.ts +55 -50
  606. package/src/internal/discovery/cursor-plugin.ts +1 -4
  607. package/src/internal/discovery/extension-overlay.ts +274 -0
  608. package/src/internal/discovery/extensions.ts +330 -105
  609. package/src/internal/discovery/hooks.ts +20 -2
  610. package/src/internal/discovery/info.ts +7 -0
  611. package/src/internal/discovery/modules.ts +8 -2
  612. package/src/internal/discovery/names.ts +2 -1
  613. package/src/internal/discovery/project.ts +80 -9
  614. package/src/internal/discovery/runtime.ts +1 -2
  615. package/src/internal/discovery/schedules.ts +28 -2
  616. package/src/internal/discovery/services.ts +37 -1
  617. package/src/internal/discovery/skills.ts +13 -3
  618. package/src/internal/discovery/subagent.ts +107 -0
  619. package/src/internal/discovery.ts +0 -2
  620. package/src/internal/distribution.ts +35 -83
  621. package/src/internal/docs-site.ts +1 -1
  622. package/src/internal/eval-run-store.ts +0 -7
  623. package/src/internal/eval-runner.ts +0 -1
  624. package/src/internal/framework-file-storage.ts +8 -8
  625. package/src/internal/github-fanout.ts +1 -1
  626. package/src/internal/guest-network.ts +383 -0
  627. package/src/internal/host-otel.ts +8 -4
  628. package/src/internal/hosted-admission-adapter.ts +8 -8
  629. package/src/internal/hosted-delivery-protocol.ts +26 -1
  630. package/src/internal/hosted-delivery.ts +376 -192
  631. package/src/internal/http-channel.ts +1 -4
  632. package/src/internal/init-interview.ts +1 -4
  633. package/src/internal/init-project.ts +2 -2
  634. package/src/internal/inline-stdio-define-stub.ts +1 -1
  635. package/src/internal/is-record.ts +3 -0
  636. package/src/internal/json-schema.ts +19 -10
  637. package/src/internal/local-control-plane.ts +5 -24
  638. package/src/internal/mcp-endpoint.ts +1 -4
  639. package/src/internal/otel/collector.ts +94 -159
  640. package/src/internal/otel/config.ts +10 -14
  641. package/src/internal/otel/http.ts +14 -1
  642. package/src/internal/otel/mcp.ts +3 -16
  643. package/src/internal/otel/runtime.ts +240 -25
  644. package/src/internal/package-inline-stdio.ts +3 -12
  645. package/src/internal/playground/toolchain.ts +1 -1
  646. package/src/internal/request-error-status.ts +72 -0
  647. package/src/internal/resolve-prod-target.ts +3 -8
  648. package/src/internal/result-output.ts +34 -0
  649. package/src/internal/run-client.ts +2 -2
  650. package/src/internal/runtime-dispatch-runner.ts +3 -21
  651. package/src/internal/sdk-runner.ts +3 -7
  652. package/src/internal/server.ts +153 -44
  653. package/src/internal/session-cost.ts +3 -3
  654. package/src/internal/session-engine.ts +182 -74
  655. package/src/internal/session-run-log.ts +1 -4
  656. package/src/internal/skills-sync.ts +13 -63
  657. package/src/internal/sleep.ts +3 -0
  658. package/src/internal/store-mirror.ts +86 -0
  659. package/src/internal/tenant-slack/relay.ts +179 -0
  660. package/src/internal/testing/scm-continuation-fixtures.ts +286 -0
  661. package/src/internal/workspace-sync.ts +55 -0
  662. package/src/internal/workspace.ts +14 -0
  663. package/src/otel.ts +143 -3
  664. package/src/result.ts +36 -0
  665. package/src/storage-backends/cursor-hosted.ts +7 -4
  666. package/src/storage-protocol.ts +1 -4
  667. package/src/types.ts +105 -34
  668. package/templates/triage/agent/lib/types.ts +0 -2
  669. package/dist/continuation.d.ts +0 -20
  670. package/dist/continuation.d.ts.map +0 -1
  671. package/dist/continuation.js +0 -18
  672. package/dist/docs/assets/chunks/@localSearchIndexroot.FAqdWIXo.js +0 -1
  673. package/dist/docs/assets/concepts.md.rPzW2HZN.js +0 -1
  674. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +0 -9
  675. package/dist/docs/assets/guides_cloud-runtime.md.BRirbRAN.js +0 -9
  676. package/dist/docs/assets/guides_cloud-runtime.md.BRirbRAN.lean.js +0 -1
  677. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +0 -1
  678. package/dist/docs/assets/reference_hooks.md.a8BJxMR5.js +0 -14
  679. package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +0 -1
  680. package/dist/docs/guides/cloud-runtime.html +0 -35
  681. package/dist/docs/guides/cloud-runtime.md +0 -117
  682. package/dist/internal/convert-automation/index.d.ts +0 -3
  683. package/dist/internal/convert-automation/index.d.ts.map +0 -1
  684. package/dist/internal/convert-automation/index.js +0 -1
  685. package/dist/internal/grokbot/runner.d.ts +0 -64
  686. package/dist/internal/grokbot/runner.d.ts.map +0 -1
  687. package/dist/internal/grokbot/runner.js +0 -282
  688. package/dist/internal/managed-delivery.d.ts +0 -80
  689. package/dist/internal/managed-delivery.d.ts.map +0 -1
  690. package/dist/internal/managed-delivery.js +0 -86
  691. package/dist/internal/review-comments.d.ts +0 -370
  692. package/dist/internal/review-comments.d.ts.map +0 -1
  693. package/dist/internal/review-comments.js +0 -921
  694. package/dist/internal/shallow-clone.d.ts +0 -176
  695. package/dist/internal/shallow-clone.d.ts.map +0 -1
  696. package/dist/internal/shallow-clone.js +0 -419
  697. package/dist/playground/assets/index-B6C9S9nG.css +0 -1
  698. package/dist/playground/assets/index-ZqNoT8Ie.js +0 -69
  699. package/docs/guides/cloud-runtime.md +0 -122
  700. package/src/continuation.ts +0 -49
  701. package/src/internal/convert-automation/index.ts +0 -10
  702. package/src/internal/grokbot/runner.ts +0 -370
  703. package/src/internal/managed-delivery.ts +0 -125
  704. package/src/internal/review-comments.ts +0 -1363
  705. package/src/internal/shallow-clone.ts +0 -609
  706. /package/dist/docs/assets/{evals.md.CPzDAwoH.lean.js → evals.md.CbMoebP1.lean.js} +0 -0
  707. /package/dist/docs/assets/{guides_cloud-agents.md.DumwWXba.lean.js → guides_cloud-agents.md.DS8RIjwx.lean.js} +0 -0
  708. /package/dist/docs/assets/{guides_github.md.BtPr9GaP.lean.js → guides_github.md.DKYiT9do.lean.js} +0 -0
  709. /package/dist/docs/assets/{index.md.Kiht7ell.lean.js → index.md.D75GWhPl.lean.js} +0 -0
  710. /package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.lean.js → reference_agent-config.md.CHNpiyp4.lean.js} +0 -0
  711. /package/dist/docs/assets/{reference_cli.md.DfoeyvL0.lean.js → reference_cli.md.CJNc_xYK.lean.js} +0 -0
  712. /package/dist/docs/assets/{reference_playground.md.DnX5nL-B.lean.js → reference_playground.md.4myJPxrf.lean.js} +0 -0
  713. /package/dist/docs/assets/{reference_project-layout.md.CA6QP6Lw.lean.js → reference_project-layout.md.DuBu9a96.lean.js} +0 -0
  714. /package/dist/docs/assets/{reference_tools.md.B1up2r9W.lean.js → reference_tools.md.aGrn99hP.lean.js} +0 -0
  715. /package/dist/docs/assets/{skills_framework-map.md.DDa4MeEW.lean.js → skills_framework-map.md.haibFyoB.lean.js} +0 -0
@@ -10,6 +10,7 @@ import type { Histogram, Meter, Tracer } from "@opentelemetry/api";
10
10
  import { DiagLogLevel, diag, metrics, trace } from "@opentelemetry/api";
11
11
  import type { Logger as OtelLogger } from "@opentelemetry/api-logs";
12
12
  import { logs } from "@opentelemetry/api-logs";
13
+ import { type ExportResult, ExportResultCode } from "@opentelemetry/core";
13
14
  import { OTLPLogExporter as OTLPLogExporterHttp } from "@opentelemetry/exporter-logs-otlp-http";
14
15
  import { OTLPLogExporter as OTLPLogExporterProto } from "@opentelemetry/exporter-logs-otlp-proto";
15
16
  import { OTLPMetricExporter as OTLPMetricExporterHttp } from "@opentelemetry/exporter-metrics-otlp-http";
@@ -29,6 +30,12 @@ import {
29
30
  MeterProvider,
30
31
  PeriodicExportingMetricReader,
31
32
  } from "@opentelemetry/sdk-metrics";
33
+ import type {
34
+ ReadableSpan,
35
+ SpanExporter,
36
+ SpanProcessor,
37
+ } from "@opentelemetry/sdk-trace-base";
38
+ import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
32
39
  import {
33
40
  BatchSpanProcessor,
34
41
  NodeTracerProvider,
@@ -39,28 +46,63 @@ import {
39
46
  ATTR_SERVICE_NAME,
40
47
  ATTR_SERVICE_VERSION,
41
48
  } from "@opentelemetry/semantic-conventions";
42
- import type { OtelExporterConfig, OtelSignal } from "../../otel.js";
49
+ import {
50
+ installOutboundFetchInstrumentation,
51
+ type OtelExporterConfig,
52
+ type OtelSignal,
53
+ } from "../../otel.js";
43
54
  import { exportersForSignal, type ResolvedOtelConfig } from "./config.js";
44
55
  import { ensureW3cPropagator } from "./propagation.js";
45
56
 
46
57
  const INSTRUMENTATION = "agent_sdk";
47
58
 
59
+ /**
60
+ * Hosted v2 pods may be frozen or destroyed as soon as the HTTP reply
61
+ * lands. Bound the exporter wait so a slow collector cannot hold the
62
+ * delivery (OTLP BatchSpanProcessor defaults to 30s).
63
+ */
64
+ export const OTEL_FORCE_FLUSH_TIMEOUT_MS = 1_000;
65
+
66
+ /**
67
+ * First hosted OTLP POST may include a cold TLS handshake to Datadog.
68
+ * Bound separately from {@link OTEL_FORCE_FLUSH_TIMEOUT_MS} so the
69
+ * queued turn/tool batch is not abandoned after 1s.
70
+ */
71
+ export const OTEL_DEFERRED_EXPORT_TIMEOUT_MS = 5_000;
72
+
73
+ /** Drop oldest finished spans when no collector has drained the buffer. */
74
+ export const OTEL_IN_MEMORY_SPAN_LIMIT = 2_048;
75
+
48
76
  export interface OtelRuntime {
49
77
  config: ResolvedOtelConfig;
50
78
  tracer: Tracer;
51
79
  meter: Meter | undefined;
52
80
  logger: OtelLogger | undefined;
53
81
  httpDuration: Histogram | undefined;
82
+ forceFlush: () => Promise<void>;
54
83
  shutdown: () => Promise<void>;
55
84
  }
56
85
 
86
+ export interface CreateOtelRuntimeOptions {
87
+ /**
88
+ * Re-resolve exporters at flush (hosted v2 binds deployment secrets
89
+ * after bake). When bake had no OTLP exporters, finished spans sit
90
+ * in memory until this returns destinations.
91
+ */
92
+ resolveExport?: () => ResolvedOtelConfig;
93
+ }
94
+
57
95
  export function createOtelRuntime(
58
96
  config: ResolvedOtelConfig,
59
- log: (line: string) => void
97
+ log: (line: string) => void,
98
+ options?: CreateOtelRuntimeOptions
60
99
  ): OtelRuntime | undefined {
61
100
  if (!config.enabled) {
62
101
  return undefined;
63
102
  }
103
+ if (config.traces !== false) {
104
+ installOutboundFetchInstrumentation();
105
+ }
64
106
  const proto = process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim().toLowerCase();
65
107
  if (proto === "grpc") {
66
108
  log(
@@ -68,7 +110,7 @@ export function createOtelRuntime(
68
110
  );
69
111
  }
70
112
  ensureW3cPropagator();
71
- const sdk = startOtelSdk(config, log);
113
+ const sdk = startOtelSdk(config, log, options?.resolveExport);
72
114
  const meter =
73
115
  config.metrics === false
74
116
  ? undefined
@@ -85,20 +127,50 @@ export function createOtelRuntime(
85
127
  description: "HTTP request duration",
86
128
  unit: "ms",
87
129
  }),
130
+ forceFlush: sdk.forceFlush,
88
131
  shutdown: sdk.shutdown,
89
132
  };
90
133
  }
91
134
 
135
+ export async function forceFlushOtelRuntime(
136
+ runtime: OtelRuntime | undefined
137
+ ): Promise<void> {
138
+ await runtime?.forceFlush();
139
+ }
140
+
92
141
  export async function shutdownOtelRuntime(
93
142
  runtime: OtelRuntime | undefined
94
143
  ): Promise<void> {
95
144
  await runtime?.shutdown();
96
145
  }
97
146
 
147
+ export async function raceOtelForceFlush(
148
+ work: Promise<unknown>,
149
+ log: (line: string) => void,
150
+ timeoutMs: number = OTEL_FORCE_FLUSH_TIMEOUT_MS
151
+ ): Promise<void> {
152
+ let timer: ReturnType<typeof setTimeout> | undefined;
153
+ const timeout = new Promise<"timeout">((resolve) => {
154
+ timer = setTimeout(() => resolve("timeout"), timeoutMs);
155
+ });
156
+ const result = await Promise.race([
157
+ work.then(() => "done" as const).catch(() => "done" as const),
158
+ timeout,
159
+ ]);
160
+ if (timer !== undefined) {
161
+ clearTimeout(timer);
162
+ }
163
+ if (result === "timeout") {
164
+ log(`[agent-sdk:otel] forceFlush exceeded ${timeoutMs}ms; continuing`);
165
+ }
166
+ }
167
+
98
168
  function startOtelSdk(
99
169
  config: ResolvedOtelConfig,
100
- logger: (line: string) => void
170
+ logger: (line: string) => void,
171
+ resolveExport?: () => ResolvedOtelConfig
101
172
  ): {
173
+ forceFlush: () => Promise<void>;
102
174
  shutdown: () => Promise<void>;
103
175
  } {
104
176
  diag.setLogger(
@@ -116,30 +188,39 @@ function startOtelSdk(
116
188
  let tracerProvider: NodeTracerProvider | undefined;
117
189
  let meterProvider: MeterProvider | undefined;
118
190
  let loggerProvider: LoggerProvider | undefined;
191
+ let memoryExporter: BoundedMemorySpanExporter | undefined;
119
192
 
120
193
  const traceOpts = config.traces;
121
194
  if (traceOpts !== false) {
122
195
  const exporters = exportersForSignal(config.exporters, "traces");
123
- if (exporters.length > 0) {
124
- if (hasRealTracerProvider()) {
125
- logger(
126
- "[agent-sdk:otel] TracerProvider already registered; reusing global (Agent SDK OTLP exporters not attached)"
127
- );
196
+ if (hasRealTracerProvider()) {
197
+ logger(
198
+ "[agent-sdk:otel] TracerProvider already registered; reusing global (Agent SDK OTLP exporters not attached)"
199
+ );
200
+ } else {
201
+ const spanProcessors: SpanProcessor[] = [];
202
+ if (exporters.length > 0) {
203
+ for (const exporter of exporters) {
204
+ spanProcessors.push(
205
+ new BatchSpanProcessor(
206
+ createTraceExporter(exporter, signalUrl(exporter.url, "traces"))
207
+ )
208
+ );
209
+ }
128
210
  } else {
129
- tracerProvider = new NodeTracerProvider({
130
- resource,
131
- spanProcessors: exporters.map(
132
- (exporter) =>
133
- new BatchSpanProcessor(
134
- createTraceExporter(exporter, signalUrl(exporter.url, "traces"))
135
- )
136
- ),
137
- sampler: new ParentBasedSampler({
138
- root: new TraceIdRatioBasedSampler(traceOpts.sampleRatio ?? 1),
139
- }),
140
- });
141
- tracerProvider.register();
211
+ memoryExporter = new BoundedMemorySpanExporter(
212
+ OTEL_IN_MEMORY_SPAN_LIMIT
213
+ );
214
+ spanProcessors.push(new SimpleSpanProcessor(memoryExporter));
142
215
  }
216
+ tracerProvider = new NodeTracerProvider({
217
+ resource,
218
+ spanProcessors,
219
+ sampler: new ParentBasedSampler({
220
+ root: new TraceIdRatioBasedSampler(traceOpts.sampleRatio ?? 1),
221
+ }),
222
+ });
223
+ tracerProvider.register();
143
224
  }
144
225
  }
145
226
 
@@ -196,12 +277,63 @@ function startOtelSdk(
196
277
  }
197
278
  }
198
279
 
199
- logger(
200
- `[agent-sdk] otel enabled service=${config.serviceName} exporters=${config.exporters.length} traces=${config.traces !== false} metrics=${config.metrics !== false} logs=${config.logs !== false}`
201
- );
280
+ if (memoryExporter === undefined) {
281
+ logger(
282
+ `[agent-sdk] otel enabled service=${config.serviceName} exporters=${config.exporters.length} traces=${config.traces !== false} metrics=${config.metrics !== false} logs=${config.logs !== false}`
283
+ );
284
+ } else {
285
+ logger(
286
+ `[agent-sdk] otel recording service=${config.serviceName} (export on flush when OTLP exporters resolve)`
287
+ );
288
+ }
289
+
290
+ const flushDeferred = async (): Promise<void> => {
291
+ if (memoryExporter === undefined) {
292
+ return;
293
+ }
294
+ const spans = memoryExporter.getFinishedSpans();
295
+ if (spans.length === 0) {
296
+ return;
297
+ }
298
+ const exportConfig = resolveExport?.() ?? config;
299
+ const destinations = exportersForSignal(exportConfig.exporters, "traces");
300
+ if (destinations.length === 0) {
301
+ return;
302
+ }
303
+ // Spans already carry the bake-time Resource. Hosted v2 binds
304
+ // deployment secrets after bake, so env / service extras on
305
+ // exportConfig must replace that Resource on the wire.
306
+ const ok = await exportQueuedSpans(
307
+ spans,
308
+ destinations,
309
+ logger,
310
+ buildResource(exportConfig)
311
+ );
312
+ if (ok) {
313
+ memoryExporter.reset();
314
+ }
315
+ };
202
316
 
203
317
  return {
318
+ forceFlush: async () => {
319
+ await Promise.allSettled([
320
+ raceOtelForceFlush(
321
+ Promise.allSettled([
322
+ tracerProvider?.forceFlush(),
323
+ meterProvider?.forceFlush(),
324
+ loggerProvider?.forceFlush(),
325
+ ]),
326
+ logger
327
+ ),
328
+ raceOtelForceFlush(
329
+ flushDeferred(),
330
+ logger,
331
+ OTEL_DEFERRED_EXPORT_TIMEOUT_MS
332
+ ),
333
+ ]);
334
+ },
204
335
  shutdown: async () => {
336
+ await flushDeferred();
205
337
  await Promise.allSettled([
206
338
  tracerProvider?.shutdown(),
207
339
  meterProvider?.shutdown(),
@@ -211,6 +343,54 @@ function startOtelSdk(
211
343
  };
212
344
  }
213
345
 
346
+ function withExportResource(
347
+ span: ReadableSpan,
348
+ resource: Resource
349
+ ): ReadableSpan {
350
+ return new Proxy(span, {
351
+ get(target, prop, receiver) {
352
+ if (prop === "resource") {
353
+ return resource;
354
+ }
355
+ return Reflect.get(target, prop, receiver);
356
+ },
357
+ });
358
+ }
359
+
360
+ async function exportQueuedSpans(
361
+ spans: ReadableSpan[],
362
+ destinations: readonly OtelExporterConfig[],
363
+ logger: (line: string) => void,
364
+ resource: Resource
365
+ ): Promise<boolean> {
366
+ const payload = spans.map((span) => withExportResource(span, resource));
367
+ const exporters: SpanExporter[] = destinations.map((destination) =>
368
+ createTraceExporter(destination, signalUrl(destination.url, "traces"))
369
+ );
370
+ try {
371
+ const results = await Promise.all(
372
+ exporters.map(
373
+ (exporter) =>
374
+ new Promise<boolean>((resolve) => {
375
+ exporter.export(payload, (result: ExportResult) => {
376
+ resolve(result.code === ExportResultCode.SUCCESS);
377
+ });
378
+ })
379
+ )
380
+ );
381
+ return results.every((ok) => ok);
382
+ } catch (error) {
383
+ logger(
384
+ `[agent-sdk:otel] deferred export failed: ${
385
+ error instanceof Error ? error.message : String(error)
386
+ }`
387
+ );
388
+ return false;
389
+ } finally {
390
+ await Promise.allSettled(exporters.map((exporter) => exporter.shutdown()));
391
+ }
392
+ }
393
+
214
394
  function buildResource(config: ResolvedOtelConfig): Resource {
215
395
  // Align with Cursor enterprise wire resource attrs where they overlap so
216
396
  // Agent SDK traces join org metrics/logs in the same collector.
@@ -271,3 +451,38 @@ function createLogExporter(exporter: OtelExporterConfig, url: string) {
271
451
  ? new OTLPLogExporterProto(opts)
272
452
  : new OTLPLogExporterHttp(opts);
273
453
  }
454
+
455
+ /** In-memory finished-span queue with a hard cap (oldest dropped). */
456
+ class BoundedMemorySpanExporter implements SpanExporter {
457
+ private spans: ReadableSpan[] = [];
458
+
459
+ constructor(private readonly limit: number) {}
460
+
461
+ export(
462
+ spans: ReadableSpan[],
463
+ resultCallback: (result: ExportResult) => void
464
+ ): void {
465
+ this.spans.push(...spans);
466
+ if (this.spans.length > this.limit) {
467
+ this.spans.splice(0, this.spans.length - this.limit);
468
+ }
469
+ resultCallback({ code: ExportResultCode.SUCCESS });
470
+ }
471
+
472
+ getFinishedSpans(): ReadableSpan[] {
473
+ return this.spans.slice();
474
+ }
475
+
476
+ reset(): void {
477
+ this.spans = [];
478
+ }
479
+
480
+ shutdown(): Promise<void> {
481
+ this.reset();
482
+ return Promise.resolve();
483
+ }
484
+
485
+ forceFlush(): Promise<void> {
486
+ return Promise.resolve();
487
+ }
488
+ }
@@ -18,12 +18,6 @@ import { toolInputJsonSchema, toolOutputJsonSchema } from "./json-schema.js";
18
18
 
19
19
  const require = createRequire(import.meta.url);
20
20
 
21
- const CONNECTION_SPECIFIERS = new Set([
22
- "@anysphere/agent-serve/connections",
23
- "@cursor/july/connections",
24
- "@cursor/agentkit/connections",
25
- ]);
26
-
27
21
  function sibling(basename: string): string {
28
22
  const dir = fileURLToPath(new URL(".", import.meta.url));
29
23
  const ts = join(dir, `${basename}.ts`);
@@ -94,12 +88,9 @@ serveInlineStdioMcp(
94
88
  {
95
89
  name: "inline-stdio-connection-stub",
96
90
  setup(build) {
97
- build.onResolve({ filter: /.*/ }, (args) => {
98
- if (CONNECTION_SPECIFIERS.has(args.path)) {
99
- return { path: stubPath };
100
- }
101
- return undefined;
102
- });
91
+ build.onResolve({ filter: /^@cursor\/july\/connections$/ }, () => ({
92
+ path: stubPath,
93
+ }));
103
94
  },
104
95
  },
105
96
  ],
@@ -16,7 +16,7 @@ import { playgroundBundleExists } from "./static.js";
16
16
 
17
17
  const VITE_CONFIG = "playground/vite.config.ts";
18
18
 
19
- /** `@anysphere/agent-serve` package root (works from `src/` or `dist/`). */
19
+ /** Package root (works from `src/` or `dist/`). */
20
20
  export function packageRoot(): string {
21
21
  // src|dist/internal/playground/toolchain.ts → packages/agent-serve/
22
22
  return fileURLToPath(new URL("../../..", import.meta.url));
@@ -0,0 +1,72 @@
1
+ import { InvalidAsOfError, VacuousTimeArgsError } from "./as-of.js";
2
+ import { V2EngineError } from "./continuation-identity.js";
3
+ import {
4
+ GUEST_CONNECT_STALLED,
5
+ GUEST_NETWORK_UNAVAILABLE,
6
+ GuestNetworkUnavailableError,
7
+ hasGuestNetworkErrno,
8
+ isQuietGuestConnectStall,
9
+ } from "./guest-network.js";
10
+ import { SessionAuthError, SessionBusyError } from "./session-engine.js";
11
+
12
+ export interface MappedRequestError {
13
+ status: 400 | 403 | 409 | 503;
14
+ code: string;
15
+ message: string;
16
+ }
17
+
18
+ /**
19
+ * Expected throw → HTTP mapping used by `handleRequest` and hosted flush.
20
+ * Undefined means a real 500 (caller logs and redacts).
21
+ */
22
+ export function mapThrownRequestError(
23
+ error: unknown
24
+ ): MappedRequestError | undefined {
25
+ if (error instanceof SessionBusyError) {
26
+ return { status: 409, code: "session_busy", message: error.message };
27
+ }
28
+ if (error instanceof V2EngineError) {
29
+ return {
30
+ status: 409,
31
+ code: "v2_identity_conflict",
32
+ message: "Control-plane session identity conflicts with existing state.",
33
+ };
34
+ }
35
+ if (error instanceof SessionAuthError) {
36
+ return { status: 403, code: "forbidden", message: error.message };
37
+ }
38
+ if (
39
+ error instanceof InvalidAsOfError ||
40
+ error instanceof VacuousTimeArgsError
41
+ ) {
42
+ return { status: 400, code: "invalid_request", message: error.message };
43
+ }
44
+ if (
45
+ error instanceof GuestNetworkUnavailableError ||
46
+ hasGuestNetworkErrno(error)
47
+ ) {
48
+ return {
49
+ status: 503,
50
+ code: GUEST_NETWORK_UNAVAILABLE,
51
+ message:
52
+ error instanceof Error
53
+ ? error.message
54
+ : "Guest network is not ready for outbound requests.",
55
+ };
56
+ }
57
+ if (isQuietGuestConnectStall(error)) {
58
+ return {
59
+ status: 503,
60
+ code: GUEST_CONNECT_STALLED,
61
+ message:
62
+ error instanceof Error
63
+ ? error.message
64
+ : "Guest Connect stalled without a network errno.",
65
+ };
66
+ }
67
+ return undefined;
68
+ }
69
+
70
+ export function statusForThrownRequestError(error: unknown): number {
71
+ return mapThrownRequestError(error)?.status ?? 500;
72
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Resolve a hosted (managed) agent-serve deployment into a base URL +
2
+ * Resolve a hosted (managed) agent-sdk deployment into a base URL +
3
3
  * request headers for chat/run/call/eval `--prod`.
4
4
  *
5
5
  * Uses short-lived `engineAccess` from the deployment status route
@@ -16,6 +16,7 @@ import {
16
16
  validateDeploymentSlug,
17
17
  } from "./deploy-client.js";
18
18
  import { CLI_COMMAND_NAME as CLI } from "./distribution.js";
19
+ import { sleep as defaultSleep } from "./sleep.js";
19
20
  import { stderrPalette } from "./terminal-style.js";
20
21
 
21
22
  /**
@@ -98,7 +99,7 @@ export async function resolveProdTarget(
98
99
  // A hibernated engine can briefly omit engineAccess while getPod fails
99
100
  // during wake. Retry a few times before surfacing "not reachable yet".
100
101
  const maxReachabilityAttempts = 5;
101
- const sleep = options.sleep ?? sleepMs;
102
+ const sleep = options.sleep ?? defaultSleep;
102
103
  let detail: DeploymentDetail | undefined;
103
104
  for (let attempt = 0; attempt < maxReachabilityAttempts; attempt++) {
104
105
  try {
@@ -250,12 +251,6 @@ function sanitizeCustomerFacingDetail(message: string): string {
250
251
  .replace(/\bcursorvm\.com\b/gi, "host");
251
252
  }
252
253
 
253
- function sleepMs(ms: number): Promise<void> {
254
- return new Promise((resolve) => {
255
- setTimeout(resolve, ms);
256
- });
257
- }
258
-
259
254
  /** Resolve the deployment slug the same way `deploy` does for a single dir. */
260
255
  export function resolveProdSlug(options: {
261
256
  dir: string;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Run the authored `defineResult` commit on the final assistant text.
3
+ */
4
+
5
+ import type { ResultContext, ResultDefinition } from "../types.js";
6
+
7
+ export type ResultParse =
8
+ | { ok: true; text: string }
9
+ | { ok: false; message: string };
10
+
11
+ export async function applyAuthoredResult(args: {
12
+ definition: ResultDefinition;
13
+ text: string | undefined;
14
+ dryRun: boolean;
15
+ ctx: Omit<ResultContext, "text">;
16
+ }): Promise<ResultParse> {
17
+ if (args.text === undefined || args.text.trim() === "") {
18
+ return { ok: false, message: "turn produced no assistant text" };
19
+ }
20
+ const text = args.text;
21
+ if (args.dryRun) {
22
+ return { ok: true, text };
23
+ }
24
+ try {
25
+ await args.definition.commit({ ...args.ctx, text });
26
+ } catch (error) {
27
+ return {
28
+ ok: false,
29
+ message:
30
+ error instanceof Error ? error.message : `on commit: ${String(error)}`,
31
+ };
32
+ }
33
+ return { ok: true, text };
34
+ }
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Programmatic HTTP client for agent-serve sessions.
2
+ * Programmatic HTTP client for agent-sdk sessions.
3
3
  *
4
- * Used by `agent-serve run` and `chat --json`: create/follow a
4
+ * Used by `agent-sdk run` and `chat --json`: create/follow a
5
5
  * session, collect the NDJSON stream until the turn parks, and return a
6
6
  * compact {@link Trajectory} plus the continuation token for follow-ups.
7
7
  */
@@ -3,12 +3,9 @@
3
3
  * turns stay on the Cursor SDK runner, grokbot turns go to the Grok Bot
4
4
  * remote client (`internal/grokbot/runner.ts`), which drives the hosted
5
5
  * Grok Bot (Sand) harness through the public `/v0/grokbot` session API.
6
- * Both runners ship in the published package.
7
6
  */
8
7
 
9
8
  import type { RunnerTurnRequest, TurnOutcome } from "../types.js";
10
- import type { GrokBotRunnerOptions } from "./grokbot/runner.js";
11
- import { GrokBotRunner } from "./grokbot/runner.js";
12
9
  import type {
13
10
  AgentRunner,
14
11
  PrewarmOutcome,
@@ -18,30 +15,15 @@ import type {
18
15
 
19
16
  export interface RuntimeDispatchingRunnerOptions {
20
17
  sdkRunner: AgentRunner;
21
- grokbot?: GrokBotRunnerOptions;
22
- /** Test seam — replaces the real Grok Bot remote client. */
23
- createGrokBotRunner?: (options: GrokBotRunnerOptions) => AgentRunner;
18
+ grokbot: AgentRunner;
24
19
  }
25
20
 
26
21
  export class RuntimeDispatchingRunner implements AgentRunner {
27
- private grokbotRunner: AgentRunner | undefined;
28
-
29
22
  constructor(private readonly options: RuntimeDispatchingRunnerOptions) {}
30
23
 
31
- /**
32
- * The Grok Bot remote client, created on first use; a missing API key
33
- * surfaces on the first grokbot turn, not at serve start.
34
- */
35
- ensureGrokBotRunner(): AgentRunner {
36
- const options = this.options.grokbot ?? {};
37
- this.grokbotRunner ??=
38
- this.options.createGrokBotRunner?.(options) ?? new GrokBotRunner(options);
39
- return this.grokbotRunner;
40
- }
41
-
42
24
  async runTurn(request: RunnerTurnRequest): Promise<TurnOutcome> {
43
25
  if (request.runtime === "grokbot") {
44
- return this.ensureGrokBotRunner().runTurn(request);
26
+ return this.options.grokbot.runTurn(request);
45
27
  }
46
28
  return this.options.sdkRunner.runTurn(request);
47
29
  }
@@ -68,6 +50,6 @@ export class RuntimeDispatchingRunner implements AgentRunner {
68
50
 
69
51
  async dispose(): Promise<void> {
70
52
  await this.options.sdkRunner.dispose?.();
71
- await this.grokbotRunner?.dispose?.();
53
+ await this.options.grokbot.dispose?.();
72
54
  }
73
55
  }
@@ -33,6 +33,8 @@ import { mapSdkTokenUsage, usageTokenSum } from "./cloud-turn-cost.js";
33
33
  import type { ConversationMirror } from "./conversation-mirror.js";
34
34
  import { resolveApiKeySync } from "./cursor/credentials.js";
35
35
  import { describeError } from "./describe-error.js";
36
+ import { CLI_COMMAND_NAME as CLI } from "./distribution.js";
37
+ import { sleep } from "./sleep.js";
36
38
 
37
39
  /** Mirrors @cursor/sdk's SteerAckOutcome; the published dist may predate it. */
38
40
  export type SteerAckOutcome = "complete_delivered" | "revert_to_followup";
@@ -496,7 +498,7 @@ export class CursorSdkRunner implements AgentRunner {
496
498
  const resolved = resolveApiKeySync({ apiKey: this.options.apiKey });
497
499
  if (resolved === undefined) {
498
500
  throw new Error(
499
- "The Cursor SDK runner requires a Cursor credential: run `agent-serve login`, set CURSOR_API_KEY or CURSOR_API_KEY_FILE, or pass serve({ apiKey })."
501
+ `The Cursor SDK runner requires a Cursor credential: run \`${CLI} login\`, set CURSOR_API_KEY or CURSOR_API_KEY_FILE, or pass serve({ apiKey }).`
500
502
  );
501
503
  }
502
504
  return resolved.apiKey;
@@ -815,12 +817,6 @@ async function fillMissingCloudUsage(
815
817
  return outcome;
816
818
  }
817
819
 
818
- function sleep(ms: number): Promise<void> {
819
- return new Promise((resolve) => {
820
- setTimeout(resolve, ms);
821
- });
822
- }
823
-
824
820
  export function runErrorMessage(result: Pick<RunResult, "error">): string {
825
821
  return result.error?.message?.trim() || "The Cursor agent run failed";
826
822
  }