@cursor/july 0.1.108 → 0.1.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/AGENTS.md +2 -6
  2. package/README.md +3 -6
  3. package/dist/channels/bitbucket/api.d.ts +41 -0
  4. package/dist/channels/bitbucket/api.d.ts.map +1 -1
  5. package/dist/channels/bitbucket/api.js +260 -0
  6. package/dist/channels/bitbucket/binding.d.ts +4 -0
  7. package/dist/channels/bitbucket/binding.d.ts.map +1 -1
  8. package/dist/channels/bitbucket/binding.js +16 -0
  9. package/dist/channels/bitbucket/index.d.ts +1 -1
  10. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  11. package/dist/channels/bitbucket/index.js +1 -1
  12. package/dist/channels/gitlab/api.d.ts +27 -0
  13. package/dist/channels/gitlab/api.d.ts.map +1 -1
  14. package/dist/channels/gitlab/api.js +88 -0
  15. package/dist/channels/gitlab/binding.d.ts +5 -0
  16. package/dist/channels/gitlab/binding.d.ts.map +1 -1
  17. package/dist/channels/gitlab/binding.js +10 -0
  18. package/dist/channels/gitlab/index.d.ts +1 -1
  19. package/dist/channels/gitlab/index.d.ts.map +1 -1
  20. package/dist/channels/gitlab/index.js +1 -1
  21. package/dist/channels/slack/dispatch.d.ts +10 -0
  22. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  23. package/dist/channels/slack/dispatch.js +20 -3
  24. package/dist/channels/slack/slack-channel.d.ts +12 -5
  25. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  26. package/dist/channels/slack/slack-channel.js +59 -8
  27. package/dist/docs/404.html +2 -2
  28. package/dist/docs/assets/{app.BASKM3M4.js → app.Cr-wVbnB.js} +1 -1
  29. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.js → building-with-agents.md.D0KbSkJn.js} +2 -2
  30. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.lean.js → building-with-agents.md.D0KbSkJn.lean.js} +1 -1
  31. package/dist/docs/assets/chunks/@localSearchIndexroot.CFVQ4S17.js +1 -0
  32. package/dist/docs/assets/chunks/{VPLocalSearchBox.BOKxlYGP.js → VPLocalSearchBox.CVQERt56.js} +1 -1
  33. package/dist/docs/assets/chunks/{theme.DbDZW-zb.js → theme.Dnsd3XOn.js} +2 -2
  34. package/dist/docs/assets/concepts.md.B4o63Gul.js +1 -0
  35. package/dist/docs/assets/evals.md.C7JLjoEP.js +211 -0
  36. package/dist/docs/assets/evals.md.C7JLjoEP.lean.js +1 -0
  37. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.js +10 -0
  38. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.lean.js +1 -0
  39. package/dist/docs/assets/{guides_github.md.BH33UEBJ.js → guides_github.md.TZaTZlfz.js} +13 -3
  40. package/dist/docs/assets/{guides_github.md.BH33UEBJ.lean.js → guides_github.md.TZaTZlfz.lean.js} +1 -1
  41. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.js +14 -0
  42. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.lean.js +1 -0
  43. package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.js → guides_webhooks.md.CJK484ex.js} +2 -2
  44. package/dist/docs/assets/{hillclimbing.md.CpTGTCle.js → hillclimbing.md.BOiVo1tf.js} +1 -1
  45. package/dist/docs/assets/index.md.DD9Q2XuJ.js +5 -0
  46. package/dist/docs/assets/{index.md.BjH1w2ZW.lean.js → index.md.DD9Q2XuJ.lean.js} +1 -1
  47. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.js → reference_channels.md.CAo-iK4j.js} +2 -2
  48. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.lean.js → reference_channels.md.CAo-iK4j.lean.js} +1 -1
  49. package/dist/docs/assets/{reference_cli.md.Ca26u0Es.js → reference_cli.md.Deg7849l.js} +1 -1
  50. package/dist/docs/assets/{reference_extensions.md.CPWt00ds.js → reference_extensions.md.ZAVUyuEX.js} +2 -2
  51. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.js → reference_hooks.md.BlM_bOg6.js} +3 -3
  52. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.lean.js → reference_hooks.md.BlM_bOg6.lean.js} +1 -1
  53. package/dist/docs/assets/{reference_http-api.md.oySXBO8o.js → reference_http-api.md.BwaCo-VO.js} +1 -1
  54. package/dist/docs/assets/{reference_playground.md.4myJPxrf.js → reference_playground.md.DLnoaczX.js} +1 -1
  55. package/dist/docs/assets/{reference_playground.md.4myJPxrf.lean.js → reference_playground.md.DLnoaczX.lean.js} +1 -1
  56. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.js → reference_project-layout.md.BEU8MtQV.js} +3 -3
  57. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.lean.js → reference_project-layout.md.BEU8MtQV.lean.js} +1 -1
  58. package/dist/docs/assets/reference_sessions.md.CyXV1MUw.js +1 -0
  59. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.js +35 -0
  60. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.lean.js +1 -0
  61. package/dist/docs/assets/{skills_evals.md.BhovOvrl.js → skills_evals.md.DFxYPErF.js} +3 -3
  62. package/dist/docs/assets/skills_evals.md.DFxYPErF.lean.js +1 -0
  63. package/dist/docs/assets/{skills_framework-map.md.D-tFZhFS.js → skills_framework-map.md.BxLSOhSY.js} +1 -1
  64. package/dist/docs/assets/skills_index.md.DL7EHaQ-.js +1 -0
  65. package/dist/docs/assets/skills_index.md.DL7EHaQ-.lean.js +1 -0
  66. package/dist/docs/assets/{storage.md.BOHeqk2M.js → storage.md.BUrhJ-Zz.js} +4 -4
  67. package/dist/docs/assets/{storage.md.BOHeqk2M.lean.js → storage.md.BUrhJ-Zz.lean.js} +1 -1
  68. package/dist/docs/building-with-agents.html +5 -5
  69. package/dist/docs/building-with-agents.md +3 -2
  70. package/dist/docs/concepts.html +5 -5
  71. package/dist/docs/concepts.md +2 -4
  72. package/dist/docs/deployment.html +4 -4
  73. package/dist/docs/evals.html +161 -35
  74. package/dist/docs/evals.md +612 -297
  75. package/dist/docs/guides/agent-to-agent.html +4 -4
  76. package/dist/docs/guides/bitbucket.html +36 -0
  77. package/dist/docs/guides/bitbucket.md +84 -0
  78. package/dist/docs/guides/cloud-agents.html +4 -4
  79. package/dist/docs/guides/convert-automation.html +4 -4
  80. package/dist/docs/guides/github.html +17 -7
  81. package/dist/docs/guides/github.md +31 -0
  82. package/dist/docs/guides/gitlab.html +40 -0
  83. package/dist/docs/guides/gitlab.md +92 -0
  84. package/dist/docs/guides/grokbot-agents.html +4 -4
  85. package/dist/docs/guides/human-in-the-loop.html +4 -4
  86. package/dist/docs/guides/improve.html +4 -4
  87. package/dist/docs/guides/mcp-oauth.html +4 -4
  88. package/dist/docs/guides/opentelemetry.html +4 -4
  89. package/dist/docs/guides/slack.html +5 -5
  90. package/dist/docs/guides/webhooks.html +6 -6
  91. package/dist/docs/guides/webhooks.md +4 -2
  92. package/dist/docs/hashmap.json +1 -1
  93. package/dist/docs/hillclimbing.html +6 -6
  94. package/dist/docs/hillclimbing.md +2 -2
  95. package/dist/docs/index.html +6 -6
  96. package/dist/docs/index.md +10 -6
  97. package/dist/docs/llms-full.txt +1113 -778
  98. package/dist/docs/llms.txt +6 -5
  99. package/dist/docs/quickstart.html +4 -4
  100. package/dist/docs/reference/agent-config.html +4 -4
  101. package/dist/docs/reference/artifacts.html +4 -4
  102. package/dist/docs/reference/channels.html +6 -6
  103. package/dist/docs/reference/channels.md +16 -3
  104. package/dist/docs/reference/cli.html +6 -6
  105. package/dist/docs/reference/cli.md +6 -4
  106. package/dist/docs/reference/connections.html +4 -4
  107. package/dist/docs/reference/extensions.html +7 -7
  108. package/dist/docs/reference/extensions.md +0 -3
  109. package/dist/docs/reference/hooks.html +7 -7
  110. package/dist/docs/reference/hooks.md +9 -12
  111. package/dist/docs/reference/http-api.html +6 -6
  112. package/dist/docs/reference/http-api.md +2 -3
  113. package/dist/docs/reference/instructions.html +4 -4
  114. package/dist/docs/reference/playground.html +5 -5
  115. package/dist/docs/reference/playground.md +0 -4
  116. package/dist/docs/reference/project-layout.html +7 -7
  117. package/dist/docs/reference/project-layout.md +1 -8
  118. package/dist/docs/reference/prompt.html +4 -4
  119. package/dist/docs/reference/result.html +4 -4
  120. package/dist/docs/reference/schedules.html +4 -4
  121. package/dist/docs/reference/sessions.html +5 -5
  122. package/dist/docs/reference/sessions.md +1 -2
  123. package/dist/docs/reference/skills.html +4 -4
  124. package/dist/docs/reference/subagents.html +4 -4
  125. package/dist/docs/reference/tools.html +4 -4
  126. package/dist/docs/scaffolding-agents.html +4 -4
  127. package/dist/docs/skills/create-agent.html +4 -4
  128. package/dist/docs/skills/debug.html +4 -4
  129. package/dist/docs/skills/deploy.html +61 -0
  130. package/dist/docs/skills/deploy.md +161 -0
  131. package/dist/docs/skills/evals.html +8 -8
  132. package/dist/docs/skills/evals.md +44 -6
  133. package/dist/docs/skills/framework-map.html +5 -5
  134. package/dist/docs/skills/framework-map.md +1 -2
  135. package/dist/docs/skills/github.html +4 -4
  136. package/dist/docs/skills/hillclimb.html +4 -4
  137. package/dist/docs/skills/index.html +6 -6
  138. package/dist/docs/skills/index.md +1 -1
  139. package/dist/docs/skills/mcp-auth.html +4 -4
  140. package/dist/docs/skills/otel.html +4 -4
  141. package/dist/docs/skills/setup-slack.html +4 -4
  142. package/dist/docs/storage.html +8 -8
  143. package/dist/docs/storage.md +15 -24
  144. package/dist/docs/templates/agentic-owners.html +4 -4
  145. package/dist/docs/templates/agents-md.html +4 -4
  146. package/dist/docs/templates/code-wiki.html +4 -4
  147. package/dist/docs/templates/demo.html +4 -4
  148. package/dist/docs/templates/grokbot-agents.html +4 -4
  149. package/dist/docs/templates/pr-autofixer.html +4 -4
  150. package/dist/docs/templates/security-help.html +4 -4
  151. package/dist/docs/templates/security-reviewer.html +4 -4
  152. package/dist/docs/templates/triage.html +4 -4
  153. package/dist/docs/troubleshooting.html +4 -4
  154. package/dist/extensions.d.ts +2 -3
  155. package/dist/extensions.d.ts.map +1 -1
  156. package/dist/extensions.js +2 -5
  157. package/dist/index.d.ts +2 -3
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +1 -2
  160. package/dist/internal/authored-alias-hooks.d.ts +5 -0
  161. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  162. package/dist/internal/authored-alias-hooks.js +17 -0
  163. package/dist/internal/authored-loaders.d.ts +4 -0
  164. package/dist/internal/authored-loaders.d.ts.map +1 -1
  165. package/dist/internal/authored-loaders.js +21 -2
  166. package/dist/internal/cli-ax.d.ts +1 -2
  167. package/dist/internal/cli-ax.d.ts.map +1 -1
  168. package/dist/internal/cli-ax.js +1 -2
  169. package/dist/internal/continuation-channel.d.ts.map +1 -1
  170. package/dist/internal/continuation-channel.js +2 -2
  171. package/dist/internal/continuation-identity.js +8 -3
  172. package/dist/internal/discovery/agent.d.ts +1 -1
  173. package/dist/internal/discovery/agent.d.ts.map +1 -1
  174. package/dist/internal/discovery/agent.js +0 -5
  175. package/dist/internal/discovery/extension-overlay.d.ts +1 -2
  176. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -1
  177. package/dist/internal/discovery/extension-overlay.js +0 -14
  178. package/dist/internal/discovery/extensions.d.ts +1 -2
  179. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  180. package/dist/internal/discovery/extensions.js +4 -22
  181. package/dist/internal/discovery/info.d.ts.map +1 -1
  182. package/dist/internal/discovery/info.js +42 -24
  183. package/dist/internal/discovery/modules.js +0 -1
  184. package/dist/internal/discovery/project.d.ts.map +1 -1
  185. package/dist/internal/discovery/project.js +0 -16
  186. package/dist/internal/eval-runner.js +0 -1
  187. package/dist/internal/framework-file-storage.d.ts +4 -5
  188. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  189. package/dist/internal/framework-file-storage.js +4 -5
  190. package/dist/internal/framework-storage-selection.d.ts +2 -2
  191. package/dist/internal/framework-storage-selection.js +2 -2
  192. package/dist/internal/init-scaffold.d.ts.map +1 -1
  193. package/dist/internal/init-scaffold.js +1 -2
  194. package/dist/internal/install-cursor-skills.d.ts +5 -2
  195. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  196. package/dist/internal/install-cursor-skills.js +25 -5
  197. package/dist/internal/run-client.d.ts +1 -1
  198. package/dist/internal/sdk-runner.js +1 -1
  199. package/dist/internal/server.js +0 -14
  200. package/dist/internal/session-engine.d.ts +5 -35
  201. package/dist/internal/session-engine.d.ts.map +1 -1
  202. package/dist/internal/session-engine.js +17 -162
  203. package/dist/internal/storage-coordinator.d.ts +5 -19
  204. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  205. package/dist/internal/storage-coordinator.js +3 -62
  206. package/dist/internal/storage-roles.d.ts +4 -9
  207. package/dist/internal/storage-roles.d.ts.map +1 -1
  208. package/dist/internal/storage-roles.js +2 -2
  209. package/dist/playground/assets/index-Bhxzrcf6.css +1 -0
  210. package/dist/playground/assets/index-CqLX5uF3.js +67 -0
  211. package/dist/playground/index.html +2 -2
  212. package/dist/storage-backends/cursor-hosted-v2.d.ts +4 -5
  213. package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
  214. package/dist/storage-backends/cursor-hosted-v2.js +4 -5
  215. package/dist/storage-backends/cursor-hosted.d.ts +1 -2
  216. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  217. package/dist/storage-backends/cursor-hosted.js +0 -30
  218. package/dist/storage-backends/file-kv.d.ts +9 -12
  219. package/dist/storage-backends/file-kv.d.ts.map +1 -1
  220. package/dist/storage-backends/file-kv.js +11 -47
  221. package/dist/storage-protocol.d.ts +3 -11
  222. package/dist/storage-protocol.d.ts.map +1 -1
  223. package/dist/storage-protocol.js +3 -11
  224. package/dist/storage.d.ts +8 -36
  225. package/dist/storage.d.ts.map +1 -1
  226. package/dist/storage.js +8 -44
  227. package/dist/types.d.ts +20 -57
  228. package/dist/types.d.ts.map +1 -1
  229. package/docs/README.md +10 -6
  230. package/docs/building-with-agents.md +3 -2
  231. package/docs/concepts.md +2 -4
  232. package/docs/evals.md +613 -298
  233. package/docs/guides/bitbucket.md +89 -0
  234. package/docs/guides/github.md +31 -0
  235. package/docs/guides/gitlab.md +97 -0
  236. package/docs/guides/webhooks.md +4 -2
  237. package/docs/hillclimbing.md +2 -2
  238. package/docs/reference/channels.md +16 -3
  239. package/docs/reference/cli.md +6 -4
  240. package/docs/reference/extensions.md +0 -3
  241. package/docs/reference/hooks.md +9 -12
  242. package/docs/reference/http-api.md +2 -3
  243. package/docs/reference/playground.md +0 -4
  244. package/docs/reference/project-layout.md +1 -8
  245. package/docs/reference/sessions.md +1 -2
  246. package/docs/skills/index.md +2 -2
  247. package/docs/storage.md +15 -24
  248. package/package.json +1 -7
  249. package/skills/deploy/SKILL.md +169 -0
  250. package/skills/evals/SKILL.md +45 -8
  251. package/skills/framework-map/SKILL.md +1 -2
  252. package/src/channels/bitbucket/api.ts +341 -0
  253. package/src/channels/bitbucket/binding.ts +25 -0
  254. package/src/channels/bitbucket/index.ts +2 -0
  255. package/src/channels/gitlab/api.ts +123 -0
  256. package/src/channels/gitlab/binding.ts +12 -0
  257. package/src/channels/gitlab/index.ts +1 -0
  258. package/src/channels/slack/dispatch.ts +30 -0
  259. package/src/channels/slack/slack-channel.ts +69 -7
  260. package/src/extensions.ts +2 -6
  261. package/src/index.ts +0 -3
  262. package/src/internal/authored-alias-hooks.ts +32 -0
  263. package/src/internal/authored-loaders.ts +26 -2
  264. package/src/internal/cli-ax.ts +1 -2
  265. package/src/internal/continuation-channel.ts +2 -1
  266. package/src/internal/continuation-identity.ts +10 -2
  267. package/src/internal/discovery/agent.ts +1 -7
  268. package/src/internal/discovery/extension-overlay.ts +0 -18
  269. package/src/internal/discovery/extensions.ts +2 -26
  270. package/src/internal/discovery/info.ts +3 -13
  271. package/src/internal/discovery/modules.ts +0 -1
  272. package/src/internal/discovery/project.ts +0 -16
  273. package/src/internal/eval-runner.ts +0 -1
  274. package/src/internal/framework-file-storage.ts +4 -5
  275. package/src/internal/framework-storage-selection.ts +2 -2
  276. package/src/internal/init-scaffold.ts +1 -2
  277. package/src/internal/install-cursor-skills.ts +38 -5
  278. package/src/internal/run-client.ts +1 -1
  279. package/src/internal/sdk-runner.ts +1 -1
  280. package/src/internal/server.ts +0 -16
  281. package/src/internal/session-engine.ts +14 -202
  282. package/src/internal/storage-coordinator.ts +5 -76
  283. package/src/internal/storage-roles.ts +4 -9
  284. package/src/storage-backends/cursor-hosted-v2.ts +4 -7
  285. package/src/storage-backends/cursor-hosted.ts +0 -37
  286. package/src/storage-backends/file-kv.ts +10 -51
  287. package/src/storage-protocol.ts +3 -17
  288. package/src/storage.ts +10 -101
  289. package/src/types.ts +19 -56
  290. package/templates/demo/README.md +10 -6
  291. package/templates/demo/agent/channels/github.ts +2 -0
  292. package/templates/demo/agent/channels/queue.ts +6 -2
  293. package/templates/demo/agent/lib/repos.ts +5 -0
  294. package/templates/demo/init.json +25 -0
  295. package/dist/ab.d.ts +0 -209
  296. package/dist/ab.d.ts.map +0 -1
  297. package/dist/ab.js +0 -246
  298. package/dist/docs/ab.html +0 -80
  299. package/dist/docs/ab.md +0 -332
  300. package/dist/docs/assets/ab.md.mlVgqvSk.js +0 -54
  301. package/dist/docs/assets/ab.md.mlVgqvSk.lean.js +0 -1
  302. package/dist/docs/assets/chunks/@localSearchIndexroot.BHZYsNVi.js +0 -1
  303. package/dist/docs/assets/concepts.md.DgEcZOfT.js +0 -1
  304. package/dist/docs/assets/evals.md.C1ekS3k2.js +0 -85
  305. package/dist/docs/assets/evals.md.C1ekS3k2.lean.js +0 -1
  306. package/dist/docs/assets/index.md.BjH1w2ZW.js +0 -5
  307. package/dist/docs/assets/reference_sessions.md.CueyOHSL.js +0 -1
  308. package/dist/docs/assets/skills_ab.md.CsFNatVx.js +0 -26
  309. package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +0 -1
  310. package/dist/docs/assets/skills_evals.md.BhovOvrl.lean.js +0 -1
  311. package/dist/docs/assets/skills_index.md.DKwIxzGg.js +0 -1
  312. package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +0 -1
  313. package/dist/docs/skills/ab.html +0 -52
  314. package/dist/docs/skills/ab.md +0 -50
  315. package/dist/internal/ab-collector.d.ts +0 -44
  316. package/dist/internal/ab-collector.d.ts.map +0 -1
  317. package/dist/internal/ab-collector.js +0 -142
  318. package/dist/internal/ab-fold.d.ts +0 -36
  319. package/dist/internal/ab-fold.d.ts.map +0 -1
  320. package/dist/internal/ab-fold.js +0 -175
  321. package/dist/internal/ab-snapshot.d.ts +0 -68
  322. package/dist/internal/ab-snapshot.d.ts.map +0 -1
  323. package/dist/internal/ab-snapshot.js +0 -208
  324. package/dist/internal/discovery/ab.d.ts +0 -9
  325. package/dist/internal/discovery/ab.d.ts.map +0 -1
  326. package/dist/internal/discovery/ab.js +0 -113
  327. package/dist/playground/assets/index-BMDqAeXu.js +0 -67
  328. package/dist/playground/assets/index-LUgJoWdL.css +0 -1
  329. package/docs/ab.md +0 -337
  330. package/skills/ab/SKILL.md +0 -58
  331. package/src/ab.ts +0 -430
  332. package/src/internal/ab-collector.ts +0 -200
  333. package/src/internal/ab-fold.ts +0 -232
  334. package/src/internal/ab-snapshot.ts +0 -331
  335. package/src/internal/discovery/ab.ts +0 -131
  336. /package/dist/docs/assets/{concepts.md.DgEcZOfT.lean.js → concepts.md.B4o63Gul.lean.js} +0 -0
  337. /package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.lean.js → guides_webhooks.md.CJK484ex.lean.js} +0 -0
  338. /package/dist/docs/assets/{hillclimbing.md.CpTGTCle.lean.js → hillclimbing.md.BOiVo1tf.lean.js} +0 -0
  339. /package/dist/docs/assets/{reference_cli.md.Ca26u0Es.lean.js → reference_cli.md.Deg7849l.lean.js} +0 -0
  340. /package/dist/docs/assets/{reference_extensions.md.CPWt00ds.lean.js → reference_extensions.md.ZAVUyuEX.lean.js} +0 -0
  341. /package/dist/docs/assets/{reference_http-api.md.oySXBO8o.lean.js → reference_http-api.md.BwaCo-VO.lean.js} +0 -0
  342. /package/dist/docs/assets/{reference_sessions.md.CueyOHSL.lean.js → reference_sessions.md.CyXV1MUw.lean.js} +0 -0
  343. /package/dist/docs/assets/{skills_framework-map.md.D-tFZhFS.lean.js → skills_framework-map.md.BxLSOhSY.lean.js} +0 -0
