@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
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Synthesize GitLab webhook payloads from data you can *read* about a merge
3
+ * request, so `agent-sdk gitlab replay` can exercise a `gitlabChannel()`
4
+ * without Maintainer access to the project hook and without a tunnel.
5
+ *
6
+ * Payloads are shaped to satisfy the channel's parsers (`gitlab-webhook.ts`);
7
+ * `undefined` fields are dropped by `JSON.stringify` before delivery.
8
+ */
9
+
10
+ /** A parsed merge request reference. */
11
+ export interface GitLabMrRef {
12
+ /** `https://gitlab.com` or the self-managed origin. */
13
+ origin: string;
14
+ /** `group/sub/project` as written (GitLab paths keep their case). */
15
+ projectPath: string;
16
+ iid: number;
17
+ /** `<origin>/<projectPath>/-/merge_requests/<iid>`. */
18
+ url: string;
19
+ /** `group/project!N`. */
20
+ label: string;
21
+ }
22
+
23
+ /**
24
+ * Parse an MR URL (`https://<host>/<group>/<project>/-/merge_requests/N`) or
25
+ * `group/project!N` (defaults to gitlab.com). Returns undefined otherwise.
26
+ */
27
+ export function parseGitLabMrRef(raw: string): GitLabMrRef | undefined {
28
+ const text = raw.trim();
29
+ const url = text.match(
30
+ /^(https?:\/\/[^/]+)\/(.+?)\/-\/merge_requests\/(\d+)(?:[/?#].*)?$/i
31
+ );
32
+ if (url !== null) {
33
+ return build({
34
+ origin: url[1] as string,
35
+ projectPath: url[2] as string,
36
+ iid: Number(url[3]),
37
+ });
38
+ }
39
+ const bang = text.match(/^([\w.-]+(?:\/[\w.-]+)+)!(\d+)$/);
40
+ if (bang !== null) {
41
+ return build({
42
+ origin: "https://gitlab.com",
43
+ projectPath: bang[1] as string,
44
+ iid: Number(bang[2]),
45
+ });
46
+ }
47
+ return undefined;
48
+ }
49
+
50
+ function build(input: {
51
+ origin: string;
52
+ projectPath: string;
53
+ iid: number;
54
+ }): GitLabMrRef {
55
+ const { origin, projectPath, iid } = input;
56
+ const path = projectPath.replace(/^\/+|\/+$/g, "");
57
+ return {
58
+ origin,
59
+ projectPath: path,
60
+ iid,
61
+ url: `${origin}/${path}/-/merge_requests/${iid}`,
62
+ label: `${path}!${iid}`,
63
+ };
64
+ }
65
+
66
+ // Minimal shapes read from the REST API (extra fields pass through).
67
+ export interface ReplayGitLabProject {
68
+ id: number;
69
+ name?: string;
70
+ path_with_namespace: string;
71
+ web_url: string;
72
+ default_branch?: string;
73
+ namespace?: { full_path?: string };
74
+ }
75
+
76
+ export interface ReplayGitLabUser {
77
+ id: number;
78
+ username: string;
79
+ name?: string;
80
+ avatar_url?: string | null;
81
+ }
82
+
83
+ export interface ReplayGitLabMergeRequest {
84
+ id: number;
85
+ iid: number;
86
+ title: string;
87
+ description?: string | null;
88
+ state: string;
89
+ draft?: boolean;
90
+ work_in_progress?: boolean;
91
+ web_url: string;
92
+ source_branch: string;
93
+ target_branch: string;
94
+ sha?: string | null;
95
+ author?: ReplayGitLabUser | null;
96
+ labels?: string[];
97
+ source_project_id?: number;
98
+ target_project_id?: number;
99
+ diff_refs?: {
100
+ base_sha?: string;
101
+ head_sha?: string;
102
+ start_sha?: string;
103
+ } | null;
104
+ }
105
+
106
+ /** Latest pipeline on the MR head, when one exists. */
107
+ export interface ReplayGitLabPipeline {
108
+ id: number;
109
+ status?: string;
110
+ sha?: string;
111
+ ref?: string;
112
+ source?: string;
113
+ web_url?: string;
114
+ }
115
+
116
+ /** Webhook `object_kind`s replay knows how to synthesize. */
117
+ export const GITLAB_SYNTHESIZABLE_EVENTS = [
118
+ "merge_request",
119
+ "note",
120
+ "pipeline",
121
+ "push",
122
+ ] as const;
123
+
124
+ export type GitLabSynthesizableEvent =
125
+ (typeof GITLAB_SYNTHESIZABLE_EVENTS)[number];
126
+
127
+ export function isGitLabSynthesizableEvent(
128
+ event: string
129
+ ): event is GitLabSynthesizableEvent {
130
+ return (GITLAB_SYNTHESIZABLE_EVENTS as readonly string[]).includes(event);
131
+ }
132
+
133
+ export interface SynthesizedGitLabEvent {
134
+ eventName: GitLabSynthesizableEvent;
135
+ /** `object_attributes.action` for merge_request events. */
136
+ action?: string;
137
+ /** `X-Gitlab-Event` header value for this object kind. */
138
+ header: string;
139
+ payload: Record<string, unknown>;
140
+ }
141
+
142
+ const EVENT_HEADERS: Readonly<Record<GitLabSynthesizableEvent, string>> = {
143
+ merge_request: "Merge Request Hook",
144
+ note: "Note Hook",
145
+ pipeline: "Pipeline Hook",
146
+ push: "Push Hook",
147
+ };
148
+
149
+ const FALLBACK_USER: ReplayGitLabUser = {
150
+ id: 1,
151
+ username: "agent-sdk-replay",
152
+ name: "agent-sdk replay",
153
+ };
154
+
155
+ function projectPayload(project: ReplayGitLabProject): Record<string, unknown> {
156
+ return {
157
+ id: project.id,
158
+ name: project.name ?? project.path_with_namespace.split("/").at(-1),
159
+ web_url: project.web_url,
160
+ namespace: project.namespace?.full_path,
161
+ path_with_namespace: project.path_with_namespace,
162
+ default_branch: project.default_branch ?? "main",
163
+ };
164
+ }
165
+
166
+ function mergeRequestAttributes(input: {
167
+ mergeRequest: ReplayGitLabMergeRequest;
168
+ headSha: string;
169
+ action?: string;
170
+ extra?: Record<string, unknown>;
171
+ }): Record<string, unknown> {
172
+ const { mergeRequest, headSha, action, extra = {} } = input;
173
+ return {
174
+ id: mergeRequest.id,
175
+ iid: mergeRequest.iid,
176
+ title: mergeRequest.title,
177
+ description: mergeRequest.description ?? "",
178
+ state: mergeRequest.state,
179
+ draft: mergeRequest.draft ?? mergeRequest.work_in_progress ?? false,
180
+ work_in_progress:
181
+ mergeRequest.work_in_progress ?? mergeRequest.draft ?? false,
182
+ source_branch: mergeRequest.source_branch,
183
+ target_branch: mergeRequest.target_branch,
184
+ source_project_id: mergeRequest.source_project_id,
185
+ target_project_id: mergeRequest.target_project_id,
186
+ author_id: mergeRequest.author?.id,
187
+ url: mergeRequest.web_url,
188
+ last_commit: { id: headSha },
189
+ labels: (mergeRequest.labels ?? []).map((title) => ({ title })),
190
+ ...(action === undefined ? {} : { action }),
191
+ ...extra,
192
+ };
193
+ }
194
+
195
+ /** Build one GitLab-shaped payload for `event`. */
196
+ export function synthesizeGitLabEvent(input: {
197
+ event: string;
198
+ project: ReplayGitLabProject;
199
+ mergeRequest: ReplayGitLabMergeRequest;
200
+ /** merge_request action (default `open`). */
201
+ action?: string;
202
+ /** note body (default `@cursor please take a look`). */
203
+ comment?: string;
204
+ /** pipeline status override (default: the latest pipeline's, else `success`). */
205
+ status?: string;
206
+ pipeline?: ReplayGitLabPipeline;
207
+ }): SynthesizedGitLabEvent | { error: string } {
208
+ const { event, project, mergeRequest } = input;
209
+ if (!isGitLabSynthesizableEvent(event)) {
210
+ return { error: `cannot synthesize ${event}` };
211
+ }
212
+ const user = mergeRequest.author ?? FALLBACK_USER;
213
+ const headSha =
214
+ mergeRequest.sha ??
215
+ mergeRequest.diff_refs?.head_sha ??
216
+ "0000000000000000000000000000000000000000";
217
+ const base = {
218
+ object_kind: event,
219
+ event_type: event,
220
+ user: { id: user.id, username: user.username, name: user.name },
221
+ project: projectPayload(project),
222
+ };
223
+
224
+ switch (event) {
225
+ case "merge_request": {
226
+ const action = input.action ?? "open";
227
+ // `update` with new commits carries `oldrev`; the default dispatch keys
228
+ // on it, so a synthesized update should look like a push, not an edit.
229
+ const extra =
230
+ action === "update"
231
+ ? { oldrev: mergeRequest.diff_refs?.base_sha ?? headSha }
232
+ : {};
233
+ return {
234
+ eventName: event,
235
+ action,
236
+ header: EVENT_HEADERS[event],
237
+ payload: {
238
+ ...base,
239
+ object_attributes: mergeRequestAttributes({
240
+ mergeRequest,
241
+ headSha,
242
+ action,
243
+ extra,
244
+ }),
245
+ labels: (mergeRequest.labels ?? []).map((title) => ({ title })),
246
+ },
247
+ };
248
+ }
249
+ case "note": {
250
+ const body = input.comment ?? "@cursor please take a look";
251
+ return {
252
+ eventName: event,
253
+ header: EVENT_HEADERS[event],
254
+ payload: {
255
+ ...base,
256
+ project_id: project.id,
257
+ object_attributes: {
258
+ id: Date.now() % 1_000_000_000,
259
+ note: body,
260
+ noteable_type: "MergeRequest",
261
+ noteable_id: mergeRequest.id,
262
+ author_id: user.id,
263
+ url: `${mergeRequest.web_url}#note_replay`,
264
+ description: body,
265
+ },
266
+ merge_request: mergeRequestAttributes({ mergeRequest, headSha }),
267
+ },
268
+ };
269
+ }
270
+ case "pipeline": {
271
+ const pipeline = input.pipeline;
272
+ return {
273
+ eventName: event,
274
+ header: EVENT_HEADERS[event],
275
+ payload: {
276
+ object_kind: event,
277
+ user: base.user,
278
+ project: base.project,
279
+ object_attributes: {
280
+ id: pipeline?.id ?? 1,
281
+ ref: pipeline?.ref ?? mergeRequest.source_branch,
282
+ sha: pipeline?.sha ?? headSha,
283
+ source: pipeline?.source ?? "merge_request_event",
284
+ status: input.status ?? pipeline?.status ?? "success",
285
+ url: pipeline?.web_url,
286
+ },
287
+ merge_request: {
288
+ id: mergeRequest.id,
289
+ iid: mergeRequest.iid,
290
+ title: mergeRequest.title,
291
+ source_branch: mergeRequest.source_branch,
292
+ target_branch: mergeRequest.target_branch,
293
+ state: mergeRequest.state,
294
+ url: mergeRequest.web_url,
295
+ },
296
+ },
297
+ };
298
+ }
299
+ case "push": {
300
+ const before =
301
+ mergeRequest.diff_refs?.base_sha ??
302
+ "0000000000000000000000000000000000000000";
303
+ return {
304
+ eventName: event,
305
+ header: EVENT_HEADERS[event],
306
+ payload: {
307
+ object_kind: event,
308
+ event_name: event,
309
+ before,
310
+ after: headSha,
311
+ ref: `refs/heads/${mergeRequest.source_branch}`,
312
+ checkout_sha: headSha,
313
+ user_id: user.id,
314
+ user_username: user.username,
315
+ user_name: user.name,
316
+ project_id: project.id,
317
+ project: base.project,
318
+ commits: [],
319
+ total_commits_count: 0,
320
+ },
321
+ };
322
+ }
323
+ }
324
+ }
325
+
326
+ /** Choose events to replay: explicit list, `*` for every declared, else merge_request. */
327
+ export function selectGitLabReplayEvents(
328
+ requested: readonly string[] | undefined,
329
+ declared: readonly string[]
330
+ ): { events: GitLabSynthesizableEvent[]; unsupported: string[] } {
331
+ const wanted =
332
+ requested === undefined
333
+ ? ["merge_request"]
334
+ : requested.includes("*")
335
+ ? [...declared]
336
+ : [...requested];
337
+ const events: GitLabSynthesizableEvent[] = [];
338
+ const unsupported: string[] = [];
339
+ for (const event of new Set(wanted)) {
340
+ if (isGitLabSynthesizableEvent(event)) {
341
+ events.push(event);
342
+ } else {
343
+ unsupported.push(event);
344
+ }
345
+ }
346
+ return { events, unsupported };
347
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Durable per-session GitLab channel state.
3
+ *
4
+ * Persisted with the turn (same mechanism as `OriginChannelState`) so
5
+ * channel stream-event handlers can rebuild a project-bound handle without
6
+ * re-parsing the webhook.
7
+ */
8
+
9
+ export interface GitLabChannelState {
10
+ projectId: number | null;
11
+ /** `path_with_namespace` as delivered (nested groups keep their slashes). */
12
+ projectPath: string;
13
+ mergeRequestIid: number | null;
14
+ /** Head sha of the merge request at dispatch time, when known. */
15
+ headSha: string | null;
16
+ /** Note id that woke the turn (note events only). */
17
+ triggeringNoteId: number | null;
18
+ deliveryId: string | null;
19
+ eventType: string | null;
20
+ }
21
+
22
+ export function emptyGitLabChannelState(
23
+ overrides: Partial<GitLabChannelState> = {}
24
+ ): GitLabChannelState {
25
+ return {
26
+ projectId: null,
27
+ projectPath: "",
28
+ mergeRequestIid: null,
29
+ headSha: null,
30
+ triggeringNoteId: null,
31
+ deliveryId: null,
32
+ eventType: null,
33
+ ...overrides,
34
+ };
35
+ }
36
+
37
+ /** Build the per-turn channel state from a dispatched event's context. */
38
+ export function gitlabChannelStateForEvent(input: {
39
+ project: { id: number; pathWithNamespace: string };
40
+ mergeRequestIid?: number;
41
+ headSha?: string;
42
+ deliveryId?: string;
43
+ eventType: string;
44
+ triggeringNoteId?: number;
45
+ }): GitLabChannelState {
46
+ return emptyGitLabChannelState({
47
+ projectId: input.project.id,
48
+ projectPath: input.project.pathWithNamespace,
49
+ mergeRequestIid: input.mergeRequestIid ?? null,
50
+ headSha: input.headSha ?? null,
51
+ triggeringNoteId: input.triggeringNoteId ?? null,
52
+ deliveryId: input.deliveryId ?? null,
53
+ eventType: input.eventType,
54
+ });
55
+ }
@@ -0,0 +1,263 @@
1
+ import type { ContinuationIdentity } from "../../internal/continuation-identity.js";
2
+ import type {
3
+ AgentCloudOptions,
4
+ ArtifactsApi,
5
+ AuthContext,
6
+ AuthPolicy,
7
+ ChannelEventHandlers,
8
+ ChannelStartArgs,
9
+ HostContext,
10
+ SendMessageFn,
11
+ } from "../../types.js";
12
+ import type { GitLabTokenProvider } from "./api.js";
13
+ import type { GitLabHandle } from "./binding.js";
14
+ import type { GitLabChannelState } from "./state.js";
15
+
16
+ export interface GitLabUser {
17
+ id: number;
18
+ username: string;
19
+ name?: string;
20
+ }
21
+
22
+ export interface GitLabProjectRef {
23
+ id: number;
24
+ /** `path_with_namespace` as delivered, e.g. `acme/platform/widgets`. */
25
+ pathWithNamespace: string;
26
+ webUrl: string;
27
+ defaultBranch?: string;
28
+ }
29
+
30
+ /** `object_kind: "merge_request"` event, normalized from `object_attributes`. */
31
+ export interface GitLabMergeRequestEvent {
32
+ /** `open`, `update`, `close`, `reopen`, `approved`, `merge`, … */
33
+ action?: string;
34
+ iid: number;
35
+ id?: number;
36
+ url: string;
37
+ title?: string;
38
+ description?: string | null;
39
+ state?: string;
40
+ draft?: boolean;
41
+ sourceBranch?: string;
42
+ targetBranch?: string;
43
+ /** `object_attributes.last_commit.id`. */
44
+ headSha?: string;
45
+ /** Set on `update` only when new commits were pushed. */
46
+ oldrev?: string;
47
+ authorId?: number;
48
+ labels?: string[];
49
+ }
50
+
51
+ export type GitLabNoteableType =
52
+ | "merge_request"
53
+ | "issue"
54
+ | "commit"
55
+ | "snippet";
56
+
57
+ export interface GitLabNote {
58
+ id: number;
59
+ body: string;
60
+ /** Normalized `object_attributes.noteable_type` (`MergeRequest` → `merge_request`). */
61
+ noteableType: GitLabNoteableType | string;
62
+ noteableId?: number;
63
+ url?: string;
64
+ author?: GitLabUser;
65
+ /** `merge_request.iid` for MR notes. */
66
+ mergeRequestIid?: number;
67
+ }
68
+
69
+ export interface GitLabPush {
70
+ ref: string;
71
+ before?: string;
72
+ after?: string;
73
+ checkoutSha?: string;
74
+ commitCount?: number;
75
+ }
76
+
77
+ export interface GitLabPipeline {
78
+ id: number;
79
+ status?: string;
80
+ sha?: string;
81
+ ref?: string;
82
+ /** `push`, `merge_request_event`, `schedule`, … */
83
+ source?: string;
84
+ url?: string;
85
+ /** `merge_request.iid` when the pipeline belongs to a merge request. */
86
+ mergeRequestIid?: number;
87
+ }
88
+
89
+ export interface GitLabEventContext {
90
+ /** `X-Gitlab-Event-UUID`, when present. */
91
+ deliveryId?: string;
92
+ /** GitLab `object_kind` (`merge_request`, `note`, `push`, `pipeline`, …). */
93
+ eventType: string;
94
+ project: GitLabProjectRef;
95
+ mergeRequestIid?: number;
96
+ mergeRequestUrl?: string;
97
+ /** Raw parsed payload record, for consumers whose normalization needs more. */
98
+ payload: Record<string, unknown>;
99
+ /** `user` on the payload — the actor who triggered the delivery. */
100
+ sender?: GitLabUser;
101
+ /**
102
+ * Project-bound GitLab API (`request`, `setCommitStatus`, `createCheck`).
103
+ * Routes through the Cursor SCM proxy under `cursorAccount` +
104
+ * `--cursor-scm-proxy`; otherwise uses {@link GitLabChannelOptions.token} /
105
+ * `GITLAB_TOKEN` against the project's host.
106
+ */
107
+ gitlab: GitLabHandle;
108
+ /**
109
+ * Channel `send`. Set on every delivery path (HTTP webhook, hosted
110
+ * admission) so a hook can start a turn itself instead of returning
111
+ * `{ auth, message }` or a deferred `{ task }`.
112
+ */
113
+ send?: SendMessageFn;
114
+ host: HostContext;
115
+ artifacts: ArtifactsApi;
116
+ }
117
+
118
+ export type GitLabTurnDispatch = {
119
+ auth: AuthContext;
120
+ message?: string;
121
+ title?: string;
122
+ context?: readonly string[];
123
+ };
124
+
125
+ /** Bound per-delivery helpers passed to a {@link GitLabTaskDispatch.task}. */
126
+ export interface GitLabTaskArgs {
127
+ send: SendMessageFn;
128
+ waitUntil: (promise: Promise<unknown>) => void;
129
+ }
130
+
131
+ /** Run a host-side handler after the webhook is acknowledged with a 202. */
132
+ export type GitLabTaskDispatch = {
133
+ task: (args: GitLabTaskArgs) => void | Promise<void>;
134
+ };
135
+
136
+ export type GitLabDispatch = GitLabTurnDispatch | GitLabTaskDispatch;
137
+
138
+ export type GitLabDispatchResult =
139
+ | GitLabDispatch
140
+ | null
141
+ | Promise<GitLabDispatch | null>;
142
+
143
+ export type GitLabMergeRequestHook = (
144
+ ctx: GitLabEventContext,
145
+ mergeRequest: GitLabMergeRequestEvent
146
+ ) => GitLabDispatchResult;
147
+
148
+ export type GitLabNoteHook = (
149
+ ctx: GitLabEventContext,
150
+ note: GitLabNote
151
+ ) => GitLabDispatchResult;
152
+
153
+ export type GitLabPushHook = (
154
+ ctx: GitLabEventContext,
155
+ push: GitLabPush
156
+ ) => GitLabDispatchResult;
157
+
158
+ export type GitLabPipelineHook = (
159
+ ctx: GitLabEventContext,
160
+ pipeline: GitLabPipeline
161
+ ) => GitLabDispatchResult;
162
+
163
+ export type GitLabEventHook = (
164
+ ctx: GitLabEventContext,
165
+ event: { eventType: string; payload: unknown }
166
+ ) => GitLabDispatchResult;
167
+
168
+ export type GitLabCloudOptionsResolver = (
169
+ ctx: GitLabEventContext,
170
+ mergeRequest: GitLabMergeRequestEvent
171
+ ) => AgentCloudOptions | undefined | Promise<AgentCloudOptions | undefined>;
172
+
173
+ /** One verified GitLab delivery handed to {@link dispatchGitLabWebhook}. */
174
+ export interface GitLabWebhookDelivery {
175
+ /** `object_kind` (hosted admission passes the envelope's event type). */
176
+ eventType: string;
177
+ payload: Record<string, unknown>;
178
+ deliveryId?: string;
179
+ }
180
+
181
+ export interface GitLabChannelOptions {
182
+ /**
183
+ * Use the signed-in Cursor account for inbound GitLab events delivered by
184
+ * the Cursor backend. `true` takes project scope from the deployment;
185
+ * `{ projects }` (`group/project` paths) makes the channel self-contained.
186
+ */
187
+ cursorAccount?: boolean | { projects: readonly string[] };
188
+ /**
189
+ * Access token (or provider) for direct `ctx.gitlab` calls when not in
190
+ * proxy mode. Falls back to `GITLAB_TOKEN`.
191
+ */
192
+ token?: string | GitLabTokenProvider;
193
+ /**
194
+ * REST base for direct `ctx.gitlab` calls. Defaults to
195
+ * `GITLAB_API_BASE_URL`, else `https://gitlab.com/api/v4`. Self-managed
196
+ * hosts must set one of these; the payload's `project.web_url` is never
197
+ * used to pick where the token is sent.
198
+ */
199
+ apiBaseUrl?: string;
200
+ /**
201
+ * Project hook secret compared against `X-Gitlab-Token` on direct HTTP
202
+ * deliveries. Falls back to `GITLAB_WEBHOOK_SECRET`. With a secret set the
203
+ * token compare is the request auth; without one production stays
204
+ * loopback-strict and `serve --dev` admits unsigned loopback deliveries.
205
+ */
206
+ webhookSecret?: string | (() => string | undefined);
207
+ /**
208
+ * Optional project allowlist (`group/project`, case-insensitive). Events
209
+ * from other projects are acked without starting a turn.
210
+ */
211
+ projects?: readonly string[];
212
+ /** Route auth chain; defaults follow {@link webhookSecret}. */
213
+ auth?: AuthPolicy[];
214
+ /** Route path under `/v1/channels/<name>`. Defaults to `/`. */
215
+ path?: string;
216
+ /**
217
+ * Pin the GitLab `object_kind`s this channel dispatches on (published as
218
+ * `meta.gitlabWebhookEvents`). Defaults to the set derived from hooks.
219
+ */
220
+ webhookEvents?: readonly string[];
221
+ /**
222
+ * Continuation selector. Omitted inherits {@link AgentConfig.architecture}:
223
+ * engine-minted per-MR continuation unless the agent set
224
+ * `architecture: "v2"` (then `gitlab.mr/v2`, or `gitlab.none/v2` when a
225
+ * non-MR event is declared). Override with `"gitlab.none/v2"` for one-shot
226
+ * events.
227
+ */
228
+ continuation?: ContinuationIdentity;
229
+ /**
230
+ * Decide whether an inbound merge-request event starts a turn. Return
231
+ * `{ auth: defaultGitLabAuth(ctx) }` to dispatch, `null` to ignore. Without
232
+ * this hook the channel dispatches on `open`, `reopen`, and `update` with
233
+ * new commits (`oldrev` present).
234
+ */
235
+ onMergeRequest?: GitLabMergeRequestHook;
236
+ /**
237
+ * Opt-in `note` handler. Merge-request notes only by default; widen with
238
+ * {@link noteables}.
239
+ */
240
+ onNote?: GitLabNoteHook;
241
+ /** Which noteables {@link onNote} receives. Defaults to `["merge_request"]`. */
242
+ noteables?: readonly GitLabNoteableType[];
243
+ /** Opt-in `push` handler. No default dispatch. */
244
+ onPush?: GitLabPushHook;
245
+ /** Opt-in `pipeline` handler. No default dispatch. */
246
+ onPipeline?: GitLabPipelineHook;
247
+ /**
248
+ * Catch-all for `object_kind`s without a typed hook (`tag_push`, `issue`,
249
+ * `wiki_page`, …). NOT a fallback: events with a typed hook never reach it.
250
+ */
251
+ onEvent?: GitLabEventHook;
252
+ /**
253
+ * Per-session cloud options. Pass `true` to attach the project using the
254
+ * merge request's web URL, or a resolver for custom cloud options.
255
+ */
256
+ cloud?: boolean | AgentCloudOptions | GitLabCloudOptionsResolver;
257
+ /** Channel stream-event handlers. */
258
+ events?: ChannelEventHandlers<GitLabChannelState>;
259
+ /** Called once when the server mounts this channel. */
260
+ onStart?: (args: ChannelStartArgs) => void | Promise<void>;
261
+ /** Called when the server shuts down. */
262
+ onStop?: () => void | Promise<void>;
263
+ }
@@ -248,8 +248,10 @@ export type CursorSessionTokenProvider = OriginTokenProvider & {
248
248
  * by the deployment's team (`agent-serve` allowlist). Local runs work the
249
249
  * same way with a personal key: Origin authorizes the user principal.
250
250
  *
251
- * The API key is re-read on every mint so Bind can drop
252
- * `CURSOR_API_KEY_FILE` onto a listening process; sessions are cached until
251
+ * The API key is resolved on every mint so a task-time bind reaches a
252
+ * listening process without a restart hosted deliveries consume the bind
253
+ * file into `CURSOR_API_KEY` before authored work, so this resolve reads env.
254
+ * Sessions are cached until
253
255
  * shortly before their JWT expiry. The cache is **process-wide**, keyed by
254
256
  * (endpoint, API key): hosted channels build a fresh `createOriginClient()`
255
257
  * per event, so a per-provider cache would re-exchange on every read/write