@cursor/july 0.1.102 → 0.1.104

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 (789) hide show
  1. package/AGENTS.md +34 -32
  2. package/README.md +10 -12
  3. package/dist/ab.d.ts +1 -1
  4. package/dist/ab.js +1 -1
  5. package/dist/bin/agent-serve.d.ts +12 -12
  6. package/dist/bin/agent-serve.js +114 -36
  7. package/dist/channels/bitbucket/api.d.ts +176 -0
  8. package/dist/channels/bitbucket/api.d.ts.map +1 -0
  9. package/dist/channels/bitbucket/api.js +419 -0
  10. package/dist/channels/bitbucket/binding.d.ts +71 -0
  11. package/dist/channels/bitbucket/binding.d.ts.map +1 -0
  12. package/dist/channels/bitbucket/binding.js +269 -0
  13. package/dist/channels/bitbucket/bitbucket-channel.d.ts +33 -0
  14. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -0
  15. package/dist/channels/bitbucket/bitbucket-channel.js +120 -0
  16. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +61 -0
  17. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -0
  18. package/dist/channels/bitbucket/bitbucket-webhook.js +394 -0
  19. package/dist/channels/bitbucket/checks.d.ts +67 -0
  20. package/dist/channels/bitbucket/checks.d.ts.map +1 -0
  21. package/dist/channels/bitbucket/checks.js +102 -0
  22. package/dist/channels/bitbucket/cursor-account.d.ts +37 -0
  23. package/dist/channels/bitbucket/cursor-account.d.ts.map +1 -0
  24. package/dist/channels/bitbucket/cursor-account.js +65 -0
  25. package/dist/channels/bitbucket/defaults.d.ts +26 -0
  26. package/dist/channels/bitbucket/defaults.d.ts.map +1 -0
  27. package/dist/channels/bitbucket/defaults.js +73 -0
  28. package/dist/channels/bitbucket/events.d.ts +22 -0
  29. package/dist/channels/bitbucket/events.d.ts.map +1 -0
  30. package/dist/channels/bitbucket/events.js +64 -0
  31. package/dist/channels/bitbucket/index.d.ts +34 -0
  32. package/dist/channels/bitbucket/index.d.ts.map +1 -0
  33. package/dist/channels/bitbucket/index.js +33 -0
  34. package/dist/channels/bitbucket/replay.d.ts +63 -0
  35. package/dist/channels/bitbucket/replay.d.ts.map +1 -0
  36. package/dist/channels/bitbucket/replay.js +304 -0
  37. package/dist/channels/bitbucket/state.d.ts +35 -0
  38. package/dist/channels/bitbucket/state.d.ts.map +1 -0
  39. package/dist/channels/bitbucket/state.js +21 -0
  40. package/dist/channels/bitbucket/types.d.ts +229 -0
  41. package/dist/channels/bitbucket/types.d.ts.map +1 -0
  42. package/dist/channels/bitbucket/types.js +1 -0
  43. package/dist/channels/change-monitors/change-monitors-channel.d.ts +5 -0
  44. package/dist/channels/change-monitors/change-monitors-channel.d.ts.map +1 -0
  45. package/dist/channels/change-monitors/change-monitors-channel.js +41 -0
  46. package/dist/channels/change-monitors/index.d.ts +4 -0
  47. package/dist/channels/change-monitors/index.d.ts.map +1 -0
  48. package/dist/channels/change-monitors/index.js +2 -0
  49. package/dist/channels/change-monitors/types.d.ts +39 -0
  50. package/dist/channels/change-monitors/types.d.ts.map +1 -0
  51. package/dist/channels/change-monitors/types.js +1 -0
  52. package/dist/channels/deployments/deployments-channel.d.ts +22 -14
  53. package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
  54. package/dist/channels/deployments/deployments-channel.js +25 -27
  55. package/dist/channels/deployments/types.d.ts +12 -6
  56. package/dist/channels/deployments/types.d.ts.map +1 -1
  57. package/dist/channels/github/binding.d.ts +6 -0
  58. package/dist/channels/github/binding.d.ts.map +1 -1
  59. package/dist/channels/github/binding.js +3 -3
  60. package/dist/channels/github/cursor-account.d.ts +7 -3
  61. package/dist/channels/github/cursor-account.d.ts.map +1 -1
  62. package/dist/channels/github/cursor-account.js +10 -6
  63. package/dist/channels/github/defaults.d.ts.map +1 -1
  64. package/dist/channels/github/defaults.js +4 -0
  65. package/dist/channels/github/events.d.ts +1 -1
  66. package/dist/channels/github/events.js +1 -1
  67. package/dist/channels/github/forward.d.ts +1 -1
  68. package/dist/channels/github/forward.d.ts.map +1 -1
  69. package/dist/channels/github/forward.js +3 -2
  70. package/dist/channels/github/github-channel.d.ts +29 -39
  71. package/dist/channels/github/github-channel.d.ts.map +1 -1
  72. package/dist/channels/github/github-channel.js +68 -101
  73. package/dist/channels/github/progress.d.ts +22 -0
  74. package/dist/channels/github/progress.d.ts.map +1 -1
  75. package/dist/channels/github/progress.js +32 -5
  76. package/dist/channels/github/replay.d.ts +1 -1
  77. package/dist/channels/github/replay.js +1 -1
  78. package/dist/channels/github/state.d.ts +2 -0
  79. package/dist/channels/github/state.d.ts.map +1 -1
  80. package/dist/channels/github/state.js +14 -11
  81. package/dist/channels/github/types.d.ts +2 -4
  82. package/dist/channels/github/types.d.ts.map +1 -1
  83. package/dist/channels/gitlab/api.d.ts +91 -0
  84. package/dist/channels/gitlab/api.d.ts.map +1 -0
  85. package/dist/channels/gitlab/api.js +150 -0
  86. package/dist/channels/gitlab/binding.d.ts +58 -0
  87. package/dist/channels/gitlab/binding.d.ts.map +1 -0
  88. package/dist/channels/gitlab/binding.js +139 -0
  89. package/dist/channels/gitlab/checks.d.ts +110 -0
  90. package/dist/channels/gitlab/checks.d.ts.map +1 -0
  91. package/dist/channels/gitlab/checks.js +126 -0
  92. package/dist/channels/gitlab/cursor-account.d.ts +36 -0
  93. package/dist/channels/gitlab/cursor-account.d.ts.map +1 -0
  94. package/dist/channels/gitlab/cursor-account.js +65 -0
  95. package/dist/channels/gitlab/defaults.d.ts +25 -0
  96. package/dist/channels/gitlab/defaults.d.ts.map +1 -0
  97. package/dist/channels/gitlab/defaults.js +60 -0
  98. package/dist/channels/gitlab/events.d.ts +12 -0
  99. package/dist/channels/gitlab/events.d.ts.map +1 -0
  100. package/dist/channels/gitlab/events.js +28 -0
  101. package/dist/channels/gitlab/gitlab-channel.d.ts +33 -0
  102. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -0
  103. package/dist/channels/gitlab/gitlab-channel.js +120 -0
  104. package/dist/channels/gitlab/gitlab-webhook.d.ts +45 -0
  105. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -0
  106. package/dist/channels/gitlab/gitlab-webhook.js +397 -0
  107. package/dist/channels/gitlab/index.d.ts +31 -0
  108. package/dist/channels/gitlab/index.d.ts.map +1 -0
  109. package/dist/channels/gitlab/index.js +30 -0
  110. package/dist/channels/gitlab/replay.d.ts +105 -0
  111. package/dist/channels/gitlab/replay.d.ts.map +1 -0
  112. package/dist/channels/gitlab/replay.js +206 -0
  113. package/dist/channels/gitlab/state.d.ts +33 -0
  114. package/dist/channels/gitlab/state.d.ts.map +1 -0
  115. package/dist/channels/gitlab/state.js +23 -0
  116. package/dist/channels/gitlab/types.d.ts +214 -0
  117. package/dist/channels/gitlab/types.d.ts.map +1 -0
  118. package/dist/channels/gitlab/types.js +1 -0
  119. package/dist/channels/issues/index.d.ts +4 -0
  120. package/dist/channels/issues/index.d.ts.map +1 -0
  121. package/dist/channels/issues/index.js +2 -0
  122. package/dist/channels/issues/issues-channel.d.ts +5 -0
  123. package/dist/channels/issues/issues-channel.d.ts.map +1 -0
  124. package/dist/channels/issues/issues-channel.js +37 -0
  125. package/dist/channels/issues/types.d.ts +33 -0
  126. package/dist/channels/issues/types.d.ts.map +1 -0
  127. package/dist/channels/issues/types.js +1 -0
  128. package/dist/channels/origin/api.d.ts.map +1 -1
  129. package/dist/channels/origin/api.js +4 -2
  130. package/dist/channels/origin/origin-channel.d.ts +4 -9
  131. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  132. package/dist/channels/origin/origin-channel.js +8 -48
  133. package/dist/channels/origin/types.d.ts +20 -2
  134. package/dist/channels/origin/types.d.ts.map +1 -1
  135. package/dist/channels/slack/eval-directive.d.ts.map +1 -1
  136. package/dist/channels/slack/eval-directive.js +1 -7
  137. package/dist/channels/slack/init.d.ts.map +1 -1
  138. package/dist/channels/slack/init.js +3 -3
  139. package/dist/channels/slack/setup.d.ts +1 -1
  140. package/dist/channels/slack/setup.d.ts.map +1 -1
  141. package/dist/channels/slack/setup.js +6 -13
  142. package/dist/channels/slack/types.d.ts +1 -1
  143. package/dist/channels/slack/types.d.ts.map +1 -1
  144. package/dist/channels.d.ts +1 -1
  145. package/dist/channels.d.ts.map +1 -1
  146. package/dist/client.d.ts +1 -1
  147. package/dist/client.js +1 -1
  148. package/dist/connections.d.ts +1 -1
  149. package/dist/connections.js +1 -1
  150. package/dist/docs/404.html +2 -2
  151. package/dist/docs/ab.html +4 -4
  152. package/dist/docs/assets/{app.CLA03RCz.js → app.DbMWUyGb.js} +1 -1
  153. package/dist/docs/assets/chunks/@localSearchIndexroot.Bqsulb9K.js +1 -0
  154. package/dist/docs/assets/chunks/{VPLocalSearchBox.ifxv-cJV.js → VPLocalSearchBox.DcNeTh9o.js} +1 -1
  155. package/dist/docs/assets/chunks/{theme.DWCwM6p-.js → theme.DMjhY3gl.js} +2 -2
  156. package/dist/docs/assets/concepts.md.DgEcZOfT.js +1 -0
  157. package/dist/docs/assets/{concepts.md.rPzW2HZN.lean.js → concepts.md.DgEcZOfT.lean.js} +1 -1
  158. package/dist/docs/assets/{evals.md.CPzDAwoH.js → evals.md.CbMoebP1.js} +1 -1
  159. package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +9 -0
  160. package/dist/docs/assets/{guides_github.md.BtPr9GaP.js → guides_github.md.c0gdGJ-D.js} +1 -1
  161. package/dist/docs/assets/{guides_github.md.BtPr9GaP.lean.js → guides_github.md.c0gdGJ-D.lean.js} +1 -1
  162. package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.js → guides_opentelemetry.md.COh9jFVg.js} +7 -8
  163. package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.lean.js → guides_opentelemetry.md.COh9jFVg.lean.js} +1 -1
  164. package/dist/docs/assets/{index.md.Kiht7ell.js → index.md.D75GWhPl.js} +1 -1
  165. package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.js → reference_agent-config.md.CHNpiyp4.js} +3 -3
  166. package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.js → reference_channels.md.DBGcaB7m.js} +2 -2
  167. package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.lean.js → reference_channels.md.DBGcaB7m.lean.js} +1 -1
  168. package/dist/docs/assets/{reference_cli.md.DfoeyvL0.js → reference_cli.md.CJNc_xYK.js} +1 -1
  169. package/dist/docs/assets/{reference_extensions.md.9WQMZe1l.js → reference_extensions.md.DykHW3qL.js} +11 -5
  170. package/dist/docs/assets/reference_extensions.md.DykHW3qL.lean.js +1 -0
  171. package/dist/docs/assets/reference_hooks.md.Ddt5DdgJ.js +73 -0
  172. package/dist/docs/assets/{reference_hooks.md.a8BJxMR5.lean.js → reference_hooks.md.Ddt5DdgJ.lean.js} +1 -1
  173. package/dist/docs/assets/{reference_playground.md.DnX5nL-B.js → reference_playground.md.4myJPxrf.js} +1 -1
  174. package/dist/docs/assets/{reference_project-layout.md.CA6QP6Lw.js → reference_project-layout.md.DuBu9a96.js} +2 -2
  175. package/dist/docs/assets/reference_result.md.BK5SxDrf.js +19 -0
  176. package/dist/docs/assets/reference_result.md.BK5SxDrf.lean.js +1 -0
  177. package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.js → reference_sessions.md.CueyOHSL.js} +1 -1
  178. package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.lean.js → reference_sessions.md.CueyOHSL.lean.js} +1 -1
  179. package/dist/docs/assets/{reference_tools.md.B1up2r9W.js → reference_tools.md.aGrn99hP.js} +1 -1
  180. package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +1 -0
  181. package/dist/docs/assets/{skills_otel.md.CgiZryR3.js → skills_otel.md.CqhobH3B.js} +3 -3
  182. package/dist/docs/assets/{skills_otel.md.CgiZryR3.lean.js → skills_otel.md.CqhobH3B.lean.js} +1 -1
  183. package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.js → templates_pr-autofixer.md.Bds_XWcV.js} +2 -2
  184. package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.lean.js → templates_pr-autofixer.md.Bds_XWcV.lean.js} +1 -1
  185. package/dist/docs/building-with-agents.html +4 -4
  186. package/dist/docs/concepts.html +5 -5
  187. package/dist/docs/concepts.md +2 -4
  188. package/dist/docs/deployment.html +4 -4
  189. package/dist/docs/design/filesystem.md +376 -0
  190. package/dist/docs/design/runtime-abstraction.md +2 -3
  191. package/dist/docs/evals.html +6 -6
  192. package/dist/docs/evals.md +9 -7
  193. package/dist/docs/guides/agent-to-agent.html +4 -4
  194. package/dist/docs/guides/cloud-agents.html +6 -6
  195. package/dist/docs/guides/cloud-agents.md +4 -6
  196. package/dist/docs/guides/convert-automation.html +4 -4
  197. package/dist/docs/guides/github.html +6 -6
  198. package/dist/docs/guides/github.md +5 -1
  199. package/dist/docs/guides/human-in-the-loop.html +4 -4
  200. package/dist/docs/guides/mcp-oauth.html +5 -5
  201. package/dist/docs/guides/opentelemetry.html +10 -11
  202. package/dist/docs/guides/opentelemetry.md +41 -17
  203. package/dist/docs/guides/slack.html +4 -4
  204. package/dist/docs/guides/webhooks.html +4 -4
  205. package/dist/docs/hashmap.json +1 -1
  206. package/dist/docs/hillclimbing.html +4 -4
  207. package/dist/docs/index.html +6 -6
  208. package/dist/docs/index.md +2 -2
  209. package/dist/docs/llms-full.txt +907 -262
  210. package/dist/docs/llms.txt +3 -2
  211. package/dist/docs/quickstart.html +4 -4
  212. package/dist/docs/reference/agent-config.html +8 -8
  213. package/dist/docs/reference/agent-config.md +6 -10
  214. package/dist/docs/reference/artifacts.html +5 -5
  215. package/dist/docs/reference/channels.html +6 -6
  216. package/dist/docs/reference/channels.md +38 -8
  217. package/dist/docs/reference/cli.html +5 -5
  218. package/dist/docs/reference/cli.md +3 -4
  219. package/dist/docs/reference/connections.html +4 -4
  220. package/dist/docs/reference/extensions.html +16 -10
  221. package/dist/docs/reference/extensions.md +86 -22
  222. package/dist/docs/reference/hooks.html +69 -10
  223. package/dist/docs/reference/hooks.md +215 -46
  224. package/dist/docs/reference/http-api.html +4 -4
  225. package/dist/docs/reference/instructions.html +4 -4
  226. package/dist/docs/reference/playground.html +5 -5
  227. package/dist/docs/reference/playground.md +3 -0
  228. package/dist/docs/reference/project-layout.html +6 -6
  229. package/dist/docs/reference/project-layout.md +2 -1
  230. package/dist/docs/reference/prompt.html +4 -4
  231. package/dist/docs/reference/result.html +45 -0
  232. package/dist/docs/reference/result.md +89 -0
  233. package/dist/docs/reference/schedules.html +4 -4
  234. package/dist/docs/reference/sessions.html +5 -5
  235. package/dist/docs/reference/sessions.md +3 -1
  236. package/dist/docs/reference/skills.html +4 -4
  237. package/dist/docs/reference/subagents.html +4 -4
  238. package/dist/docs/reference/tools.html +5 -5
  239. package/dist/docs/reference/tools.md +1 -2
  240. package/dist/docs/scaffolding-agents.html +4 -4
  241. package/dist/docs/skills/ab.html +4 -4
  242. package/dist/docs/skills/create-agent.html +4 -4
  243. package/dist/docs/skills/debug.html +4 -4
  244. package/dist/docs/skills/evals.html +4 -4
  245. package/dist/docs/skills/framework-map.html +5 -5
  246. package/dist/docs/skills/framework-map.md +3 -1
  247. package/dist/docs/skills/github.html +4 -4
  248. package/dist/docs/skills/hillclimb.html +4 -4
  249. package/dist/docs/skills/index.html +4 -4
  250. package/dist/docs/skills/mcp-auth.html +4 -4
  251. package/dist/docs/skills/otel.html +7 -7
  252. package/dist/docs/skills/otel.md +8 -3
  253. package/dist/docs/skills/setup-slack.html +4 -4
  254. package/dist/docs/storage.html +4 -4
  255. package/dist/docs/templates/agentic-owners.html +4 -4
  256. package/dist/docs/templates/agents-md.html +4 -4
  257. package/dist/docs/templates/code-wiki.html +4 -4
  258. package/dist/docs/templates/demo.html +4 -4
  259. package/dist/docs/templates/pr-autofixer.html +6 -6
  260. package/dist/docs/templates/pr-autofixer.md +0 -3
  261. package/dist/docs/templates/security-help.html +4 -4
  262. package/dist/docs/templates/security-reviewer.html +4 -4
  263. package/dist/docs/templates/triage.html +4 -4
  264. package/dist/docs/troubleshooting.html +4 -4
  265. package/dist/evals.d.ts +1 -1
  266. package/dist/evals.d.ts.map +1 -1
  267. package/dist/extensions.d.ts +20 -7
  268. package/dist/extensions.d.ts.map +1 -1
  269. package/dist/extensions.js +36 -5
  270. package/dist/files.d.ts +16 -3
  271. package/dist/files.d.ts.map +1 -1
  272. package/dist/files.js +16 -3
  273. package/dist/filesystem.d.ts +440 -0
  274. package/dist/filesystem.d.ts.map +1 -0
  275. package/dist/filesystem.js +1694 -0
  276. package/dist/index.d.ts +6 -4
  277. package/dist/index.d.ts.map +1 -1
  278. package/dist/index.js +4 -3
  279. package/dist/internal/ab-snapshot.d.ts.map +1 -1
  280. package/dist/internal/ab-snapshot.js +0 -1
  281. package/dist/internal/advertise-tools.d.ts.map +1 -1
  282. package/dist/internal/advertise-tools.js +1 -3
  283. package/dist/internal/authored-alias-hooks.d.ts +4 -13
  284. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  285. package/dist/internal/authored-alias-hooks.js +4 -20
  286. package/dist/internal/authored-loaders.d.ts +2 -3
  287. package/dist/internal/authored-loaders.d.ts.map +1 -1
  288. package/dist/internal/authored-loaders.js +6 -20
  289. package/dist/internal/channel-dispatch.d.ts +43 -0
  290. package/dist/internal/channel-dispatch.d.ts.map +1 -0
  291. package/dist/internal/channel-dispatch.js +77 -0
  292. package/dist/internal/chat-client.d.ts +1 -1
  293. package/dist/internal/chat-client.js +1 -1
  294. package/dist/internal/cli-ax.d.ts +5 -5
  295. package/dist/internal/cli-ax.d.ts.map +1 -1
  296. package/dist/internal/cli-ax.js +5 -5
  297. package/dist/internal/cli-bitbucket.d.ts +33 -0
  298. package/dist/internal/cli-bitbucket.d.ts.map +1 -0
  299. package/dist/internal/cli-bitbucket.js +359 -0
  300. package/dist/internal/cli-convert-automation.d.ts +1 -1
  301. package/dist/internal/cli-convert-automation.js +2 -2
  302. package/dist/internal/cli-cursor.d.ts +1 -1
  303. package/dist/internal/cli-cursor.d.ts.map +1 -1
  304. package/dist/internal/cli-cursor.js +2 -4
  305. package/dist/internal/cli-deploy.d.ts.map +1 -1
  306. package/dist/internal/cli-deploy.js +2 -6
  307. package/dist/internal/cli-github.d.ts +1 -1
  308. package/dist/internal/cli-github.js +3 -3
  309. package/dist/internal/cli-gitlab.d.ts +37 -0
  310. package/dist/internal/cli-gitlab.d.ts.map +1 -0
  311. package/dist/internal/cli-gitlab.js +380 -0
  312. package/dist/internal/cli-mcp.d.ts.map +1 -1
  313. package/dist/internal/cli-mcp.js +2 -6
  314. package/dist/internal/cli-slack.d.ts +1 -1
  315. package/dist/internal/cli-slack.d.ts.map +1 -1
  316. package/dist/internal/cli-slack.js +2 -4
  317. package/dist/internal/continuation-channel.d.ts +18 -2
  318. package/dist/internal/continuation-channel.d.ts.map +1 -1
  319. package/dist/internal/continuation-channel.js +67 -5
  320. package/dist/internal/continuation-identity.d.ts +24 -17
  321. package/dist/internal/continuation-identity.d.ts.map +1 -1
  322. package/dist/internal/continuation-identity.js +246 -32
  323. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  324. package/dist/internal/conversation-mirror.js +4 -3
  325. package/dist/internal/convert-automation/types.d.ts +1 -1
  326. package/dist/internal/convert-automation/types.js +1 -1
  327. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  328. package/dist/internal/cursor/account-mcp.js +1 -3
  329. package/dist/internal/cursor/backend-client.d.ts +5 -4
  330. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  331. package/dist/internal/cursor/backend-client.js +5 -6
  332. package/dist/internal/cursor/bound-secret-file.d.ts +56 -0
  333. package/dist/internal/cursor/bound-secret-file.d.ts.map +1 -0
  334. package/dist/internal/cursor/bound-secret-file.js +88 -0
  335. package/dist/internal/cursor/credentials.d.ts +39 -5
  336. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  337. package/dist/internal/cursor/credentials.js +58 -8
  338. package/dist/internal/cursor/hosted-bound-secrets.d.ts +41 -0
  339. package/dist/internal/cursor/hosted-bound-secrets.d.ts.map +1 -0
  340. package/dist/internal/cursor/hosted-bound-secrets.js +54 -0
  341. package/dist/internal/cursor/hosted-deployment-secrets.d.ts +19 -5
  342. package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -1
  343. package/dist/internal/cursor/hosted-deployment-secrets.js +29 -9
  344. package/dist/internal/cursor/hosted-store-secrets.d.ts +1 -1
  345. package/dist/internal/cursor/hosted-store-secrets.js +1 -1
  346. package/dist/internal/cursor-account-mcp-auth.d.ts.map +1 -1
  347. package/dist/internal/cursor-account-mcp-auth.js +2 -4
  348. package/dist/internal/cursor-deployment-relay.d.ts +6 -2
  349. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  350. package/dist/internal/cursor-deployment-relay.js +13 -9
  351. package/dist/internal/deploy-manifest.d.ts +1 -1
  352. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  353. package/dist/internal/deploy-manifest.js +1 -1
  354. package/dist/internal/discovery/ab.d.ts +1 -1
  355. package/dist/internal/discovery/ab.d.ts.map +1 -1
  356. package/dist/internal/discovery/ab.js +21 -9
  357. package/dist/internal/discovery/agent.d.ts +6 -1
  358. package/dist/internal/discovery/agent.d.ts.map +1 -1
  359. package/dist/internal/discovery/agent.js +141 -120
  360. package/dist/internal/discovery/channels.d.ts +1 -1
  361. package/dist/internal/discovery/channels.d.ts.map +1 -1
  362. package/dist/internal/discovery/channels.js +14 -14
  363. package/dist/internal/discovery/connections.d.ts +1 -5
  364. package/dist/internal/discovery/connections.d.ts.map +1 -1
  365. package/dist/internal/discovery/connections.js +30 -44
  366. package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -1
  367. package/dist/internal/discovery/cursor-plugin.js +1 -3
  368. package/dist/internal/discovery/extension-overlay.d.ts +32 -0
  369. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -0
  370. package/dist/internal/discovery/extension-overlay.js +191 -0
  371. package/dist/internal/discovery/extensions.d.ts +11 -2
  372. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  373. package/dist/internal/discovery/extensions.js +211 -74
  374. package/dist/internal/discovery/hooks.d.ts +1 -1
  375. package/dist/internal/discovery/hooks.d.ts.map +1 -1
  376. package/dist/internal/discovery/hooks.js +15 -2
  377. package/dist/internal/discovery/info.d.ts.map +1 -1
  378. package/dist/internal/discovery/info.js +10 -1
  379. package/dist/internal/discovery/modules.d.ts.map +1 -1
  380. package/dist/internal/discovery/modules.js +8 -2
  381. package/dist/internal/discovery/names.d.ts +1 -1
  382. package/dist/internal/discovery/names.d.ts.map +1 -1
  383. package/dist/internal/discovery/names.js +1 -0
  384. package/dist/internal/discovery/project.d.ts +0 -2
  385. package/dist/internal/discovery/project.d.ts.map +1 -1
  386. package/dist/internal/discovery/project.js +64 -10
  387. package/dist/internal/discovery/runtime.d.ts.map +1 -1
  388. package/dist/internal/discovery/runtime.js +1 -2
  389. package/dist/internal/discovery/schedules.d.ts +1 -1
  390. package/dist/internal/discovery/schedules.d.ts.map +1 -1
  391. package/dist/internal/discovery/schedules.js +23 -2
  392. package/dist/internal/discovery/services.d.ts +6 -2
  393. package/dist/internal/discovery/services.d.ts.map +1 -1
  394. package/dist/internal/discovery/services.js +31 -1
  395. package/dist/internal/discovery/skills.d.ts +1 -6
  396. package/dist/internal/discovery/skills.d.ts.map +1 -1
  397. package/dist/internal/discovery/skills.js +8 -3
  398. package/dist/internal/discovery/subagent.d.ts +3 -0
  399. package/dist/internal/discovery/subagent.d.ts.map +1 -1
  400. package/dist/internal/discovery/subagent.js +109 -0
  401. package/dist/internal/discovery.d.ts +1 -2
  402. package/dist/internal/discovery.d.ts.map +1 -1
  403. package/dist/internal/discovery.js +1 -2
  404. package/dist/internal/distribution.d.ts +10 -27
  405. package/dist/internal/distribution.d.ts.map +1 -1
  406. package/dist/internal/distribution.js +25 -73
  407. package/dist/internal/docs-site.js +1 -1
  408. package/dist/internal/eval-run-store.d.ts +0 -1
  409. package/dist/internal/eval-run-store.d.ts.map +1 -1
  410. package/dist/internal/eval-runner.d.ts.map +1 -1
  411. package/dist/internal/factory-resource-channel.d.ts +33 -0
  412. package/dist/internal/factory-resource-channel.d.ts.map +1 -0
  413. package/dist/internal/factory-resource-channel.js +77 -0
  414. package/dist/internal/filesystem/errors.d.ts +64 -0
  415. package/dist/internal/filesystem/errors.d.ts.map +1 -0
  416. package/dist/internal/filesystem/errors.js +175 -0
  417. package/dist/internal/filesystem/format.d.ts +28 -0
  418. package/dist/internal/filesystem/format.d.ts.map +1 -0
  419. package/dist/internal/filesystem/format.js +213 -0
  420. package/dist/internal/filesystem/merge.d.ts +34 -0
  421. package/dist/internal/filesystem/merge.d.ts.map +1 -0
  422. package/dist/internal/filesystem/merge.js +196 -0
  423. package/dist/internal/filesystem/scratch.d.ts +59 -0
  424. package/dist/internal/filesystem/scratch.d.ts.map +1 -0
  425. package/dist/internal/filesystem/scratch.js +212 -0
  426. package/dist/internal/filesystem/sdk-schemas.d.ts +29 -0
  427. package/dist/internal/filesystem/sdk-schemas.d.ts.map +1 -0
  428. package/dist/internal/filesystem/sdk-schemas.js +153 -0
  429. package/dist/internal/filesystem/tools.d.ts +42 -0
  430. package/dist/internal/filesystem/tools.d.ts.map +1 -0
  431. package/dist/internal/filesystem/tools.js +618 -0
  432. package/dist/internal/filesystem/walk.d.ts +74 -0
  433. package/dist/internal/filesystem/walk.d.ts.map +1 -0
  434. package/dist/internal/filesystem/walk.js +339 -0
  435. package/dist/internal/framework-file-storage.d.ts +8 -0
  436. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  437. package/dist/internal/framework-file-storage.js +8 -8
  438. package/dist/internal/github-fanout.d.ts +1 -1
  439. package/dist/internal/github-fanout.js +1 -1
  440. package/dist/internal/guest-network.d.ts +104 -0
  441. package/dist/internal/guest-network.d.ts.map +1 -0
  442. package/dist/internal/guest-network.js +309 -0
  443. package/dist/internal/host-otel.d.ts +3 -3
  444. package/dist/internal/host-otel.d.ts.map +1 -1
  445. package/dist/internal/host-otel.js +8 -4
  446. package/dist/internal/hosted-admission-adapter.d.ts +8 -7
  447. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  448. package/dist/internal/hosted-delivery-protocol.d.ts +6 -0
  449. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  450. package/dist/internal/hosted-delivery-protocol.js +18 -5
  451. package/dist/internal/hosted-delivery.d.ts +18 -0
  452. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  453. package/dist/internal/hosted-delivery.js +258 -118
  454. package/dist/internal/http-channel.d.ts.map +1 -1
  455. package/dist/internal/http-channel.js +1 -3
  456. package/dist/internal/init-interview.d.ts.map +1 -1
  457. package/dist/internal/init-interview.js +1 -3
  458. package/dist/internal/init-project.d.ts +2 -2
  459. package/dist/internal/init-project.js +2 -2
  460. package/dist/internal/inline-stdio-define-stub.d.ts +1 -1
  461. package/dist/internal/inline-stdio-define-stub.d.ts.map +1 -1
  462. package/dist/internal/inline-stdio-define-stub.js +1 -1
  463. package/dist/internal/is-record.d.ts +2 -0
  464. package/dist/internal/is-record.d.ts.map +1 -0
  465. package/dist/internal/is-record.js +3 -0
  466. package/dist/internal/json-schema.d.ts.map +1 -1
  467. package/dist/internal/json-schema.js +18 -10
  468. package/dist/internal/local-control-plane.d.ts +1 -2
  469. package/dist/internal/local-control-plane.d.ts.map +1 -1
  470. package/dist/internal/local-control-plane.js +3 -20
  471. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  472. package/dist/internal/mcp-endpoint.js +1 -3
  473. package/dist/internal/otel/collector.d.ts +12 -3
  474. package/dist/internal/otel/collector.d.ts.map +1 -1
  475. package/dist/internal/otel/collector.js +77 -125
  476. package/dist/internal/otel/config.d.ts +0 -2
  477. package/dist/internal/otel/config.d.ts.map +1 -1
  478. package/dist/internal/otel/config.js +17 -20
  479. package/dist/internal/otel/http.d.ts +2 -0
  480. package/dist/internal/otel/http.d.ts.map +1 -1
  481. package/dist/internal/otel/http.js +7 -1
  482. package/dist/internal/otel/mcp.d.ts.map +1 -1
  483. package/dist/internal/otel/mcp.js +3 -16
  484. package/dist/internal/otel/runtime.d.ts +26 -1
  485. package/dist/internal/otel/runtime.d.ts.map +1 -1
  486. package/dist/internal/otel/runtime.js +164 -15
  487. package/dist/internal/package-inline-stdio.d.ts.map +1 -1
  488. package/dist/internal/package-inline-stdio.js +3 -11
  489. package/dist/internal/playground/toolchain.d.ts +1 -1
  490. package/dist/internal/playground/toolchain.d.ts.map +1 -1
  491. package/dist/internal/playground/toolchain.js +1 -1
  492. package/dist/internal/request-error-status.d.ts +12 -0
  493. package/dist/internal/request-error-status.d.ts.map +1 -0
  494. package/dist/internal/request-error-status.js +52 -0
  495. package/dist/internal/resolve-prod-target.d.ts +1 -1
  496. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  497. package/dist/internal/resolve-prod-target.js +3 -7
  498. package/dist/internal/result-output.d.ts +18 -0
  499. package/dist/internal/result-output.d.ts.map +1 -0
  500. package/dist/internal/result-output.js +33 -0
  501. package/dist/internal/run-client.d.ts +2 -2
  502. package/dist/internal/run-client.js +2 -2
  503. package/dist/internal/runtime-dispatch-runner.d.ts +1 -11
  504. package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
  505. package/dist/internal/runtime-dispatch-runner.js +2 -15
  506. package/dist/internal/sdk-runner.d.ts +1 -1
  507. package/dist/internal/sdk-runner.d.ts.map +1 -1
  508. package/dist/internal/sdk-runner.js +6 -7
  509. package/dist/internal/server.d.ts.map +1 -1
  510. package/dist/internal/server.js +110 -35
  511. package/dist/internal/session-cost.d.ts +3 -3
  512. package/dist/internal/session-cost.d.ts.map +1 -1
  513. package/dist/internal/session-cost.js +3 -3
  514. package/dist/internal/session-engine.d.ts +48 -11
  515. package/dist/internal/session-engine.d.ts.map +1 -1
  516. package/dist/internal/session-engine.js +507 -115
  517. package/dist/internal/session-run-log.d.ts.map +1 -1
  518. package/dist/internal/session-run-log.js +1 -3
  519. package/dist/internal/skills-sync.d.ts +1 -4
  520. package/dist/internal/skills-sync.d.ts.map +1 -1
  521. package/dist/internal/skills-sync.js +10 -50
  522. package/dist/internal/sleep.d.ts +2 -0
  523. package/dist/internal/sleep.d.ts.map +1 -0
  524. package/dist/internal/sleep.js +3 -0
  525. package/dist/internal/store-mirror.d.ts +29 -0
  526. package/dist/internal/store-mirror.d.ts.map +1 -0
  527. package/dist/internal/store-mirror.js +70 -0
  528. package/dist/internal/tenant-slack/relay.d.ts +73 -0
  529. package/dist/internal/tenant-slack/relay.d.ts.map +1 -0
  530. package/dist/internal/tenant-slack/relay.js +138 -0
  531. package/dist/internal/testing/factory-resource-fixtures.d.ts +48 -0
  532. package/dist/internal/testing/factory-resource-fixtures.d.ts.map +1 -0
  533. package/dist/internal/testing/factory-resource-fixtures.js +41 -0
  534. package/dist/internal/testing/scm-continuation-fixtures.d.ts +33 -0
  535. package/dist/internal/testing/scm-continuation-fixtures.d.ts.map +1 -0
  536. package/dist/internal/testing/scm-continuation-fixtures.js +253 -0
  537. package/dist/internal/workspace-sync.d.ts +22 -0
  538. package/dist/internal/workspace-sync.d.ts.map +1 -0
  539. package/dist/internal/workspace-sync.js +49 -0
  540. package/dist/internal/workspace.d.ts +7 -0
  541. package/dist/internal/workspace.d.ts.map +1 -1
  542. package/dist/internal/workspace.js +13 -0
  543. package/dist/otel.d.ts +23 -1
  544. package/dist/otel.d.ts.map +1 -1
  545. package/dist/otel.js +93 -2
  546. package/dist/playground/assets/index-8YiozU89.js +67 -0
  547. package/dist/playground/assets/index-MbMxXg-y.css +1 -0
  548. package/dist/playground/index.html +2 -2
  549. package/dist/result.d.ts +24 -0
  550. package/dist/result.d.ts.map +1 -0
  551. package/dist/result.js +27 -0
  552. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  553. package/dist/storage-backends/cursor-hosted.js +7 -4
  554. package/dist/storage-protocol.d.ts.map +1 -1
  555. package/dist/storage-protocol.js +1 -3
  556. package/dist/types.d.ts +141 -26
  557. package/dist/types.d.ts.map +1 -1
  558. package/docs/README.md +2 -2
  559. package/docs/concepts.md +2 -4
  560. package/docs/design/filesystem.md +376 -0
  561. package/docs/design/runtime-abstraction.md +2 -3
  562. package/docs/evals.md +9 -7
  563. package/docs/guides/cloud-agents.md +4 -6
  564. package/docs/guides/github.md +5 -1
  565. package/docs/guides/opentelemetry.md +41 -17
  566. package/docs/reference/agent-config.md +6 -10
  567. package/docs/reference/channels.md +38 -8
  568. package/docs/reference/cli.md +3 -4
  569. package/docs/reference/extensions.md +87 -23
  570. package/docs/reference/hooks.md +215 -46
  571. package/docs/reference/playground.md +3 -0
  572. package/docs/reference/project-layout.md +2 -1
  573. package/docs/reference/result.md +94 -0
  574. package/docs/reference/sessions.md +3 -1
  575. package/docs/reference/tools.md +1 -2
  576. package/docs/templates/pr-autofixer.md +0 -3
  577. package/package.json +42 -9
  578. package/skills/framework-map/SKILL.md +3 -1
  579. package/skills/otel/SKILL.md +8 -3
  580. package/src/ab.ts +1 -1
  581. package/src/bin/agent-serve.ts +121 -21
  582. package/src/channels/bitbucket/api.ts +623 -0
  583. package/src/channels/bitbucket/binding.ts +414 -0
  584. package/src/channels/bitbucket/bitbucket-channel.ts +182 -0
  585. package/src/channels/bitbucket/bitbucket-webhook.ts +576 -0
  586. package/src/channels/bitbucket/checks.ts +154 -0
  587. package/src/channels/bitbucket/cursor-account.ts +117 -0
  588. package/src/channels/bitbucket/defaults.ts +110 -0
  589. package/src/channels/bitbucket/events.ts +84 -0
  590. package/src/channels/bitbucket/index.ts +49 -0
  591. package/src/channels/bitbucket/replay.ts +439 -0
  592. package/src/channels/bitbucket/state.ts +59 -0
  593. package/src/channels/bitbucket/types.ts +266 -0
  594. package/src/channels/change-monitors/change-monitors-channel.ts +62 -0
  595. package/src/channels/change-monitors/index.ts +8 -0
  596. package/src/channels/change-monitors/types.ts +44 -0
  597. package/src/channels/deployments/deployments-channel.ts +25 -43
  598. package/src/channels/deployments/types.ts +12 -6
  599. package/src/channels/github/binding.ts +8 -1
  600. package/src/channels/github/cursor-account.ts +17 -6
  601. package/src/channels/github/defaults.ts +4 -0
  602. package/src/channels/github/events.ts +1 -1
  603. package/src/channels/github/forward.ts +3 -2
  604. package/src/channels/github/github-channel.ts +74 -221
  605. package/src/channels/github/progress.ts +76 -10
  606. package/src/channels/github/replay.ts +1 -1
  607. package/src/channels/github/state.ts +6 -0
  608. package/src/channels/github/types.ts +2 -5
  609. package/src/channels/gitlab/api.ts +228 -0
  610. package/src/channels/gitlab/binding.ts +233 -0
  611. package/src/channels/gitlab/checks.ts +243 -0
  612. package/src/channels/gitlab/cursor-account.ts +114 -0
  613. package/src/channels/gitlab/defaults.ts +93 -0
  614. package/src/channels/gitlab/events.ts +44 -0
  615. package/src/channels/gitlab/gitlab-channel.ts +176 -0
  616. package/src/channels/gitlab/gitlab-webhook.ts +555 -0
  617. package/src/channels/gitlab/index.ts +43 -0
  618. package/src/channels/gitlab/replay.ts +347 -0
  619. package/src/channels/gitlab/state.ts +55 -0
  620. package/src/channels/gitlab/types.ts +263 -0
  621. package/src/channels/issues/index.ts +9 -0
  622. package/src/channels/issues/issues-channel.ts +51 -0
  623. package/src/channels/issues/types.ts +41 -0
  624. package/src/channels/origin/api.ts +4 -2
  625. package/src/channels/origin/origin-channel.ts +19 -94
  626. package/src/channels/origin/types.ts +23 -2
  627. package/src/channels/slack/eval-directive.ts +1 -6
  628. package/src/channels/slack/init.ts +6 -3
  629. package/src/channels/slack/setup.ts +7 -6
  630. package/src/channels/slack/types.ts +1 -1
  631. package/src/channels.ts +0 -1
  632. package/src/client.ts +1 -1
  633. package/src/connections.ts +1 -1
  634. package/src/evals.ts +1 -1
  635. package/src/extensions.ts +47 -5
  636. package/src/files.ts +21 -3
  637. package/src/filesystem.ts +2074 -0
  638. package/src/index.ts +48 -28
  639. package/src/internal/ab-snapshot.ts +0 -3
  640. package/src/internal/advertise-tools.ts +1 -4
  641. package/src/internal/authored-alias-hooks.ts +4 -21
  642. package/src/internal/authored-loaders.ts +6 -23
  643. package/src/internal/channel-dispatch.ts +160 -0
  644. package/src/internal/chat-client.ts +1 -1
  645. package/src/internal/cli-ax.ts +5 -5
  646. package/src/internal/cli-bitbucket.ts +477 -0
  647. package/src/internal/cli-convert-automation.ts +7 -7
  648. package/src/internal/cli-cursor.ts +2 -5
  649. package/src/internal/cli-deploy.ts +2 -8
  650. package/src/internal/cli-github.ts +3 -3
  651. package/src/internal/cli-gitlab.ts +485 -0
  652. package/src/internal/cli-mcp.ts +2 -7
  653. package/src/internal/cli-slack.ts +2 -5
  654. package/src/internal/continuation-channel.ts +102 -4
  655. package/src/internal/continuation-identity.ts +338 -35
  656. package/src/internal/conversation-mirror.ts +4 -3
  657. package/src/internal/convert-automation/types.ts +1 -1
  658. package/src/internal/cursor/account-mcp.ts +1 -4
  659. package/src/internal/cursor/backend-client.ts +9 -10
  660. package/src/internal/cursor/bound-secret-file.ts +108 -0
  661. package/src/internal/cursor/credentials.ts +75 -10
  662. package/src/internal/cursor/hosted-bound-secrets.ts +75 -0
  663. package/src/internal/cursor/hosted-deployment-secrets.ts +42 -11
  664. package/src/internal/cursor/hosted-store-secrets.ts +1 -1
  665. package/src/internal/cursor-account-mcp-auth.ts +2 -5
  666. package/src/internal/cursor-deployment-relay.ts +11 -7
  667. package/src/internal/deploy-manifest.ts +4 -2
  668. package/src/internal/discovery/ab.ts +29 -9
  669. package/src/internal/discovery/agent.ts +181 -136
  670. package/src/internal/discovery/channels.ts +15 -13
  671. package/src/internal/discovery/connections.ts +55 -50
  672. package/src/internal/discovery/cursor-plugin.ts +1 -4
  673. package/src/internal/discovery/extension-overlay.ts +274 -0
  674. package/src/internal/discovery/extensions.ts +330 -105
  675. package/src/internal/discovery/hooks.ts +20 -2
  676. package/src/internal/discovery/info.ts +10 -0
  677. package/src/internal/discovery/modules.ts +8 -2
  678. package/src/internal/discovery/names.ts +2 -1
  679. package/src/internal/discovery/project.ts +80 -9
  680. package/src/internal/discovery/runtime.ts +1 -2
  681. package/src/internal/discovery/schedules.ts +28 -2
  682. package/src/internal/discovery/services.ts +37 -1
  683. package/src/internal/discovery/skills.ts +13 -3
  684. package/src/internal/discovery/subagent.ts +107 -0
  685. package/src/internal/discovery.ts +0 -2
  686. package/src/internal/distribution.ts +35 -83
  687. package/src/internal/docs-site.ts +1 -1
  688. package/src/internal/eval-run-store.ts +0 -7
  689. package/src/internal/eval-runner.ts +0 -1
  690. package/src/internal/factory-resource-channel.ts +122 -0
  691. package/src/internal/filesystem/errors.ts +220 -0
  692. package/src/internal/filesystem/format.ts +276 -0
  693. package/src/internal/filesystem/merge.ts +195 -0
  694. package/src/internal/filesystem/scratch.ts +255 -0
  695. package/src/internal/filesystem/sdk-schemas.ts +204 -0
  696. package/src/internal/filesystem/tools.ts +821 -0
  697. package/src/internal/filesystem/walk.ts +369 -0
  698. package/src/internal/framework-file-storage.ts +8 -8
  699. package/src/internal/github-fanout.ts +1 -1
  700. package/src/internal/guest-network.ts +389 -0
  701. package/src/internal/host-otel.ts +8 -4
  702. package/src/internal/hosted-admission-adapter.ts +8 -8
  703. package/src/internal/hosted-delivery-protocol.ts +26 -1
  704. package/src/internal/hosted-delivery.ts +393 -192
  705. package/src/internal/http-channel.ts +1 -4
  706. package/src/internal/init-interview.ts +1 -4
  707. package/src/internal/init-project.ts +2 -2
  708. package/src/internal/inline-stdio-define-stub.ts +1 -1
  709. package/src/internal/is-record.ts +3 -0
  710. package/src/internal/json-schema.ts +19 -10
  711. package/src/internal/local-control-plane.ts +5 -24
  712. package/src/internal/mcp-endpoint.ts +1 -4
  713. package/src/internal/otel/collector.ts +94 -159
  714. package/src/internal/otel/config.ts +10 -14
  715. package/src/internal/otel/http.ts +14 -1
  716. package/src/internal/otel/mcp.ts +3 -16
  717. package/src/internal/otel/runtime.ts +240 -25
  718. package/src/internal/package-inline-stdio.ts +3 -12
  719. package/src/internal/playground/toolchain.ts +1 -1
  720. package/src/internal/request-error-status.ts +72 -0
  721. package/src/internal/resolve-prod-target.ts +3 -8
  722. package/src/internal/result-output.ts +34 -0
  723. package/src/internal/run-client.ts +2 -2
  724. package/src/internal/runtime-dispatch-runner.ts +3 -21
  725. package/src/internal/sdk-runner.ts +7 -7
  726. package/src/internal/server.ts +153 -44
  727. package/src/internal/session-cost.ts +3 -3
  728. package/src/internal/session-engine.ts +621 -103
  729. package/src/internal/session-run-log.ts +1 -4
  730. package/src/internal/skills-sync.ts +13 -63
  731. package/src/internal/sleep.ts +3 -0
  732. package/src/internal/store-mirror.ts +86 -0
  733. package/src/internal/tenant-slack/relay.ts +179 -0
  734. package/src/internal/testing/factory-resource-fixtures.ts +85 -0
  735. package/src/internal/testing/scm-continuation-fixtures.ts +286 -0
  736. package/src/internal/workspace-sync.ts +55 -0
  737. package/src/internal/workspace.ts +14 -0
  738. package/src/otel.ts +143 -3
  739. package/src/result.ts +36 -0
  740. package/src/storage-backends/cursor-hosted.ts +7 -4
  741. package/src/storage-protocol.ts +1 -4
  742. package/src/types.ts +154 -37
  743. package/templates/triage/agent/lib/types.ts +0 -2
  744. package/dist/continuation.d.ts +0 -20
  745. package/dist/continuation.d.ts.map +0 -1
  746. package/dist/continuation.js +0 -18
  747. package/dist/docs/assets/chunks/@localSearchIndexroot.FAqdWIXo.js +0 -1
  748. package/dist/docs/assets/concepts.md.rPzW2HZN.js +0 -1
  749. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +0 -9
  750. package/dist/docs/assets/guides_cloud-runtime.md.BRirbRAN.js +0 -9
  751. package/dist/docs/assets/guides_cloud-runtime.md.BRirbRAN.lean.js +0 -1
  752. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +0 -1
  753. package/dist/docs/assets/reference_hooks.md.a8BJxMR5.js +0 -14
  754. package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +0 -1
  755. package/dist/docs/guides/cloud-runtime.html +0 -35
  756. package/dist/docs/guides/cloud-runtime.md +0 -117
  757. package/dist/internal/convert-automation/index.d.ts +0 -3
  758. package/dist/internal/convert-automation/index.d.ts.map +0 -1
  759. package/dist/internal/convert-automation/index.js +0 -1
  760. package/dist/internal/grokbot/runner.d.ts +0 -64
  761. package/dist/internal/grokbot/runner.d.ts.map +0 -1
  762. package/dist/internal/grokbot/runner.js +0 -282
  763. package/dist/internal/managed-delivery.d.ts +0 -80
  764. package/dist/internal/managed-delivery.d.ts.map +0 -1
  765. package/dist/internal/managed-delivery.js +0 -86
  766. package/dist/internal/review-comments.d.ts +0 -370
  767. package/dist/internal/review-comments.d.ts.map +0 -1
  768. package/dist/internal/review-comments.js +0 -921
  769. package/dist/internal/shallow-clone.d.ts +0 -176
  770. package/dist/internal/shallow-clone.d.ts.map +0 -1
  771. package/dist/internal/shallow-clone.js +0 -419
  772. package/dist/playground/assets/index-B6C9S9nG.css +0 -1
  773. package/dist/playground/assets/index-ZqNoT8Ie.js +0 -69
  774. package/docs/guides/cloud-runtime.md +0 -122
  775. package/src/continuation.ts +0 -49
  776. package/src/internal/convert-automation/index.ts +0 -10
  777. package/src/internal/grokbot/runner.ts +0 -370
  778. package/src/internal/managed-delivery.ts +0 -125
  779. package/src/internal/review-comments.ts +0 -1363
  780. package/src/internal/shallow-clone.ts +0 -609
  781. /package/dist/docs/assets/{evals.md.CPzDAwoH.lean.js → evals.md.CbMoebP1.lean.js} +0 -0
  782. /package/dist/docs/assets/{guides_cloud-agents.md.DumwWXba.lean.js → guides_cloud-agents.md.DS8RIjwx.lean.js} +0 -0
  783. /package/dist/docs/assets/{index.md.Kiht7ell.lean.js → index.md.D75GWhPl.lean.js} +0 -0
  784. /package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.lean.js → reference_agent-config.md.CHNpiyp4.lean.js} +0 -0
  785. /package/dist/docs/assets/{reference_cli.md.DfoeyvL0.lean.js → reference_cli.md.CJNc_xYK.lean.js} +0 -0
  786. /package/dist/docs/assets/{reference_playground.md.DnX5nL-B.lean.js → reference_playground.md.4myJPxrf.lean.js} +0 -0
  787. /package/dist/docs/assets/{reference_project-layout.md.CA6QP6Lw.lean.js → reference_project-layout.md.DuBu9a96.lean.js} +0 -0
  788. /package/dist/docs/assets/{reference_tools.md.B1up2r9W.lean.js → reference_tools.md.aGrn99hP.lean.js} +0 -0
  789. /package/dist/docs/assets/{skills_framework-map.md.DDa4MeEW.lean.js → skills_framework-map.md.haibFyoB.lean.js} +0 -0
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Bitbucket REST client for the Bitbucket channel — the `createGitLabClient`
3
+ * analogue, with one `BitbucketApi` facade implemented twice: Cloud 2.0
4
+ * (`https://api.bitbucket.org/2.0/repositories/{workspace}/{slug}/…`) and
5
+ * Data Center 1.0 (`<host>/rest/api/1.0/projects/{KEY}/repos/{slug}/…`).
6
+ * The dialect comes from the delivery payload shape, never a round trip.
7
+ *
8
+ * Two transports:
9
+ *
10
+ * - **Direct**: `Authorization: Bearer` with a repository / workspace /
11
+ * HTTP access token from options or `BITBUCKET_TOKEN`. The base defaults
12
+ * to `BITBUCKET_API_BASE_URL`, else api.bitbucket.org (Cloud). Data Center
13
+ * deploys must configure one; `ctx.bitbucket` never derives the host from
14
+ * the webhook payload — only the replay CLI passes a user-supplied repo URL.
15
+ * - **Proxy** (`--cursor-scm-proxy` with `cursorAccount`): the backend
16
+ * forwarder at `/v0/bitbucket-proxy`. Calls carry the Cursor API key as
17
+ * the bearer plus `x-cursor-bitbucket-repos` naming the repo the call is
18
+ * scoped to; the backend swaps in the tenant's Bitbucket credential and
19
+ * picks the upstream (Cloud 2.0 or the DC host's 1.0) per tenant.
20
+ */
21
+ import type { BitbucketDialect, BitbucketRepositoryRef } from "./types.js";
22
+ export declare const DEFAULT_BITBUCKET_CLOUD_API_BASE_URL = "https://api.bitbucket.org/2.0";
23
+ /** Header the SCM proxy reads to scope a Bitbucket call to one repo. */
24
+ export declare const CURSOR_BITBUCKET_REPOS_HEADER = "x-cursor-bitbucket-repos";
25
+ export type BitbucketApiMethod = "DELETE" | "GET" | "PATCH" | "POST" | "PUT";
26
+ /** Normalized Bitbucket REST failure — the `GitLabApiError` analogue. */
27
+ export declare class BitbucketApiError extends Error {
28
+ readonly body: unknown;
29
+ readonly method: string;
30
+ readonly path: string;
31
+ readonly status: number;
32
+ constructor(input: {
33
+ body: unknown;
34
+ method: string;
35
+ path: string;
36
+ status: number;
37
+ });
38
+ }
39
+ export type BitbucketTokenProvider = () => Promise<string> | string;
40
+ /** Backend SCM-proxy transport bound by the serve host in proxy mode. */
41
+ export interface BitbucketProxyTransport {
42
+ /** `/v0/bitbucket-proxy` base, see `resolveCursorBitbucketProxyUrl`. */
43
+ apiBaseUrl: string;
44
+ /** Cursor API key sent as the bearer; the proxy swaps in the Bitbucket token. */
45
+ getApiKey: () => Promise<string>;
46
+ /** Static headers added to every call (repo scope when declared). */
47
+ headers?: Readonly<Record<string, string>>;
48
+ }
49
+ export interface BitbucketClientOptions {
50
+ /**
51
+ * REST base, e.g. `https://bitbucket.example.com/rest/api/1.0`. Falls back
52
+ * to `BITBUCKET_API_BASE_URL`.
53
+ */
54
+ apiBaseUrl?: string;
55
+ /** Access token or provider for direct calls. Falls back to `BITBUCKET_TOKEN`. */
56
+ token?: string | BitbucketTokenProvider;
57
+ /** Route through the Cursor SCM proxy instead of calling Bitbucket directly. */
58
+ proxy?: BitbucketProxyTransport;
59
+ /**
60
+ * Repo (`workspace/slug` or `PROJECT/slug`) every call is scoped to.
61
+ * Proxy mode sends it as `x-cursor-bitbucket-repos` when no static header
62
+ * names one.
63
+ */
64
+ repo?: string;
65
+ /** Injectable fetch for tests. */
66
+ fetch?: typeof fetch;
67
+ }
68
+ export interface BitbucketRequestInput {
69
+ method: BitbucketApiMethod;
70
+ /** Path under the API base, e.g. `/repositories/acme/widgets/pullrequests/7`. */
71
+ path: string;
72
+ query?: Record<string, string | number | boolean | undefined>;
73
+ body?: unknown;
74
+ /**
75
+ * `Accept` header. `application/json` (default) parses the body; anything
76
+ * else (`text/plain` for diffs and raw files) returns the body text.
77
+ */
78
+ accept?: string;
79
+ }
80
+ /** Minimal authenticated Bitbucket REST client. */
81
+ export interface BitbucketClient {
82
+ readonly apiBaseUrl: string;
83
+ /** Call a Bitbucket REST path. Throws {@link BitbucketApiError} on non-2xx. */
84
+ request<T = unknown>(input: BitbucketRequestInput): Promise<T>;
85
+ }
86
+ /** `BITBUCKET_TOKEN` when set. */
87
+ export declare function envBitbucketToken(env?: NodeJS.ProcessEnv): string | undefined;
88
+ /**
89
+ * REST base for direct calls: `BITBUCKET_API_BASE_URL`, else api.bitbucket.org
90
+ * 2.0 for Cloud, else `/rest/api/1.0` on `repoHtmlUrl`'s origin. Callers must
91
+ * only pass a `repoHtmlUrl` the operator supplied (the replay CLI), never one
92
+ * read from a delivery payload.
93
+ */
94
+ export declare function bitbucketApiBaseUrl(input: {
95
+ dialect: BitbucketDialect;
96
+ repoHtmlUrl?: string;
97
+ env?: NodeJS.ProcessEnv;
98
+ }): string | undefined;
99
+ export declare function createBitbucketClient(options?: BitbucketClientOptions): BitbucketClient;
100
+ /** Build-status states shared by both dialects (DC `STOPPED` → `CANCELLED`). */
101
+ export type BitbucketBuildStatusState = "INPROGRESS" | "SUCCESSFUL" | "FAILED" | "STOPPED";
102
+ export interface BitbucketBuildStatusInput {
103
+ sha: string;
104
+ /** Stable key per status row (`cursor/security-review`). */
105
+ key: string;
106
+ state: BitbucketBuildStatusState;
107
+ /** Display name; defaults to {@link key}. */
108
+ name?: string;
109
+ /** "Details" link. Both dialects require one; falls back to the repo URL. */
110
+ url?: string;
111
+ description?: string;
112
+ }
113
+ export interface BitbucketPullRequestCommentInput {
114
+ body: string;
115
+ /**
116
+ * Anchor the comment to a file line. Cloud posts `inline`; Data Center
117
+ * posts an `anchor` on the destination side. Omit for a top-level comment.
118
+ */
119
+ inline?: {
120
+ path: string;
121
+ line?: number;
122
+ };
123
+ }
124
+ /** Comment as returned by either dialect, minimally normalized. */
125
+ export interface BitbucketApiComment {
126
+ id: number;
127
+ body: string;
128
+ authorId?: string;
129
+ path?: string;
130
+ line?: number;
131
+ raw: unknown;
132
+ }
133
+ /** Pull request as returned by either dialect, minimally normalized. */
134
+ export interface BitbucketApiPullRequest {
135
+ id: number;
136
+ title?: string;
137
+ description?: string;
138
+ state?: string;
139
+ sourceBranch?: string;
140
+ targetBranch?: string;
141
+ headSha?: string;
142
+ baseSha?: string;
143
+ htmlUrl?: string;
144
+ raw: unknown;
145
+ }
146
+ /**
147
+ * The handful of operations review products need, implemented once per
148
+ * dialect. `ctx.bitbucket.api` is the repo-bound instance.
149
+ */
150
+ export interface BitbucketApi {
151
+ readonly dialect: BitbucketDialect;
152
+ readonly repository: BitbucketRepositoryRef;
153
+ getPullRequest(id: number): Promise<BitbucketApiPullRequest>;
154
+ /** Unified diff of the pull request (`text/plain`). */
155
+ getPullRequestDiff(id: number): Promise<string>;
156
+ listPullRequestComments(id: number): Promise<BitbucketApiComment[]>;
157
+ postPullRequestComment(id: number, input: BitbucketPullRequestCommentInput): Promise<BitbucketApiComment>;
158
+ setBuildStatus(input: BitbucketBuildStatusInput): Promise<unknown>;
159
+ /** Raw file contents at `ref` (branch, tag, or SHA). */
160
+ getFileAtRef(path: string, ref: string): Promise<string>;
161
+ }
162
+ /** `/repositories/{workspace}/{slug}` — Bitbucket Cloud 2.0. */
163
+ export declare function bitbucketCloudRepoPath(repository: {
164
+ owner: string;
165
+ slug: string;
166
+ }): string;
167
+ /** `/projects/{KEY}/repos/{slug}` — Bitbucket Data Center 1.0. */
168
+ export declare function bitbucketDataCenterRepoPath(repository: {
169
+ owner: string;
170
+ slug: string;
171
+ }): string;
172
+ export declare function cloudBitbucketApi(client: BitbucketClient, repository: BitbucketRepositoryRef): BitbucketApi;
173
+ export declare function dcBitbucketApi(client: BitbucketClient, repository: BitbucketRepositoryRef): BitbucketApi;
174
+ /** Pick the dialect implementation for `repository.dialect`. */
175
+ export declare function createBitbucketApi(client: BitbucketClient, repository: BitbucketRepositoryRef): BitbucketApi;
176
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/channels/bitbucket/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,419 @@
1
+ /**
2
+ * Bitbucket REST client for the Bitbucket channel — the `createGitLabClient`
3
+ * analogue, with one `BitbucketApi` facade implemented twice: Cloud 2.0
4
+ * (`https://api.bitbucket.org/2.0/repositories/{workspace}/{slug}/…`) and
5
+ * Data Center 1.0 (`<host>/rest/api/1.0/projects/{KEY}/repos/{slug}/…`).
6
+ * The dialect comes from the delivery payload shape, never a round trip.
7
+ *
8
+ * Two transports:
9
+ *
10
+ * - **Direct**: `Authorization: Bearer` with a repository / workspace /
11
+ * HTTP access token from options or `BITBUCKET_TOKEN`. The base defaults
12
+ * to `BITBUCKET_API_BASE_URL`, else api.bitbucket.org (Cloud). Data Center
13
+ * deploys must configure one; `ctx.bitbucket` never derives the host from
14
+ * the webhook payload — only the replay CLI passes a user-supplied repo URL.
15
+ * - **Proxy** (`--cursor-scm-proxy` with `cursorAccount`): the backend
16
+ * forwarder at `/v0/bitbucket-proxy`. Calls carry the Cursor API key as
17
+ * the bearer plus `x-cursor-bitbucket-repos` naming the repo the call is
18
+ * scoped to; the backend swaps in the tenant's Bitbucket credential and
19
+ * picks the upstream (Cloud 2.0 or the DC host's 1.0) per tenant.
20
+ */
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ export const DEFAULT_BITBUCKET_CLOUD_API_BASE_URL = "https://api.bitbucket.org/2.0";
31
+ /** Header the SCM proxy reads to scope a Bitbucket call to one repo. */
32
+ export const CURSOR_BITBUCKET_REPOS_HEADER = "x-cursor-bitbucket-repos";
33
+ /** Normalized Bitbucket REST failure — the `GitLabApiError` analogue. */
34
+ export class BitbucketApiError extends Error {
35
+ constructor(input) {
36
+ super(`Bitbucket ${input.method} ${input.path} failed with HTTP ${input.status}.`);
37
+ this.name = "BitbucketApiError";
38
+ this.body = input.body;
39
+ this.method = input.method;
40
+ this.path = input.path;
41
+ this.status = input.status;
42
+ }
43
+ }
44
+ function envValue(value) {
45
+ const trimmed = value === null || value === void 0 ? void 0 : value.trim();
46
+ return trimmed === undefined || trimmed === "" ? undefined : trimmed;
47
+ }
48
+ /** `BITBUCKET_TOKEN` when set. */
49
+ export function envBitbucketToken(env = process.env) {
50
+ return envValue(env.BITBUCKET_TOKEN);
51
+ }
52
+ /**
53
+ * REST base for direct calls: `BITBUCKET_API_BASE_URL`, else api.bitbucket.org
54
+ * 2.0 for Cloud, else `/rest/api/1.0` on `repoHtmlUrl`'s origin. Callers must
55
+ * only pass a `repoHtmlUrl` the operator supplied (the replay CLI), never one
56
+ * read from a delivery payload.
57
+ */
58
+ export function bitbucketApiBaseUrl(input) {
59
+ var _a;
60
+ const fromEnv = envValue(((_a = input.env) !== null && _a !== void 0 ? _a : process.env).BITBUCKET_API_BASE_URL);
61
+ if (fromEnv !== undefined) {
62
+ return fromEnv.replace(/\/+$/, "");
63
+ }
64
+ if (input.dialect === "cloud") {
65
+ return DEFAULT_BITBUCKET_CLOUD_API_BASE_URL;
66
+ }
67
+ if (input.repoHtmlUrl !== undefined) {
68
+ try {
69
+ return `${new URL(input.repoHtmlUrl).origin}/rest/api/1.0`;
70
+ }
71
+ catch (_b) {
72
+ // no usable host
73
+ }
74
+ }
75
+ return undefined;
76
+ }
77
+ function buildQuery(query) {
78
+ if (query === undefined) {
79
+ return "";
80
+ }
81
+ const params = new URLSearchParams();
82
+ for (const [key, value] of Object.entries(query)) {
83
+ if (value !== undefined) {
84
+ params.set(key, String(value));
85
+ }
86
+ }
87
+ const encoded = params.toString();
88
+ return encoded === "" ? "" : `?${encoded}`;
89
+ }
90
+ export function createBitbucketClient(options = {}) {
91
+ var _a, _b;
92
+ var _c, _d, _e;
93
+ const fetchImpl = (_c = options.fetch) !== null && _c !== void 0 ? _c : fetch;
94
+ const apiBaseUrl = (_e = (_d = (_a = options.proxy) === null || _a === void 0 ? void 0 : _a.apiBaseUrl) !== null && _d !== void 0 ? _d : options.apiBaseUrl) !== null && _e !== void 0 ? _e : envValue(process.env.BITBUCKET_API_BASE_URL);
95
+ if (apiBaseUrl === undefined || apiBaseUrl.trim() === "") {
96
+ throw new Error("bitbucketChannel: no Bitbucket API base URL (pass apiBaseUrl, set BITBUCKET_API_BASE_URL, or serve with --cursor-scm-proxy and cursorAccount).");
97
+ }
98
+ const base = apiBaseUrl.replace(/\/+$/, "");
99
+ const repo = (_b = options.repo) === null || _b === void 0 ? void 0 : _b.trim().replace(/^\/+|\/+$/g, "");
100
+ const authHeaders = () => __awaiter(this, void 0, void 0, function* () {
101
+ var _a, _b;
102
+ if (options.proxy !== undefined) {
103
+ const headers = Object.assign({ authorization: `Bearer ${yield options.proxy.getApiKey()}` }, options.proxy.headers);
104
+ if (((_a = headers[CURSOR_BITBUCKET_REPOS_HEADER]) !== null && _a !== void 0 ? _a : "").trim() === "" &&
105
+ repo !== undefined &&
106
+ repo !== "") {
107
+ headers[CURSOR_BITBUCKET_REPOS_HEADER] = repo.toLowerCase();
108
+ }
109
+ return headers;
110
+ }
111
+ const token = typeof options.token === "function"
112
+ ? yield options.token()
113
+ : ((_b = options.token) !== null && _b !== void 0 ? _b : envBitbucketToken());
114
+ if (token === undefined || token === "") {
115
+ throw new Error("bitbucketChannel: no Bitbucket credential available (pass token, set BITBUCKET_TOKEN, or serve with --cursor-scm-proxy and cursorAccount).");
116
+ }
117
+ return { authorization: `Bearer ${token}` };
118
+ });
119
+ return {
120
+ apiBaseUrl: base,
121
+ request(input) {
122
+ return __awaiter(this, void 0, void 0, function* () {
123
+ var _a;
124
+ const path = input.path.startsWith("/") ? input.path : `/${input.path}`;
125
+ const accept = (_a = input.accept) !== null && _a !== void 0 ? _a : "application/json";
126
+ const response = yield fetchImpl(`${base}${path}${buildQuery(input.query)}`, {
127
+ method: input.method,
128
+ headers: Object.assign(Object.assign(Object.assign({}, (yield authHeaders())), { accept }), (input.body === undefined
129
+ ? {}
130
+ : { "content-type": "application/json" })),
131
+ body: input.body === undefined ? undefined : JSON.stringify(input.body),
132
+ });
133
+ const text = yield response.text();
134
+ let parsed = text;
135
+ if (accept === "application/json") {
136
+ try {
137
+ parsed = text === "" ? undefined : JSON.parse(text);
138
+ }
139
+ catch (_b) {
140
+ parsed = text;
141
+ }
142
+ }
143
+ if (!response.ok) {
144
+ throw new BitbucketApiError({
145
+ body: parsed,
146
+ method: input.method,
147
+ path,
148
+ status: response.status,
149
+ });
150
+ }
151
+ return parsed;
152
+ });
153
+ },
154
+ };
155
+ }
156
+ function asRecord(value) {
157
+ return typeof value === "object" && value !== null && !Array.isArray(value)
158
+ ? value
159
+ : undefined;
160
+ }
161
+ function str(value) {
162
+ return typeof value === "string" && value !== "" ? value : undefined;
163
+ }
164
+ function num(value) {
165
+ return typeof value === "number" && Number.isFinite(value)
166
+ ? value
167
+ : undefined;
168
+ }
169
+ function encodePath(path) {
170
+ return path
171
+ .split("/")
172
+ .filter((segment) => segment !== "")
173
+ .map((segment) => encodeURIComponent(segment))
174
+ .join("/");
175
+ }
176
+ function fallbackUrl(repository) {
177
+ var _a;
178
+ return ((_a = repository.htmlUrl) !== null && _a !== void 0 ? _a : (repository.dialect === "cloud"
179
+ ? `https://bitbucket.org/${repository.fullName}`
180
+ : "https://cursor.com"));
181
+ }
182
+ /** `/repositories/{workspace}/{slug}` — Bitbucket Cloud 2.0. */
183
+ export function bitbucketCloudRepoPath(repository) {
184
+ return `/repositories/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.slug)}`;
185
+ }
186
+ /** `/projects/{KEY}/repos/{slug}` — Bitbucket Data Center 1.0. */
187
+ export function bitbucketDataCenterRepoPath(repository) {
188
+ return `/projects/${encodeURIComponent(repository.owner)}/repos/${encodeURIComponent(repository.slug)}`;
189
+ }
190
+ export function cloudBitbucketApi(client, repository) {
191
+ const repo = bitbucketCloudRepoPath(repository);
192
+ const mapComment = (raw) => {
193
+ var _a, _b;
194
+ var _c, _d, _e, _f;
195
+ const record = (_c = asRecord(raw)) !== null && _c !== void 0 ? _c : {};
196
+ const inline = asRecord(record.inline);
197
+ return {
198
+ id: (_d = num(record.id)) !== null && _d !== void 0 ? _d : 0,
199
+ body: (_e = str((_a = asRecord(record.content)) === null || _a === void 0 ? void 0 : _a.raw)) !== null && _e !== void 0 ? _e : "",
200
+ authorId: str((_b = asRecord(record.user)) === null || _b === void 0 ? void 0 : _b.uuid),
201
+ path: str(inline === null || inline === void 0 ? void 0 : inline.path),
202
+ line: (_f = num(inline === null || inline === void 0 ? void 0 : inline.to)) !== null && _f !== void 0 ? _f : num(inline === null || inline === void 0 ? void 0 : inline.from),
203
+ raw,
204
+ };
205
+ };
206
+ return {
207
+ dialect: "cloud",
208
+ repository,
209
+ getPullRequest(id) {
210
+ return __awaiter(this, void 0, void 0, function* () {
211
+ var _a, _b, _c, _d, _e, _f;
212
+ var _g;
213
+ const raw = yield client.request({
214
+ method: "GET",
215
+ path: `${repo}/pullrequests/${id}`,
216
+ });
217
+ const source = asRecord(raw.source);
218
+ const destination = asRecord(raw.destination);
219
+ return {
220
+ id: (_g = num(raw.id)) !== null && _g !== void 0 ? _g : id,
221
+ title: str(raw.title),
222
+ description: str(raw.description),
223
+ state: str(raw.state),
224
+ sourceBranch: str((_a = asRecord(source === null || source === void 0 ? void 0 : source.branch)) === null || _a === void 0 ? void 0 : _a.name),
225
+ targetBranch: str((_b = asRecord(destination === null || destination === void 0 ? void 0 : destination.branch)) === null || _b === void 0 ? void 0 : _b.name),
226
+ headSha: str((_c = asRecord(source === null || source === void 0 ? void 0 : source.commit)) === null || _c === void 0 ? void 0 : _c.hash),
227
+ baseSha: str((_d = asRecord(destination === null || destination === void 0 ? void 0 : destination.commit)) === null || _d === void 0 ? void 0 : _d.hash),
228
+ htmlUrl: str((_f = asRecord((_e = asRecord(raw.links)) === null || _e === void 0 ? void 0 : _e.html)) === null || _f === void 0 ? void 0 : _f.href),
229
+ raw,
230
+ };
231
+ });
232
+ },
233
+ getPullRequestDiff: (id) => client.request({
234
+ method: "GET",
235
+ path: `${repo}/pullrequests/${id}/diff`,
236
+ accept: "text/plain",
237
+ }),
238
+ listPullRequestComments(id) {
239
+ return __awaiter(this, void 0, void 0, function* () {
240
+ const comments = [];
241
+ let page = `${repo}/pullrequests/${id}/comments`;
242
+ let query = { pagelen: 100 };
243
+ while (page !== undefined) {
244
+ const raw = yield client.request({
245
+ method: "GET",
246
+ path: page,
247
+ query,
248
+ });
249
+ for (const value of Array.isArray(raw.values) ? raw.values : []) {
250
+ comments.push(mapComment(value));
251
+ }
252
+ const next = str(raw.next);
253
+ if (next === undefined) {
254
+ break;
255
+ }
256
+ // `next` is absolute; re-root it under the client base so the proxy
257
+ // (which only forwards paths) keeps working.
258
+ const nextUrl = new URL(next);
259
+ const baseUrl = new URL(`${client.apiBaseUrl}/`);
260
+ page = nextUrl.pathname.startsWith(baseUrl.pathname)
261
+ ? nextUrl.pathname.slice(baseUrl.pathname.length - 1)
262
+ : nextUrl.pathname;
263
+ query = Object.fromEntries(nextUrl.searchParams.entries());
264
+ }
265
+ return comments;
266
+ });
267
+ },
268
+ postPullRequestComment(id, input) {
269
+ return __awaiter(this, void 0, void 0, function* () {
270
+ const raw = yield client.request({
271
+ method: "POST",
272
+ path: `${repo}/pullrequests/${id}/comments`,
273
+ body: Object.assign({ content: { raw: input.body } }, (input.inline === undefined
274
+ ? {}
275
+ : {
276
+ inline: Object.assign({ path: input.inline.path }, (input.inline.line === undefined
277
+ ? {}
278
+ : { to: input.inline.line })),
279
+ })),
280
+ });
281
+ return mapComment(raw);
282
+ });
283
+ },
284
+ setBuildStatus: (input) => { var _a, _b; return client.request({
285
+ method: "POST",
286
+ path: `${repo}/commit/${encodeURIComponent(input.sha)}/statuses/build`,
287
+ body: Object.assign({ key: input.key, state: input.state, name: (_a = input.name) !== null && _a !== void 0 ? _a : input.key, url: (_b = input.url) !== null && _b !== void 0 ? _b : fallbackUrl(repository) }, (input.description === undefined
288
+ ? {}
289
+ : { description: input.description })),
290
+ }); },
291
+ getFileAtRef: (path, ref) => client.request({
292
+ method: "GET",
293
+ path: `${repo}/src/${encodeURIComponent(ref)}/${encodePath(path)}`,
294
+ accept: "text/plain",
295
+ }),
296
+ };
297
+ }
298
+ export function dcBitbucketApi(client, repository) {
299
+ const repo = bitbucketDataCenterRepoPath(repository);
300
+ const mapComment = (raw) => {
301
+ var _a;
302
+ var _b, _c, _d;
303
+ const record = (_b = asRecord(raw)) !== null && _b !== void 0 ? _b : {};
304
+ const anchor = asRecord(record.anchor);
305
+ const authorId = num((_a = asRecord(record.author)) === null || _a === void 0 ? void 0 : _a.id);
306
+ return {
307
+ id: (_c = num(record.id)) !== null && _c !== void 0 ? _c : 0,
308
+ body: (_d = str(record.text)) !== null && _d !== void 0 ? _d : "",
309
+ authorId: authorId === undefined ? undefined : String(authorId),
310
+ path: str(anchor === null || anchor === void 0 ? void 0 : anchor.path),
311
+ line: num(anchor === null || anchor === void 0 ? void 0 : anchor.line),
312
+ raw,
313
+ };
314
+ };
315
+ return {
316
+ dialect: "data-center",
317
+ repository,
318
+ getPullRequest(id) {
319
+ return __awaiter(this, void 0, void 0, function* () {
320
+ var _a, _b;
321
+ var _c;
322
+ const raw = yield client.request({
323
+ method: "GET",
324
+ path: `${repo}/pull-requests/${id}`,
325
+ });
326
+ const fromRef = asRecord(raw.fromRef);
327
+ const toRef = asRecord(raw.toRef);
328
+ const self = (_a = asRecord(raw.links)) === null || _a === void 0 ? void 0 : _a.self;
329
+ return {
330
+ id: (_c = num(raw.id)) !== null && _c !== void 0 ? _c : id,
331
+ title: str(raw.title),
332
+ description: str(raw.description),
333
+ state: str(raw.state),
334
+ sourceBranch: str(fromRef === null || fromRef === void 0 ? void 0 : fromRef.displayId),
335
+ targetBranch: str(toRef === null || toRef === void 0 ? void 0 : toRef.displayId),
336
+ headSha: str(fromRef === null || fromRef === void 0 ? void 0 : fromRef.latestCommit),
337
+ baseSha: str(toRef === null || toRef === void 0 ? void 0 : toRef.latestCommit),
338
+ htmlUrl: Array.isArray(self) ? str((_b = asRecord(self[0])) === null || _b === void 0 ? void 0 : _b.href) : undefined,
339
+ raw,
340
+ };
341
+ });
342
+ },
343
+ // `/pull-requests/{id}.diff` streams the raw unified diff; the sibling
344
+ // `/pull-requests/{id}/diff` route returns a JSON `RestDiff` instead.
345
+ getPullRequestDiff: (id) => client.request({
346
+ method: "GET",
347
+ path: `${repo}/pull-requests/${id}.diff`,
348
+ accept: "text/plain",
349
+ }),
350
+ listPullRequestComments(id) {
351
+ return __awaiter(this, void 0, void 0, function* () {
352
+ const comments = [];
353
+ let start = 0;
354
+ for (;;) {
355
+ const raw = yield client.request({
356
+ method: "GET",
357
+ path: `${repo}/pull-requests/${id}/activities`,
358
+ query: { limit: 100, start },
359
+ });
360
+ for (const value of Array.isArray(raw.values) ? raw.values : []) {
361
+ const activity = asRecord(value);
362
+ if ((activity === null || activity === void 0 ? void 0 : activity.action) === "COMMENTED" &&
363
+ activity.comment !== undefined) {
364
+ comments.push(mapComment(activity.comment));
365
+ }
366
+ }
367
+ const nextStart = num(raw.nextPageStart);
368
+ if (raw.isLastPage !== false || nextStart === undefined) {
369
+ break;
370
+ }
371
+ start = nextStart;
372
+ }
373
+ return comments;
374
+ });
375
+ },
376
+ postPullRequestComment(id, input) {
377
+ return __awaiter(this, void 0, void 0, function* () {
378
+ const raw = yield client.request({
379
+ method: "POST",
380
+ path: `${repo}/pull-requests/${id}/comments`,
381
+ body: Object.assign({ text: input.body }, (input.inline === undefined
382
+ ? {}
383
+ : {
384
+ anchor: Object.assign({ path: input.inline.path, diffType: "EFFECTIVE" }, (input.inline.line === undefined
385
+ ? { fileType: "TO" }
386
+ : {
387
+ line: input.inline.line,
388
+ lineType: "CONTEXT",
389
+ fileType: "TO",
390
+ })),
391
+ })),
392
+ });
393
+ return mapComment(raw);
394
+ });
395
+ },
396
+ // Repository-scoped build status (DC 7.14+), which lives under
397
+ // `rest/api/1.0` so the proxy's single upstream base reaches it; the
398
+ // older `rest/build-status/1.0/commits/{sha}` sits outside that base.
399
+ setBuildStatus: (input) => { var _a, _b; return client.request({
400
+ method: "POST",
401
+ path: `${repo}/commits/${encodeURIComponent(input.sha)}/builds`,
402
+ body: Object.assign({ key: input.key, state: input.state === "STOPPED" ? "CANCELLED" : input.state, name: (_a = input.name) !== null && _a !== void 0 ? _a : input.key, url: (_b = input.url) !== null && _b !== void 0 ? _b : fallbackUrl(repository) }, (input.description === undefined
403
+ ? {}
404
+ : { description: input.description })),
405
+ }); },
406
+ getFileAtRef: (path, ref) => client.request({
407
+ method: "GET",
408
+ path: `${repo}/raw/${encodePath(path)}`,
409
+ query: { at: ref },
410
+ accept: "text/plain",
411
+ }),
412
+ };
413
+ }
414
+ /** Pick the dialect implementation for `repository.dialect`. */
415
+ export function createBitbucketApi(client, repository) {
416
+ return repository.dialect === "cloud"
417
+ ? cloudBitbucketApi(client, repository)
418
+ : dcBitbucketApi(client, repository);
419
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Repository / pull-request binding parsed from a Bitbucket webhook payload,
3
+ * normalized across the two dialects.
4
+ *
5
+ * Cloud: top-level `repository` (`full_name`, `uuid`, `links.html.href`),
6
+ * `pullrequest` (`source.branch.name`, `source.commit.hash`, `links.html`),
7
+ * `comment.content.raw`, `push.changes[].new.target.hash`.
8
+ *
9
+ * Data Center: `pullRequest` (`fromRef.displayId`, `fromRef.latestCommit`,
10
+ * repo under `toRef.repository` as `project.key` + `slug`), `comment.text`,
11
+ * top-level `changes[].toHash` on `repo:refs_changed`, and `previousFromHash`
12
+ * on `pr:from_ref_updated`.
13
+ */
14
+ import { type BitbucketApi, type BitbucketBuildStatusInput, type BitbucketProxyTransport, type BitbucketRequestInput, type BitbucketTokenProvider } from "./api.js";
15
+ import { type BitbucketCheck, type BitbucketCheckCreateInput } from "./checks.js";
16
+ import type { BitbucketDialect, BitbucketPullRequestComment, BitbucketPullRequestEvent, BitbucketPush, BitbucketRepositoryRef, BitbucketUser } from "./types.js";
17
+ /** Bitbucket operations exposed to hooks (`ctx.bitbucket`), bound to the repo. */
18
+ export interface BitbucketHandle {
19
+ repository: BitbucketRepositoryRef;
20
+ /** Dialect-specific REST facade (PR, diff, comments, build status, files). */
21
+ readonly api: BitbucketApi;
22
+ /** Call a raw REST path under the dialect's base. Throws `BitbucketApiError`. */
23
+ request<T = unknown>(input: BitbucketRequestInput): Promise<T>;
24
+ /** Post a build status on the bound repo. */
25
+ setBuildStatus(input: BitbucketBuildStatusInput): Promise<unknown>;
26
+ /** Open a build status through the shared check lifecycle. */
27
+ createCheck(input: Omit<BitbucketCheckCreateInput, "bitbucket">): Promise<BitbucketCheck>;
28
+ }
29
+ /**
30
+ * Build `ctx.bitbucket` for one delivery. Lazy: no credential is resolved
31
+ * until the first call, so channels without outbound Bitbucket access still
32
+ * dispatch. Proxy mode (`cursorAccount` + `--cursor-scm-proxy`) wins when
33
+ * the host bound a transport; otherwise direct access with `token` /
34
+ * `BITBUCKET_TOKEN` against the dialect's API base.
35
+ */
36
+ export declare function buildBitbucketBinding(input: {
37
+ repository: BitbucketRepositoryRef;
38
+ proxy?: BitbucketProxyTransport;
39
+ token?: string | BitbucketTokenProvider;
40
+ apiBaseUrl?: string;
41
+ fetch?: typeof fetch;
42
+ }): BitbucketHandle;
43
+ export declare function asRecord(value: unknown): Record<string, unknown> | undefined;
44
+ export declare function asNonEmptyString(value: unknown): string | undefined;
45
+ export declare function asPositiveInt(value: unknown): number | undefined;
46
+ /** The pull-request record under either dialect's key. */
47
+ export declare function bitbucketPullRequestRecord(payload: Record<string, unknown>): Record<string, unknown> | undefined;
48
+ /**
49
+ * Cloud bodies carry `pullrequest` / `repository.full_name`; Data Center
50
+ * bodies carry `pullRequest` / `repository.project.key`. Unknown shapes
51
+ * default to Cloud, the dialect the hosted ingress normalizes toward.
52
+ */
53
+ export declare function bitbucketDialectOf(payload: Record<string, unknown>): BitbucketDialect;
54
+ /**
55
+ * Repository the delivery is about. Top-level `repository` (Cloud always;
56
+ * DC on `repo:*`), else the DC pull request's `toRef.repository`.
57
+ */
58
+ export declare function bitbucketRepositoryFromPayload(payload: Record<string, unknown>): BitbucketRepositoryRef | undefined;
59
+ /** Cloud `{uuid, display_name, nickname}` or DC `{id, name, displayName}`. */
60
+ export declare function bitbucketUser(value: unknown): BitbucketUser | undefined;
61
+ export declare function bitbucketPullRequestUrl(repository: BitbucketRepositoryRef, id: number, explicit?: string): string;
62
+ /**
63
+ * Normalize the pull request from either dialect. `action` is the suffix of
64
+ * the Cloud-normalized event key (`pullrequest:created` → `created`).
65
+ */
66
+ export declare function bitbucketPullRequestFromPayload(repository: BitbucketRepositoryRef, payload: Record<string, unknown>, action: string): BitbucketPullRequestEvent | undefined;
67
+ /** Cloud `comment.content.raw` / DC `comment.text`. */
68
+ export declare function bitbucketCommentFromPayload(payload: Record<string, unknown>): BitbucketPullRequestComment | undefined;
69
+ /** Cloud `push.changes[]` (`new`/`old` targets) or DC `changes[]` (`toHash`/`fromHash`). */
70
+ export declare function bitbucketPushFromPayload(payload: Record<string, unknown>): BitbucketPush | undefined;
71
+ //# sourceMappingURL=binding.d.ts.map