package/AGENTS.md CHANGED
@@ -5,7 +5,7 @@ Loop: edit files → inspect surface → run a turn → assert with filesystem
5
5
  evals. Prefer the CLI over ad-hoc curl.
6
6
 
7
7
  User-facing documentation lives in [`docs/`](./docs/README.md)
8
- (quickstart, concepts, guides, evals/live A/B metrics/hillclimbing, deployment,
8
+ (quickstart, concepts, guides, evals/hillclimbing, deployment,
9
9
  troubleshooting, reference). This file is the terse loop reference;
10
10
  point humans at the docs.
11
11
 
@@ -44,12 +44,12 @@ which reads these files. Open them directly. There are no
44
44
  | `skills/framework-map/SKILL.md` | First contact: folder structure, runtimes, sessions, state, invariants |
45
45
  | `skills/create-agent/SKILL.md` | Scaffolding a new agent (interview → scaffold → verify) |
46
46
  | `skills/evals/SKILL.md` | Writing evals; fixture strategy; the regression ratchet |
47
- | `skills/ab/SKILL.md` | Live A/B metrics (`defineAB` under `agent/ab`); not a test runner |
48
47
  | `skills/otel/SKILL.md` | OpenTelemetry export (`defineOtel` / OTLP env / `ctx.host.otel`) |
49
48
  | `skills/hillclimb/SKILL.md` | Improving an existing agent measurably |
50
49
  | `skills/github/SKILL.md` | GitHub webhook agents; replay / forward / fixtures / cursor-events |
51
50
  | `skills/setup-slack/SKILL.md` | Slack wiring and Slack tool approvals |
52
51
  | `skills/mcp-auth/SKILL.md` | Host MCP OAuth (`mcp oauth`, `--store`, `advertiseTools`, `host-connections/`) |
52
+ | `skills/deploy/SKILL.md` | Deploy or redeploy from a pushed Git ref with an attached service account |
53
53
  | `skills/debug/SKILL.md` | Something misbehaving locally (symptom → cause) |
54
54
 
55
55
  Hosted-platform debug (stopped / slow start / health-fail, Datadog
@@ -87,8 +87,6 @@ agent-sdk call get_weather --dir . --input '{"city":"NYC"}'
87
87
  agent-sdk eval --dir . --list
88
88
  agent-sdk eval --dir . --json
89
89
  agent-sdk eval --dir . weather/nyc
90
-
91
- # Live A/B metrics: author agent/ab.ts (defineAB) — runs under serve, no CLI
92
90
  ```
93
91
 
94
92
  ## Project layout
@@ -101,8 +99,6 @@ my-agent/
101
99
  tools/*.ts
102
100
  skills/*.md
103
101
  channels/
104
- ab.ts # optional live A/B metrics (defineAB)
105
- ab.config.ts # optional: maxPlaygroundSessions (default 200)
106
102
  ...
107
103
  evals/
108
104
  smoke.eval.ts # single datapoint → id: smoke
package/README.md CHANGED
@@ -16,9 +16,9 @@ as the execution engine.
16
16
  **User-facing documentation lives in [`docs/`](./docs/README.md)**.
17
17
  Open it with `npx @cursor/july docs`, or at `/docs` on every running
18
18
  `agent-sdk serve` host. It covers getting started, concepts, guides (Slack,
19
- GitHub webhooks, approvals, agent-to-agent, cloud runtime), evals, live
20
- A/B metrics, hillclimbing, deployment, troubleshooting, and reference
21
- pages for each folder. This README is the compact package reference.
19
+ GitHub webhooks, approvals, agent-to-agent, cloud runtime), evals,
20
+ hillclimbing, deployment, troubleshooting, and reference pages for each
21
+ folder. This README is the compact package reference.
22
22
 
23
23
  Instead of one large configuration object, each part of the agent gets a
24
24
  clear home. Instructions go in one file, tools in one folder, channels in
@@ -49,8 +49,6 @@ my-agent/
49
49
  ├── result.ts # optional host commit on the final assistant text
50
50
  ├── otel.ts # optional OpenTelemetry export
51
51
  ├── playground/ # optional custom playground tool chips
52
- ├── ab.ts # optional live A/B experiment
53
- ├── ab/ # optional: more experiments
54
52
  ├── schedules/
55
53
  │ └── heartbeat.md # cron-driven runs
56
54
  ├── sandbox/workspace/ # files seeded into each session's workspace
@@ -1154,7 +1152,6 @@ The NDJSON stream vocabulary: one JSON object per line, each carrying
1154
1152
  | --------------------- | -------------------------------------------------------------- |
1155
1153
  | `session.started` | A durable session was created. |
1156
1154
  | `agent.bound` | Cloud conversation URL. |
1157
- | `ab.assigned` | Sticky A/B enrollment (`experiment`, `variant` or `null` skip). |
1158
1155
  | `message.received` | An inbound user message was accepted. |
1159
1156
  | `turn.started` | A turn began. |
1160
1157
  | `step.started` / `step.completed` | Model step boundaries (with duration). |
@@ -136,6 +136,8 @@ export interface BitbucketApiPullRequest {
136
136
  title?: string;
137
137
  description?: string;
138
138
  state?: string;
139
+ draft?: boolean;
140
+ authorUsername?: string;
139
141
  sourceBranch?: string;
140
142
  targetBranch?: string;
141
143
  headSha?: string;
@@ -143,6 +145,18 @@ export interface BitbucketApiPullRequest {
143
145
  htmlUrl?: string;
144
146
  raw: unknown;
145
147
  }
148
+ export interface BitbucketApiChangedFile {
149
+ path: string;
150
+ previousPath?: string;
151
+ status: "added" | "modified" | "removed" | "renamed";
152
+ patch?: string;
153
+ }
154
+ export interface BitbucketPullRequestDiffInput {
155
+ headSha?: string;
156
+ baseSha?: string;
157
+ mergeBaseSha?: string;
158
+ mergeBaseResolved?: boolean;
159
+ }
146
160
  /**
147
161
  * The handful of operations review products need, implemented once per
148
162
  * dialect. `ctx.bitbucket.api` is the repo-bound instance.
@@ -159,6 +173,29 @@ export interface BitbucketApi {
159
173
  /** Raw file contents at `ref` (branch, tag, or SHA). */
160
174
  getFileAtRef(path: string, ref: string): Promise<string>;
161
175
  }
176
+ export interface BitbucketPullRequestReadApi {
177
+ getPullRequest(id: number): Promise<BitbucketApiPullRequest>;
178
+ getMergeBaseSha(id: number, base: string, headSha: string): Promise<string | undefined>;
179
+ listChangedFiles(id: number, input?: BitbucketPullRequestDiffInput): Promise<BitbucketApiChangedFile[]>;
180
+ }
181
+ export interface BitbucketPullRequestReadClient {
182
+ readonly repository: BitbucketRepositoryRef;
183
+ readonly api: Pick<BitbucketApi, "getPullRequest" | "getPullRequestDiff">;
184
+ request<T = unknown>(input: BitbucketRequestInput): Promise<T>;
185
+ }
186
+ export type BitbucketPullRequestReadDiagnostic = {
187
+ kind: "commit-expansion-failed";
188
+ sha: string;
189
+ error: unknown;
190
+ } | {
191
+ kind: "diff-fallback";
192
+ status: number;
193
+ } | {
194
+ kind: "metadata-fallback";
195
+ status: number;
196
+ };
197
+ /** Split a Git-style unified diff into normalized changed files. */
198
+ export declare function splitBitbucketUnifiedDiff(diff: string): BitbucketApiChangedFile[];
162
199
  /** `/repositories/{workspace}/{slug}` — Bitbucket Cloud 2.0. */
163
200
  export declare function bitbucketCloudRepoPath(repository: {
164
201
  owner: string;
@@ -169,6 +206,10 @@ export declare function bitbucketDataCenterRepoPath(repository: {
169
206
  owner: string;
170
207
  slug: string;
171
208
  }): string;
209
+ export declare function expandBitbucketCloudCommitSha(bitbucket: Pick<BitbucketClient, "request">, repository: Pick<BitbucketRepositoryRef, "owner" | "slug">, sha: string | undefined, onError?: (error: unknown) => void): Promise<string | undefined>;
210
+ export declare function createBitbucketPullRequestReadApi(bitbucket: BitbucketPullRequestReadClient, options?: {
211
+ onDiagnostic?: (diagnostic: BitbucketPullRequestReadDiagnostic) => void;
212
+ }): BitbucketPullRequestReadApi;
172
213
  export declare function cloudBitbucketApi(client: BitbucketClient, repository: BitbucketRepositoryRef): BitbucketApi;
173
214
  export declare function dcBitbucketApi(client: BitbucketClient, repository: BitbucketRepositoryRef): BitbucketApi;
174
215
  /** Pick the dialect implementation for `repository.dialect`. */
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/channels/bitbucket/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/channels/bitbucket/api.ts"],"names":[],"mappings":"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"}
@@ -166,6 +166,102 @@ function num(value) {
166
166
  ? value
167
167
  : undefined;
168
168
  }
169
+ function errorStatus(error) {
170
+ var _a;
171
+ return num((_a = asRecord(error)) === null || _a === void 0 ? void 0 : _a.status);
172
+ }
173
+ function bitbucketAuthorUsername(raw) {
174
+ var _a;
175
+ var _b, _c, _d, _e;
176
+ const author = asRecord((_a = asRecord(raw)) === null || _a === void 0 ? void 0 : _a.author);
177
+ const user = asRecord(author === null || author === void 0 ? void 0 : author.user);
178
+ return ((_e = (_d = (_c = (_b = str(author === null || author === void 0 ? void 0 : author.nickname)) !== null && _b !== void 0 ? _b : str(user === null || user === void 0 ? void 0 : user.name)) !== null && _c !== void 0 ? _c : str(user === null || user === void 0 ? void 0 : user.slug)) !== null && _d !== void 0 ? _d : str(author === null || author === void 0 ? void 0 : author.display_name)) !== null && _e !== void 0 ? _e : str(user === null || user === void 0 ? void 0 : user.displayName));
179
+ }
180
+ const GIT_PATH_ESCAPES = {
181
+ a: "\u0007",
182
+ b: "\b",
183
+ f: "\f",
184
+ n: "\n",
185
+ r: "\r",
186
+ t: "\t",
187
+ v: "\v",
188
+ "\\": "\\",
189
+ '"': '"',
190
+ };
191
+ function unescapeGitPath(path, quoted) {
192
+ var _a, _b;
193
+ if (!quoted) {
194
+ return path;
195
+ }
196
+ const bytes = [];
197
+ let output = "";
198
+ const flush = () => {
199
+ if (bytes.length > 0) {
200
+ output += Buffer.from(bytes).toString("utf8");
201
+ bytes.length = 0;
202
+ }
203
+ };
204
+ for (let index = 0; index < path.length; index += 1) {
205
+ const character = path[index];
206
+ if (character !== "\\") {
207
+ flush();
208
+ output += character;
209
+ continue;
210
+ }
211
+ const octal = /^[0-7]{1,3}/.exec(path.slice(index + 1));
212
+ if (octal !== null) {
213
+ bytes.push(Number.parseInt(octal[0], 8));
214
+ index += octal[0].length;
215
+ continue;
216
+ }
217
+ flush();
218
+ const next = (_a = path[index + 1]) !== null && _a !== void 0 ? _a : "";
219
+ output += (_b = GIT_PATH_ESCAPES[next]) !== null && _b !== void 0 ? _b : next;
220
+ index += 1;
221
+ }
222
+ flush();
223
+ return output;
224
+ }
225
+ /** Split a Git-style unified diff into normalized changed files. */
226
+ export function splitBitbucketUnifiedDiff(diff) {
227
+ var _a, _b, _c, _d;
228
+ const files = [];
229
+ const sections = diff.split(/^(?=diff --git )/m).filter(Boolean);
230
+ for (const section of sections) {
231
+ const lines = section.replace(/\n$/, "").split("\n");
232
+ const header = /^diff --git ("?)a\/(.+?)\1 ("?)b\/(.+?)\3$/.exec((_a = lines[0]) !== null && _a !== void 0 ? _a : "");
233
+ if (header === null) {
234
+ continue;
235
+ }
236
+ const oldPath = unescapeGitPath((_b = header[2]) !== null && _b !== void 0 ? _b : "", header[1] !== "");
237
+ const newPath = unescapeGitPath((_c = header[4]) !== null && _c !== void 0 ? _c : "", header[3] !== "");
238
+ let status = "modified";
239
+ let bodyStart = 1;
240
+ for (; bodyStart < lines.length; bodyStart += 1) {
241
+ const line = (_d = lines[bodyStart]) !== null && _d !== void 0 ? _d : "";
242
+ if (line.startsWith("@@")) {
243
+ break;
244
+ }
245
+ if (line === "--- /dev/null") {
246
+ status = "added";
247
+ }
248
+ else if (line === "+++ /dev/null") {
249
+ status = "removed";
250
+ }
251
+ }
252
+ if (status === "modified" && oldPath !== newPath) {
253
+ status = "renamed";
254
+ }
255
+ const patch = lines.slice(bodyStart).join("\n");
256
+ files.push({
257
+ path: newPath,
258
+ previousPath: status === "renamed" ? oldPath : undefined,
259
+ status,
260
+ patch: patch === "" ? undefined : patch,
261
+ });
262
+ }
263
+ return files;
264
+ }
169
265
  function encodePath(path) {
170
266
  return path
171
267
  .split("/")
@@ -187,6 +283,170 @@ export function bitbucketCloudRepoPath(repository) {
187
283
  export function bitbucketDataCenterRepoPath(repository) {
188
284
  return `/projects/${encodeURIComponent(repository.owner)}/repos/${encodeURIComponent(repository.slug)}`;
189
285
  }
286
+ export function expandBitbucketCloudCommitSha(bitbucket, repository, sha, onError) {
287
+ return __awaiter(this, void 0, void 0, function* () {
288
+ var _a;
289
+ if (sha === undefined || !/^[0-9a-f]{7,39}$/i.test(sha)) {
290
+ return sha;
291
+ }
292
+ try {
293
+ const commit = yield bitbucket.request({
294
+ method: "GET",
295
+ path: `${bitbucketCloudRepoPath(repository)}/commit/${encodeURIComponent(sha)}`,
296
+ });
297
+ return /^[0-9a-f]{40}$/i.test((_a = commit.hash) !== null && _a !== void 0 ? _a : "") ? commit.hash : sha;
298
+ }
299
+ catch (error) {
300
+ onError === null || onError === void 0 ? void 0 : onError(error);
301
+ return sha;
302
+ }
303
+ });
304
+ }
305
+ function bitbucketPullRequestFromRaw(raw, id, htmlUrl) {
306
+ var _a, _b, _c, _d, _e, _f, _g, _h;
307
+ var _j, _k, _l, _m;
308
+ const source = asRecord(raw.source);
309
+ const destination = asRecord(raw.destination);
310
+ return {
311
+ id,
312
+ title: str(raw.title),
313
+ description: str(raw.description),
314
+ state: str(raw.state),
315
+ draft: typeof raw.draft === "boolean" ? raw.draft : undefined,
316
+ authorUsername: bitbucketAuthorUsername(raw),
317
+ sourceBranch: (_j = str((_a = asRecord(source === null || source === void 0 ? void 0 : source.branch)) === null || _a === void 0 ? void 0 : _a.name)) !== null && _j !== void 0 ? _j : str((_b = asRecord(raw.fromRef)) === null || _b === void 0 ? void 0 : _b.displayId),
318
+ targetBranch: (_k = str((_c = asRecord(destination === null || destination === void 0 ? void 0 : destination.branch)) === null || _c === void 0 ? void 0 : _c.name)) !== null && _k !== void 0 ? _k : str((_d = asRecord(raw.toRef)) === null || _d === void 0 ? void 0 : _d.displayId),
319
+ headSha: (_l = str((_e = asRecord(source === null || source === void 0 ? void 0 : source.commit)) === null || _e === void 0 ? void 0 : _e.hash)) !== null && _l !== void 0 ? _l : str((_f = asRecord(raw.fromRef)) === null || _f === void 0 ? void 0 : _f.latestCommit),
320
+ baseSha: (_m = str((_g = asRecord(destination === null || destination === void 0 ? void 0 : destination.commit)) === null || _g === void 0 ? void 0 : _g.hash)) !== null && _m !== void 0 ? _m : str((_h = asRecord(raw.toRef)) === null || _h === void 0 ? void 0 : _h.latestCommit),
321
+ htmlUrl,
322
+ raw,
323
+ };
324
+ }
325
+ export function createBitbucketPullRequestReadApi(bitbucket, options = {}) {
326
+ const { repository } = bitbucket;
327
+ const repo = repository.dialect === "cloud"
328
+ ? bitbucketCloudRepoPath(repository)
329
+ : bitbucketDataCenterRepoPath(repository);
330
+ const cloudPullRequestFromActivity = (id) => __awaiter(this, void 0, void 0, function* () {
331
+ var _a;
332
+ let path = `${repo}/pullrequests/${id}/activity`;
333
+ let query = { pagelen: 50 };
334
+ for (let page = 0; page < 20; page += 1) {
335
+ const response = yield bitbucket.request({
336
+ method: "GET",
337
+ path,
338
+ query,
339
+ });
340
+ for (const value of Array.isArray(response.values)
341
+ ? response.values
342
+ : []) {
343
+ const update = asRecord((_a = asRecord(value)) === null || _a === void 0 ? void 0 : _a.update);
344
+ if (update !== undefined) {
345
+ return bitbucketPullRequestFromRaw(update, id);
346
+ }
347
+ }
348
+ const next = str(response.next);
349
+ if (next === undefined) {
350
+ return undefined;
351
+ }
352
+ const nextUrl = new URL(next);
353
+ const marker = nextUrl.pathname.indexOf("/repositories/");
354
+ path = marker === -1 ? nextUrl.pathname : nextUrl.pathname.slice(marker);
355
+ query = Object.fromEntries(nextUrl.searchParams.entries());
356
+ }
357
+ return undefined;
358
+ });
359
+ return {
360
+ getPullRequest(id) {
361
+ return __awaiter(this, void 0, void 0, function* () {
362
+ var _a, _b;
363
+ let pullRequest;
364
+ try {
365
+ pullRequest = yield bitbucket.api.getPullRequest(id);
366
+ }
367
+ catch (error) {
368
+ const status = errorStatus(error);
369
+ if (repository.dialect !== "cloud" ||
370
+ status === undefined ||
371
+ status < 500) {
372
+ throw error;
373
+ }
374
+ (_a = options.onDiagnostic) === null || _a === void 0 ? void 0 : _a.call(options, { kind: "metadata-fallback", status });
375
+ const fallback = yield cloudPullRequestFromActivity(id);
376
+ if (fallback === undefined) {
377
+ throw error;
378
+ }
379
+ pullRequest = fallback;
380
+ }
381
+ const normalized = Object.assign(Object.assign({}, pullRequest), { draft: ((_b = asRecord(pullRequest.raw)) === null || _b === void 0 ? void 0 : _b.draft) === true, authorUsername: bitbucketAuthorUsername(pullRequest.raw) });
382
+ if (repository.dialect !== "cloud") {
383
+ return normalized;
384
+ }
385
+ const [headSha, baseSha] = yield Promise.all([
386
+ expandBitbucketCloudCommitSha(bitbucket, repository, pullRequest.headSha, (error) => { var _a; return pullRequest.headSha === undefined
387
+ ? undefined
388
+ : (_a = options.onDiagnostic) === null || _a === void 0 ? void 0 : _a.call(options, {
389
+ kind: "commit-expansion-failed",
390
+ sha: pullRequest.headSha,
391
+ error,
392
+ }); }),
393
+ expandBitbucketCloudCommitSha(bitbucket, repository, pullRequest.baseSha, (error) => { var _a; return pullRequest.baseSha === undefined
394
+ ? undefined
395
+ : (_a = options.onDiagnostic) === null || _a === void 0 ? void 0 : _a.call(options, {
396
+ kind: "commit-expansion-failed",
397
+ sha: pullRequest.baseSha,
398
+ error,
399
+ }); }),
400
+ ]);
401
+ return Object.assign(Object.assign({}, normalized), { headSha, baseSha });
402
+ });
403
+ },
404
+ getMergeBaseSha(id, base, headSha) {
405
+ return __awaiter(this, void 0, void 0, function* () {
406
+ if (repository.dialect === "cloud") {
407
+ const commit = yield bitbucket.request({
408
+ method: "GET",
409
+ path: `${repo}/merge-base/${encodeURIComponent(headSha)}..${encodeURIComponent(base)}`,
410
+ });
411
+ return str(commit.hash);
412
+ }
413
+ const commit = yield bitbucket.request({
414
+ method: "GET",
415
+ path: `${repo}/pull-requests/${id}/merge-base`,
416
+ });
417
+ return str(commit.id);
418
+ });
419
+ },
420
+ listChangedFiles(id, input) {
421
+ return __awaiter(this, void 0, void 0, function* () {
422
+ var _a;
423
+ var _b;
424
+ try {
425
+ return splitBitbucketUnifiedDiff(yield bitbucket.api.getPullRequestDiff(id));
426
+ }
427
+ catch (error) {
428
+ const status = errorStatus(error);
429
+ const comparisonBase = (_b = input === null || input === void 0 ? void 0 : input.mergeBaseSha) !== null && _b !== void 0 ? _b : input === null || input === void 0 ? void 0 : input.baseSha;
430
+ if (repository.dialect !== "cloud" ||
431
+ status === undefined ||
432
+ status < 500 ||
433
+ (input === null || input === void 0 ? void 0 : input.headSha) === undefined ||
434
+ comparisonBase === undefined) {
435
+ throw error;
436
+ }
437
+ (_a = options.onDiagnostic) === null || _a === void 0 ? void 0 : _a.call(options, { kind: "diff-fallback", status });
438
+ const diff = yield bitbucket.request({
439
+ method: "GET",
440
+ path: `${repo}/diff/${encodeURIComponent(input.headSha)}..${encodeURIComponent(comparisonBase)}`,
441
+ query: { topic: input.mergeBaseResolved === true ? "false" : "true" },
442
+ accept: "text/plain",
443
+ });
444
+ return splitBitbucketUnifiedDiff(diff);
445
+ }
446
+ });
447
+ },
448
+ };
449
+ }
190
450
  export function cloudBitbucketApi(client, repository) {
191
451
  const repo = bitbucketCloudRepoPath(repository);
192
452
  const mapComment = (raw) => {
@@ -59,6 +59,10 @@ export declare function bitbucketRepositoryFromPayload(payload: Record<string, u
59
59
  /** Cloud `{uuid, display_name, nickname}` or DC `{id, name, displayName}`. */
60
60
  export declare function bitbucketUser(value: unknown): BitbucketUser | undefined;
61
61
  export declare function bitbucketPullRequestUrl(repository: BitbucketRepositoryRef, id: number, explicit?: string): string;
62
+ /** Absolute PR URL, or undefined when a Data Center payload has no repo URL. */
63
+ export declare function bitbucketAbsolutePullRequestUrl(repository: BitbucketRepositoryRef, id: number, explicit?: string): string | undefined;
64
+ /** Whether a Data Center `updated` payload publishes a draft pull request. */
65
+ export declare function bitbucketDraftMarkedReady(payload: Record<string, unknown>, draft: boolean | undefined): boolean;
62
66
  /**
63
67
  * Normalize the pull request from either dialect. `action` is the suffix of
64
68
  * the Cloud-normalized event key (`pullrequest:created` → `created`).
@@ -1 +1 @@
1
- {"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../../src/channels/bitbucket/binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../../src/channels/bitbucket/binding.ts"],"names":[],"mappings":"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"}
@@ -172,6 +172,22 @@ export function bitbucketPullRequestUrl(repository, id, explicit) {
172
172
  ? `projects/${repository.owner}/repos/${repository.slug}/pull-requests/${id}`
173
173
  : `${repository.htmlUrl.replace(/\/browse\/?$/, "")}/pull-requests/${id}`;
174
174
  }
175
+ /** Absolute PR URL, or undefined when a Data Center payload has no repo URL. */
176
+ export function bitbucketAbsolutePullRequestUrl(repository, id, explicit) {
177
+ if (explicit !== undefined) {
178
+ return explicit;
179
+ }
180
+ if (repository.dialect === "cloud") {
181
+ return `https://bitbucket.org/${repository.fullName}/pull-requests/${id}`;
182
+ }
183
+ return repository.htmlUrl === undefined
184
+ ? undefined
185
+ : `${repository.htmlUrl.replace(/\/+$/, "").replace(/\/browse$/, "")}/pull-requests/${id}`;
186
+ }
187
+ /** Whether a Data Center `updated` payload publishes a draft pull request. */
188
+ export function bitbucketDraftMarkedReady(payload, draft) {
189
+ return payload.previousDraft === true && draft === false;
190
+ }
175
191
  /**
176
192
  * Normalize the pull request from either dialect. `action` is the suffix of
177
193
  * the Cloud-normalized event key (`pullrequest:created` → `created`).
@@ -21,7 +21,7 @@
21
21
  * Bitbucket actor — not the Cursor subscriber.
22
22
  */
