@cursor/july 0.1.101 → 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 (862) hide show
  1. package/AGENTS.md +34 -32
  2. package/README.md +28 -3
  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/api.d.ts +1 -1
  113. package/dist/channels/slack/api.d.ts.map +1 -1
  114. package/dist/channels/slack/api.js +3 -1
  115. package/dist/channels/slack/assistant.d.ts +1 -1
  116. package/dist/channels/slack/assistant.d.ts.map +1 -1
  117. package/dist/channels/slack/dispatch.d.ts +3 -2
  118. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  119. package/dist/channels/slack/dispatch.js +28 -8
  120. package/dist/channels/slack/eval-directive.d.ts.map +1 -1
  121. package/dist/channels/slack/eval-directive.js +1 -7
  122. package/dist/channels/slack/inbound.d.ts +8 -0
  123. package/dist/channels/slack/inbound.d.ts.map +1 -1
  124. package/dist/channels/slack/inbound.js +28 -0
  125. package/dist/channels/slack/init.d.ts.map +1 -1
  126. package/dist/channels/slack/init.js +3 -3
  127. package/dist/channels/slack/manifest.d.ts.map +1 -1
  128. package/dist/channels/slack/manifest.js +2 -1
  129. package/dist/channels/slack/setup.d.ts +1 -1
  130. package/dist/channels/slack/setup.d.ts.map +1 -1
  131. package/dist/channels/slack/setup.js +6 -13
  132. package/dist/channels/slack/types.d.ts +1 -1
  133. package/dist/channels/slack/types.d.ts.map +1 -1
  134. package/dist/channels.d.ts +1 -1
  135. package/dist/channels.d.ts.map +1 -1
  136. package/dist/client.d.ts +1 -1
  137. package/dist/client.js +1 -1
  138. package/dist/connections.d.ts +1 -1
  139. package/dist/connections.js +1 -1
  140. package/dist/docs/404.html +2 -2
  141. package/dist/docs/ab.html +4 -4
  142. package/dist/docs/assets/{app.BASO9Kih.js → app.DW9pXkpL.js} +1 -1
  143. package/dist/docs/assets/chunks/@localSearchIndexroot.nrl1ifBq.js +1 -0
  144. package/dist/docs/assets/chunks/{VPLocalSearchBox.DwkqxoE0.js → VPLocalSearchBox.CdEIUwDg.js} +1 -1
  145. package/dist/docs/assets/chunks/{theme.CCil_13e.js → theme.YZMHgPgg.js} +2 -2
  146. package/dist/docs/assets/{concepts.md.lwAgBIMI.js → concepts.md.DgEcZOfT.js} +1 -1
  147. package/dist/docs/assets/{concepts.md.lwAgBIMI.lean.js → concepts.md.DgEcZOfT.lean.js} +1 -1
  148. package/dist/docs/assets/{evals.md.CPzDAwoH.js → evals.md.CbMoebP1.js} +1 -1
  149. package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +9 -0
  150. package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.lean.js +1 -0
  151. package/dist/docs/assets/{guides_github.md.BtPr9GaP.js → guides_github.md.DKYiT9do.js} +1 -1
  152. package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.js → guides_opentelemetry.md.COh9jFVg.js} +7 -8
  153. package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.lean.js → guides_opentelemetry.md.COh9jFVg.lean.js} +1 -1
  154. package/dist/docs/assets/index.md.D75GWhPl.js +5 -0
  155. package/dist/docs/assets/{index.md.Bb4k8kUm.lean.js → index.md.D75GWhPl.lean.js} +1 -1
  156. package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.js → reference_agent-config.md.CHNpiyp4.js} +3 -3
  157. package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.js → reference_channels.md.Dz8Cnudp.js} +2 -2
  158. package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.lean.js → reference_channels.md.Dz8Cnudp.lean.js} +1 -1
  159. package/dist/docs/assets/{reference_cli.md.DfoeyvL0.js → reference_cli.md.CJNc_xYK.js} +1 -1
  160. package/dist/docs/assets/reference_extensions.md.DykHW3qL.js +62 -0
  161. package/dist/docs/assets/reference_extensions.md.DykHW3qL.lean.js +1 -0
  162. package/dist/docs/assets/reference_hooks.md.Ddt5DdgJ.js +73 -0
  163. package/dist/docs/assets/{reference_hooks.md.a8BJxMR5.lean.js → reference_hooks.md.Ddt5DdgJ.lean.js} +1 -1
  164. package/dist/docs/assets/{reference_playground.md.DnX5nL-B.js → reference_playground.md.4myJPxrf.js} +1 -1
  165. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.js → reference_project-layout.md.DuBu9a96.js} +2 -2
  166. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.lean.js → reference_project-layout.md.DuBu9a96.lean.js} +1 -1
  167. package/dist/docs/assets/reference_result.md.BK5SxDrf.js +19 -0
  168. package/dist/docs/assets/reference_result.md.BK5SxDrf.lean.js +1 -0
  169. package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.js → reference_sessions.md.CueyOHSL.js} +1 -1
  170. package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.lean.js → reference_sessions.md.CueyOHSL.lean.js} +1 -1
  171. package/dist/docs/assets/{reference_skills.md.BFW9retM.js → reference_skills.md.l2ezAcaN.js} +1 -1
  172. package/dist/docs/assets/{reference_tools.md.CvAHsdSp.js → reference_tools.md.aGrn99hP.js} +2 -2
  173. package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +1 -0
  174. package/dist/docs/assets/{skills_framework-map.md.BTi817yv.lean.js → skills_framework-map.md.haibFyoB.lean.js} +1 -1
  175. package/dist/docs/assets/{skills_otel.md.CgiZryR3.js → skills_otel.md.CqhobH3B.js} +3 -3
  176. package/dist/docs/assets/{skills_otel.md.CgiZryR3.lean.js → skills_otel.md.CqhobH3B.lean.js} +1 -1
  177. package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.js → templates_pr-autofixer.md.Bds_XWcV.js} +2 -2
  178. package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.lean.js → templates_pr-autofixer.md.Bds_XWcV.lean.js} +1 -1
  179. package/dist/docs/building-with-agents.html +4 -4
  180. package/dist/docs/concepts.html +5 -5
  181. package/dist/docs/concepts.md +5 -7
  182. package/dist/docs/deployment.html +4 -4
  183. package/dist/docs/design/runtime-abstraction.md +2 -3
  184. package/dist/docs/evals.html +6 -6
  185. package/dist/docs/evals.md +9 -7
  186. package/dist/docs/guides/agent-to-agent.html +4 -4
  187. package/dist/docs/guides/cloud-agents.html +35 -0
  188. package/dist/docs/guides/cloud-agents.md +91 -0
  189. package/dist/docs/guides/convert-automation.html +4 -4
  190. package/dist/docs/guides/github.html +6 -6
  191. package/dist/docs/guides/github.md +0 -1
  192. package/dist/docs/guides/human-in-the-loop.html +4 -4
  193. package/dist/docs/guides/mcp-oauth.html +5 -5
  194. package/dist/docs/guides/opentelemetry.html +11 -12
  195. package/dist/docs/guides/opentelemetry.md +41 -17
  196. package/dist/docs/guides/slack.html +4 -4
  197. package/dist/docs/guides/webhooks.html +4 -4
  198. package/dist/docs/hashmap.json +1 -1
  199. package/dist/docs/hillclimbing.html +4 -4
  200. package/dist/docs/index.html +6 -6
  201. package/dist/docs/index.md +7 -3
  202. package/dist/docs/llms-full.txt +765 -209
  203. package/dist/docs/llms.txt +3 -1
  204. package/dist/docs/quickstart.html +4 -4
  205. package/dist/docs/reference/agent-config.html +8 -8
  206. package/dist/docs/reference/agent-config.md +6 -10
  207. package/dist/docs/reference/artifacts.html +5 -5
  208. package/dist/docs/reference/channels.html +6 -6
  209. package/dist/docs/reference/channels.md +18 -8
  210. package/dist/docs/reference/cli.html +5 -5
  211. package/dist/docs/reference/cli.md +3 -4
  212. package/dist/docs/reference/connections.html +4 -4
  213. package/dist/docs/reference/extensions.html +88 -0
  214. package/dist/docs/reference/extensions.md +264 -0
  215. package/dist/docs/reference/hooks.html +69 -10
  216. package/dist/docs/reference/hooks.md +215 -46
  217. package/dist/docs/reference/http-api.html +4 -4
  218. package/dist/docs/reference/instructions.html +4 -4
  219. package/dist/docs/reference/playground.html +5 -5
  220. package/dist/docs/reference/playground.md +3 -0
  221. package/dist/docs/reference/project-layout.html +6 -6
  222. package/dist/docs/reference/project-layout.md +4 -0
  223. package/dist/docs/reference/prompt.html +4 -4
  224. package/dist/docs/reference/result.html +45 -0
  225. package/dist/docs/reference/result.md +89 -0
  226. package/dist/docs/reference/schedules.html +4 -4
  227. package/dist/docs/reference/sessions.html +5 -5
  228. package/dist/docs/reference/sessions.md +3 -1
  229. package/dist/docs/reference/skills.html +6 -6
  230. package/dist/docs/reference/skills.md +2 -0
  231. package/dist/docs/reference/subagents.html +5 -5
  232. package/dist/docs/reference/tools.html +6 -6
  233. package/dist/docs/reference/tools.md +3 -2
  234. package/dist/docs/scaffolding-agents.html +4 -4
  235. package/dist/docs/skills/ab.html +4 -4
  236. package/dist/docs/skills/create-agent.html +4 -4
  237. package/dist/docs/skills/debug.html +4 -4
  238. package/dist/docs/skills/evals.html +4 -4
  239. package/dist/docs/skills/framework-map.html +5 -5
  240. package/dist/docs/skills/framework-map.md +3 -0
  241. package/dist/docs/skills/github.html +4 -4
  242. package/dist/docs/skills/hillclimb.html +4 -4
  243. package/dist/docs/skills/index.html +4 -4
  244. package/dist/docs/skills/mcp-auth.html +4 -4
  245. package/dist/docs/skills/otel.html +7 -7
  246. package/dist/docs/skills/otel.md +8 -3
  247. package/dist/docs/skills/setup-slack.html +4 -4
  248. package/dist/docs/storage.html +4 -4
  249. package/dist/docs/templates/agentic-owners.html +4 -4
  250. package/dist/docs/templates/agents-md.html +4 -4
  251. package/dist/docs/templates/code-wiki.html +4 -4
  252. package/dist/docs/templates/demo.html +4 -4
  253. package/dist/docs/templates/pr-autofixer.html +6 -6
  254. package/dist/docs/templates/pr-autofixer.md +0 -3
  255. package/dist/docs/templates/security-help.html +4 -4
  256. package/dist/docs/templates/security-reviewer.html +4 -4
  257. package/dist/docs/templates/triage.html +4 -4
  258. package/dist/docs/troubleshooting.html +4 -4
  259. package/dist/evals.d.ts +1 -1
  260. package/dist/evals.d.ts.map +1 -1
  261. package/dist/extensions/cursor-cloud-agents/extension.d.ts +9 -7
  262. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  263. package/dist/extensions/cursor-cloud-agents/extension.js +9 -7
  264. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +78 -0
  265. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -0
  266. package/dist/extensions/cursor-cloud-agents/lib/backend.js +286 -0
  267. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +5 -0
  268. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -0
  269. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +4 -0
  270. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts +8 -0
  271. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts.map +1 -0
  272. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +15 -0
  273. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
  274. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts +4 -0
  275. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -0
  276. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +26 -0
  277. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts +4 -0
  278. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts.map +1 -0
  279. package/dist/extensions/cursor-cloud-agents/tools/dump.js +54 -0
  280. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts +4 -0
  281. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts.map +1 -0
  282. package/dist/extensions/cursor-cloud-agents/tools/get.js +25 -0
  283. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
  284. package/dist/extensions/cursor-cloud-agents/tools/launch.js +14 -38
  285. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  286. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts +4 -0
  287. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts.map +1 -0
  288. package/dist/extensions/cursor-cloud-agents/tools/{follow_up.js → reply.js} +12 -14
  289. package/dist/extensions.d.ts +54 -17
  290. package/dist/extensions.d.ts.map +1 -1
  291. package/dist/extensions.js +83 -15
  292. package/dist/files-backends/cursor-hosted.d.ts +0 -8
  293. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  294. package/dist/files-backends/cursor-hosted.js +1 -11
  295. package/dist/files.d.ts +21 -4
  296. package/dist/files.d.ts.map +1 -1
  297. package/dist/files.js +38 -21
  298. package/dist/index.d.ts +6 -6
  299. package/dist/index.d.ts.map +1 -1
  300. package/dist/index.js +4 -4
  301. package/dist/internal/ab-snapshot.d.ts.map +1 -1
  302. package/dist/internal/ab-snapshot.js +0 -1
  303. package/dist/internal/advertise-tools.d.ts.map +1 -1
  304. package/dist/internal/advertise-tools.js +1 -3
  305. package/dist/internal/authored-alias-hooks.d.ts +4 -13
  306. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  307. package/dist/internal/authored-alias-hooks.js +4 -20
  308. package/dist/internal/authored-loaders.d.ts +2 -3
  309. package/dist/internal/authored-loaders.d.ts.map +1 -1
  310. package/dist/internal/authored-loaders.js +6 -20
  311. package/dist/internal/channel-dispatch.d.ts +43 -0
  312. package/dist/internal/channel-dispatch.d.ts.map +1 -0
  313. package/dist/internal/channel-dispatch.js +77 -0
  314. package/dist/internal/chat-client.d.ts +1 -1
  315. package/dist/internal/chat-client.js +1 -1
  316. package/dist/internal/cli-ax.d.ts +5 -5
  317. package/dist/internal/cli-ax.d.ts.map +1 -1
  318. package/dist/internal/cli-ax.js +5 -5
  319. package/dist/internal/cli-bitbucket.d.ts +33 -0
  320. package/dist/internal/cli-bitbucket.d.ts.map +1 -0
  321. package/dist/internal/cli-bitbucket.js +359 -0
  322. package/dist/internal/cli-convert-automation.d.ts +1 -1
  323. package/dist/internal/cli-convert-automation.js +2 -2
  324. package/dist/internal/cli-cursor.d.ts +1 -1
  325. package/dist/internal/cli-cursor.d.ts.map +1 -1
  326. package/dist/internal/cli-cursor.js +2 -4
  327. package/dist/internal/cli-deploy.d.ts.map +1 -1
  328. package/dist/internal/cli-deploy.js +2 -6
  329. package/dist/internal/cli-github.d.ts +1 -1
  330. package/dist/internal/cli-github.js +3 -3
  331. package/dist/internal/cli-gitlab.d.ts +37 -0
  332. package/dist/internal/cli-gitlab.d.ts.map +1 -0
  333. package/dist/internal/cli-gitlab.js +380 -0
  334. package/dist/internal/cli-mcp.d.ts.map +1 -1
  335. package/dist/internal/cli-mcp.js +2 -6
  336. package/dist/internal/cli-slack.d.ts +1 -1
  337. package/dist/internal/cli-slack.d.ts.map +1 -1
  338. package/dist/internal/cli-slack.js +2 -4
  339. package/dist/internal/continuation-channel.d.ts +14 -0
  340. package/dist/internal/continuation-channel.d.ts.map +1 -1
  341. package/dist/internal/continuation-channel.js +56 -3
  342. package/dist/internal/continuation-identity.d.ts +14 -15
  343. package/dist/internal/continuation-identity.d.ts.map +1 -1
  344. package/dist/internal/continuation-identity.js +182 -7
  345. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  346. package/dist/internal/conversation-mirror.js +17 -18
  347. package/dist/internal/convert-automation/types.d.ts +1 -1
  348. package/dist/internal/convert-automation/types.js +1 -1
  349. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  350. package/dist/internal/cursor/account-mcp.js +1 -3
  351. package/dist/internal/cursor/backend-client.d.ts +13 -5
  352. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  353. package/dist/internal/cursor/backend-client.js +30 -15
  354. package/dist/internal/cursor/bound-secret-file.d.ts +56 -0
  355. package/dist/internal/cursor/bound-secret-file.d.ts.map +1 -0
  356. package/dist/internal/cursor/bound-secret-file.js +88 -0
  357. package/dist/internal/cursor/credentials.d.ts +39 -5
  358. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  359. package/dist/internal/cursor/credentials.js +58 -8
  360. package/dist/internal/cursor/hosted-bound-secrets.d.ts +41 -0
  361. package/dist/internal/cursor/hosted-bound-secrets.d.ts.map +1 -0
  362. package/dist/internal/cursor/hosted-bound-secrets.js +54 -0
  363. package/dist/internal/cursor/hosted-deployment-secrets.d.ts +19 -5
  364. package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -1
  365. package/dist/internal/cursor/hosted-deployment-secrets.js +29 -9
  366. package/dist/internal/cursor/hosted-store-secrets.d.ts +12 -1
  367. package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
  368. package/dist/internal/cursor/hosted-store-secrets.js +16 -1
  369. package/dist/internal/cursor-account-mcp-auth.d.ts.map +1 -1
  370. package/dist/internal/cursor-account-mcp-auth.js +2 -4
  371. package/dist/internal/cursor-deployment-relay.d.ts +6 -2
  372. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  373. package/dist/internal/cursor-deployment-relay.js +13 -9
  374. package/dist/internal/deploy-manifest.d.ts +1 -1
  375. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  376. package/dist/internal/deploy-manifest.js +1 -1
  377. package/dist/internal/discovery/ab.d.ts +9 -0
  378. package/dist/internal/discovery/ab.d.ts.map +1 -0
  379. package/dist/internal/discovery/ab.js +113 -0
  380. package/dist/internal/discovery/agent-config.d.ts +35 -0
  381. package/dist/internal/discovery/agent-config.d.ts.map +1 -0
  382. package/dist/internal/discovery/agent-config.js +173 -0
  383. package/dist/internal/discovery/agent.d.ts +16 -0
  384. package/dist/internal/discovery/agent.d.ts.map +1 -0
  385. package/dist/internal/discovery/agent.js +255 -0
  386. package/dist/internal/discovery/channels.d.ts +10 -0
  387. package/dist/internal/discovery/channels.d.ts.map +1 -0
  388. package/dist/internal/discovery/channels.js +97 -0
  389. package/dist/internal/discovery/connections.d.ts +13 -0
  390. package/dist/internal/discovery/connections.d.ts.map +1 -0
  391. package/dist/internal/discovery/connections.js +422 -0
  392. package/dist/internal/discovery/context.d.ts +20 -0
  393. package/dist/internal/discovery/context.d.ts.map +1 -0
  394. package/dist/internal/discovery/context.js +30 -0
  395. package/dist/internal/discovery/cursor-plugin.d.ts +25 -0
  396. package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -0
  397. package/dist/internal/discovery/cursor-plugin.js +568 -0
  398. package/dist/internal/discovery/extension-overlay.d.ts +32 -0
  399. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -0
  400. package/dist/internal/discovery/extension-overlay.js +191 -0
  401. package/dist/internal/discovery/extensions.d.ts +28 -0
  402. package/dist/internal/discovery/extensions.d.ts.map +1 -0
  403. package/dist/internal/discovery/extensions.js +375 -0
  404. package/dist/internal/discovery/fs.d.ts +15 -0
  405. package/dist/internal/discovery/fs.d.ts.map +1 -0
  406. package/dist/internal/discovery/fs.js +115 -0
  407. package/dist/internal/discovery/hooks.d.ts +7 -0
  408. package/dist/internal/discovery/hooks.d.ts.map +1 -0
  409. package/dist/internal/discovery/hooks.js +61 -0
  410. package/dist/internal/discovery/info.d.ts +6 -0
  411. package/dist/internal/discovery/info.d.ts.map +1 -0
  412. package/dist/internal/discovery/info.js +147 -0
  413. package/dist/internal/discovery/instructions.d.ts +7 -0
  414. package/dist/internal/discovery/instructions.d.ts.map +1 -0
  415. package/dist/internal/discovery/instructions.js +95 -0
  416. package/dist/internal/discovery/modules.d.ts +20 -0
  417. package/dist/internal/discovery/modules.d.ts.map +1 -0
  418. package/dist/internal/discovery/modules.js +107 -0
  419. package/dist/internal/discovery/names.d.ts +12 -0
  420. package/dist/internal/discovery/names.d.ts.map +1 -0
  421. package/dist/internal/discovery/names.js +37 -0
  422. package/dist/internal/discovery/project.d.ts +51 -0
  423. package/dist/internal/discovery/project.d.ts.map +1 -0
  424. package/dist/internal/discovery/project.js +293 -0
  425. package/dist/internal/discovery/runtime.d.ts +34 -0
  426. package/dist/internal/discovery/runtime.d.ts.map +1 -0
  427. package/dist/internal/discovery/runtime.js +97 -0
  428. package/dist/internal/discovery/schedules.d.ts +7 -0
  429. package/dist/internal/discovery/schedules.d.ts.map +1 -0
  430. package/dist/internal/discovery/schedules.js +118 -0
  431. package/dist/internal/discovery/seed-files.d.ts +7 -0
  432. package/dist/internal/discovery/seed-files.d.ts.map +1 -0
  433. package/dist/internal/discovery/seed-files.js +41 -0
  434. package/dist/internal/discovery/services.d.ts +21 -0
  435. package/dist/internal/discovery/services.d.ts.map +1 -0
  436. package/dist/internal/discovery/services.js +134 -0
  437. package/dist/internal/discovery/skills.d.ts +11 -0
  438. package/dist/internal/discovery/skills.d.ts.map +1 -0
  439. package/dist/internal/discovery/skills.js +156 -0
  440. package/dist/internal/discovery/subagent.d.ts +16 -0
  441. package/dist/internal/discovery/subagent.d.ts.map +1 -0
  442. package/dist/internal/discovery/subagent.js +128 -0
  443. package/dist/internal/discovery/tools.d.ts +18 -0
  444. package/dist/internal/discovery/tools.d.ts.map +1 -0
  445. package/dist/internal/discovery/tools.js +159 -0
  446. package/dist/internal/discovery.d.ts +8 -63
  447. package/dist/internal/discovery.d.ts.map +1 -1
  448. package/dist/internal/discovery.js +6 -2504
  449. package/dist/internal/distribution.d.ts +10 -27
  450. package/dist/internal/distribution.d.ts.map +1 -1
  451. package/dist/internal/distribution.js +25 -73
  452. package/dist/internal/docs-site.js +1 -1
  453. package/dist/internal/eval-run-store.d.ts +0 -1
  454. package/dist/internal/eval-run-store.d.ts.map +1 -1
  455. package/dist/internal/eval-runner.d.ts.map +1 -1
  456. package/dist/internal/framework-file-storage.d.ts +8 -0
  457. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  458. package/dist/internal/framework-file-storage.js +14 -14
  459. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  460. package/dist/internal/framework-storage-selection.js +8 -7
  461. package/dist/internal/frontmatter.d.ts +11 -3
  462. package/dist/internal/frontmatter.d.ts.map +1 -1
  463. package/dist/internal/frontmatter.js +29 -3
  464. package/dist/internal/github-fanout.d.ts +1 -1
  465. package/dist/internal/github-fanout.js +1 -1
  466. package/dist/internal/guest-network.d.ts +101 -0
  467. package/dist/internal/guest-network.d.ts.map +1 -0
  468. package/dist/internal/guest-network.js +304 -0
  469. package/dist/internal/host-otel.d.ts +3 -3
  470. package/dist/internal/host-otel.d.ts.map +1 -1
  471. package/dist/internal/host-otel.js +8 -4
  472. package/dist/internal/hosted-admission-adapter.d.ts +8 -7
  473. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  474. package/dist/internal/hosted-delivery-protocol.d.ts +6 -0
  475. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  476. package/dist/internal/hosted-delivery-protocol.js +18 -5
  477. package/dist/internal/hosted-delivery.d.ts +18 -0
  478. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  479. package/dist/internal/hosted-delivery.js +248 -118
  480. package/dist/internal/http-channel.d.ts.map +1 -1
  481. package/dist/internal/http-channel.js +1 -3
  482. package/dist/internal/init-interview.d.ts.map +1 -1
  483. package/dist/internal/init-interview.js +1 -3
  484. package/dist/internal/init-project.d.ts +2 -2
  485. package/dist/internal/init-project.js +2 -2
  486. package/dist/internal/inline-stdio-define-stub.d.ts +1 -1
  487. package/dist/internal/inline-stdio-define-stub.d.ts.map +1 -1
  488. package/dist/internal/inline-stdio-define-stub.js +1 -1
  489. package/dist/internal/is-record.d.ts +2 -0
  490. package/dist/internal/is-record.d.ts.map +1 -0
  491. package/dist/internal/is-record.js +3 -0
  492. package/dist/internal/json-schema.d.ts.map +1 -1
  493. package/dist/internal/json-schema.js +18 -10
  494. package/dist/internal/local-control-plane.d.ts +1 -2
  495. package/dist/internal/local-control-plane.d.ts.map +1 -1
  496. package/dist/internal/local-control-plane.js +3 -20
  497. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  498. package/dist/internal/mcp-endpoint.js +1 -3
  499. package/dist/internal/mcp-host.d.ts.map +1 -1
  500. package/dist/internal/mcp-host.js +37 -20
  501. package/dist/internal/otel/collector.d.ts +22 -0
  502. package/dist/internal/otel/collector.d.ts.map +1 -1
  503. package/dist/internal/otel/collector.js +145 -126
  504. package/dist/internal/otel/config.d.ts +0 -2
  505. package/dist/internal/otel/config.d.ts.map +1 -1
  506. package/dist/internal/otel/config.js +17 -20
  507. package/dist/internal/otel/http.d.ts +2 -0
  508. package/dist/internal/otel/http.d.ts.map +1 -1
  509. package/dist/internal/otel/http.js +8 -10
  510. package/dist/internal/otel/mcp.d.ts +16 -0
  511. package/dist/internal/otel/mcp.d.ts.map +1 -0
  512. package/dist/internal/otel/mcp.js +55 -0
  513. package/dist/internal/otel/propagation.d.ts +6 -0
  514. package/dist/internal/otel/propagation.d.ts.map +1 -0
  515. package/dist/internal/otel/propagation.js +14 -0
  516. package/dist/internal/otel/runtime.d.ts +26 -1
  517. package/dist/internal/otel/runtime.d.ts.map +1 -1
  518. package/dist/internal/otel/runtime.js +166 -15
  519. package/dist/internal/package-inline-stdio.d.ts.map +1 -1
  520. package/dist/internal/package-inline-stdio.js +3 -11
  521. package/dist/internal/playground/toolchain.d.ts +1 -1
  522. package/dist/internal/playground/toolchain.d.ts.map +1 -1
  523. package/dist/internal/playground/toolchain.js +1 -1
  524. package/dist/internal/request-error-status.d.ts +12 -0
  525. package/dist/internal/request-error-status.d.ts.map +1 -0
  526. package/dist/internal/request-error-status.js +52 -0
  527. package/dist/internal/resolve-prod-target.d.ts +1 -1
  528. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  529. package/dist/internal/resolve-prod-target.js +3 -7
  530. package/dist/internal/result-output.d.ts +18 -0
  531. package/dist/internal/result-output.d.ts.map +1 -0
  532. package/dist/internal/result-output.js +33 -0
  533. package/dist/internal/run-client.d.ts +2 -2
  534. package/dist/internal/run-client.js +2 -2
  535. package/dist/internal/runtime-dispatch-runner.d.ts +1 -11
  536. package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
  537. package/dist/internal/runtime-dispatch-runner.js +2 -15
  538. package/dist/internal/sdk-runner.d.ts.map +1 -1
  539. package/dist/internal/sdk-runner.js +3 -6
  540. package/dist/internal/server.d.ts.map +1 -1
  541. package/dist/internal/server.js +110 -35
  542. package/dist/internal/session-cost.d.ts +3 -3
  543. package/dist/internal/session-cost.d.ts.map +1 -1
  544. package/dist/internal/session-cost.js +3 -3
  545. package/dist/internal/session-engine.d.ts +31 -11
  546. package/dist/internal/session-engine.d.ts.map +1 -1
  547. package/dist/internal/session-engine.js +208 -102
  548. package/dist/internal/session-run-log.d.ts +2 -1
  549. package/dist/internal/session-run-log.d.ts.map +1 -1
  550. package/dist/internal/session-run-log.js +14 -17
  551. package/dist/internal/skills-sync.d.ts +1 -4
  552. package/dist/internal/skills-sync.d.ts.map +1 -1
  553. package/dist/internal/skills-sync.js +10 -50
  554. package/dist/internal/sleep.d.ts +2 -0
  555. package/dist/internal/sleep.d.ts.map +1 -0
  556. package/dist/internal/sleep.js +3 -0
  557. package/dist/internal/start-log-store.d.ts +1 -1
  558. package/dist/internal/start-log-store.d.ts.map +1 -1
  559. package/dist/internal/start-log-store.js +12 -14
  560. package/dist/internal/storage-coordinator.d.ts +4 -1
  561. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  562. package/dist/internal/storage-coordinator.js +15 -13
  563. package/dist/internal/store-mirror.d.ts +29 -0
  564. package/dist/internal/store-mirror.d.ts.map +1 -0
  565. package/dist/internal/store-mirror.js +70 -0
  566. package/dist/internal/tenant-slack/relay.d.ts +73 -0
  567. package/dist/internal/tenant-slack/relay.d.ts.map +1 -0
  568. package/dist/internal/tenant-slack/relay.js +138 -0
  569. package/dist/internal/testing/scm-continuation-fixtures.d.ts +33 -0
  570. package/dist/internal/testing/scm-continuation-fixtures.d.ts.map +1 -0
  571. package/dist/internal/testing/scm-continuation-fixtures.js +253 -0
  572. package/dist/internal/tool-catalog.d.ts.map +1 -1
  573. package/dist/internal/tool-catalog.js +9 -6
  574. package/dist/internal/turn-cost.d.ts +14 -0
  575. package/dist/internal/turn-cost.d.ts.map +1 -1
  576. package/dist/internal/turn-cost.js +41 -9
  577. package/dist/internal/v2-hosting.d.ts +22 -0
  578. package/dist/internal/v2-hosting.d.ts.map +1 -0
  579. package/dist/internal/v2-hosting.js +23 -0
  580. package/dist/internal/workspace-sync.d.ts +22 -0
  581. package/dist/internal/workspace-sync.d.ts.map +1 -0
  582. package/dist/internal/workspace-sync.js +49 -0
  583. package/dist/internal/workspace.d.ts +7 -0
  584. package/dist/internal/workspace.d.ts.map +1 -1
  585. package/dist/internal/workspace.js +13 -0
  586. package/dist/otel.d.ts +39 -1
  587. package/dist/otel.d.ts.map +1 -1
  588. package/dist/otel.js +118 -1
  589. package/dist/playground/assets/index-59KvgREd.js +67 -0
  590. package/dist/playground/assets/index-MbMxXg-y.css +1 -0
  591. package/dist/playground/index.html +2 -2
  592. package/dist/result.d.ts +24 -0
  593. package/dist/result.d.ts.map +1 -0
  594. package/dist/result.js +27 -0
  595. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  596. package/dist/storage-backends/cursor-hosted.js +7 -4
  597. package/dist/storage-protocol.d.ts +24 -23
  598. package/dist/storage-protocol.d.ts.map +1 -1
  599. package/dist/storage-protocol.js +69 -68
  600. package/dist/storage.d.ts +2 -2
  601. package/dist/storage.d.ts.map +1 -1
  602. package/dist/storage.js +1 -1
  603. package/dist/tools.d.ts +9 -0
  604. package/dist/tools.d.ts.map +1 -1
  605. package/dist/tools.js +9 -0
  606. package/dist/types.d.ts +126 -23
  607. package/dist/types.d.ts.map +1 -1
  608. package/docs/README.md +7 -3
  609. package/docs/concepts.md +5 -7
  610. package/docs/design/runtime-abstraction.md +2 -3
  611. package/docs/evals.md +9 -7
  612. package/docs/guides/cloud-agents.md +96 -0
  613. package/docs/guides/github.md +0 -1
  614. package/docs/guides/opentelemetry.md +41 -17
  615. package/docs/reference/agent-config.md +6 -10
  616. package/docs/reference/channels.md +18 -8
  617. package/docs/reference/cli.md +3 -4
  618. package/docs/reference/extensions.md +269 -0
  619. package/docs/reference/hooks.md +215 -46
  620. package/docs/reference/playground.md +3 -0
  621. package/docs/reference/project-layout.md +4 -0
  622. package/docs/reference/result.md +94 -0
  623. package/docs/reference/sessions.md +3 -1
  624. package/docs/reference/skills.md +2 -0
  625. package/docs/reference/tools.md +3 -2
  626. package/docs/templates/pr-autofixer.md +0 -3
  627. package/package.json +29 -10
  628. package/skills/framework-map/SKILL.md +3 -0
  629. package/skills/otel/SKILL.md +8 -3
  630. package/src/ab.ts +1 -1
  631. package/src/bin/agent-serve.ts +121 -21
  632. package/src/channels/bitbucket/api.ts +623 -0
  633. package/src/channels/bitbucket/binding.ts +414 -0
  634. package/src/channels/bitbucket/bitbucket-channel.ts +182 -0
  635. package/src/channels/bitbucket/bitbucket-webhook.ts +576 -0
  636. package/src/channels/bitbucket/checks.ts +154 -0
  637. package/src/channels/bitbucket/cursor-account.ts +117 -0
  638. package/src/channels/bitbucket/defaults.ts +110 -0
  639. package/src/channels/bitbucket/events.ts +84 -0
  640. package/src/channels/bitbucket/index.ts +49 -0
  641. package/src/channels/bitbucket/replay.ts +439 -0
  642. package/src/channels/bitbucket/state.ts +59 -0
  643. package/src/channels/bitbucket/types.ts +266 -0
  644. package/src/channels/deployments/deployments-channel.ts +25 -43
  645. package/src/channels/deployments/types.ts +12 -6
  646. package/src/channels/github/binding.ts +8 -1
  647. package/src/channels/github/cursor-account.ts +17 -6
  648. package/src/channels/github/events.ts +1 -1
  649. package/src/channels/github/forward.ts +3 -2
  650. package/src/channels/github/github-channel.ts +74 -221
  651. package/src/channels/github/replay.ts +1 -1
  652. package/src/channels/github/state.ts +6 -0
  653. package/src/channels/github/types.ts +2 -5
  654. package/src/channels/gitlab/api.ts +228 -0
  655. package/src/channels/gitlab/binding.ts +233 -0
  656. package/src/channels/gitlab/checks.ts +243 -0
  657. package/src/channels/gitlab/cursor-account.ts +114 -0
  658. package/src/channels/gitlab/defaults.ts +93 -0
  659. package/src/channels/gitlab/events.ts +44 -0
  660. package/src/channels/gitlab/gitlab-channel.ts +176 -0
  661. package/src/channels/gitlab/gitlab-webhook.ts +555 -0
  662. package/src/channels/gitlab/index.ts +43 -0
  663. package/src/channels/gitlab/replay.ts +347 -0
  664. package/src/channels/gitlab/state.ts +55 -0
  665. package/src/channels/gitlab/types.ts +263 -0
  666. package/src/channels/origin/api.ts +4 -2
  667. package/src/channels/origin/origin-channel.ts +19 -94
  668. package/src/channels/origin/types.ts +23 -2
  669. package/src/channels/slack/api.ts +4 -2
  670. package/src/channels/slack/assistant.ts +1 -1
  671. package/src/channels/slack/dispatch.ts +27 -2
  672. package/src/channels/slack/eval-directive.ts +1 -6
  673. package/src/channels/slack/inbound.ts +37 -0
  674. package/src/channels/slack/init.ts +6 -3
  675. package/src/channels/slack/manifest.ts +2 -1
  676. package/src/channels/slack/setup.ts +7 -6
  677. package/src/channels/slack/types.ts +1 -1
  678. package/src/channels.ts +0 -1
  679. package/src/client.ts +1 -1
  680. package/src/connections.ts +1 -1
  681. package/src/evals.ts +1 -1
  682. package/src/extensions/cursor-cloud-agents/extension.ts +9 -7
  683. package/src/extensions/cursor-cloud-agents/lib/backend.ts +395 -0
  684. package/src/extensions/cursor-cloud-agents/lib/inputs.ts +5 -0
  685. package/src/extensions/cursor-cloud-agents/lib/transcript.ts +23 -0
  686. package/src/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
  687. package/src/extensions/cursor-cloud-agents/tools/cancel.ts +19 -0
  688. package/src/extensions/cursor-cloud-agents/tools/dump.ts +51 -0
  689. package/src/extensions/cursor-cloud-agents/tools/get.ts +18 -0
  690. package/src/extensions/cursor-cloud-agents/tools/launch.ts +22 -42
  691. package/src/extensions/cursor-cloud-agents/tools/list.ts +1 -1
  692. package/src/extensions/cursor-cloud-agents/tools/reply.ts +34 -0
  693. package/src/extensions.ts +100 -15
  694. package/src/files-backends/cursor-hosted.ts +1 -17
  695. package/src/files.ts +64 -37
  696. package/src/index.ts +27 -26
  697. package/src/internal/ab-snapshot.ts +0 -3
  698. package/src/internal/advertise-tools.ts +1 -4
  699. package/src/internal/authored-alias-hooks.ts +4 -21
  700. package/src/internal/authored-loaders.ts +6 -23
  701. package/src/internal/channel-dispatch.ts +160 -0
  702. package/src/internal/chat-client.ts +1 -1
  703. package/src/internal/cli-ax.ts +5 -5
  704. package/src/internal/cli-bitbucket.ts +477 -0
  705. package/src/internal/cli-convert-automation.ts +7 -7
  706. package/src/internal/cli-cursor.ts +2 -5
  707. package/src/internal/cli-deploy.ts +2 -8
  708. package/src/internal/cli-github.ts +3 -3
  709. package/src/internal/cli-gitlab.ts +485 -0
  710. package/src/internal/cli-mcp.ts +2 -7
  711. package/src/internal/cli-slack.ts +2 -5
  712. package/src/internal/continuation-channel.ts +82 -1
  713. package/src/internal/continuation-identity.ts +229 -11
  714. package/src/internal/conversation-mirror.ts +27 -21
  715. package/src/internal/convert-automation/types.ts +1 -1
  716. package/src/internal/cursor/account-mcp.ts +1 -4
  717. package/src/internal/cursor/backend-client.ts +41 -20
  718. package/src/internal/cursor/bound-secret-file.ts +108 -0
  719. package/src/internal/cursor/credentials.ts +75 -10
  720. package/src/internal/cursor/hosted-bound-secrets.ts +75 -0
  721. package/src/internal/cursor/hosted-deployment-secrets.ts +42 -11
  722. package/src/internal/cursor/hosted-store-secrets.ts +28 -1
  723. package/src/internal/cursor-account-mcp-auth.ts +2 -5
  724. package/src/internal/cursor-deployment-relay.ts +11 -7
  725. package/src/internal/deploy-manifest.ts +4 -2
  726. package/src/internal/discovery/ab.ts +131 -0
  727. package/src/internal/discovery/agent-config.ts +222 -0
  728. package/src/internal/discovery/agent.ts +319 -0
  729. package/src/internal/discovery/channels.ts +105 -0
  730. package/src/internal/discovery/connections.ts +545 -0
  731. package/src/internal/discovery/context.ts +46 -0
  732. package/src/internal/discovery/cursor-plugin.ts +705 -0
  733. package/src/internal/discovery/extension-overlay.ts +274 -0
  734. package/src/internal/discovery/extensions.ts +573 -0
  735. package/src/internal/discovery/fs.ts +108 -0
  736. package/src/internal/discovery/hooks.ts +63 -0
  737. package/src/internal/discovery/info.ts +186 -0
  738. package/src/internal/discovery/instructions.ts +113 -0
  739. package/src/internal/discovery/modules.ts +113 -0
  740. package/src/internal/discovery/names.ts +45 -0
  741. package/src/internal/discovery/project.ts +341 -0
  742. package/src/internal/discovery/runtime.ts +158 -0
  743. package/src/internal/discovery/schedules.ts +120 -0
  744. package/src/internal/discovery/seed-files.ts +37 -0
  745. package/src/internal/discovery/services.ts +160 -0
  746. package/src/internal/discovery/skills.ts +186 -0
  747. package/src/internal/discovery/subagent.ts +136 -0
  748. package/src/internal/discovery/tools.ts +182 -0
  749. package/src/internal/discovery.ts +18 -3081
  750. package/src/internal/distribution.ts +35 -83
  751. package/src/internal/docs-site.ts +1 -1
  752. package/src/internal/eval-run-store.ts +0 -7
  753. package/src/internal/eval-runner.ts +0 -1
  754. package/src/internal/framework-file-storage.ts +14 -14
  755. package/src/internal/framework-storage-selection.ts +9 -9
  756. package/src/internal/frontmatter.ts +36 -3
  757. package/src/internal/github-fanout.ts +1 -1
  758. package/src/internal/guest-network.ts +383 -0
  759. package/src/internal/host-otel.ts +8 -4
  760. package/src/internal/hosted-admission-adapter.ts +8 -8
  761. package/src/internal/hosted-delivery-protocol.ts +26 -1
  762. package/src/internal/hosted-delivery.ts +376 -192
  763. package/src/internal/http-channel.ts +1 -4
  764. package/src/internal/init-interview.ts +1 -4
  765. package/src/internal/init-project.ts +2 -2
  766. package/src/internal/inline-stdio-define-stub.ts +1 -1
  767. package/src/internal/is-record.ts +3 -0
  768. package/src/internal/json-schema.ts +19 -10
  769. package/src/internal/local-control-plane.ts +5 -24
  770. package/src/internal/mcp-endpoint.ts +1 -4
  771. package/src/internal/mcp-host.ts +84 -31
  772. package/src/internal/otel/collector.ts +200 -165
  773. package/src/internal/otel/config.ts +10 -14
  774. package/src/internal/otel/http.ts +16 -13
  775. package/src/internal/otel/mcp.ts +56 -0
  776. package/src/internal/otel/propagation.ts +17 -0
  777. package/src/internal/otel/runtime.ts +242 -25
  778. package/src/internal/package-inline-stdio.ts +3 -12
  779. package/src/internal/playground/toolchain.ts +1 -1
  780. package/src/internal/request-error-status.ts +72 -0
  781. package/src/internal/resolve-prod-target.ts +3 -8
  782. package/src/internal/result-output.ts +34 -0
  783. package/src/internal/run-client.ts +2 -2
  784. package/src/internal/runtime-dispatch-runner.ts +3 -21
  785. package/src/internal/sdk-runner.ts +3 -7
  786. package/src/internal/server.ts +153 -44
  787. package/src/internal/session-cost.ts +3 -3
  788. package/src/internal/session-engine.ts +274 -81
  789. package/src/internal/session-run-log.ts +18 -20
  790. package/src/internal/skills-sync.ts +13 -63
  791. package/src/internal/sleep.ts +3 -0
  792. package/src/internal/start-log-store.ts +13 -16
  793. package/src/internal/storage-coordinator.ts +19 -16
  794. package/src/internal/store-mirror.ts +86 -0
  795. package/src/internal/tenant-slack/relay.ts +179 -0
  796. package/src/internal/testing/scm-continuation-fixtures.ts +286 -0
  797. package/src/internal/tool-catalog.ts +9 -6
  798. package/src/internal/turn-cost.ts +47 -4
  799. package/src/internal/v2-hosting.ts +38 -0
  800. package/src/internal/workspace-sync.ts +55 -0
  801. package/src/internal/workspace.ts +14 -0
  802. package/src/otel.ts +180 -2
  803. package/src/result.ts +36 -0
  804. package/src/storage-backends/cursor-hosted.ts +7 -4
  805. package/src/storage-protocol.ts +102 -95
  806. package/src/storage.ts +4 -0
  807. package/src/tools.ts +18 -0
  808. package/src/types.ts +146 -34
  809. package/templates/triage/agent/lib/types.ts +0 -2
  810. package/dist/continuation.d.ts +0 -20
  811. package/dist/continuation.d.ts.map +0 -1
  812. package/dist/continuation.js +0 -18
  813. package/dist/docs/assets/chunks/@localSearchIndexroot.DbFXINq2.js +0 -1
  814. package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.js +0 -9
  815. package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.lean.js +0 -1
  816. package/dist/docs/assets/index.md.Bb4k8kUm.js +0 -5
  817. package/dist/docs/assets/reference_hooks.md.a8BJxMR5.js +0 -14
  818. package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +0 -1
  819. package/dist/docs/guides/cloud-runtime.html +0 -35
  820. package/dist/docs/guides/cloud-runtime.md +0 -115
  821. package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts +0 -30
  822. package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts.map +0 -1
  823. package/dist/extensions/cursor-cloud-agents/lib/cloud.js +0 -45
  824. package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts +0 -4
  825. package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts.map +0 -1
  826. package/dist/extensions/cursor-cloud-agents/tools/status.d.ts +0 -4
  827. package/dist/extensions/cursor-cloud-agents/tools/status.d.ts.map +0 -1
  828. package/dist/extensions/cursor-cloud-agents/tools/status.js +0 -41
  829. package/dist/internal/convert-automation/index.d.ts +0 -3
  830. package/dist/internal/convert-automation/index.d.ts.map +0 -1
  831. package/dist/internal/convert-automation/index.js +0 -1
  832. package/dist/internal/grokbot/runner.d.ts +0 -64
  833. package/dist/internal/grokbot/runner.d.ts.map +0 -1
  834. package/dist/internal/grokbot/runner.js +0 -282
  835. package/dist/internal/managed-delivery.d.ts +0 -80
  836. package/dist/internal/managed-delivery.d.ts.map +0 -1
  837. package/dist/internal/managed-delivery.js +0 -86
  838. package/dist/internal/review-comments.d.ts +0 -370
  839. package/dist/internal/review-comments.d.ts.map +0 -1
  840. package/dist/internal/review-comments.js +0 -921
  841. package/dist/internal/shallow-clone.d.ts +0 -176
  842. package/dist/internal/shallow-clone.d.ts.map +0 -1
  843. package/dist/internal/shallow-clone.js +0 -419
  844. package/dist/playground/assets/index-BnNN1-EK.js +0 -69
  845. package/dist/playground/assets/index-DBQCwFp0.css +0 -1
  846. package/docs/guides/cloud-runtime.md +0 -120
  847. package/src/continuation.ts +0 -49
  848. package/src/extensions/cursor-cloud-agents/lib/cloud.ts +0 -79
  849. package/src/extensions/cursor-cloud-agents/tools/follow_up.ts +0 -29
  850. package/src/extensions/cursor-cloud-agents/tools/status.ts +0 -39
  851. package/src/internal/convert-automation/index.ts +0 -10
  852. package/src/internal/grokbot/runner.ts +0 -370
  853. package/src/internal/managed-delivery.ts +0 -125
  854. package/src/internal/review-comments.ts +0 -1363
  855. package/src/internal/shallow-clone.ts +0 -609
  856. /package/dist/docs/assets/{evals.md.CPzDAwoH.lean.js → evals.md.CbMoebP1.lean.js} +0 -0
  857. /package/dist/docs/assets/{guides_github.md.BtPr9GaP.lean.js → guides_github.md.DKYiT9do.lean.js} +0 -0
  858. /package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.lean.js → reference_agent-config.md.CHNpiyp4.lean.js} +0 -0
  859. /package/dist/docs/assets/{reference_cli.md.DfoeyvL0.lean.js → reference_cli.md.CJNc_xYK.lean.js} +0 -0
  860. /package/dist/docs/assets/{reference_playground.md.DnX5nL-B.lean.js → reference_playground.md.4myJPxrf.lean.js} +0 -0
  861. /package/dist/docs/assets/{reference_skills.md.BFW9retM.lean.js → reference_skills.md.l2ezAcaN.lean.js} +0 -0
  862. /package/dist/docs/assets/{reference_tools.md.CvAHsdSp.lean.js → reference_tools.md.aGrn99hP.lean.js} +0 -0
