@cursor/bdk 0.2.9 → 0.2.11

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 (569) hide show
  1. package/dist/artifacts.js +3 -5
  2. package/dist/bin/agent-serve.js +803 -812
  3. package/dist/channels/bitbucket/api.js +305 -321
  4. package/dist/channels/bitbucket/binding.js +97 -61
  5. package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
  6. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
  7. package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
  8. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
  9. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  10. package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
  11. package/dist/channels/bitbucket/checks.js +9 -21
  12. package/dist/channels/bitbucket/cursor-account.js +1 -1
  13. package/dist/channels/bitbucket/defaults.js +14 -4
  14. package/dist/channels/bitbucket/events.js +1 -2
  15. package/dist/channels/bitbucket/index.d.ts +6 -2
  16. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  17. package/dist/channels/bitbucket/index.js +6 -2
  18. package/dist/channels/bitbucket/replay.js +80 -56
  19. package/dist/channels/bitbucket/state.js +16 -7
  20. package/dist/channels/bitbucket/types.d.ts +11 -2
  21. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  22. package/dist/channels/checks.js +18 -28
  23. package/dist/channels/deployments/deployments-channel.js +26 -34
  24. package/dist/channels/github/api.js +216 -210
  25. package/dist/channels/github/auth.d.ts +5 -1
  26. package/dist/channels/github/auth.d.ts.map +1 -1
  27. package/dist/channels/github/auth.js +157 -174
  28. package/dist/channels/github/binding.js +48 -39
  29. package/dist/channels/github/checks.js +9 -14
  30. package/dist/channels/github/cursor-account.js +6 -11
  31. package/dist/channels/github/defaults.js +105 -130
  32. package/dist/channels/github/forward.js +13 -17
  33. package/dist/channels/github/github-channel.d.ts +43 -2
  34. package/dist/channels/github/github-channel.d.ts.map +1 -1
  35. package/dist/channels/github/github-channel.js +1228 -958
  36. package/dist/channels/github/progress.js +145 -146
  37. package/dist/channels/github/replay.js +30 -39
  38. package/dist/channels/github/state.js +40 -16
  39. package/dist/channels/github/types.d.ts +30 -6
  40. package/dist/channels/github/types.d.ts.map +1 -1
  41. package/dist/channels/gitlab/api.js +100 -114
  42. package/dist/channels/gitlab/binding.js +52 -33
  43. package/dist/channels/gitlab/checks.js +28 -29
  44. package/dist/channels/gitlab/cursor-account.js +1 -1
  45. package/dist/channels/gitlab/defaults.js +9 -3
  46. package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
  47. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
  48. package/dist/channels/gitlab/gitlab-channel.js +95 -42
  49. package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
  50. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
  51. package/dist/channels/gitlab/gitlab-webhook.js +282 -249
  52. package/dist/channels/gitlab/index.d.ts +6 -2
  53. package/dist/channels/gitlab/index.d.ts.map +1 -1
  54. package/dist/channels/gitlab/index.js +6 -2
  55. package/dist/channels/gitlab/replay.js +50 -27
  56. package/dist/channels/gitlab/state.js +14 -6
  57. package/dist/channels/gitlab/types.d.ts +13 -2
  58. package/dist/channels/gitlab/types.d.ts.map +1 -1
  59. package/dist/channels/origin/api.js +100 -116
  60. package/dist/channels/origin/binding.js +15 -16
  61. package/dist/channels/origin/checks.js +30 -28
  62. package/dist/channels/origin/defaults.js +50 -65
  63. package/dist/channels/origin/origin-channel.js +266 -272
  64. package/dist/channels/origin/origin-webhook.js +70 -88
  65. package/dist/channels/origin/reactions.js +9 -21
  66. package/dist/channels/origin/state.js +13 -5
  67. package/dist/channels/slack/agentic-delivery.js +426 -478
  68. package/dist/channels/slack/agentic-posted.js +9 -10
  69. package/dist/channels/slack/agentic-signals.js +2 -3
  70. package/dist/channels/slack/api.js +417 -427
  71. package/dist/channels/slack/approvals.js +1 -1
  72. package/dist/channels/slack/assistant.js +37 -47
  73. package/dist/channels/slack/attachments.js +188 -206
  74. package/dist/channels/slack/auth.js +8 -6
  75. package/dist/channels/slack/bot-mentions.js +31 -45
  76. package/dist/channels/slack/channel-watch.js +42 -48
  77. package/dist/channels/slack/cli-project.js +112 -137
  78. package/dist/channels/slack/code-fences.js +3 -5
  79. package/dist/channels/slack/constants.js +2 -2
  80. package/dist/channels/slack/credentials.js +23 -38
  81. package/dist/channels/slack/defaults.js +292 -331
  82. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  83. package/dist/channels/slack/dispatch.js +533 -460
  84. package/dist/channels/slack/doctor.js +200 -214
  85. package/dist/channels/slack/eval-directive.js +79 -96
  86. package/dist/channels/slack/event-id-dedupe.js +1 -1
  87. package/dist/channels/slack/external-policy.js +26 -39
  88. package/dist/channels/slack/footer.js +28 -41
  89. package/dist/channels/slack/inbound.d.ts +1 -0
  90. package/dist/channels/slack/inbound.d.ts.map +1 -1
  91. package/dist/channels/slack/inbound.js +50 -31
  92. package/dist/channels/slack/init.d.ts +1 -5
  93. package/dist/channels/slack/init.d.ts.map +1 -1
  94. package/dist/channels/slack/init.js +42 -59
  95. package/dist/channels/slack/interactive.d.ts +9 -3
  96. package/dist/channels/slack/interactive.d.ts.map +1 -1
  97. package/dist/channels/slack/interactive.js +160 -162
  98. package/dist/channels/slack/links.js +1 -2
  99. package/dist/channels/slack/live-delivery.js +172 -190
  100. package/dist/channels/slack/manifest.d.ts.map +1 -1
  101. package/dist/channels/slack/manifest.js +44 -23
  102. package/dist/channels/slack/message-body.js +2 -2
  103. package/dist/channels/slack/nudge-carrier.js +30 -42
  104. package/dist/channels/slack/nudge-store.js +164 -191
  105. package/dist/channels/slack/paint-start.js +66 -81
  106. package/dist/channels/slack/placeholder.js +123 -152
  107. package/dist/channels/slack/pr-ref.js +1 -1
  108. package/dist/channels/slack/progress-delivery.js +65 -78
  109. package/dist/channels/slack/reasoning-card.js +36 -49
  110. package/dist/channels/slack/recording-sink.js +12 -24
  111. package/dist/channels/slack/reply-options.js +7 -12
  112. package/dist/channels/slack/self-identity.js +27 -35
  113. package/dist/channels/slack/sender-name.d.ts +12 -3
  114. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  115. package/dist/channels/slack/sender-name.js +57 -61
  116. package/dist/channels/slack/setup.js +2 -4
  117. package/dist/channels/slack/slack-channel.d.ts +6 -4
  118. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  119. package/dist/channels/slack/slack-channel.js +441 -308
  120. package/dist/channels/slack/socket-mode.js +38 -52
  121. package/dist/channels/slack/thread-context.js +143 -160
  122. package/dist/channels/slack/tool-approval-events.js +149 -166
  123. package/dist/channels/slack/tool-cards.js +6 -11
  124. package/dist/channels/slack/tool-chip.js +1 -2
  125. package/dist/channels/slack/types.d.ts +15 -17
  126. package/dist/channels/slack/types.d.ts.map +1 -1
  127. package/dist/channels/slack/upload.js +84 -97
  128. package/dist/channels/slack/user-info.js +27 -41
  129. package/dist/channels.js +9 -20
  130. package/dist/dashboard-session-url.js +3 -4
  131. package/dist/docs/404.html +2 -2
  132. package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
  133. package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
  134. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
  135. package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
  136. package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
  137. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
  138. package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
  139. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
  140. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
  141. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
  142. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
  143. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
  144. package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
  145. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
  146. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
  147. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
  148. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
  149. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
  150. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
  151. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
  152. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
  153. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
  154. package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
  155. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
  156. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
  157. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
  158. package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
  159. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
  160. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
  161. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
  162. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
  163. package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
  164. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
  165. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
  166. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
  167. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
  168. package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
  169. package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
  170. package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
  171. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
  172. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
  173. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
  174. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
  175. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
  176. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
  177. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
  178. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
  179. package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
  180. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
  181. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
  182. package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
  183. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
  184. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
  185. package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
  186. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
  187. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
  188. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
  189. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
  190. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
  191. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
  192. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
  193. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
  194. package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
  195. package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
  196. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  197. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  198. package/dist/docs/building-with-agents.html +37 -37
  199. package/dist/docs/building-with-agents.md +2 -0
  200. package/dist/docs/deployment.html +38 -38
  201. package/dist/docs/deployment.md +7 -0
  202. package/dist/docs/evals.html +36 -36
  203. package/dist/docs/guides/agent-to-agent.html +35 -35
  204. package/dist/docs/guides/bitbucket.html +38 -38
  205. package/dist/docs/guides/bitbucket.md +9 -1
  206. package/dist/docs/guides/cloud-agents.html +35 -35
  207. package/dist/docs/guides/convert-automation.html +35 -35
  208. package/dist/docs/guides/github.html +39 -39
  209. package/dist/docs/guides/github.md +20 -4
  210. package/dist/docs/guides/gitlab.html +38 -38
  211. package/dist/docs/guides/gitlab.md +9 -1
  212. package/dist/docs/guides/grokbot-agents.html +35 -35
  213. package/dist/docs/guides/hooks.html +35 -35
  214. package/dist/docs/guides/improve.html +35 -35
  215. package/dist/docs/guides/jev.html +35 -35
  216. package/dist/docs/guides/mcp-oauth.html +35 -35
  217. package/dist/docs/guides/migrate.html +66 -0
  218. package/dist/docs/guides/migrate.md +122 -0
  219. package/dist/docs/guides/opentelemetry.html +35 -35
  220. package/dist/docs/guides/slack.html +35 -35
  221. package/dist/docs/guides/webhooks.html +35 -35
  222. package/dist/docs/hashmap.json +1 -1
  223. package/dist/docs/hillclimbing.html +35 -35
  224. package/dist/docs/index.html +35 -35
  225. package/dist/docs/llms-full.txt +214 -6
  226. package/dist/docs/llms.txt +1 -0
  227. package/dist/docs/quickstart.html +35 -35
  228. package/dist/docs/reference/agent-config.html +35 -35
  229. package/dist/docs/reference/artifacts.html +35 -35
  230. package/dist/docs/reference/channels.html +35 -35
  231. package/dist/docs/reference/cli.html +39 -38
  232. package/dist/docs/reference/cli.md +39 -0
  233. package/dist/docs/reference/connections.html +35 -35
  234. package/dist/docs/reference/evals.html +35 -35
  235. package/dist/docs/reference/extensions.html +35 -35
  236. package/dist/docs/reference/hooks.html +35 -35
  237. package/dist/docs/reference/http-api.html +35 -35
  238. package/dist/docs/reference/instructions.html +35 -35
  239. package/dist/docs/reference/playground.html +35 -35
  240. package/dist/docs/reference/project-layout.html +35 -35
  241. package/dist/docs/reference/prompt.html +35 -35
  242. package/dist/docs/reference/schedules.html +35 -35
  243. package/dist/docs/reference/sessions.html +35 -35
  244. package/dist/docs/reference/skills.html +35 -35
  245. package/dist/docs/reference/subagents.html +35 -35
  246. package/dist/docs/reference/tools.html +35 -35
  247. package/dist/docs/templates/agentic-owners.html +35 -35
  248. package/dist/docs/templates/grokbot-agents.html +35 -35
  249. package/dist/docs/templates/security-reviewer.html +35 -35
  250. package/dist/docs/templates/thermo-quality-review.html +35 -35
  251. package/dist/docs/templates/thermo-review.html +35 -35
  252. package/dist/docs/templates/triage.html +35 -35
  253. package/dist/docs/troubleshooting.html +36 -36
  254. package/dist/docs/troubleshooting.md +1 -0
  255. package/dist/evals/assertions.js +20 -34
  256. package/dist/evals/expect.js +3 -6
  257. package/dist/evals/judge.js +5 -8
  258. package/dist/evals/loaders.js +45 -62
  259. package/dist/evals/matchers.js +2 -3
  260. package/dist/evals/reporters.js +43 -67
  261. package/dist/evals/results.js +1 -1
  262. package/dist/evals/run-facts.js +5 -6
  263. package/dist/evals.js +27 -15
  264. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  265. package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
  266. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  267. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  268. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  269. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  270. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  271. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  272. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  273. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  274. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  275. package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
  276. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  277. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  278. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  279. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  280. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  281. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  282. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  283. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  284. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  285. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  286. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  287. package/dist/extensions/jev/extension.js +3 -3
  288. package/dist/extensions/jev/lib/evaluate.js +43 -60
  289. package/dist/extensions/jev/tools/evaluate.js +6 -17
  290. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  291. package/dist/extensions.js +3 -5
  292. package/dist/files-backends/cursor-hosted.js +504 -523
  293. package/dist/files-backends/local-fs.js +72 -134
  294. package/dist/files.js +3 -3
  295. package/dist/filesystem.js +562 -861
  296. package/dist/index.js +16 -35
  297. package/dist/internal/advertise-tools.js +74 -86
  298. package/dist/internal/artifacts-store.js +298 -361
  299. package/dist/internal/as-of.js +2 -4
  300. package/dist/internal/authored-alias-hooks.js +6 -4
  301. package/dist/internal/authored-loaders.js +37 -52
  302. package/dist/internal/bounded-int.js +1 -2
  303. package/dist/internal/bounded.js +13 -24
  304. package/dist/internal/brand.js +1 -1
  305. package/dist/internal/browser-origin-guard.js +4 -4
  306. package/dist/internal/builtin-tools/artifacts.js +15 -27
  307. package/dist/internal/builtin-tools/index.js +2 -3
  308. package/dist/internal/builtin-tools/reminders.js +33 -52
  309. package/dist/internal/channel-architecture.d.ts +21 -0
  310. package/dist/internal/channel-architecture.d.ts.map +1 -0
  311. package/dist/internal/channel-architecture.js +41 -0
  312. package/dist/internal/channel-dispatch.js +3 -4
  313. package/dist/internal/channel-route-dispatch.js +40 -51
  314. package/dist/internal/channel-state.js +1 -1
  315. package/dist/internal/chat-client.js +319 -340
  316. package/dist/internal/cli-ax.js +1262 -1294
  317. package/dist/internal/cli-bitbucket.js +244 -272
  318. package/dist/internal/cli-convert-automation.js +137 -151
  319. package/dist/internal/cli-cursor.js +126 -147
  320. package/dist/internal/cli-deploy.d.ts.map +1 -1
  321. package/dist/internal/cli-deploy.js +1457 -1507
  322. package/dist/internal/cli-docs.js +130 -147
  323. package/dist/internal/cli-github.js +437 -476
  324. package/dist/internal/cli-gitlab.js +259 -288
  325. package/dist/internal/cli-images.js +266 -334
  326. package/dist/internal/cli-manifest.js +25 -37
  327. package/dist/internal/cli-mcp-oauth.js +228 -247
  328. package/dist/internal/cli-mcp.js +358 -383
  329. package/dist/internal/cli-migrate.js +73 -90
  330. package/dist/internal/cli-skills.js +35 -47
  331. package/dist/internal/cli-slack-manual.d.ts +0 -1
  332. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  333. package/dist/internal/cli-slack-manual.js +175 -204
  334. package/dist/internal/cli-slack.d.ts +1 -1
  335. package/dist/internal/cli-slack.d.ts.map +1 -1
  336. package/dist/internal/cli-slack.js +416 -456
  337. package/dist/internal/cloud-merge.js +7 -3
  338. package/dist/internal/cloud-turn-cost.js +8 -1
  339. package/dist/internal/connection-env.js +5 -6
  340. package/dist/internal/continuation-channel.js +10 -7
  341. package/dist/internal/continuation-identity.js +85 -67
  342. package/dist/internal/conversation-mirror.js +112 -131
  343. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  344. package/dist/internal/cron.js +3 -3
  345. package/dist/internal/cursor/account-mcp.js +147 -146
  346. package/dist/internal/cursor/backend-client.js +290 -320
  347. package/dist/internal/cursor/bound-secret-file.js +3 -3
  348. package/dist/internal/cursor/credentials.js +127 -142
  349. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  350. package/dist/internal/cursor/github-credentials.js +91 -108
  351. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  352. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  353. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  354. package/dist/internal/cursor/session-token.js +36 -48
  355. package/dist/internal/cursor/store-api-client.js +77 -92
  356. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  357. package/dist/internal/cursor-agent-template.js +1 -1
  358. package/dist/internal/cursor-deployment-relay.js +33 -54
  359. package/dist/internal/cursor-event-relay.js +65 -59
  360. package/dist/internal/cursor-relay-core.js +258 -286
  361. package/dist/internal/deferred-channel-session.js +3 -12
  362. package/dist/internal/deploy-client.d.ts.map +1 -1
  363. package/dist/internal/deploy-client.js +413 -475
  364. package/dist/internal/deploy-manifest.d.ts +17 -0
  365. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  366. package/dist/internal/deploy-manifest.js +71 -21
  367. package/dist/internal/deploy-source.js +31 -43
  368. package/dist/internal/discovery/agent-config.js +45 -59
  369. package/dist/internal/discovery/agent.js +276 -280
  370. package/dist/internal/discovery/channels.js +67 -80
  371. package/dist/internal/discovery/connections.js +286 -296
  372. package/dist/internal/discovery/context.js +2 -13
  373. package/dist/internal/discovery/cursor-plugin.js +223 -259
  374. package/dist/internal/discovery/extension-overlay.js +104 -131
  375. package/dist/internal/discovery/extensions.js +276 -281
  376. package/dist/internal/discovery/fs.js +56 -79
  377. package/dist/internal/discovery/hooks.js +39 -50
  378. package/dist/internal/discovery/info.js +17 -19
  379. package/dist/internal/discovery/instructions.js +58 -71
  380. package/dist/internal/discovery/modules.js +45 -58
  381. package/dist/internal/discovery/project.d.ts.map +1 -1
  382. package/dist/internal/discovery/project.js +192 -215
  383. package/dist/internal/discovery/reminders.js +41 -52
  384. package/dist/internal/discovery/runtime.js +1 -1
  385. package/dist/internal/discovery/schedules.js +71 -82
  386. package/dist/internal/discovery/seed-files.js +21 -32
  387. package/dist/internal/discovery/services.js +74 -96
  388. package/dist/internal/discovery/skills.js +77 -94
  389. package/dist/internal/discovery/subagent.js +79 -95
  390. package/dist/internal/discovery/tools.js +12 -23
  391. package/dist/internal/distribution.js +2 -2
  392. package/dist/internal/docs-site.js +30 -45
  393. package/dist/internal/duration.js +1 -1
  394. package/dist/internal/env-file.js +48 -64
  395. package/dist/internal/eval-judge-model.js +17 -28
  396. package/dist/internal/eval-run-store.js +265 -254
  397. package/dist/internal/eval-runner.d.ts +8 -0
  398. package/dist/internal/eval-runner.d.ts.map +1 -1
  399. package/dist/internal/eval-runner.js +406 -408
  400. package/dist/internal/eval-transport.d.ts +24 -0
  401. package/dist/internal/eval-transport.d.ts.map +1 -0
  402. package/dist/internal/eval-transport.js +22 -0
  403. package/dist/internal/evals-client.js +242 -246
  404. package/dist/internal/event-log.js +72 -120
  405. package/dist/internal/event-mapper.js +30 -31
  406. package/dist/internal/factory-resource-channel.js +16 -30
  407. package/dist/internal/filesystem/errors.js +6 -6
  408. package/dist/internal/filesystem/format.js +10 -13
  409. package/dist/internal/filesystem/merge.js +52 -94
  410. package/dist/internal/filesystem/nearest.js +15 -27
  411. package/dist/internal/filesystem/scratch.js +65 -85
  412. package/dist/internal/filesystem/tools.js +221 -241
  413. package/dist/internal/filesystem/walk.js +76 -143
  414. package/dist/internal/framework-file-storage.js +118 -139
  415. package/dist/internal/framework-storage-selection.js +21 -13
  416. package/dist/internal/frontmatter.js +4 -6
  417. package/dist/internal/github-fanout.js +50 -64
  418. package/dist/internal/guest-network.js +96 -109
  419. package/dist/internal/handleAgentServeTrigger.js +121 -126
  420. package/dist/internal/host-files.js +73 -88
  421. package/dist/internal/host-kv.js +21 -36
  422. package/dist/internal/host-otel.js +22 -19
  423. package/dist/internal/host-platforms.js +49 -63
  424. package/dist/internal/hosted-catch-protocol.d.ts +1 -0
  425. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  426. package/dist/internal/hosted-catch-protocol.js +1 -0
  427. package/dist/internal/hosted-catch.d.ts +5 -3
  428. package/dist/internal/hosted-catch.d.ts.map +1 -1
  429. package/dist/internal/hosted-catch.js +84 -93
  430. package/dist/internal/hosted-delivery-protocol.js +32 -8
  431. package/dist/internal/hosted-delivery.d.ts +13 -1
  432. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  433. package/dist/internal/hosted-delivery.js +614 -584
  434. package/dist/internal/hosted-eval-cases.d.ts +21 -0
  435. package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
  436. package/dist/internal/hosted-eval-cases.js +162 -0
  437. package/dist/internal/hosted-execution-diag.js +38 -30
  438. package/dist/internal/hosted-execution-flush.js +75 -66
  439. package/dist/internal/hosted-execution-latency.js +16 -8
  440. package/dist/internal/hosted-managed-automation.js +2 -2
  441. package/dist/internal/hosting.js +2 -3
  442. package/dist/internal/http-channel-define.js +4 -1
  443. package/dist/internal/http-channel.js +101 -112
  444. package/dist/internal/http-control-plane-session.d.ts +18 -1
  445. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  446. package/dist/internal/http-control-plane-session.js +66 -32
  447. package/dist/internal/incoming-headers-to-fetch.js +1 -2
  448. package/dist/internal/init-interview.js +73 -93
  449. package/dist/internal/init-project.js +182 -214
  450. package/dist/internal/init-scaffold.js +10 -21
  451. package/dist/internal/inline-stdio-mcp.js +80 -86
  452. package/dist/internal/install-cursor-skills.js +231 -273
  453. package/dist/internal/legacy-command-guard.js +18 -31
  454. package/dist/internal/listen-port.js +34 -45
  455. package/dist/internal/local-control-plane.js +293 -307
  456. package/dist/internal/local-env.js +1 -1
  457. package/dist/internal/local-ingress.js +15 -9
  458. package/dist/internal/log-ring.js +1 -2
  459. package/dist/internal/logs-client.js +207 -227
  460. package/dist/internal/map-pool.js +24 -38
  461. package/dist/internal/mcp-endpoint.js +204 -180
  462. package/dist/internal/mcp-host.js +165 -168
  463. package/dist/internal/mcp-oauth-on-demand.js +170 -207
  464. package/dist/internal/mcp-oauth-persist.js +15 -29
  465. package/dist/internal/mcp-oauth.js +209 -266
  466. package/dist/internal/named-webhook-secret.d.ts +39 -0
  467. package/dist/internal/named-webhook-secret.d.ts.map +1 -0
  468. package/dist/internal/named-webhook-secret.js +47 -0
  469. package/dist/internal/open-browser.js +2 -3
  470. package/dist/internal/otel/collector.js +104 -68
  471. package/dist/internal/otel/config.js +24 -37
  472. package/dist/internal/otel/http.js +5 -7
  473. package/dist/internal/otel/mcp.js +3 -12
  474. package/dist/internal/otel/runtime.js +69 -83
  475. package/dist/internal/package-inline-stdio.js +57 -65
  476. package/dist/internal/peer-connections.js +9 -5
  477. package/dist/internal/platform-schedule-sync.js +39 -54
  478. package/dist/internal/platform-timers.js +176 -210
  479. package/dist/internal/playground/static.js +1 -2
  480. package/dist/internal/playground/toolchain.js +37 -53
  481. package/dist/internal/playground-proxy.js +230 -270
  482. package/dist/internal/process-memory-telemetry.js +33 -51
  483. package/dist/internal/prompt-context.js +3 -6
  484. package/dist/internal/reminder-control-plane-protocol.js +46 -13
  485. package/dist/internal/reminder-runner.js +770 -785
  486. package/dist/internal/reminder-schedule.js +1 -1
  487. package/dist/internal/reminder-store.js +57 -78
  488. package/dist/internal/request-error-status.js +1 -3
  489. package/dist/internal/request-headers.js +2 -2
  490. package/dist/internal/resolve-prod-target.js +119 -135
  491. package/dist/internal/resolved-connections.js +16 -6
  492. package/dist/internal/run-client.js +221 -229
  493. package/dist/internal/runtime-dispatch-runner.js +18 -43
  494. package/dist/internal/schedule-runner.js +49 -58
  495. package/dist/internal/scm/pr-url.js +7 -6
  496. package/dist/internal/sdk-runner.js +388 -363
  497. package/dist/internal/serve-restart.js +26 -39
  498. package/dist/internal/server.d.ts.map +1 -1
  499. package/dist/internal/server.js +1283 -1244
  500. package/dist/internal/session-cost.js +7 -9
  501. package/dist/internal/session-engine.d.ts +3 -1
  502. package/dist/internal/session-engine.d.ts.map +1 -1
  503. package/dist/internal/session-engine.js +2801 -2777
  504. package/dist/internal/session-links.js +12 -16
  505. package/dist/internal/session-run-log.js +134 -82
  506. package/dist/internal/session-store.js +133 -164
  507. package/dist/internal/sessions-client.js +97 -118
  508. package/dist/internal/skill-catalog.js +18 -23
  509. package/dist/internal/skills-sync.js +16 -30
  510. package/dist/internal/slack-provision-client.js +90 -116
  511. package/dist/internal/start-log-store.js +48 -67
  512. package/dist/internal/steering.js +1 -2
  513. package/dist/internal/storage-coordinator.js +160 -196
  514. package/dist/internal/store-mirror.js +16 -30
  515. package/dist/internal/stream-progress.js +6 -8
  516. package/dist/internal/terminal-style.js +3 -4
  517. package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
  518. package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
  519. package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
  520. package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
  521. package/dist/internal/tool-catalog.js +11 -5
  522. package/dist/internal/tool-result.js +1 -1
  523. package/dist/internal/trajectory.js +19 -22
  524. package/dist/internal/turn-cost.js +52 -62
  525. package/dist/internal/turn-governor.js +5 -8
  526. package/dist/internal/turn-lease-store.js +85 -105
  527. package/dist/internal/turn-outbox.js +28 -43
  528. package/dist/internal/update-check.js +231 -259
  529. package/dist/internal/v2-hosting.js +1 -2
  530. package/dist/internal/workspace-sync.js +25 -41
  531. package/dist/internal/workspace.js +111 -139
  532. package/dist/kv/memory-kv.js +27 -51
  533. package/dist/memory.js +106 -148
  534. package/dist/otel.js +5 -8
  535. package/dist/playground/assets/{index-Co4CUVTQ.js → index-Be0-1hw2.js} +45 -45
  536. package/dist/playground/assets/index-Clz6uHj9.css +1 -0
  537. package/dist/playground/index.html +2 -2
  538. package/dist/prompt.js +2 -4
  539. package/dist/storage-backends/cursor-hosted-v2.js +53 -83
  540. package/dist/storage-backends/cursor-hosted.js +105 -145
  541. package/dist/storage-backends/file-kv.js +100 -128
  542. package/dist/storage-protocol.js +3 -5
  543. package/dist/storage.js +17 -26
  544. package/dist/types.d.ts +68 -0
  545. package/dist/types.d.ts.map +1 -1
  546. package/dist/types.js +20 -18
  547. package/docs/building-with-agents.md +2 -0
  548. package/docs/deployment.md +7 -0
  549. package/docs/guides/bitbucket.md +9 -1
  550. package/docs/guides/github.md +20 -4
  551. package/docs/guides/gitlab.md +9 -1
  552. package/docs/guides/migrate.md +127 -0
  553. package/docs/reference/cli.md +39 -0
  554. package/docs/troubleshooting.md +1 -0
  555. package/package.json +1 -1
  556. package/skills/debug/SKILL.md +1 -0
  557. package/skills/github/SKILL.md +23 -0
  558. package/skills/migrate-v2/SKILL.md +51 -10
  559. package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
  560. package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
  561. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
  562. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
  563. package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
  564. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
  565. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
  566. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
  567. package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
  568. /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
  569. /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