23
23
  export * from "./api.js";
24
- export { type BitbucketHandle, bitbucketCommentFromPayload, bitbucketDialectOf, bitbucketPullRequestFromPayload, bitbucketPullRequestUrl, bitbucketPushFromPayload, bitbucketRepositoryFromPayload, bitbucketUser, buildBitbucketBinding, } from "./binding.js";
24
+ export { type BitbucketHandle, bitbucketAbsolutePullRequestUrl, bitbucketCommentFromPayload, bitbucketDialectOf, bitbucketDraftMarkedReady, bitbucketPullRequestFromPayload, bitbucketPullRequestUrl, bitbucketPushFromPayload, bitbucketRepositoryFromPayload, bitbucketUser, buildBitbucketBinding, } from "./binding.js";
25
25
  export * from "./bitbucket-channel.js";
26
26
  export * from "./bitbucket-webhook.js";
27
27
  export * from "./checks.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/bitbucket/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,KAAK,eAAe,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,+BAA+B,EAC/B,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,aAAa,EACb,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/bitbucket/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,KAAK,eAAe,EACpB,+BAA+B,EAC/B,2BAA2B,EAC3B,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,aAAa,EACb,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -21,7 +21,7 @@
21
21
  * Bitbucket actor — not the Cursor subscriber.