@@ -0,0 +1,110 @@
1
+ /**
2
+ * GitLab commit statuses — the GitLab {@link CiCheckWriter} behind the shared
3
+ * check lifecycle in `../checks.js`.
4
+ *
5
+ * GitLab has no Checks API; the merge-request widget shows **commit
6
+ * statuses** (`POST /projects/:id/statuses/:sha`, one row per `name`). The
7
+ * writer maps the shared status / conclusion pair onto GitLab's state set
8
+ * and re-posts the full desired state on every write, so `resumeGitLabCheck`
9
+ * needs only `(project, sha, name)` to rebuild a handle after a restart.
10
+ *
11
+ * Posting needs a token with `api` scope (Developer role or above); through
12
+ * the SCM proxy that is the tenant's project / host credential.
13
+ */
14
+ import { type CiCheck, type CiCheckConcludeInput, type CiCheckConclusion, type CiCheckCreateInput, type CiCheckOutput, type CiCheckRef, type CiCheckStatus, type CiChecksClient, type CiCheckUpdateInput } from "../checks.js";
15
+ import { type GitLabApiMethod } from "./api.js";
16
+ /** Any client that can call the GitLab REST API. */
17
+ export interface GitLabCheckClient {
18
+ request<T = unknown>(input: {
19
+ method: GitLabApiMethod;
20
+ path: string;
21
+ body?: unknown;
22
+ }): Promise<T>;
23
+ }
24
+ /** GitLab commit status `state` values. */
25
+ export type GitLabCommitStatusState = "pending" | "running" | "success" | "failed" | "canceled";
26
+ export interface GitLabCommitStatusInput {
27
+ /** Numeric project id or `group/project` path. */
28
+ project: number | string;
29
+ sha: string;
30
+ state: GitLabCommitStatusState;
31
+ /** Status name shown in the MR widget, e.g. `cursor/security-review`. */
32
+ name: string;
33
+ /** "Details" link. */
34
+ targetUrl?: string;
35
+ /** Short description (GitLab truncates long values). */
36
+ description?: string;
37
+ /** Attach the status to a specific pipeline instead of the latest one. */
38
+ pipelineId?: number;
39
+ }
40
+ /** Response subset of `POST /projects/:id/statuses/:sha`. */
41
+ export interface GitLabCommitStatus {
42
+ id?: number;
43
+ status?: string;
44
+ target_url?: string | null;
45
+ [key: string]: unknown;
46
+ }
47
+ /** Post one commit status. Throws `GitLabApiError` on API failure. */
48
+ export declare function setGitLabCommitStatus(gitlab: GitLabCheckClient, input: GitLabCommitStatusInput): Promise<GitLabCommitStatus>;
49
+ /** Shared check status / conclusion → GitLab commit status state. */
50
+ export declare function gitlabCommitStatusState(input: {
51
+ status: CiCheckStatus;
52
+ conclusion?: CiCheckConclusion;
53
+ }): GitLabCommitStatusState;
54
+ export type GitLabCheckOutput = CiCheckOutput;
55
+ export type GitLabCheckUpdateInput = CiCheckUpdateInput;
56
+ export type GitLabCheckConcludeInput = CiCheckConcludeInput;
57
+ /** A created commit status. All methods throw `GitLabApiError` on failure. */
58
+ export type GitLabCheck = CiCheck & CiCheckRef;
59
+ export interface GitLabCheckIdentityInput {
60
+ /** Client used for every API call on the returned handle. */
61
+ gitlab: GitLabCheckClient;
62
+ /** Numeric project id or `group/project` path. */
63
+ project: number | string;
64
+ /** Status name shown in the MR widget, e.g. `"cursor/security-review"`. */
65
+ name: string;
66
+ /** Commit the status attaches to (usually the MR head SHA). */
67
+ sha: string;
68
+ /** Pin the status to one pipeline. */
69
+ pipelineId?: number;
70
+ }
71
+ export interface GitLabCheckCreateInput extends GitLabCheckIdentityInput, CiCheckCreateInput {
72
+ }
73
+ /**
74
+ * Open a commit status on `sha` and return a handle for later updates.
75
+ *
76
+ * ```ts
77
+ * const check = await createGitLabCheck({
78
+ * gitlab: ctx.gitlab,
79
+ * project: ctx.project.id,
80
+ * name: "cursor/security-review",
81
+ * sha: mergeRequest.headSha,
82
+ * detailsUrl: sessionUrl,
83
+ * output: { title: "Running…", summary: "" },
84
+ * });
85
+ * await check.conclude({ conclusion: "success", output: { title: "Clean", summary: "" } });
86
+ * ```
87
+ */
88
+ export declare function createGitLabCheck(input: GitLabCheckCreateInput): Promise<GitLabCheck>;
89
+ /**
90
+ * Rebuild a {@link GitLabCheck} handle for an existing status row from its
91
+ * identity. No API call is made until the first update.
92
+ */
93
+ export declare function resumeGitLabCheck(input: GitLabCheckIdentityInput & {
94
+ /** Last known status; defaults to `"in_progress"`. */
95
+ status?: CiCheckStatus;
96
+ /** Last known details link, kept on writes that omit `detailsUrl`. */
97
+ url?: string;
98
+ /** Last known title, kept on writes that omit `output`. */
99
+ title?: string;
100
+ id?: number;
101
+ }): GitLabCheck;
102
+ /**
103
+ * Project-bound checks adapter satisfying the shared {@link CiChecksClient}
104
+ * contract for forge-agnostic check code.
105
+ */
106
+ export declare function bindGitLabChecks(input: {
107
+ gitlab: GitLabCheckClient;
108
+ project: number | string;
109
+ }): CiChecksClient;
110
+ //# sourceMappingURL=checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../src/channels/gitlab/checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAIxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,eAAe,EAA4B,MAAM,UAAU,CAAC;AAE1E,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE;QAC1B,MAAM,EAAE,eAAe,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChB;AAED,2CAA2C;AAC3C,MAAM,MAAM,uBAAuB,GAC/B,SAAS,GACT,SAAS,GACT,SAAS,GACT,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,uBAAuB;IACtC,kDAAkD;IAClD,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,uBAAuB,CAAC;IAC/B,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID,sEAAsE;AACtE,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAgB7B;AAED,qEAAqE;AACrE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,GAAG,uBAAuB,CAoB1B;AAED,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAC9C,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AACxD,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAE5D,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,wBAAwB;IACvC,6DAA6D;IAC7D,MAAM,EAAE,iBAAiB,CAAC;IAC1B,kDAAkD;IAClD,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBACf,SAAQ,wBAAwB,EAC9B,kBAAkB;CAAG;AA0CzB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAEtB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,wBAAwB,GAAG;IAChC,sDAAsD;IACtD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GACA,WAAW,CAKb;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B,GAAG,cAAc,CASjB"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * GitLab commit statuses — the GitLab {@link CiCheckWriter} behind the shared
3
+ * check lifecycle in `../checks.js`.
4
+ *
5
+ * GitLab has no Checks API; the merge-request widget shows **commit
6
+ * statuses** (`POST /projects/:id/statuses/:sha`, one row per `name`). The
7
+ * writer maps the shared status / conclusion pair onto GitLab's state set
8
+ * and re-posts the full desired state on every write, so `resumeGitLabCheck`
9
+ * needs only `(project, sha, name)` to rebuild a handle after a restart.
10
+ *
11
+ * Posting needs a token with `api` scope (Developer role or above); through
12
+ * the SCM proxy that is the tenant's project / host credential.
13
+ */
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ import { openCiCheck, resumeCiCheck, } from "../checks.js";
24
+ import { gitlabProjectPathSegment } from "./api.js";
25
+ const DESCRIPTION_MAX_CHARS = 255;
26
+ /** Post one commit status. Throws `GitLabApiError` on API failure. */
27
+ export function setGitLabCommitStatus(gitlab, input) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return yield gitlab.request({
30
+ method: "POST",
31
+ path: `/projects/${gitlabProjectPathSegment(input.project)}/statuses/${encodeURIComponent(input.sha)}`,
32
+ body: Object.assign(Object.assign(Object.assign({ state: input.state, name: input.name }, (input.targetUrl === undefined ? {} : { target_url: input.targetUrl })), (input.description === undefined
33
+ ? {}
34
+ : { description: input.description.slice(0, DESCRIPTION_MAX_CHARS) })), (input.pipelineId === undefined
35
+ ? {}
36
+ : { pipeline_id: input.pipelineId })),
37
+ });
38
+ });
39
+ }
40
+ /** Shared check status / conclusion → GitLab commit status state. */
41
+ export function gitlabCommitStatusState(input) {
42
+ if (input.status === "queued") {
43
+ return "pending";
44
+ }
45
+ if (input.status === "in_progress") {
46
+ return "running";
47
+ }
48
+ switch (input.conclusion) {
49
+ case "success":
50
+ case "neutral":
51
+ case "skipped":
52
+ return "success";
53
+ case "cancelled":
54
+ return "canceled";
55
+ case "failure":
56
+ case "action_required":
57
+ case "timed_out":
58
+ case undefined:
59
+ return "failed";
60
+ }
61
+ }
62
+ /**
63
+ * GitLab writer: every write re-posts the status row for `(sha, name)`, and
64
+ * a commit status has no partial update, so the writer carries the last
65
+ * status, details link, and title forward when a write omits them.
66
+ */
67
+ function gitlabCheckWriter(input) {
68
+ var _a;
69
+ let lastStatus = (_a = input.status) !== null && _a !== void 0 ? _a : "in_progress";
70
+ let lastUrl = input.url;
71
+ let lastTitle = input.title;
72
+ return (write) => __awaiter(this, void 0, void 0, function* () {
73
+ var _a;
74
+ var _b, _c, _d;
75
+ const status = (_b = write.status) !== null && _b !== void 0 ? _b : (write.conclusion === undefined ? lastStatus : "completed");
76
+ lastStatus = status;
77
+ lastUrl = (_c = write.detailsUrl) !== null && _c !== void 0 ? _c : lastUrl;
78
+ lastTitle = (_d = (_a = write.output) === null || _a === void 0 ? void 0 : _a.title) !== null && _d !== void 0 ? _d : lastTitle;
79
+ const posted = yield setGitLabCommitStatus(input.gitlab, {
80
+ project: input.project,
81
+ sha: input.sha,
82
+ name: input.name,
83
+ state: gitlabCommitStatusState({ status, conclusion: write.conclusion }),
84
+ targetUrl: lastUrl,
85
+ description: lastTitle,
86
+ pipelineId: input.pipelineId,
87
+ });
88
+ return Object.assign(Object.assign({}, (typeof (posted === null || posted === void 0 ? void 0 : posted.id) === "number" ? { id: posted.id } : {})), (typeof (posted === null || posted === void 0 ? void 0 : posted.target_url) === "string"
89
+ ? { url: posted.target_url }
90
+ : {}));
91
+ });
92
+ }
93
+ /**
94
+ * Open a commit status on `sha` and return a handle for later updates.
95
+ *
96
+ * ```ts
97
+ * const check = await createGitLabCheck({
98
+ * gitlab: ctx.gitlab,
99
+ * project: ctx.project.id,
100
+ * name: "cursor/security-review",
101
+ * sha: mergeRequest.headSha,
102
+ * detailsUrl: sessionUrl,
103
+ * output: { title: "Running…", summary: "" },
104
+ * });
105
+ * await check.conclude({ conclusion: "success", output: { title: "Clean", summary: "" } });
106
+ * ```
107
+ */
108
+ export function createGitLabCheck(input) {
109
+ return openCiCheck(gitlabCheckWriter(input), input);
110
+ }
111
+ /**
112
+ * Rebuild a {@link GitLabCheck} handle for an existing status row from its
113
+ * identity. No API call is made until the first update.
114
+ */
115
+ export function resumeGitLabCheck(input) {
116
+ return resumeCiCheck(gitlabCheckWriter(input), input.id === undefined ? undefined : { id: input.id });
117
+ }
118
+ /**
119
+ * Project-bound checks adapter satisfying the shared {@link CiChecksClient}
120
+ * contract for forge-agnostic check code.
121
+ */
122
+ export function bindGitLabChecks(input) {
123
+ return {
124
+ createCheck: (check) => createGitLabCheck(Object.assign(Object.assign({}, check), { gitlab: input.gitlab, project: input.project })),
125
+ };
126
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Cursor-account mode for GitLab channels.
3
+ *
4
+ * `gitlabChannel({ cursorAccount })` declares that outbound GitLab calls run
5
+ * through the Cursor SCM proxy (`/v0/gitlab-proxy`) with the tenant's
6
+ * credential swapped in server-side. The serve host binds the Cursor API key
7
+ * and the proxy transport at startup when `--cursor-scm-proxy` is set; until
8
+ * then `ctx.gitlab` falls back to direct `GITLAB_TOKEN` access.
9
+ */
10
+ import type { GitLabProxyTransport } from "./api.js";
11
+ import type { GitLabChannelOptions } from "./types.js";
12
+ export declare const CURSOR_GITLAB_MAX_PROJECTS = 20;
13
+ export interface CursorGitLabProjectScope {
14
+ /** Lowercased `group/project` paths. */
15
+ projects: readonly string[];
16
+ }
17
+ /** Host-bound credential: Cursor API key + proxy transport, bound at serve. */
18
+ export interface PendingCursorGitLabCredentials {
19
+ bind(getApiKey: () => Promise<string>): void;
20
+ bindProxyTransport(transport: Omit<GitLabProxyTransport, "getApiKey">): void;
21
+ /** The full proxy transport once both halves are bound. */
22
+ getProxyTransport(): GitLabProxyTransport | undefined;
23
+ }
24
+ export interface GitLabCursorAccountRuntime {
25
+ /** Authored channel options (not rewritten). */
26
+ options: GitLabChannelOptions;
27
+ credentials: PendingCursorGitLabCredentials;
28
+ scope: CursorGitLabProjectScope | undefined;
29
+ }
30
+ export declare function parseCursorGitLabProjectScope(values: readonly string[]): CursorGitLabProjectScope;
31
+ export declare function createPendingCursorGitLabCredentials(): PendingCursorGitLabCredentials;
32
+ /** GitLab-proxy base URL (`/v0/gitlab-proxy`, `AGENT_SERVE_GITLAB_PROXY_URL`). */
33
+ export declare function resolveCursorGitLabProxyUrl(backendBaseUrl: string): string;
34
+ export declare function registerGitLabCursorAccountRuntime(definition: object, runtime: GitLabCursorAccountRuntime): void;
35
+ export declare function getGitLabCursorAccountRuntime(definition: object): GitLabCursorAccountRuntime | undefined;
36
+ //# sourceMappingURL=cursor-account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-account.d.ts","sourceRoot":"","sources":["../../../src/channels/gitlab/cursor-account.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAI7C,MAAM,WAAW,wBAAwB;IACvC,wCAAwC;IACxC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,+EAA+E;AAC/E,MAAM,WAAW,8BAA8B;IAC7C,IAAI,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC7C,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC;IAC7E,2DAA2D;IAC3D,iBAAiB,IAAI,oBAAoB,GAAG,SAAS,CAAC;CACvD;AAED,MAAM,WAAW,0BAA0B;IACzC,gDAAgD;IAChD,OAAO,EAAE,oBAAoB,CAAC;IAC9B,WAAW,EAAE,8BAA8B,CAAC;IAC5C,KAAK,EAAE,wBAAwB,GAAG,SAAS,CAAC;CAC7C;AAID,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,wBAAwB,CAkC1B;AAED,wBAAgB,oCAAoC,IAAI,8BAA8B,CAiBrF;AAED,kFAAkF;AAClF,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,0BAA0B,GAClC,IAAI,CAEN;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,GACjB,0BAA0B,GAAG,SAAS,CAExC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Cursor-account mode for GitLab channels.
3
+ *
4
+ * `gitlabChannel({ cursorAccount })` declares that outbound GitLab calls run
5
+ * through the Cursor SCM proxy (`/v0/gitlab-proxy`) with the tenant's
6
+ * credential swapped in server-side. The serve host binds the Cursor API key
7
+ * and the proxy transport at startup when `--cursor-scm-proxy` is set; until
8
+ * then `ctx.gitlab` falls back to direct `GITLAB_TOKEN` access.
9
+ */
10
+ import { resolveCursorScmProxyUrl } from "../github/cursor-account.js";
11
+ export const CURSOR_GITLAB_MAX_PROJECTS = 20;
12
+ /** `group/project`, with nested groups (`group/sub/project`). */
13
+ const CURSOR_GITLAB_PROJECT_PATTERN = /^[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)+$/;
14
+ const runtimeByDefinition = new WeakMap();
15
+ export function parseCursorGitLabProjectScope(values) {
16
+ const projects = [
17
+ ...new Set(values
18
+ .map((project) => project
19
+ .trim()
20
+ .replace(/^\/+|\/+$/g, "")
21
+ .toLowerCase())
22
+ .filter(Boolean)),
23
+ ];
24
+ if (projects.length === 0) {
25
+ throw new Error("gitlabChannel({ cursorAccount }) requires at least one project.");
26
+ }
27
+ if (projects.length > CURSOR_GITLAB_MAX_PROJECTS) {
28
+ throw new Error(`gitlabChannel({ cursorAccount }) supports at most ${CURSOR_GITLAB_MAX_PROJECTS} projects.`);
29
+ }
30
+ for (const project of projects) {
31
+ if (!CURSOR_GITLAB_PROJECT_PATTERN.test(project) ||
32
+ project.includes("..")) {
33
+ throw new Error(`Invalid GitLab project "${project}"; expected group/project.`);
34
+ }
35
+ }
36
+ return { projects };
37
+ }
38
+ export function createPendingCursorGitLabCredentials() {
39
+ let getApiKey;
40
+ let transport;
41
+ return {
42
+ bind(next) {
43
+ getApiKey = next;
44
+ },
45
+ bindProxyTransport(next) {
46
+ transport = next;
47
+ },
48
+ getProxyTransport() {
49
+ if (getApiKey === undefined || transport === undefined) {
50
+ return undefined;
51
+ }
52
+ return Object.assign(Object.assign({}, transport), { getApiKey });
53
+ },
54
+ };
55
+ }
56
+ /** GitLab-proxy base URL (`/v0/gitlab-proxy`, `AGENT_SERVE_GITLAB_PROXY_URL`). */
57
+ export function resolveCursorGitLabProxyUrl(backendBaseUrl) {
58
+ return resolveCursorScmProxyUrl("gitlab", backendBaseUrl);
59
+ }
60
+ export function registerGitLabCursorAccountRuntime(definition, runtime) {
61
+ runtimeByDefinition.set(definition, runtime);
62
+ }
63
+ export function getGitLabCursorAccountRuntime(definition) {
64
+ return runtimeByDefinition.get(definition);
65
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Default dispatch decisions for the GitLab channel: turn auth derived from
3
+ * the delivery's actor, the title / message a turn starts with, and which
4
+ * merge-request actions dispatch when no `onMergeRequest` hook is declared.
5
+ */
6
+ import type { AuthContext } from "../../types.js";
7
+ import type { GitLabEventContext, GitLabMergeRequestEvent, GitLabTurnDispatch } from "./types.js";
8
+ type DispatchContext = Omit<GitLabEventContext, "host" | "artifacts" | "gitlab" | "send">;
9
+ /**
10
+ * Derive the turn's auth from the actor that triggered the delivery — the
11
+ * standard `{ auth: defaultGitLabAuth(ctx) }` dispatch from an inbound hook.
12
+ * The subscriber's Cursor identity is not the turn principal (same pattern
13
+ * as `defaultGitHubAuth` / `defaultOriginAuth`).
14
+ */
15
+ export declare function defaultGitLabAuth(ctx: DispatchContext): AuthContext;
16
+ export declare function defaultGitLabTitle(ctx: Pick<GitLabEventContext, "project" | "mergeRequestIid" | "eventType">): string;
17
+ export declare function defaultGitLabMergeRequestMessage(ctx: DispatchContext, mergeRequest: GitLabMergeRequestEvent): string;
18
+ /**
19
+ * Default gate when no `onMergeRequest` hook is declared: a new or reopened
20
+ * merge request, or an `update` that pushed commits (`oldrev` present —
21
+ * title / label edits carry no `oldrev`), starts a turn as the actor.
22
+ */
23
+ export declare function defaultGitLabMergeRequestDispatch(ctx: DispatchContext, mergeRequest: GitLabMergeRequestEvent): GitLabTurnDispatch | null;
24
+ export {};
25
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/channels/gitlab/defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,KAAK,eAAe,GAAG,IAAI,CACzB,kBAAkB,EAClB,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CACzC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,WAAW,CAmBnE;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,iBAAiB,GAAG,WAAW,CAAC,GACzE,MAAM,CAIR;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,eAAe,EACpB,YAAY,EAAE,uBAAuB,GACpC,MAAM,CAgBR;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,eAAe,EACpB,YAAY,EAAE,uBAAuB,GACpC,kBAAkB,GAAG,IAAI,CAU3B"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Default dispatch decisions for the GitLab channel: turn auth derived from
3
+ * the delivery's actor, the title / message a turn starts with, and which
4
+ * merge-request actions dispatch when no `onMergeRequest` hook is declared.
5
+ */
6
+ /**
7
+ * Derive the turn's auth from the actor that triggered the delivery — the
8
+ * standard `{ auth: defaultGitLabAuth(ctx) }` dispatch from an inbound hook.
9
+ * The subscriber's Cursor identity is not the turn principal (same pattern
10
+ * as `defaultGitHubAuth` / `defaultOriginAuth`).
11
+ */
12
+ export function defaultGitLabAuth(ctx) {
13
+ const sender = ctx.sender;
14
+ const host = new URL(ctx.project.webUrl).host;
15
+ return {
16
+ authenticator: "gitlab-webhook",
17
+ principalId: sender === undefined ? "gitlab" : String(sender.id),
18
+ principalType: "user",
19
+ attributes: Object.assign(Object.assign(Object.assign({ conversation_kind: ctx.mergeRequestIid === undefined ? ctx.eventType : "merge_request", project: ctx.project.pathWithNamespace, project_id: String(ctx.project.id) }, (ctx.deliveryId === undefined ? {} : { delivery_id: ctx.deliveryId })), (sender === undefined
20
+ ? {}
21
+ : { subject: String(sender.id), username: sender.username })), { issuer: `gitlab:${host}` }),
22
+ };
23
+ }
24
+ export function defaultGitLabTitle(ctx) {
25
+ return ctx.mergeRequestIid === undefined
26
+ ? `GitLab ${ctx.project.pathWithNamespace} ${ctx.eventType}`
27
+ : `GitLab ${ctx.project.pathWithNamespace}!${ctx.mergeRequestIid}`;
28
+ }
29
+ export function defaultGitLabMergeRequestMessage(ctx, mergeRequest) {
30
+ var _a;
31
+ const head = mergeRequest.sourceBranch !== undefined &&
32
+ mergeRequest.headSha !== undefined
33
+ ? `Head: ${mergeRequest.sourceBranch} (${mergeRequest.headSha})`
34
+ : undefined;
35
+ return [
36
+ `GitLab merge request trigger: ${ctx.project.pathWithNamespace}!${mergeRequest.iid}`,
37
+ `Action: ${(_a = mergeRequest.action) !== null && _a !== void 0 ? _a : "unknown"}`,
38
+ `URL: ${mergeRequest.url}`,
39
+ ...(mergeRequest.title === undefined
40
+ ? []
41
+ : [`Title: ${mergeRequest.title}`]),
42
+ ...(head === undefined ? [] : [head]),
43
+ "Handle this merge request event.",
44
+ ].join("\n");
45
+ }
46
+ /**
47
+ * Default gate when no `onMergeRequest` hook is declared: a new or reopened
48
+ * merge request, or an `update` that pushed commits (`oldrev` present —
49
+ * title / label edits carry no `oldrev`), starts a turn as the actor.
50
+ */
51
+ export function defaultGitLabMergeRequestDispatch(ctx, mergeRequest) {
52
+ const action = mergeRequest.action;
53
+ const dispatches = action === "open" ||
54
+ action === "reopen" ||
55
+ (action === "update" && mergeRequest.oldrev !== undefined);
56
+ if (!dispatches) {
57
+ return null;
58
+ }
59
+ return { auth: defaultGitLabAuth(ctx) };
60
+ }
@@ -0,0 +1,12 @@
1
+ /** {@link ChannelMeta.kind} value used by {@link gitlabChannel}. */
2
+ export declare const GITLAB_CHANNEL_KIND = "gitlab";
3
+ export interface GitLabWebhookEventOptions {
4
+ webhookEvents?: readonly string[];
5
+ onMergeRequest?: unknown;
6
+ onNote?: unknown;
7
+ onPush?: unknown;
8
+ onPipeline?: unknown;
9
+ onTagPush?: unknown;
10
+ }
11
+ export declare function deriveGitLabWebhookEvents(options: GitLabWebhookEventOptions): string[];
12
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/channels/gitlab/events.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAgB5C,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,yBAAyB,GACjC,MAAM,EAAE,CAeV"}
@@ -0,0 +1,28 @@
1
+ /** {@link ChannelMeta.kind} value used by {@link gitlabChannel}. */
2
+ export const GITLAB_CHANNEL_KIND = "gitlab";
3
+ /**
4
+ * GitLab `object_kind` values (the `X-Gitlab-Event` payload discriminator)
5
+ * each authored hook subscribes to. `merge_request` is always declared: it
6
+ * is the default dispatch when no `onMergeRequest` hook exists.
7
+ */
8
+ const HOOK_EVENTS = [
9
+ ["onMergeRequest", "merge_request"],
10
+ ["onNote", "note"],
11
+ ["onPush", "push"],
12
+ ["onPipeline", "pipeline"],
13
+ ["onTagPush", "tag_push"],
14
+ ];
15
+ export function deriveGitLabWebhookEvents(options) {
16
+ if (options.webhookEvents !== undefined) {
17
+ return [
18
+ ...new Set(options.webhookEvents.map((event) => event.trim()).filter(Boolean)),
19
+ ];
20
+ }
21
+ const events = ["merge_request"];
22
+ for (const [hook, objectKind] of HOOK_EVENTS) {
23
+ if (options[hook] !== undefined) {
24
+ events.push(objectKind);
25
+ }
26
+ }
27
+ return [...new Set(events)];
28
+ }
@@ -0,0 +1,33 @@
1
+ import type { ChannelDefinition } from "../../types.js";
2
+ import { type GitLabChannelState } from "./state.js";
3
+ import type { GitLabChannelOptions } from "./types.js";
4
+ export declare function getGitLabChannelOptions(definition: object): GitLabChannelOptions | undefined;
5
+ export declare function gitlabChannel(options?: GitLabChannelOptions): ChannelDefinition<GitLabChannelState>;
6
+ /** Minimal mount shape shared by `serve` / the `gitlab` CLI. */
7
+ export interface GitLabAgentMountLike {
8
+ slug: string;
9
+ project: {
10
+ channels: Array<{
11
+ id: string;
12
+ definition: {
13
+ meta?: {
14
+ kind?: string;
15
+ gitlabWebhookEvents?: readonly string[];
16
+ };
17
+ routes?: ReadonlyArray<{
18
+ method: string;
19
+ path: string;
20
+ }>;
21
+ };
22
+ }>;
23
+ };
24
+ }
25
+ export interface GitLabChannelTarget {
26
+ slug: string;
27
+ channelId: string;
28
+ /** Route path under the channel (default `/`). */
29
+ routePath: string;
30
+ events: string[];
31
+ }
32
+ export declare function findGitLabChannelTargets(mounts: ReadonlyArray<GitLabAgentMountLike>): GitLabChannelTarget[];
33
+ //# sourceMappingURL=gitlab-channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/gitlab/gitlab-channel.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAaxD,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOvD,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,GACjB,oBAAoB,GAAG,SAAS,CAElC;AAED,wBAAgB,aAAa,CAC3B,OAAO,GAAE,oBAAyB,GACjC,iBAAiB,CAAC,kBAAkB,CAAC,CAwFvC;AAED,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,QAAQ,EAAE,KAAK,CAAC;YACd,EAAE,EAAE,MAAM,CAAC;YACX,UAAU,EAAE;gBACV,IAAI,CAAC,EAAE;oBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;oBAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;iBAAE,CAAC;gBAClE,MAAM,CAAC,EAAE,aAAa,CAAC;oBAAE,MAAM,EAAE,MAAM,CAAC;oBAAC,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC,CAAC;aAC1D,CAAC;SACH,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAC1C,mBAAmB,EAAE,CAoBvB"}
@@ -0,0 +1,120 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { z } from "zod";
11
+ import { allowAll, defineChannel, localDevStrict, loopbackOnly, POST, } from "../../channels.js";
12
+ import { withPropagatingBackgroundErrors } from "../../internal/channel-dispatch.js";
13
+ import { normalizeIdentity } from "../../internal/continuation-identity.js";
14
+ import { isDevMode } from "../../internal/dev-mode.js";
15
+ import { attachHostedAdmissionAdapter } from "../../internal/hosted-admission-adapter.js";
16
+ import { createPendingCursorGitLabCredentials, parseCursorGitLabProjectScope, registerGitLabCursorAccountRuntime, } from "./cursor-account.js";
17
+ import { deriveGitLabWebhookEvents, GITLAB_CHANNEL_KIND } from "./events.js";
18
+ import { dispatchGitLabWebhook, handleGitLabWebhookRequest, parseGitLabWebhookPayload, resolveGitLabWebhookSecret, } from "./gitlab-webhook.js";
19
+ import { emptyGitLabChannelState } from "./state.js";
20
+ const gitlabChannelOptionsByDefinition = new WeakMap();
21
+ export function getGitLabChannelOptions(definition) {
22
+ return gitlabChannelOptionsByDefinition.get(definition);
23
+ }
24
+ export function gitlabChannel(options = {}) {
25
+ var _a, _b, _c;
26
+ const routePath = (_a = options.path) !== null && _a !== void 0 ? _a : "/";
27
+ // With a hook secret the `X-Gitlab-Token` compare is the request auth
28
+ // (allowAll), matching GitHub HMAC + webhookSecret. Without one, prod stays
29
+ // loopback-strict; `--dev` admits loopback only. `isDevMode()` and the
30
+ // secret are read per request: channel modules construct at import time.
31
+ const auth = (_b = options.auth) !== null && _b !== void 0 ? _b : [
32
+ (request, info) => (resolveGitLabWebhookSecret(options) !== undefined
33
+ ? allowAll()
34
+ : isDevMode()
35
+ ? loopbackOnly()
36
+ : localDevStrict())(request, info),
37
+ ];
38
+ const channelOptions = Object.assign({}, options);
39
+ if (channelOptions.continuation !== undefined) {
40
+ channelOptions.continuation = normalizeIdentity(channelOptions.continuation, GITLAB_CHANNEL_KIND);
41
+ }
42
+ // `cursorAccount` routes `ctx.gitlab` through the SCM proxy once the serve
43
+ // host binds the Cursor API key + transport (`--cursor-scm-proxy`).
44
+ const cursorAccount = options.cursorAccount === undefined || options.cursorAccount === false
45
+ ? undefined
46
+ : {
47
+ credentials: createPendingCursorGitLabCredentials(),
48
+ scope: typeof options.cursorAccount === "object"
49
+ ? parseCursorGitLabProjectScope(options.cursorAccount.projects)
50
+ : undefined,
51
+ };
52
+ const proxy = () => cursorAccount === null || cursorAccount === void 0 ? void 0 : cursorAccount.credentials.getProxyTransport();
53
+ const definition = defineChannel({
54
+ auth,
55
+ state: emptyGitLabChannelState(),
56
+ events: (_c = options.events) !== null && _c !== void 0 ? _c : {},
57
+ onStart: options.onStart,
58
+ onStop: options.onStop,
59
+ meta: {
60
+ kind: GITLAB_CHANNEL_KIND,
61
+ gitlabWebhookEvents: deriveGitLabWebhookEvents(channelOptions),
62
+ },
63
+ routes: [
64
+ POST(routePath, {
65
+ bodySchema: z.unknown(),
66
+ description: "GitLab webhook ingress",
67
+ handler: (request, args) => __awaiter(this, void 0, void 0, function* () {
68
+ return handleGitLabWebhookRequest({
69
+ options: channelOptions,
70
+ request,
71
+ args,
72
+ proxy,
73
+ });
74
+ }),
75
+ }),
76
+ ],
77
+ });
78
+ gitlabChannelOptionsByDefinition.set(definition, channelOptions);
79
+ if (cursorAccount !== undefined) {
80
+ registerGitLabCursorAccountRuntime(definition, Object.assign({ options: channelOptions }, cursorAccount));
81
+ }
82
+ attachHostedAdmissionAdapter(definition, {
83
+ kind: GITLAB_CHANNEL_KIND,
84
+ prepareArgs: withPropagatingBackgroundErrors,
85
+ dispatch: (_a) => __awaiter(this, [_a], void 0, function* ({ eventType, payload, deliveryId, args }) {
86
+ const delivery = parseGitLabWebhookPayload(payload, eventType);
87
+ if (delivery === null) {
88
+ return Response.json({ ok: false, error: "invalid_gitlab_payload" }, { status: 400 });
89
+ }
90
+ delivery.deliveryId = deliveryId;
91
+ return dispatchGitLabWebhook({
92
+ options: channelOptions,
93
+ delivery,
94
+ args,
95
+ proxy,
96
+ });
97
+ }),
98
+ });
99
+ return definition;
100
+ }
101
+ export function findGitLabChannelTargets(mounts) {
102
+ var _a, _b, _c;
103
+ const targets = [];
104
+ for (const { slug, project } of mounts) {
105
+ for (const channel of project.channels) {
106
+ const meta = channel.definition.meta;
107
+ if ((meta === null || meta === void 0 ? void 0 : meta.kind) !== GITLAB_CHANNEL_KIND) {
108
+ continue;
109
+ }
110
+ const postRoute = ((_a = channel.definition.routes) !== null && _a !== void 0 ? _a : []).find((route) => route.method === "POST");
111
+ targets.push({
112
+ slug,
113
+ channelId: channel.id,
114
+ routePath: (_b = postRoute === null || postRoute === void 0 ? void 0 : postRoute.path) !== null && _b !== void 0 ? _b : "/",
115
+ events: [...((_c = meta.gitlabWebhookEvents) !== null && _c !== void 0 ? _c : [])],
116
+ });
117
+ }
118
+ }
119
+ return targets;
120
+ }