@@ -3,9 +3,8 @@
3
3
  * Writes to a caller-provided sink (usually stderr) so stdout can stay JSON.
4
4
  */
5
5
  export function createStreamProgress(options) {
6
- var _a, _b;
7
- const write = (_a = options === null || options === void 0 ? void 0 : options.write) !== null && _a !== void 0 ? _a : ((s) => process.stderr.write(s));
8
- const color = (_b = options === null || options === void 0 ? void 0 : options.color) !== null && _b !== void 0 ? _b : (process.stderr.isTTY === true && process.env.NO_COLOR === undefined);
6
+ const write = options?.write ?? ((s) => process.stderr.write(s));
7
+ const color = options?.color ?? (process.stderr.isTTY === true && process.env.NO_COLOR === undefined);
9
8
  const c = makePalette(color);
10
9
  let assistantOpen = false;
11
10
  let thinkingShown = false;
@@ -21,7 +20,6 @@ export function createStreamProgress(options) {
21
20
  const elapsed = (since) => `${Date.now() - since}ms`;
22
21
  return {
23
22
  onEvent(event) {
24
- var _a, _b, _c, _d;
25
23
  switch (event.type) {
26
24
  case "session.started": {
27
25
  write(c.dim(`session ${event.sessionId}\n`));
@@ -36,7 +34,7 @@ export function createStreamProgress(options) {
36
34
  break;
37
35
  }
38
36
  case "turn.queued": {
39
- write(c.dim(` turn ${(_a = event.turnId) !== null && _a !== void 0 ? _a : "?"} queued (position ${event.data.position}, max ${event.data.maxRunningTurns} running)\n`));
37
+ write(c.dim(` turn ${event.turnId ?? "?"} queued (position ${event.data.position}, max ${event.data.maxRunningTurns} running)\n`));
40
38
  break;
41
39
  }
42
40
  case "turn.started": {
@@ -44,7 +42,7 @@ export function createStreamProgress(options) {
44
42
  if (event.turnId !== undefined) {
45
43
  turnStartedAt.set(event.turnId, turnClock);
46
44
  }
47
- write(c.dim(` turn ${(_b = event.turnId) !== null && _b !== void 0 ? _b : "?"} started\n`));
45
+ write(c.dim(` turn ${event.turnId ?? "?"} started\n`));
48
46
  break;
49
47
  }
50
48
  case "message.received": {
@@ -141,11 +139,11 @@ export function createStreamProgress(options) {
141
139
  case "subagent.called": {
142
140
  closeAssistant();
143
141
  const detail = event.data.description ? ` — ${truncate(event.data.description, 60)}` : "";
144
- write(` ${c.magenta("task")} ${c.bold((_c = event.data.name) !== null && _c !== void 0 ? _c : "subagent")}${c.dim(detail)}\n`);
142
+ write(` ${c.magenta("task")} ${c.bold(event.data.name ?? "subagent")}${c.dim(detail)}\n`);
145
143
  break;
146
144
  }
147
145
  case "subagent.completed": {
148
- write(` ${c.magenta("✓")} ${c.bold((_d = event.data.name) !== null && _d !== void 0 ? _d : "subagent")} ${c.dim("done")}\n`);
146
+ write(` ${c.magenta("✓")} ${c.bold(event.data.name ?? "subagent")} ${c.dim("done")}\n`);
149
147
  break;
150
148
  }
151
149
  case "turn.completed": {
@@ -67,10 +67,9 @@ export function terminalHyperlink(url, label, enabled = colorEnabledFor()) {
67
67
  * so a warning panel can be yellow without per-line prefixes.
68
68
  */
69
69
  export function formatTerminalBox(lines, options) {
70
- var _a, _b, _c;
71
- const color = (_a = options === null || options === void 0 ? void 0 : options.color) !== null && _a !== void 0 ? _a : IDENTITY;
72
- const padding = (_b = options === null || options === void 0 ? void 0 : options.padding) !== null && _b !== void 0 ? _b : 1;
73
- const contentWidth = Math.max((_c = options === null || options === void 0 ? void 0 : options.minWidth) !== null && _c !== void 0 ? _c : 0, ...lines.map(line => visibleWidth(line)), 1);
70
+ const color = options?.color ?? IDENTITY;
71
+ const padding = options?.padding ?? 1;
72
+ const contentWidth = Math.max(options?.minWidth ?? 0, ...lines.map(line => visibleWidth(line)), 1);
74
73
  const inner = contentWidth + padding * 2;
75
74
  const padLine = (line) => {
76
75
  const extra = contentWidth - visibleWidth(line);
@@ -50,7 +50,7 @@ export const SCM_CONTINUATION_FIXTURES = [
50
50
  event_type: "merge_request",
51
51
  user: { id: 7, username: "alice", name: "Alice" },
52
52
  project: GITLAB_PROJECT,
53
- object_attributes: Object.assign(Object.assign({}, GITLAB_MERGE_REQUEST), { action: "open" }),
53
+ object_attributes: { ...GITLAB_MERGE_REQUEST, action: "open" },
54
54
  },
55
55
  expectedKey: "cont:gitlab-mr:acme/platform/api!42",
56
56
  },
@@ -64,7 +64,11 @@ export const SCM_CONTINUATION_FIXTURES = [
64
64
  event_type: "merge_request",
65
65
  user: { id: 7, username: "alice", name: "Alice" },
66
66
  project: GITLAB_PROJECT,
67
- object_attributes: Object.assign(Object.assign({}, GITLAB_MERGE_REQUEST), { action: "update", oldrev: "fedcba9876543210fedcba9876543210fedcba98" }),
67
+ object_attributes: {
68
+ ...GITLAB_MERGE_REQUEST,
69
+ action: "update",
70
+ oldrev: "fedcba9876543210fedcba9876543210fedcba98",
71
+ },
68
72
  },
69
73
  expectedKey: "cont:gitlab-mr:acme/platform/api!42",
70
74
  },
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Slack continuation fixtures for the deliveries that are not messages —
3
+ * reactions and Block Kit clicks — shared by the two continuation
4
+ * vocabulary copies: `internal/continuation-identity.ts` (July) and the
5
+ * control plane's `agentSdkConversationIdentity.ts` (server-shared). The
6
+ * hosted control plane stamps the lane from these payloads and the guest
7
+ * derives the same key from its parsers, so a shape only one copy
8
+ * understands fails CI on the other side.
9
+ *
10
+ * Pure data: no imports, so the server-shared suite can load it by relative
11
+ * path without pulling `@cursor/bdk` into the control plane.
12
+ */
13
+ export interface SlackContinuationFixture {
14
+ name: string;
15
+ /** Mailbox event name the control plane fans out on. */
16
+ eventType: "reaction_added" | "block_actions";
17
+ /**
18
+ * What the control plane claim-checks: the full `event_callback` body for
19
+ * a reaction, the interactivity `payload` JSON for a click.
20
+ */
21
+ payload: Record<string, unknown>;
22
+ /** `cont:` key, or `undefined` when the delivery stamps `evt:`. */
23
+ expectedKey: string | undefined;
24
+ }
25
+ export declare const SLACK_CONTINUATION_FIXTURES: readonly SlackContinuationFixture[];
26
+ //# sourceMappingURL=slack-continuation-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-continuation-fixtures.d.ts","sourceRoot":"","sources":["../../../src/internal/testing/slack-continuation-fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,SAAS,EAAE,gBAAgB,GAAG,eAAe,CAAC;IAC9C;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAgDD,eAAO,MAAM,2BAA2B,EAAE,SAAS,wBAAwB,EAoF1E,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Slack continuation fixtures for the deliveries that are not messages —
3
+ * reactions and Block Kit clicks — shared by the two continuation
4
+ * vocabulary copies: `internal/continuation-identity.ts` (July) and the
5
+ * control plane's `agentSdkConversationIdentity.ts` (server-shared). The
6
+ * hosted control plane stamps the lane from these payloads and the guest
7
+ * derives the same key from its parsers, so a shape only one copy
8
+ * understands fails CI on the other side.
9
+ *
10
+ * Pure data: no imports, so the server-shared suite can load it by relative
11
+ * path without pulling `@cursor/bdk` into the control plane.
12
+ */
13
+ function reactionAddedBody(item) {
14
+ return {
15
+ type: "event_callback",
16
+ team_id: "T0FIXTURE",
17
+ api_app_id: "A0FIXTURE",
18
+ event_id: "Ev0REACTION",
19
+ authorizations: [{ team_id: "T0FIXTURE", user_id: "U0BOT", is_bot: true }],
20
+ event: {
21
+ type: "reaction_added",
22
+ user: "U0REACTOR",
23
+ reaction: "white_check_mark",
24
+ item_user: "U0AUTHOR",
25
+ item,
26
+ event_ts: "1719000100.000300",
27
+ },
28
+ };
29
+ }
30
+ function blockActionsPayload(args) {
31
+ return {
32
+ type: "block_actions",
33
+ api_app_id: "A0FIXTURE",
34
+ trigger_id: "1111.2222.fixturetrigger",
35
+ team: { id: "T0FIXTURE", domain: "fixture" },
36
+ user: { id: "U0CLICKER", username: "clicker", team_id: "T0FIXTURE" },
37
+ container: args.container,
38
+ channel: args.channelId === undefined ? undefined : { id: args.channelId, name: "fixture-channel" },
39
+ message: args.message,
40
+ actions: [
41
+ {
42
+ type: "button",
43
+ action_id: "deploy_confirm",
44
+ block_id: "deploy_row",
45
+ text: { type: "plain_text", text: "Deploy" },
46
+ value: "deploy",
47
+ action_ts: "1719000300.000500",
48
+ },
49
+ ],
50
+ };
51
+ }
52
+ export const SLACK_CONTINUATION_FIXTURES = [
53
+ {
54
+ name: "a reaction roots the lane at the reacted-to message",
55
+ eventType: "reaction_added",
56
+ payload: reactionAddedBody({
57
+ type: "message",
58
+ channel: "C0FIXTURE",
59
+ ts: "1719000000.000200",
60
+ }),
61
+ expectedKey: "cont:C0FIXTURE:1719000000.000200",
62
+ },
63
+ {
64
+ name: "a reaction in a DM keys the IM",
65
+ eventType: "reaction_added",
66
+ payload: reactionAddedBody({
67
+ type: "message",
68
+ channel: "D0FIXTURE",
69
+ ts: "1719000000.000200",
70
+ }),
71
+ expectedKey: "cont:D0FIXTURE",
72
+ },
73
+ {
74
+ name: "a reaction on a file binds no thread",
75
+ eventType: "reaction_added",
76
+ payload: reactionAddedBody({ type: "file", file: "F0FIXTURE" }),
77
+ expectedKey: undefined,
78
+ },
79
+ {
80
+ name: "a click on a threaded reply continues the parent thread",
81
+ eventType: "block_actions",
82
+ payload: blockActionsPayload({
83
+ channelId: "C0FIXTURE",
84
+ message: {
85
+ type: "message",
86
+ user: "U0BOT",
87
+ ts: "1719000200.000400",
88
+ thread_ts: "1719000000.000200",
89
+ text: "Deploy?",
90
+ },
91
+ container: {
92
+ type: "message",
93
+ channel_id: "C0FIXTURE",
94
+ message_ts: "1719000200.000400",
95
+ thread_ts: "1719000000.000200",
96
+ },
97
+ }),
98
+ expectedKey: "cont:C0FIXTURE:1719000000.000200",
99
+ },
100
+ {
101
+ name: "a click on a top-level post roots the lane at that post",
102
+ eventType: "block_actions",
103
+ payload: blockActionsPayload({
104
+ channelId: "C0FIXTURE",
105
+ message: { type: "message", user: "U0BOT", ts: "1719000200.000400", text: "Deploy?" },
106
+ container: {
107
+ type: "message",
108
+ channel_id: "C0FIXTURE",
109
+ message_ts: "1719000200.000400",
110
+ },
111
+ }),
112
+ expectedKey: "cont:C0FIXTURE:1719000200.000400",
113
+ },
114
+ {
115
+ name: "a click in a DM keys the IM",
116
+ eventType: "block_actions",
117
+ payload: blockActionsPayload({
118
+ channelId: "D0FIXTURE",
119
+ message: { type: "message", user: "U0BOT", ts: "1719000200.000400", text: "Deploy?" },
120
+ container: {
121
+ type: "message",
122
+ channel_id: "D0FIXTURE",
123
+ message_ts: "1719000200.000400",
124
+ },
125
+ }),
126
+ expectedKey: "cont:D0FIXTURE",
127
+ },
128
+ {
129
+ name: "a click inside a modal binds no thread",
130
+ eventType: "block_actions",
131
+ payload: blockActionsPayload({
132
+ container: { type: "view", view_id: "V0FIXTURE" },
133
+ }),
134
+ expectedKey: undefined,
135
+ },
136
+ ];
@@ -27,9 +27,8 @@ const WELL_KNOWN_TOOL_TITLES = {
27
27
  search: "Search with a typed query",
28
28
  };
29
29
  function catalogTitle(tool) {
30
- var _a;
31
30
  if (tool.advertised === true) {
32
- return (_a = tool.annotations) === null || _a === void 0 ? void 0 : _a.title;
31
+ return tool.annotations?.title;
33
32
  }
34
33
  return WELL_KNOWN_TOOL_TITLES[tool.name];
35
34
  }
@@ -47,12 +46,11 @@ const CONNECTOR_SCOPE_PREFIX = /^(?:dashboard-team-\d+-|dashboard-|user-)/;
47
46
  * and "plugins" tells an operator nothing — "Buildkite" does.
48
47
  */
49
48
  function catalogSource(tool) {
50
- var _a, _b;
51
49
  if (tool.advertised !== true) {
52
50
  return undefined;
53
51
  }
54
52
  const properties = tool.inputSchema.properties;
55
- const first = (_b = (_a = properties === null || properties === void 0 ? void 0 : properties.__conn__) === null || _a === void 0 ? void 0 : _a.enum) === null || _b === void 0 ? void 0 : _b[0];
53
+ const first = properties?.__conn__?.enum?.[0];
56
54
  if (typeof first === "string" && first !== "") {
57
55
  return first.replace(CONNECTOR_SCOPE_PREFIX, "");
58
56
  }
@@ -66,5 +64,13 @@ export function catalogListEntry(tool) {
66
64
  };
67
65
  }
68
66
  export function catalogDetailEntry(tool) {
69
- return Object.assign(Object.assign({}, catalogListEntry(tool)), { description: tool.description, execution: tool.execution, needsApproval: tool.needsApproval, effect: tool.effect, inputSchema: tool.inputSchema, outputSchema: tool.outputSchema });
67
+ return {
68
+ ...catalogListEntry(tool),
69
+ description: tool.description,
70
+ execution: tool.execution,
71
+ needsApproval: tool.needsApproval,
72
+ effect: tool.effect,
73
+ inputSchema: tool.inputSchema,
74
+ outputSchema: tool.outputSchema,
75
+ };
70
76
  }
@@ -18,7 +18,7 @@ export function normalizeToolResult(result) {
18
18
  try {
19
19
  return JSON.parse(JSON.stringify(result));
20
20
  }
21
- catch (_a) {
21
+ catch {
22
22
  return result;
23
23
  }
24
24
  }
@@ -5,22 +5,12 @@
5
5
  * messages, assistant text, tool calls with args/results, and
6
6
  * success/failure — not a firehose of streaming deltas.
7
7
  */
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
8
  import { readFile } from "node:fs/promises";
18
9
  /**
19
10
  * Collapse a session event list into a trajectory. Streaming deltas are
20
11
  * folded into final assistant / reasoning text per turn.
21
12
  */
22
13
  export function buildTrajectory(events) {
23
- var _a, _b;
24
14
  let sessionId = "";
25
15
  let sdkAgentId;
26
16
  let agentUrl;
@@ -90,7 +80,7 @@ export function buildTrajectory(events) {
90
80
  }
91
81
  const turn = ensureTurn(event.turnId);
92
82
  for (const call of event.data.calls) {
93
- const parentCallId = (_a = call.parentCallId) !== null && _a !== void 0 ? _a : event.data.parentCallId;
83
+ const parentCallId = call.parentCallId ?? event.data.parentCallId;
94
84
  // Keep bare top-level `task` in toolCalls so evals like
95
85
  // `calledTool("task")` / `notCalledTool("task")` keep working.
96
86
  // Nested progress also appears under `subagents`.
@@ -236,9 +226,19 @@ export function buildTrajectory(events) {
236
226
  const costedTurns = turns.filter(t => t.cost !== undefined);
237
227
  const totalCostUsd = costedTurns.length === 0
238
228
  ? undefined
239
- : roundCostUsd(costedTurns.reduce((sum, t) => { var _a; var _b; return sum + ((_b = (_a = t.cost) === null || _a === void 0 ? void 0 : _a.totalUsd) !== null && _b !== void 0 ? _b : 0); }, 0));
240
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ sessionId }, (sdkAgentId === undefined ? {} : { sdkAgentId })), (agentUrl === undefined ? {} : { agentUrl })), (channelId === undefined ? {} : { channelId })), { ok: turnsFailed === 0 && turns.length > 0, finalText: (_b = lastGood === null || lastGood === void 0 ? void 0 : lastGood.assistantText) !== null && _b !== void 0 ? _b : "", turnsFailed,
241
- toolCallCount }), (totalCostUsd === undefined ? {} : { totalCostUsd })), { turns });
229
+ : roundCostUsd(costedTurns.reduce((sum, t) => sum + (t.cost?.totalUsd ?? 0), 0));
230
+ return {
231
+ sessionId,
232
+ ...(sdkAgentId === undefined ? {} : { sdkAgentId }),
233
+ ...(agentUrl === undefined ? {} : { agentUrl }),
234
+ ...(channelId === undefined ? {} : { channelId }),
235
+ ok: turnsFailed === 0 && turns.length > 0,
236
+ finalText: lastGood?.assistantText ?? "",
237
+ turnsFailed,
238
+ toolCallCount,
239
+ ...(totalCostUsd === undefined ? {} : { totalCostUsd }),
240
+ turns,
241
+ };
242
242
  }
243
243
  /** Micro-dollar precision so summed floats stay readable in JSON. */
244
244
  export function roundCostUsd(usd) {
@@ -268,22 +268,19 @@ export function parseEventsNdjson(text) {
268
268
  try {
269
269
  events.push(JSON.parse(trimmed));
270
270
  }
271
- catch (_a) {
271
+ catch {
272
272
  // skip malformed lines
273
273
  }
274
274
  }
275
275
  return events;
276
276
  }
277
277
  /** Load and summarize a durable session event log. */
278
- export function loadTrajectoryFromEventsFile(path) {
279
- return __awaiter(this, void 0, void 0, function* () {
280
- const text = yield readFile(path, "utf8");
281
- return buildTrajectory(parseEventsNdjson(text));
282
- });
278
+ export async function loadTrajectoryFromEventsFile(path) {
279
+ const text = await readFile(path, "utf8");
280
+ return buildTrajectory(parseEventsNdjson(text));
283
281
  }
284
282
  /** Human-readable one-line-per-turn dump (for non-JSON CLI output). */
285
283
  export function formatTrajectoryText(trajectory) {
286
- var _a;
287
284
  const lines = [];
288
285
  lines.push(`session ${trajectory.sessionId || "(unknown)"} ok=${trajectory.ok}`);
289
286
  if (trajectory.sdkAgentId !== undefined) {
@@ -309,7 +306,7 @@ export function formatTrajectoryText(trajectory) {
309
306
  }
310
307
  }
311
308
  for (const sub of turn.subagents) {
312
- const label = (_a = sub.name) !== null && _a !== void 0 ? _a : "subagent";
309
+ const label = sub.name ?? "subagent";
313
310
  const detail = sub.description !== undefined ? ` — ${truncate(sub.description, 80)}` : "";
314
311
  lines.push(` task ${label}${detail}`);
315
312
  for (const call of sub.toolCalls) {
@@ -3,15 +3,6 @@
3
3
  * `POST /v1/models/estimate-cost` endpoint (billed usage events when an
4
4
  * agent/conversation id is known, otherwise live catalog pricing).
5
5
  */
6
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
- return new (P || (P = Promise))(function (resolve, reject) {
9
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
- step((generator = generator.apply(thisArg, _arguments || [])).next());
13
- });
14
- };
15
6
  import { cursorExternalApiUrl, resolveApiKey } from "./cursor/credentials.js";
16
7
  export function modelSettingId(model) {
17
8
  return typeof model === "string" ? model : model.id;
@@ -40,7 +31,10 @@ export function toCatalogDisjointUsage(usage, model) {
40
31
  if (cachedTokens === 0 || usage.inputTokens < cachedTokens) {
41
32
  return usage;
42
33
  }
43
- return Object.assign(Object.assign({}, usage), { inputTokens: usage.inputTokens - cachedTokens });
34
+ return {
35
+ ...usage,
36
+ inputTokens: usage.inputTokens - cachedTokens,
37
+ };
44
38
  }
45
39
  export function roundCostUsd(usd) {
46
40
  return Math.round(usd * 1e6) / 1e6;
@@ -65,58 +59,54 @@ export function turnCostFromCents(args) {
65
59
  * is the last thing in front of that event, so an unbounded wait here queues
66
60
  * the next message behind the endpoint's billed-usage lookup.
67
61
  */
68
- const ESTIMATE_COST_TIMEOUT_MS = 5000;
69
- export function estimateTurnCostFromApi(input) {
70
- return __awaiter(this, void 0, void 0, function* () {
71
- var _a;
72
- var _b;
73
- const resolved = yield resolveApiKey();
74
- if (resolved === undefined) {
75
- return undefined;
76
- }
77
- const model = modelSettingId(input.model);
78
- const catalogUsage = input.usage === undefined ? undefined : toCatalogDisjointUsage(input.usage, input.model);
79
- let response;
80
- try {
81
- response = yield fetch(`${cursorExternalApiUrl()}/v1/models/estimate-cost`, {
82
- method: "POST",
83
- headers: {
84
- authorization: `Bearer ${resolved.apiKey}`,
85
- "content-type": "application/json",
86
- },
87
- body: JSON.stringify({
88
- model,
89
- inputTokens: catalogUsage === null || catalogUsage === void 0 ? void 0 : catalogUsage.inputTokens,
90
- outputTokens: catalogUsage === null || catalogUsage === void 0 ? void 0 : catalogUsage.outputTokens,
91
- cacheReadTokens: catalogUsage === null || catalogUsage === void 0 ? void 0 : catalogUsage.cacheReadTokens,
92
- cacheWriteTokens: catalogUsage === null || catalogUsage === void 0 ? void 0 : catalogUsage.cacheWriteTokens,
93
- agentId: input.agentId,
94
- conversationId: input.conversationId,
95
- runId: input.runId,
96
- }),
97
- signal: AbortSignal.timeout(ESTIMATE_COST_TIMEOUT_MS),
98
- });
99
- }
100
- catch (_c) {
101
- return undefined;
102
- }
103
- if (!response.ok) {
104
- return undefined;
105
- }
106
- let body;
107
- try {
108
- body = (yield response.json());
109
- }
110
- catch (_d) {
111
- return undefined;
112
- }
113
- if (typeof ((_a = body.cost) === null || _a === void 0 ? void 0 : _a.rawCostCents) !== "number" || typeof body.cost.chargedCents !== "number") {
114
- return undefined;
115
- }
116
- return turnCostFromCents({
117
- model: (_b = body.model) !== null && _b !== void 0 ? _b : model,
118
- cost: body.cost,
119
- source: body.source === "usage" ? "usage" : "catalog",
62
+ const ESTIMATE_COST_TIMEOUT_MS = 5_000;
63
+ export async function estimateTurnCostFromApi(input) {
64
+ const resolved = await resolveApiKey();
65
+ if (resolved === undefined) {
66
+ return undefined;
67
+ }
68
+ const model = modelSettingId(input.model);
69
+ const catalogUsage = input.usage === undefined ? undefined : toCatalogDisjointUsage(input.usage, input.model);
70
+ let response;
71
+ try {
72
+ response = await fetch(`${cursorExternalApiUrl()}/v1/models/estimate-cost`, {
73
+ method: "POST",
74
+ headers: {
75
+ authorization: `Bearer ${resolved.apiKey}`,
76
+ "content-type": "application/json",
77
+ },
78
+ body: JSON.stringify({
79
+ model,
80
+ inputTokens: catalogUsage?.inputTokens,
81
+ outputTokens: catalogUsage?.outputTokens,
82
+ cacheReadTokens: catalogUsage?.cacheReadTokens,
83
+ cacheWriteTokens: catalogUsage?.cacheWriteTokens,
84
+ agentId: input.agentId,
85
+ conversationId: input.conversationId,
86
+ runId: input.runId,
87
+ }),
88
+ signal: AbortSignal.timeout(ESTIMATE_COST_TIMEOUT_MS),
120
89
  });
90
+ }
91
+ catch {
92
+ return undefined;
93
+ }
94
+ if (!response.ok) {
95
+ return undefined;
96
+ }
97
+ let body;
98
+ try {
99
+ body = (await response.json());
100
+ }
101
+ catch {
102
+ return undefined;
103
+ }
104
+ if (typeof body.cost?.rawCostCents !== "number" || typeof body.cost.chargedCents !== "number") {
105
+ return undefined;
106
+ }
107
+ return turnCostFromCents({
108
+ model: body.model ?? model,
109
+ cost: body.cost,
110
+ source: body.source === "usage" ? "usage" : "catalog",
121
111
  });
122
112
  }
@@ -15,7 +15,7 @@ export class TurnGovernor {
15
15
  this.waiters = [];
16
16
  /** Sessions currently waiting for a slot (at most one turn per session). */
17
17
  this.queuedSessions = new Set();
18
- this.maxRunningTurns = concurrency === null || concurrency === void 0 ? void 0 : concurrency.maxRunningTurns;
18
+ this.maxRunningTurns = concurrency?.maxRunningTurns;
19
19
  }
20
20
  /** True when a `maxRunningTurns` ceiling is configured. */
21
21
  get limited() {
@@ -40,7 +40,6 @@ export class TurnGovernor {
40
40
  * running. Unlimited governors grant immediately.
41
41
  */
42
42
  acquire(args) {
43
- var _a;
44
43
  const limit = this.maxRunningTurns;
45
44
  if (limit === undefined) {
46
45
  return Promise.resolve(NO_OP_PERMIT);
@@ -49,19 +48,17 @@ export class TurnGovernor {
49
48
  return Promise.resolve(this.grantSlot());
50
49
  }
51
50
  // Saturated. A turn that is already preempted never enqueues.
52
- if (((_a = args.signal) === null || _a === void 0 ? void 0 : _a.aborted) === true) {
51
+ if (args.signal?.aborted === true) {
53
52
  return Promise.resolve(undefined);
54
53
  }
55
54
  return new Promise(resolve => {
56
- var _a, _b;
57
55
  const waiter = {
58
56
  sessionId: args.sessionId,
59
57
  grant: permit => resolve(permit),
60
58
  cancel: () => resolve(undefined),
61
59
  cleanup: () => {
62
- var _a;
63
60
  this.queuedSessions.delete(args.sessionId);
64
- (_a = args.signal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", onAbort);
61
+ args.signal?.removeEventListener("abort", onAbort);
65
62
  },
66
63
  };
67
64
  const onAbort = () => {
@@ -75,8 +72,8 @@ export class TurnGovernor {
75
72
  };
76
73
  this.waiters.push(waiter);
77
74
  this.queuedSessions.add(args.sessionId);
78
- (_a = args.signal) === null || _a === void 0 ? void 0 : _a.addEventListener("abort", onAbort, { once: true });
79
- (_b = args.onQueued) === null || _b === void 0 ? void 0 : _b.call(args, this.waiters.length);
75
+ args.signal?.addEventListener("abort", onAbort, { once: true });
76
+ args.onQueued?.(this.waiters.length);
80
77
  });
81
78
  }
82
79
  /** Take a slot and build its (idempotent) release handle. */