22
22
  */
23
23
  export * from "./api.js";
24
- export { bitbucketCommentFromPayload, bitbucketDialectOf, bitbucketPullRequestFromPayload, bitbucketPullRequestUrl, bitbucketPushFromPayload, bitbucketRepositoryFromPayload, bitbucketUser, buildBitbucketBinding, } from "./binding.js";
24
+ export { bitbucketAbsolutePullRequestUrl, bitbucketCommentFromPayload, bitbucketDialectOf, bitbucketDraftMarkedReady, bitbucketPullRequestFromPayload, bitbucketPullRequestUrl, bitbucketPushFromPayload, bitbucketRepositoryFromPayload, bitbucketUser, buildBitbucketBinding, } from "./binding.js";
25
25
  export * from "./bitbucket-channel.js";
26
26
  export * from "./bitbucket-webhook.js";
27
27
  export * from "./checks.js";
@@ -72,6 +72,32 @@ export interface GitLabClient {
72
72
  /** Call a GitLab v4 path. Throws {@link GitLabApiError} on non-2xx. */
73
73
  request<T = unknown>(input: GitLabRequestInput): Promise<T>;
74
74
  }
75
+ export interface GitLabApiMergeRequest {
76
+ iid: number;
77
+ title?: string;
78
+ description?: string;
79
+ state?: string;
80
+ draft?: boolean;
81
+ webUrl?: string;
82
+ headSha?: string;
83
+ sourceBranch?: string;
84
+ targetBranch?: string;
85
+ authorUsername?: string;
86
+ baseSha?: string;
87
+ changedFilesCount?: number;
88
+ }
89
+ export interface GitLabApiMergeRequestDiff {
90
+ oldPath: string;
91
+ newPath: string;
92
+ patch?: string;
93
+ status: "added" | "modified" | "removed" | "renamed";
94
+ }
95
+ /** Project-bound merge-request reads shared by GitLab agents. */
96
+ export interface GitLabApi {
97
+ getMergeRequest(iid: number): Promise<GitLabApiMergeRequest>;
98
+ getMergeBaseSha(base: string, headSha: string): Promise<string | undefined>;
99
+ listMergeRequestDiffs(iid: number): Promise<GitLabApiMergeRequestDiff[]>;
100
+ }
75
101
  /** `GITLAB_TOKEN` when set. */
76
102
  export declare function envGitLabToken(env?: NodeJS.ProcessEnv): string | undefined;
77
103
  /**
@@ -87,5 +113,6 @@ export declare function gitlabApiBaseUrl(input?: {
87
113
  * `group/project` path.
88
114
  */
89
115
  export declare function gitlabProjectPathSegment(project: number | string): string;
116
+ export declare function createGitLabApi(client: Pick<GitLabClient, "request">, project: number | string): GitLabApi;
90
117
  export declare function createGitLabClient(options?: GitLabClientOptions): GitLabClient;
91
118
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/channels/gitlab/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AAEvE,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,6BAA6B,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAE1E,sEAAsE;AACtE,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,KAAK,EAAE;QACjB,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,EASA;CACF;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAEjE,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,wEAAwE;IACxE,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACrC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7D;AAOD,+BAA+B;AAC/B,wBAAgB,cAAc,CAC5B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAEpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,MAAM,CAaT;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAIzE;AAgBD,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,mBAAwB,GAChC,YAAY,CAyEd"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/channels/gitlab/api.ts"],"names":[],"mappings":"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"}