@cursor/bdk 0.2.8 → 0.2.10

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 (581) hide show
  1. package/dist/artifacts.js +3 -5
  2. package/dist/bin/agent-serve.d.ts +1 -0
  3. package/dist/bin/agent-serve.d.ts.map +1 -1
  4. package/dist/bin/agent-serve.js +820 -807
  5. package/dist/channels/bitbucket/api.js +305 -321
  6. package/dist/channels/bitbucket/binding.js +97 -61
  7. package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
  8. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
  9. package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
  10. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
  11. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  12. package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
  13. package/dist/channels/bitbucket/checks.js +9 -21
  14. package/dist/channels/bitbucket/cursor-account.js +1 -1
  15. package/dist/channels/bitbucket/defaults.js +14 -4
  16. package/dist/channels/bitbucket/events.js +1 -2
  17. package/dist/channels/bitbucket/index.d.ts +6 -2
  18. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  19. package/dist/channels/bitbucket/index.js +6 -2
  20. package/dist/channels/bitbucket/replay.js +80 -56
  21. package/dist/channels/bitbucket/state.js +16 -7
  22. package/dist/channels/bitbucket/types.d.ts +11 -2
  23. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  24. package/dist/channels/checks.js +18 -28
  25. package/dist/channels/deployments/deployments-channel.js +26 -34
  26. package/dist/channels/github/api.js +216 -210
  27. package/dist/channels/github/auth.d.ts +5 -1
  28. package/dist/channels/github/auth.d.ts.map +1 -1
  29. package/dist/channels/github/auth.js +157 -174
  30. package/dist/channels/github/binding.js +48 -39
  31. package/dist/channels/github/checks.js +9 -14
  32. package/dist/channels/github/cursor-account.js +6 -11
  33. package/dist/channels/github/defaults.js +105 -130
  34. package/dist/channels/github/forward.js +13 -17
  35. package/dist/channels/github/github-channel.d.ts +43 -2
  36. package/dist/channels/github/github-channel.d.ts.map +1 -1
  37. package/dist/channels/github/github-channel.js +1228 -958
  38. package/dist/channels/github/progress.js +145 -146
  39. package/dist/channels/github/replay.js +30 -39
  40. package/dist/channels/github/state.js +40 -16
  41. package/dist/channels/github/types.d.ts +30 -6
  42. package/dist/channels/github/types.d.ts.map +1 -1
  43. package/dist/channels/gitlab/api.js +100 -114
  44. package/dist/channels/gitlab/binding.js +52 -33
  45. package/dist/channels/gitlab/checks.js +28 -29
  46. package/dist/channels/gitlab/cursor-account.js +1 -1
  47. package/dist/channels/gitlab/defaults.js +9 -3
  48. package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
  49. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
  50. package/dist/channels/gitlab/gitlab-channel.js +95 -42
  51. package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
  52. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
  53. package/dist/channels/gitlab/gitlab-webhook.js +282 -249
  54. package/dist/channels/gitlab/index.d.ts +6 -2
  55. package/dist/channels/gitlab/index.d.ts.map +1 -1
  56. package/dist/channels/gitlab/index.js +6 -2
  57. package/dist/channels/gitlab/replay.js +50 -27
  58. package/dist/channels/gitlab/state.js +14 -6
  59. package/dist/channels/gitlab/types.d.ts +13 -2
  60. package/dist/channels/gitlab/types.d.ts.map +1 -1
  61. package/dist/channels/origin/api.js +100 -116
  62. package/dist/channels/origin/binding.js +15 -16
  63. package/dist/channels/origin/checks.js +30 -28
  64. package/dist/channels/origin/defaults.js +50 -65
  65. package/dist/channels/origin/origin-channel.js +266 -272
  66. package/dist/channels/origin/origin-webhook.js +70 -88
  67. package/dist/channels/origin/reactions.js +9 -21
  68. package/dist/channels/origin/state.js +13 -5
  69. package/dist/channels/slack/agentic-delivery.js +426 -478
  70. package/dist/channels/slack/agentic-posted.js +9 -10
  71. package/dist/channels/slack/agentic-signals.js +2 -3
  72. package/dist/channels/slack/api.js +417 -427
  73. package/dist/channels/slack/approvals.js +1 -1
  74. package/dist/channels/slack/assistant.js +37 -47
  75. package/dist/channels/slack/attachments.js +188 -206
  76. package/dist/channels/slack/auth.js +8 -6
  77. package/dist/channels/slack/bot-mentions.js +31 -45
  78. package/dist/channels/slack/channel-watch.js +42 -48
  79. package/dist/channels/slack/cli-project.js +112 -137
  80. package/dist/channels/slack/code-fences.js +3 -5
  81. package/dist/channels/slack/constants.js +2 -2
  82. package/dist/channels/slack/credentials.js +23 -38
  83. package/dist/channels/slack/defaults.js +292 -331
  84. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  85. package/dist/channels/slack/dispatch.js +533 -460
  86. package/dist/channels/slack/doctor.js +200 -214
  87. package/dist/channels/slack/eval-directive.js +79 -96
  88. package/dist/channels/slack/event-id-dedupe.js +1 -1
  89. package/dist/channels/slack/external-policy.js +26 -39
  90. package/dist/channels/slack/footer.js +28 -41
  91. package/dist/channels/slack/inbound.d.ts +1 -0
  92. package/dist/channels/slack/inbound.d.ts.map +1 -1
  93. package/dist/channels/slack/inbound.js +50 -31
  94. package/dist/channels/slack/init.d.ts +1 -5
  95. package/dist/channels/slack/init.d.ts.map +1 -1
  96. package/dist/channels/slack/init.js +42 -59
  97. package/dist/channels/slack/interactive.d.ts +9 -3
  98. package/dist/channels/slack/interactive.d.ts.map +1 -1
  99. package/dist/channels/slack/interactive.js +160 -162
  100. package/dist/channels/slack/links.js +1 -2
  101. package/dist/channels/slack/live-delivery.js +172 -190
  102. package/dist/channels/slack/manifest.d.ts.map +1 -1
  103. package/dist/channels/slack/manifest.js +44 -23
  104. package/dist/channels/slack/message-body.js +2 -2
  105. package/dist/channels/slack/nudge-carrier.js +30 -42
  106. package/dist/channels/slack/nudge-store.js +164 -191
  107. package/dist/channels/slack/paint-start.js +66 -81
  108. package/dist/channels/slack/placeholder.js +123 -152
  109. package/dist/channels/slack/pr-ref.js +1 -1
  110. package/dist/channels/slack/progress-delivery.js +65 -78
  111. package/dist/channels/slack/reasoning-card.js +36 -49
  112. package/dist/channels/slack/recording-sink.js +12 -24
  113. package/dist/channels/slack/reply-options.js +7 -12
  114. package/dist/channels/slack/self-identity.js +27 -35
  115. package/dist/channels/slack/sender-name.d.ts +12 -3
  116. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  117. package/dist/channels/slack/sender-name.js +57 -61
  118. package/dist/channels/slack/setup.js +2 -4
  119. package/dist/channels/slack/slack-channel.d.ts +6 -4
  120. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  121. package/dist/channels/slack/slack-channel.js +441 -308
  122. package/dist/channels/slack/socket-mode.js +38 -52
  123. package/dist/channels/slack/thread-context.js +143 -160
  124. package/dist/channels/slack/tool-approval-events.js +149 -166
  125. package/dist/channels/slack/tool-cards.js +6 -11
  126. package/dist/channels/slack/tool-chip.js +1 -2
  127. package/dist/channels/slack/types.d.ts +15 -17
  128. package/dist/channels/slack/types.d.ts.map +1 -1
  129. package/dist/channels/slack/upload.js +84 -97
  130. package/dist/channels/slack/user-info.js +27 -41
  131. package/dist/channels.js +9 -20
  132. package/dist/dashboard-session-url.js +3 -4
  133. package/dist/docs/404.html +2 -2
  134. package/dist/docs/assets/{app.oyjtOr3W.js → app.DXI7bwox.js} +4 -4
  135. package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
  136. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
  137. package/dist/docs/assets/chunks/{VPLocalSearchBox.D0P6J_UJ.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
  138. package/dist/docs/assets/chunks/{arc.B0LY1J1h.js → arc.BOG1yms8.js} +1 -1
  139. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.dPduLUxY.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
  140. package/dist/docs/assets/chunks/{baseUniq.B_Ohm21h.js → baseUniq.H044KjKs.js} +1 -1
  141. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.B4zcanaJ.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
  142. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.D9Iw21nx.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
  143. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
  144. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.DDVwRShI.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
  145. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DsYcdn1i.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
  146. package/dist/docs/assets/chunks/{chunk-55IACEB6.BzzQvcYp.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
  147. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BMiXZ7FX.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
  148. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.D_mBcLoc.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
  149. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CMVjWVMx.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
  150. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BG-FrPv9.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
  151. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CkFE1ap3.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
  152. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
  153. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
  154. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
  155. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BVNnCTvY.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
  156. package/dist/docs/assets/chunks/{dagre-KV5264BT.CDN5PR9l.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
  157. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DQRUlT-i.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
  158. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.CoeblYQT.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
  159. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DW3ymjl0.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
  160. package/dist/docs/assets/chunks/{diagram-TYMM5635.BP0uN4Jw.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
  161. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DVFUWEn4.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
  162. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.HU-eHspv.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
  163. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DHNhXijY.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
  164. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DkISXcO3.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
  165. package/dist/docs/assets/chunks/{graph.CCV0fuRR.js → graph.BVqKRmRo.js} +1 -1
  166. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.bgILzOoc.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
  167. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.CuryXC0F.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
  168. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BL1Pr-wu.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
  169. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BbGjvk4l.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
  170. package/dist/docs/assets/chunks/{layout.C4PfdldS.js → layout.CGU3gfSf.js} +1 -1
  171. package/dist/docs/assets/chunks/{linear.C3xD1T6X.js → linear.DaihpW_n.js} +1 -1
  172. package/dist/docs/assets/chunks/{min.CzgRAQ9c.js → min.BS-j8kHQ.js} +1 -1
  173. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CA9rSWum.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
  174. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.B8MprgJu.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
  175. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DndDwbKT.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
  176. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.Zhfgwlnn.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
  177. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.B6RRm6N5.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
  178. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Bfmz-1PN.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
  179. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.gbrdNqgj.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
  180. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
  181. package/dist/docs/assets/chunks/{theme.gpWjytMh.js → theme.DaplWQhQ.js} +2 -2
  182. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Bl1l7M1f.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
  183. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.Dfle4U0d.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
  184. package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +162 -0
  185. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.CM_4lmvZ.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
  186. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CHT5X28R.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
  187. package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
  188. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
  189. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
  190. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
  191. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
  192. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
  193. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
  194. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
  195. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
  196. package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
  197. package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
  198. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  199. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  200. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  201. package/dist/docs/building-with-agents.html +37 -37
  202. package/dist/docs/building-with-agents.md +2 -0
  203. package/dist/docs/deployment.html +38 -38
  204. package/dist/docs/deployment.md +7 -0
  205. package/dist/docs/evals.html +36 -36
  206. package/dist/docs/guides/agent-to-agent.html +35 -35
  207. package/dist/docs/guides/bitbucket.html +38 -38
  208. package/dist/docs/guides/bitbucket.md +9 -1
  209. package/dist/docs/guides/cloud-agents.html +35 -35
  210. package/dist/docs/guides/convert-automation.html +35 -35
  211. package/dist/docs/guides/github.html +39 -39
  212. package/dist/docs/guides/github.md +20 -4
  213. package/dist/docs/guides/gitlab.html +38 -38
  214. package/dist/docs/guides/gitlab.md +9 -1
  215. package/dist/docs/guides/grokbot-agents.html +35 -35
  216. package/dist/docs/guides/hooks.html +35 -35
  217. package/dist/docs/guides/improve.html +35 -35
  218. package/dist/docs/guides/jev.html +35 -35
  219. package/dist/docs/guides/mcp-oauth.html +35 -35
  220. package/dist/docs/guides/migrate.html +66 -0
  221. package/dist/docs/guides/migrate.md +122 -0
  222. package/dist/docs/guides/opentelemetry.html +35 -35
  223. package/dist/docs/guides/slack.html +35 -35
  224. package/dist/docs/guides/webhooks.html +35 -35
  225. package/dist/docs/hashmap.json +1 -1
  226. package/dist/docs/hillclimbing.html +35 -35
  227. package/dist/docs/index.html +35 -35
  228. package/dist/docs/llms-full.txt +214 -6
  229. package/dist/docs/llms.txt +1 -0
  230. package/dist/docs/quickstart.html +35 -35
  231. package/dist/docs/reference/agent-config.html +35 -35
  232. package/dist/docs/reference/artifacts.html +35 -35
  233. package/dist/docs/reference/channels.html +35 -35
  234. package/dist/docs/reference/cli.html +39 -38
  235. package/dist/docs/reference/cli.md +39 -0
  236. package/dist/docs/reference/connections.html +35 -35
  237. package/dist/docs/reference/evals.html +35 -35
  238. package/dist/docs/reference/extensions.html +35 -35
  239. package/dist/docs/reference/hooks.html +35 -35
  240. package/dist/docs/reference/http-api.html +35 -35
  241. package/dist/docs/reference/instructions.html +35 -35
  242. package/dist/docs/reference/playground.html +35 -35
  243. package/dist/docs/reference/project-layout.html +35 -35
  244. package/dist/docs/reference/prompt.html +35 -35
  245. package/dist/docs/reference/schedules.html +35 -35
  246. package/dist/docs/reference/sessions.html +35 -35
  247. package/dist/docs/reference/skills.html +38 -38
  248. package/dist/docs/reference/subagents.html +35 -35
  249. package/dist/docs/reference/tools.html +35 -35
  250. package/dist/docs/templates/agentic-owners.html +35 -35
  251. package/dist/docs/templates/grokbot-agents.html +35 -35
  252. package/dist/docs/templates/security-reviewer.html +35 -35
  253. package/dist/docs/templates/thermo-quality-review.html +35 -35
  254. package/dist/docs/templates/thermo-review.html +35 -35
  255. package/dist/docs/templates/triage.html +35 -35
  256. package/dist/docs/troubleshooting.html +36 -36
  257. package/dist/docs/troubleshooting.md +1 -0
  258. package/dist/evals/assertions.js +20 -34
  259. package/dist/evals/expect.js +3 -6
  260. package/dist/evals/judge.js +5 -8
  261. package/dist/evals/loaders.js +45 -62
  262. package/dist/evals/matchers.js +2 -3
  263. package/dist/evals/reporters.js +43 -67
  264. package/dist/evals/results.js +1 -1
  265. package/dist/evals/run-facts.js +5 -6
  266. package/dist/evals.js +27 -15
  267. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  268. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +0 -1
  269. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  270. package/dist/extensions/cursor-cloud-agents/lib/backend.js +101 -130
  271. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  272. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  273. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  274. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  275. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  276. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  277. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  278. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  279. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  280. package/dist/extensions/cursor-cloud-agents/tools/list.d.ts.map +1 -1
  281. package/dist/extensions/cursor-cloud-agents/tools/list.js +9 -20
  282. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  283. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  284. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  285. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  286. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  287. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  288. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  289. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  290. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  291. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  292. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  293. package/dist/extensions/jev/extension.js +3 -3
  294. package/dist/extensions/jev/lib/evaluate.js +43 -60
  295. package/dist/extensions/jev/tools/evaluate.js +6 -17
  296. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  297. package/dist/extensions.js +3 -5
  298. package/dist/files-backends/cursor-hosted.js +504 -523
  299. package/dist/files-backends/local-fs.js +72 -134
  300. package/dist/files.js +3 -3
  301. package/dist/filesystem.js +562 -861
  302. package/dist/index.js +16 -35
  303. package/dist/internal/advertise-tools.js +74 -86
  304. package/dist/internal/artifacts-store.js +298 -361
  305. package/dist/internal/as-of.js +2 -4
  306. package/dist/internal/authored-alias-hooks.js +6 -4
  307. package/dist/internal/authored-loaders.js +37 -52
  308. package/dist/internal/bounded-int.js +1 -2
  309. package/dist/internal/bounded.js +13 -24
  310. package/dist/internal/brand.js +1 -1
  311. package/dist/internal/browser-origin-guard.js +4 -4
  312. package/dist/internal/builtin-tools/artifacts.js +15 -27
  313. package/dist/internal/builtin-tools/index.js +2 -3
  314. package/dist/internal/builtin-tools/reminders.js +33 -52
  315. package/dist/internal/channel-architecture.d.ts +21 -0
  316. package/dist/internal/channel-architecture.d.ts.map +1 -0
  317. package/dist/internal/channel-architecture.js +41 -0
  318. package/dist/internal/channel-dispatch.js +3 -4
  319. package/dist/internal/channel-route-dispatch.js +40 -51
  320. package/dist/internal/channel-state.js +1 -1
  321. package/dist/internal/chat-client.js +319 -340
  322. package/dist/internal/cli-ax.js +1262 -1294
  323. package/dist/internal/cli-bitbucket.js +244 -272
  324. package/dist/internal/cli-convert-automation.js +137 -151
  325. package/dist/internal/cli-cursor.js +126 -147
  326. package/dist/internal/cli-deploy.d.ts.map +1 -1
  327. package/dist/internal/cli-deploy.js +1457 -1507
  328. package/dist/internal/cli-docs.js +130 -147
  329. package/dist/internal/cli-github.js +437 -476
  330. package/dist/internal/cli-gitlab.js +259 -288
  331. package/dist/internal/cli-images.js +266 -334
  332. package/dist/internal/cli-manifest.js +25 -37
  333. package/dist/internal/cli-mcp-oauth.js +228 -247
  334. package/dist/internal/cli-mcp.js +358 -383
  335. package/dist/internal/cli-migrate.d.ts +18 -0
  336. package/dist/internal/cli-migrate.d.ts.map +1 -0
  337. package/dist/internal/cli-migrate.js +136 -0
  338. package/dist/internal/cli-skills.js +35 -47
  339. package/dist/internal/cli-slack-manual.d.ts +0 -1
  340. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  341. package/dist/internal/cli-slack-manual.js +175 -204
  342. package/dist/internal/cli-slack.d.ts +1 -1
  343. package/dist/internal/cli-slack.d.ts.map +1 -1
  344. package/dist/internal/cli-slack.js +416 -456
  345. package/dist/internal/cloud-merge.js +7 -3
  346. package/dist/internal/cloud-turn-cost.js +8 -1
  347. package/dist/internal/connection-env.js +5 -6
  348. package/dist/internal/continuation-channel.js +10 -7
  349. package/dist/internal/continuation-identity.js +85 -67
  350. package/dist/internal/conversation-mirror.js +112 -131
  351. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  352. package/dist/internal/cron.js +3 -3
  353. package/dist/internal/cursor/account-mcp.js +147 -146
  354. package/dist/internal/cursor/backend-client.js +290 -320
  355. package/dist/internal/cursor/bound-secret-file.js +3 -3
  356. package/dist/internal/cursor/credentials.d.ts +1 -0
  357. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  358. package/dist/internal/cursor/credentials.js +130 -142
  359. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  360. package/dist/internal/cursor/github-credentials.js +91 -108
  361. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  362. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  363. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  364. package/dist/internal/cursor/session-token.js +36 -48
  365. package/dist/internal/cursor/store-api-client.js +77 -92
  366. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  367. package/dist/internal/cursor-agent-template.js +1 -1
  368. package/dist/internal/cursor-deployment-relay.js +33 -54
  369. package/dist/internal/cursor-event-relay.js +65 -59
  370. package/dist/internal/cursor-relay-core.js +258 -286
  371. package/dist/internal/deferred-channel-session.js +3 -12
  372. package/dist/internal/deploy-client.js +410 -475
  373. package/dist/internal/deploy-manifest.d.ts +17 -0
  374. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  375. package/dist/internal/deploy-manifest.js +71 -21
  376. package/dist/internal/deploy-source.js +31 -43
  377. package/dist/internal/discovery/agent-config.js +45 -59
  378. package/dist/internal/discovery/agent.js +276 -280
  379. package/dist/internal/discovery/channels.js +67 -80
  380. package/dist/internal/discovery/connections.js +286 -296
  381. package/dist/internal/discovery/context.js +2 -13
  382. package/dist/internal/discovery/cursor-plugin.js +223 -259
  383. package/dist/internal/discovery/extension-overlay.js +104 -131
  384. package/dist/internal/discovery/extensions.js +276 -281
  385. package/dist/internal/discovery/fs.js +56 -79
  386. package/dist/internal/discovery/hooks.js +39 -50
  387. package/dist/internal/discovery/info.js +17 -19
  388. package/dist/internal/discovery/instructions.js +58 -71
  389. package/dist/internal/discovery/modules.js +45 -58
  390. package/dist/internal/discovery/project.d.ts.map +1 -1
  391. package/dist/internal/discovery/project.js +192 -215
  392. package/dist/internal/discovery/reminders.js +41 -52
  393. package/dist/internal/discovery/runtime.js +1 -1
  394. package/dist/internal/discovery/schedules.js +71 -82
  395. package/dist/internal/discovery/seed-files.js +21 -32
  396. package/dist/internal/discovery/services.js +74 -96
  397. package/dist/internal/discovery/skills.js +77 -94
  398. package/dist/internal/discovery/subagent.js +79 -95
  399. package/dist/internal/discovery/tools.js +12 -23
  400. package/dist/internal/distribution.js +2 -2
  401. package/dist/internal/docs-site.js +30 -45
  402. package/dist/internal/duration.js +1 -1
  403. package/dist/internal/env-file.js +48 -64
  404. package/dist/internal/eval-judge-model.js +17 -28
  405. package/dist/internal/eval-run-store.js +265 -254
  406. package/dist/internal/eval-runner.d.ts +8 -0
  407. package/dist/internal/eval-runner.d.ts.map +1 -1
  408. package/dist/internal/eval-runner.js +406 -408
  409. package/dist/internal/eval-transport.d.ts +24 -0
  410. package/dist/internal/eval-transport.d.ts.map +1 -0
  411. package/dist/internal/eval-transport.js +22 -0
  412. package/dist/internal/evals-client.js +242 -246
  413. package/dist/internal/event-log.js +72 -120
  414. package/dist/internal/event-mapper.js +30 -31
  415. package/dist/internal/factory-resource-channel.js +16 -30
  416. package/dist/internal/filesystem/errors.js +6 -6
  417. package/dist/internal/filesystem/format.js +10 -13
  418. package/dist/internal/filesystem/merge.js +52 -94
  419. package/dist/internal/filesystem/nearest.js +15 -27
  420. package/dist/internal/filesystem/scratch.js +65 -85
  421. package/dist/internal/filesystem/tools.js +221 -241
  422. package/dist/internal/filesystem/walk.js +76 -143
  423. package/dist/internal/framework-file-storage.js +118 -139
  424. package/dist/internal/framework-storage-selection.js +21 -13
  425. package/dist/internal/frontmatter.js +4 -6
  426. package/dist/internal/github-fanout.js +50 -64
  427. package/dist/internal/guest-network.js +96 -109
  428. package/dist/internal/handleAgentServeTrigger.js +121 -126
  429. package/dist/internal/host-files.js +73 -88
  430. package/dist/internal/host-kv.js +21 -36
  431. package/dist/internal/host-otel.js +22 -19
  432. package/dist/internal/host-platforms.js +49 -63
  433. package/dist/internal/hosted-catch-protocol.d.ts +1 -0
  434. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  435. package/dist/internal/hosted-catch-protocol.js +1 -0
  436. package/dist/internal/hosted-catch.d.ts +5 -3
  437. package/dist/internal/hosted-catch.d.ts.map +1 -1
  438. package/dist/internal/hosted-catch.js +84 -93
  439. package/dist/internal/hosted-delivery-protocol.js +32 -8
  440. package/dist/internal/hosted-delivery.d.ts +13 -1
  441. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  442. package/dist/internal/hosted-delivery.js +614 -584
  443. package/dist/internal/hosted-eval-cases.d.ts +21 -0
  444. package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
  445. package/dist/internal/hosted-eval-cases.js +162 -0
  446. package/dist/internal/hosted-execution-diag.js +38 -30
  447. package/dist/internal/hosted-execution-flush.js +75 -66
  448. package/dist/internal/hosted-execution-latency.js +16 -8
  449. package/dist/internal/hosted-managed-automation.js +2 -2
  450. package/dist/internal/hosting.js +2 -3
  451. package/dist/internal/http-channel-define.js +4 -1
  452. package/dist/internal/http-channel.js +101 -112
  453. package/dist/internal/http-control-plane-session.d.ts +18 -1
  454. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  455. package/dist/internal/http-control-plane-session.js +66 -32
  456. package/dist/internal/incoming-headers-to-fetch.js +1 -2
  457. package/dist/internal/init-interview.js +73 -93
  458. package/dist/internal/init-project.js +182 -214
  459. package/dist/internal/init-scaffold.js +10 -21
  460. package/dist/internal/inline-stdio-mcp.js +80 -86
  461. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  462. package/dist/internal/install-cursor-skills.js +238 -274
  463. package/dist/internal/legacy-command-guard.js +18 -31
  464. package/dist/internal/listen-port.js +34 -45
  465. package/dist/internal/local-control-plane.js +293 -307
  466. package/dist/internal/local-env.js +1 -1
  467. package/dist/internal/local-ingress.js +15 -9
  468. package/dist/internal/log-ring.js +1 -2
  469. package/dist/internal/logs-client.js +207 -227
  470. package/dist/internal/map-pool.js +24 -38
  471. package/dist/internal/mcp-endpoint.js +204 -180
  472. package/dist/internal/mcp-host.js +165 -168
  473. package/dist/internal/mcp-oauth-on-demand.js +170 -207
  474. package/dist/internal/mcp-oauth-persist.js +15 -29
  475. package/dist/internal/mcp-oauth.js +209 -266
  476. package/dist/internal/named-webhook-secret.d.ts +39 -0
  477. package/dist/internal/named-webhook-secret.d.ts.map +1 -0
  478. package/dist/internal/named-webhook-secret.js +47 -0
  479. package/dist/internal/open-browser.js +2 -3
  480. package/dist/internal/otel/collector.js +104 -68
  481. package/dist/internal/otel/config.js +24 -37
  482. package/dist/internal/otel/http.js +5 -7
  483. package/dist/internal/otel/mcp.js +3 -12
  484. package/dist/internal/otel/runtime.js +69 -83
  485. package/dist/internal/package-inline-stdio.js +57 -65
  486. package/dist/internal/peer-connections.js +9 -5
  487. package/dist/internal/platform-schedule-sync.js +39 -54
  488. package/dist/internal/platform-timers.js +176 -210
  489. package/dist/internal/playground/static.js +1 -2
  490. package/dist/internal/playground/toolchain.js +37 -53
  491. package/dist/internal/playground-proxy.js +230 -270
  492. package/dist/internal/process-memory-telemetry.js +33 -51
  493. package/dist/internal/prompt-context.js +3 -6
  494. package/dist/internal/reminder-control-plane-protocol.js +46 -13
  495. package/dist/internal/reminder-runner.js +770 -785
  496. package/dist/internal/reminder-schedule.js +1 -1
  497. package/dist/internal/reminder-store.js +57 -78
  498. package/dist/internal/request-error-status.js +1 -3
  499. package/dist/internal/request-headers.js +2 -2
  500. package/dist/internal/resolve-prod-target.js +119 -135
  501. package/dist/internal/resolved-connections.js +16 -6
  502. package/dist/internal/run-client.js +221 -229
  503. package/dist/internal/runtime-dispatch-runner.js +18 -43
  504. package/dist/internal/schedule-runner.js +49 -58
  505. package/dist/internal/scm/pr-url.js +7 -6
  506. package/dist/internal/sdk-runner.js +388 -363
  507. package/dist/internal/serve-restart.js +26 -39
  508. package/dist/internal/server.d.ts.map +1 -1
  509. package/dist/internal/server.js +1283 -1244
  510. package/dist/internal/session-cost.js +7 -9
  511. package/dist/internal/session-engine.d.ts +3 -1
  512. package/dist/internal/session-engine.d.ts.map +1 -1
  513. package/dist/internal/session-engine.js +2801 -2777
  514. package/dist/internal/session-links.js +12 -16
  515. package/dist/internal/session-run-log.js +134 -82
  516. package/dist/internal/session-store.js +133 -164
  517. package/dist/internal/sessions-client.js +97 -118
  518. package/dist/internal/skill-catalog.js +18 -23
  519. package/dist/internal/skills-sync.js +16 -30
  520. package/dist/internal/slack-provision-client.js +90 -116
  521. package/dist/internal/start-log-store.js +48 -67
  522. package/dist/internal/steering.js +1 -2
  523. package/dist/internal/storage-coordinator.js +160 -196
  524. package/dist/internal/store-mirror.js +16 -30
  525. package/dist/internal/stream-progress.js +6 -8
  526. package/dist/internal/terminal-style.js +3 -4
  527. package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
  528. package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
  529. package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
  530. package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
  531. package/dist/internal/tool-catalog.js +11 -5
  532. package/dist/internal/tool-result.js +1 -1
  533. package/dist/internal/trajectory.js +19 -22
  534. package/dist/internal/turn-cost.js +52 -62
  535. package/dist/internal/turn-governor.js +5 -8
  536. package/dist/internal/turn-lease-store.js +85 -105
  537. package/dist/internal/turn-outbox.js +28 -43
  538. package/dist/internal/update-check.js +231 -259
  539. package/dist/internal/v2-hosting.js +1 -2
  540. package/dist/internal/workspace-sync.js +25 -41
  541. package/dist/internal/workspace.js +111 -139
  542. package/dist/kv/memory-kv.js +27 -51
  543. package/dist/memory.js +106 -148
  544. package/dist/otel.js +5 -8
  545. package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
  546. package/dist/playground/assets/{index-MijLHTbB.js → index-JekUQERK.js} +45 -45
  547. package/dist/playground/index.html +2 -2
  548. package/dist/prompt.js +2 -4
  549. package/dist/storage-backends/cursor-hosted-v2.js +53 -83
  550. package/dist/storage-backends/cursor-hosted.js +105 -145
  551. package/dist/storage-backends/file-kv.js +100 -128
  552. package/dist/storage-protocol.js +3 -5
  553. package/dist/storage.js +17 -26
  554. package/dist/types.d.ts +68 -0
  555. package/dist/types.d.ts.map +1 -1
  556. package/dist/types.js +20 -18
  557. package/docs/building-with-agents.md +2 -0
  558. package/docs/deployment.md +7 -0
  559. package/docs/guides/bitbucket.md +9 -1
  560. package/docs/guides/github.md +20 -4
  561. package/docs/guides/gitlab.md +9 -1
  562. package/docs/guides/migrate.md +127 -0
  563. package/docs/reference/cli.md +39 -0
  564. package/docs/troubleshooting.md +1 -0
  565. package/package.json +1 -1
  566. package/skills/debug/SKILL.md +1 -0
  567. package/skills/github/SKILL.md +23 -0
  568. package/skills/migrate-v2/SKILL.md +264 -0
  569. package/dist/docs/assets/chunks/@localSearchIndexroot.C25zYVuc.js +0 -1
  570. package/dist/docs/assets/chunks/channel.CRUyWDV-.js +0 -1
  571. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CG_UObcQ.js +0 -1
  572. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CG_UObcQ.js +0 -1
  573. package/dist/docs/assets/chunks/clone.NYSZ9qZN.js +0 -1
  574. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DOOmulfQ.js +0 -1
  575. package/dist/docs/assets/chunks/wardley-RL74JXVD.BJrCW6xc.js +0 -162
  576. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
  577. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
  578. package/dist/playground/assets/index-DPKLl4C_.css +0 -1
  579. /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
  580. /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
  581. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -7,15 +7,6 @@
7
7
  * Runs against the live mount's loopback URL so case sessions appear in
8
8
  * the playground session list.
9
9
  */
10
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
- return new (P || (P = Promise))(function (resolve, reject) {
13
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
- step((generator = generator.apply(thisArg, _arguments || [])).next());
17
- });
18
- };
19
10
  import { randomUUID } from "node:crypto";
20
11
  import { resolveEvalMaxPlaygroundRuns, } from "../evals.js";
21
12
  import { discoverEvals, filterDiscoveredEvals, runDiscoveredEvals, } from "./eval-runner.js";
@@ -34,122 +25,126 @@ export class EvalRunStore {
34
25
  this.abortByRunId = new Map();
35
26
  this.hydrated = false;
36
27
  }
37
- list() {
38
- return __awaiter(this, void 0, void 0, function* () {
39
- yield this.hydrate();
40
- const { evals, config } = yield discoverEvals(this.projectRoot);
41
- return {
42
- evals: evals.map(e => (Object.assign(Object.assign({ id: e.id, fileId: e.fileId }, (e.definition.description === undefined
28
+ async list() {
29
+ await this.hydrate();
30
+ const { evals, config } = await discoverEvals(this.projectRoot);
31
+ return {
32
+ evals: evals.map(e => ({
33
+ id: e.id,
34
+ fileId: e.fileId,
35
+ ...(e.definition.description === undefined
43
36
  ? {}
44
- : { description: e.definition.description })), (e.definition.tags === undefined ? {} : { tags: e.definition.tags })))),
45
- config: snapshotListConfig(config, this.storage !== undefined),
46
- };
47
- });
37
+ : { description: e.definition.description }),
38
+ ...(e.definition.tags === undefined ? {} : { tags: e.definition.tags }),
39
+ })),
40
+ config: snapshotListConfig(config, this.storage !== undefined),
41
+ };
48
42
  }
49
- get(runId) {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- yield this.hydrate();
52
- return this.runs.get(runId);
53
- });
43
+ async get(runId) {
44
+ await this.hydrate();
45
+ return this.runs.get(runId);
54
46
  }
55
47
  /** Newest-first snapshots for playground rehydrate after navigation/reload. */
56
- listRuns() {
57
- return __awaiter(this, void 0, void 0, function* () {
58
- yield this.hydrate();
59
- return this.sortedRuns();
60
- });
48
+ async listRuns() {
49
+ await this.hydrate();
50
+ return this.sortedRuns();
61
51
  }
62
52
  /**
63
53
  * Atomic snapshot of newest-first runs + the in-flight batch id (if any).
64
54
  * Prefer this over pairing {@link listRuns} with {@link getActiveRunId}
65
55
  * across an await boundary.
66
56
  */
67
- listRunsWithActive() {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- yield this.hydrate();
70
- const activeRunId = this.activeRunId;
71
- return Object.assign({ runs: this.sortedRuns() }, (activeRunId === undefined ? {} : { activeRunId }));
72
- });
57
+ async listRunsWithActive() {
58
+ await this.hydrate();
59
+ const activeRunId = this.activeRunId;
60
+ return {
61
+ runs: this.sortedRuns(),
62
+ ...(activeRunId === undefined ? {} : { activeRunId }),
63
+ };
73
64
  }
74
65
  getActiveRunId() {
75
66
  return this.activeRunId;
76
67
  }
77
- start() {
78
- return __awaiter(this, arguments, void 0, function* (input = {}) {
79
- yield this.hydrate();
80
- if (this.activeRunId !== undefined) {
81
- const active = this.runs.get(this.activeRunId);
82
- if (active !== undefined && active.status === "running") {
83
- throw new EvalRunConflictError(this.activeRunId);
84
- }
68
+ async start(input = {}) {
69
+ await this.hydrate();
70
+ if (this.activeRunId !== undefined) {
71
+ const active = this.runs.get(this.activeRunId);
72
+ if (active !== undefined && active.status === "running") {
73
+ throw new EvalRunConflictError(this.activeRunId);
85
74
  }
86
- const loopbackUrl = this.loopbackUrl;
87
- if (loopbackUrl === undefined) {
88
- throw new Error("Eval run store has no loopback URL yet (server not listening)");
89
- }
90
- const { evals, config } = yield discoverEvals(this.projectRoot);
91
- const selected = filterDiscoveredEvals(evals, {
92
- filterIds: input.filterIds,
93
- tags: input.tags,
94
- });
95
- if (selected.length === 0) {
96
- throw new EvalRunEmptyError();
97
- }
98
- const runId = `evalrun_${randomUUID().replace(/-/g, "").slice(0, 16)}`;
99
- const cases = selected.map(e => discoveredToPending(e));
100
- const snapshot = {
101
- runId,
102
- status: "running",
103
- startedAt: new Date().toISOString(),
104
- summary: {
105
- passed: 0,
106
- failed: 0,
107
- scored: 0,
108
- skipped: 0,
109
- total: cases.length,
110
- done: 0,
111
- },
112
- cases,
113
- config: snapshotRunConfig(config, this.storage !== undefined),
114
- };
115
- this.runs.set(runId, snapshot);
116
- this.activeRunId = runId;
117
- const abort = new AbortController();
118
- this.abortByRunId.set(runId, abort);
119
- this.pruneOldRuns(config);
120
- this.persist(snapshot);
121
- this.logger(`[bdk] eval run ${runId}: starting ${cases.length} case(s)`);
122
- void this.execute(runId, Object.assign(Object.assign(Object.assign({ baseUrl: loopbackUrl, evals: selected, config, signal: abort.signal }, (input.bearerToken === undefined ? {} : { bearerToken: input.bearerToken })), (input.verbose === undefined ? {} : { verbose: input.verbose })), (input.timeoutMs === undefined ? {} : { timeoutMs: input.timeoutMs })));
123
- return snapshot;
75
+ }
76
+ const loopbackUrl = this.loopbackUrl;
77
+ if (loopbackUrl === undefined) {
78
+ throw new Error("Eval run store has no loopback URL yet (server not listening)");
79
+ }
80
+ const { evals, config } = await discoverEvals(this.projectRoot);
81
+ const selected = filterDiscoveredEvals(evals, {
82
+ filterIds: input.filterIds,
83
+ tags: input.tags,
84
+ });
85
+ if (selected.length === 0) {
86
+ throw new EvalRunEmptyError();
87
+ }
88
+ const runId = `evalrun_${randomUUID().replace(/-/g, "").slice(0, 16)}`;
89
+ const cases = selected.map(e => discoveredToPending(e));
90
+ const snapshot = {
91
+ runId,
92
+ status: "running",
93
+ startedAt: new Date().toISOString(),
94
+ summary: {
95
+ passed: 0,
96
+ failed: 0,
97
+ scored: 0,
98
+ skipped: 0,
99
+ total: cases.length,
100
+ done: 0,
101
+ },
102
+ cases,
103
+ config: snapshotRunConfig(config, this.storage !== undefined),
104
+ };
105
+ this.runs.set(runId, snapshot);
106
+ this.activeRunId = runId;
107
+ const abort = new AbortController();
108
+ this.abortByRunId.set(runId, abort);
109
+ this.pruneOldRuns(config);
110
+ this.persist(snapshot);
111
+ this.logger(`[bdk] eval run ${runId}: starting ${cases.length} case(s)`);
112
+ void this.execute(runId, {
113
+ baseUrl: loopbackUrl,
114
+ evals: selected,
115
+ config,
116
+ signal: abort.signal,
117
+ ...(input.bearerToken === undefined ? {} : { bearerToken: input.bearerToken }),
118
+ ...(input.verbose === undefined ? {} : { verbose: input.verbose }),
119
+ ...(input.timeoutMs === undefined ? {} : { timeoutMs: input.timeoutMs }),
124
120
  });
121
+ return snapshot;
125
122
  }
126
123
  /**
127
124
  * Cancel a running batch by Eval ID (`runId`). Stops starting new cases and
128
125
  * aborts in-flight turns. Idempotent when already cancelled.
129
126
  */
130
- cancel(runId) {
131
- return __awaiter(this, void 0, void 0, function* () {
132
- yield this.hydrate();
133
- const run = this.runs.get(runId);
134
- if (run === undefined) {
135
- throw new EvalRunUnknownError(runId);
136
- }
137
- if (run.status === "cancelled") {
138
- return run;
139
- }
140
- if (run.status !== "running") {
141
- throw new EvalRunNotRunningError(runId, run.status);
142
- }
143
- const abort = this.abortByRunId.get(runId);
144
- abort === null || abort === void 0 ? void 0 : abort.abort();
145
- markCancelledRun(run);
146
- this.persist(run);
147
- if (this.activeRunId === runId) {
148
- this.activeRunId = undefined;
149
- }
150
- this.logger(`[bdk] eval run ${runId}: cancelled`);
127
+ async cancel(runId) {
128
+ await this.hydrate();
129
+ const run = this.runs.get(runId);
130
+ if (run === undefined) {
131
+ throw new EvalRunUnknownError(runId);
132
+ }
133
+ if (run.status === "cancelled") {
151
134
  return run;
152
- });
135
+ }
136
+ if (run.status !== "running") {
137
+ throw new EvalRunNotRunningError(runId, run.status);
138
+ }
139
+ const abort = this.abortByRunId.get(runId);
140
+ abort?.abort();
141
+ markCancelledRun(run);
142
+ this.persist(run);
143
+ if (this.activeRunId === runId) {
144
+ this.activeRunId = undefined;
145
+ }
146
+ this.logger(`[bdk] eval run ${runId}: cancelled`);
147
+ return run;
153
148
  }
154
149
  sortedRuns() {
155
150
  return [...this.runs.values()].sort((a, b) => b.startedAt.localeCompare(a.startedAt));
@@ -160,63 +155,58 @@ export class EvalRunStore {
160
155
  * restore — and lazily as a safety net by every read. Idempotent;
161
156
  * concurrent callers share one pass.
162
157
  */
163
- hydrate() {
164
- return __awaiter(this, void 0, void 0, function* () {
165
- if (this.hydrated) {
158
+ async hydrate() {
159
+ if (this.hydrated) {
160
+ return;
161
+ }
162
+ if (this.hydratePromise === undefined) {
163
+ this.hydratePromise = this.hydrateFromStorage();
164
+ }
165
+ await this.hydratePromise;
166
+ }
167
+ async hydrateFromStorage() {
168
+ try {
169
+ if (this.storage === undefined) {
170
+ this.hydrated = true;
166
171
  return;
167
172
  }
168
- if (this.hydratePromise === undefined) {
169
- this.hydratePromise = this.hydrateFromStorage();
170
- }
171
- yield this.hydratePromise;
172
- });
173
- }
174
- hydrateFromStorage() {
175
- return __awaiter(this, void 0, void 0, function* () {
176
- try {
177
- if (this.storage === undefined) {
178
- this.hydrated = true;
179
- return;
180
- }
181
- const loaded = yield this.storage.list();
182
- for (const run of loaded) {
183
- if (run === null ||
184
- typeof run !== "object" ||
185
- typeof run.runId !== "string" ||
186
- run.runId === "") {
187
- continue;
188
- }
189
- // Incomplete batches from a killed process should not block a new run.
190
- if (run.status === "running") {
191
- markInterruptedRun(run);
192
- this.persist(run);
193
- }
194
- this.runs.set(run.runId, run);
195
- }
196
- // Prune with the defaults even when eval discovery fails — loaded
197
- // history must not stay unpruned for the process lifetime just
198
- // because an eval file has a syntax error at boot.
199
- let config = {};
200
- try {
201
- config = (yield discoverEvals(this.projectRoot)).config;
173
+ const loaded = await this.storage.list();
174
+ for (const run of loaded) {
175
+ if (run === null ||
176
+ typeof run !== "object" ||
177
+ typeof run.runId !== "string" ||
178
+ run.runId === "") {
179
+ continue;
202
180
  }
203
- catch (error) {
204
- this.logger(`[bdk] eval discovery failed during hydrate (pruning with defaults): ${error instanceof Error ? error.message : String(error)}`);
181
+ // Incomplete batches from a killed process should not block a new run.
182
+ if (run.status === "running") {
183
+ markInterruptedRun(run);
184
+ this.persist(run);
205
185
  }
206
- this.pruneOldRuns(config);
207
- this.logger(`[bdk] hydrated ${this.runs.size} playground eval run(s) from storage`);
186
+ this.runs.set(run.runId, run);
208
187
  }
209
- catch (error) {
210
- const message = error instanceof Error ? error.message : String(error);
211
- this.logger(`[bdk] failed to hydrate playground eval runs: ${message}`);
188
+ // Prune with the defaults even when eval discovery fails — loaded
189
+ // history must not stay unpruned for the process lifetime just
190
+ // because an eval file has a syntax error at boot.
191
+ let config = {};
192
+ try {
193
+ config = (await discoverEvals(this.projectRoot)).config;
212
194
  }
213
- finally {
214
- this.hydrated = true;
195
+ catch (error) {
196
+ this.logger(`[bdk] eval discovery failed during hydrate (pruning with defaults): ${error instanceof Error ? error.message : String(error)}`);
215
197
  }
216
- });
198
+ this.pruneOldRuns(config);
199
+ this.logger(`[bdk] hydrated ${this.runs.size} playground eval run(s) from storage`);
200
+ }
201
+ catch (error) {
202
+ const message = error instanceof Error ? error.message : String(error);
203
+ this.logger(`[bdk] failed to hydrate playground eval runs: ${message}`);
204
+ }
205
+ finally {
206
+ this.hydrated = true;
207
+ }
217
208
  }
218
209
  pruneOldRuns(config) {
219
- var _a;
220
210
  const limit = resolveEvalMaxPlaygroundRuns(config.maxPlaygroundRuns);
221
211
  const ordered = this.sortedRuns();
222
212
  if (ordered.length <= limit) {
@@ -227,13 +217,12 @@ export class EvalRunStore {
227
217
  continue;
228
218
  }
229
219
  this.runs.delete(stale.runId);
230
- (_a = this.storage) === null || _a === void 0 ? void 0 : _a.delete(stale.runId);
220
+ this.storage?.delete(stale.runId);
231
221
  }
232
222
  }
233
223
  /** Mirror the run onto durable storage (coordinator clones + serializes). */
234
224
  persist(run) {
235
- var _a;
236
- (_a = this.storage) === null || _a === void 0 ? void 0 : _a.save(run);
225
+ this.storage?.save(run);
237
226
  }
238
227
  /**
239
228
  * Serve is draining: durably mark any in-flight batch as interrupted
@@ -243,7 +232,6 @@ export class EvalRunStore {
243
232
  * completion write) until the next hydrate repairs it.
244
233
  */
245
234
  close() {
246
- var _a;
247
235
  const activeRunId = this.activeRunId;
248
236
  if (activeRunId === undefined) {
249
237
  return;
@@ -252,103 +240,109 @@ export class EvalRunStore {
252
240
  if (run === undefined || run.status !== "running") {
253
241
  return;
254
242
  }
255
- (_a = this.abortByRunId.get(activeRunId)) === null || _a === void 0 ? void 0 : _a.abort();
243
+ this.abortByRunId.get(activeRunId)?.abort();
256
244
  markInterruptedRun(run);
257
245
  this.persist(run);
258
246
  this.activeRunId = undefined;
259
247
  this.abortByRunId.delete(activeRunId);
260
248
  }
261
- execute(runId, opts) {
262
- return __awaiter(this, void 0, void 0, function* () {
263
- if (this.runs.get(runId) === undefined) {
249
+ async execute(runId, opts) {
250
+ if (this.runs.get(runId) === undefined) {
251
+ return;
252
+ }
253
+ try {
254
+ await runDiscoveredEvals({
255
+ projectRoot: this.projectRoot,
256
+ baseUrl: opts.baseUrl,
257
+ discovered: { evals: opts.evals, config: opts.config },
258
+ signal: opts.signal,
259
+ ...(opts.bearerToken === undefined ? {} : { bearerToken: opts.bearerToken }),
260
+ ...(opts.verbose === undefined ? {} : { verbose: opts.verbose }),
261
+ ...(opts.timeoutMs === undefined ? {} : { timeoutMs: opts.timeoutMs }),
262
+ onCaseStart: id => {
263
+ const run = this.runs.get(runId);
264
+ if (run === undefined || run.status === "cancelled") {
265
+ return;
266
+ }
267
+ const c = run.cases.find(x => x.id === id);
268
+ if (c !== undefined) {
269
+ c.status = "running";
270
+ c.inputs = [];
271
+ c.toolCalls = [];
272
+ c.finalText = undefined;
273
+ c.metrics = undefined;
274
+ c.logs = undefined;
275
+ c.assertions = undefined;
276
+ c.error = undefined;
277
+ }
278
+ },
279
+ onCaseEvent: (id, event) => {
280
+ const run = this.runs.get(runId);
281
+ if (run === undefined) {
282
+ return;
283
+ }
284
+ const c = run.cases.find(x => x.id === id);
285
+ if (c === undefined) {
286
+ return;
287
+ }
288
+ const sid = typeof event.sessionId === "string" && event.sessionId !== ""
289
+ ? event.sessionId
290
+ : undefined;
291
+ if (sid !== undefined && c.sessionId === undefined) {
292
+ c.sessionId = sid;
293
+ }
294
+ if (event.type === "message.received" && typeof event.data?.text === "string") {
295
+ c.inputs = [...(c.inputs ?? []), event.data.text];
296
+ }
297
+ if (event.type === "message.completed" &&
298
+ typeof event.data?.text === "string" &&
299
+ event.data.parentCallId === undefined) {
300
+ c.finalText = event.data.text;
301
+ }
302
+ },
303
+ onCaseDone: result => {
304
+ this.applyCaseResult(runId, result);
305
+ const run = this.runs.get(runId);
306
+ if (run !== undefined) {
307
+ this.persist(run);
308
+ }
309
+ },
310
+ });
311
+ const run = this.runs.get(runId);
312
+ if (run === undefined || run.status === "cancelled") {
264
313
  return;
265
314
  }
266
- try {
267
- yield runDiscoveredEvals(Object.assign(Object.assign(Object.assign(Object.assign({ projectRoot: this.projectRoot, baseUrl: opts.baseUrl, discovered: { evals: opts.evals, config: opts.config }, signal: opts.signal }, (opts.bearerToken === undefined ? {} : { bearerToken: opts.bearerToken })), (opts.verbose === undefined ? {} : { verbose: opts.verbose })), (opts.timeoutMs === undefined ? {} : { timeoutMs: opts.timeoutMs })), { onCaseStart: id => {
268
- const run = this.runs.get(runId);
269
- if (run === undefined || run.status === "cancelled") {
270
- return;
271
- }
272
- const c = run.cases.find(x => x.id === id);
273
- if (c !== undefined) {
274
- c.status = "running";
275
- c.inputs = [];
276
- c.toolCalls = [];
277
- c.finalText = undefined;
278
- c.metrics = undefined;
279
- c.logs = undefined;
280
- c.assertions = undefined;
281
- c.error = undefined;
282
- }
283
- }, onCaseEvent: (id, event) => {
284
- var _a, _b;
285
- var _c;
286
- const run = this.runs.get(runId);
287
- if (run === undefined) {
288
- return;
289
- }
290
- const c = run.cases.find(x => x.id === id);
291
- if (c === undefined) {
292
- return;
293
- }
294
- const sid = typeof event.sessionId === "string" && event.sessionId !== ""
295
- ? event.sessionId
296
- : undefined;
297
- if (sid !== undefined && c.sessionId === undefined) {
298
- c.sessionId = sid;
299
- }
300
- if (event.type === "message.received" && typeof ((_a = event.data) === null || _a === void 0 ? void 0 : _a.text) === "string") {
301
- c.inputs = [...((_c = c.inputs) !== null && _c !== void 0 ? _c : []), event.data.text];
302
- }
303
- if (event.type === "message.completed" &&
304
- typeof ((_b = event.data) === null || _b === void 0 ? void 0 : _b.text) === "string" &&
305
- event.data.parentCallId === undefined) {
306
- c.finalText = event.data.text;
307
- }
308
- }, onCaseDone: result => {
309
- this.applyCaseResult(runId, result);
310
- const run = this.runs.get(runId);
311
- if (run !== undefined) {
312
- this.persist(run);
313
- }
314
- } }));
315
- const run = this.runs.get(runId);
316
- if (run === undefined || run.status === "cancelled") {
317
- return;
318
- }
319
- run.status = "completed";
320
- run.finishedAt = new Date().toISOString();
321
- this.persist(run);
322
- this.logger(`[bdk] eval run ${runId}: done — ${run.summary.passed} passed, ${run.summary.failed} failed`);
315
+ run.status = "completed";
316
+ run.finishedAt = new Date().toISOString();
317
+ this.persist(run);
318
+ this.logger(`[bdk] eval run ${runId}: done — ${run.summary.passed} passed, ${run.summary.failed} failed`);
319
+ }
320
+ catch (error) {
321
+ const run = this.runs.get(runId);
322
+ if (run === undefined || run.status === "cancelled") {
323
+ return;
323
324
  }
324
- catch (error) {
325
- const run = this.runs.get(runId);
326
- if (run === undefined || run.status === "cancelled") {
327
- return;
328
- }
329
- const message = error instanceof Error ? error.message : String(error);
330
- if (opts.signal.aborted || message === "cancelled") {
331
- markCancelledRun(run);
332
- this.persist(run);
333
- this.logger(`[bdk] eval run ${runId}: cancelled`);
334
- return;
335
- }
336
- run.status = "failed";
337
- run.finishedAt = new Date().toISOString();
338
- run.error = message;
325
+ const message = error instanceof Error ? error.message : String(error);
326
+ if (opts.signal.aborted || message === "cancelled") {
327
+ markCancelledRun(run);
339
328
  this.persist(run);
340
- this.logger(`[bdk] eval run ${runId}: failed — ${run.error}`);
329
+ this.logger(`[bdk] eval run ${runId}: cancelled`);
330
+ return;
341
331
  }
342
- finally {
343
- this.abortByRunId.delete(runId);
344
- if (this.activeRunId === runId) {
345
- this.activeRunId = undefined;
346
- }
332
+ run.status = "failed";
333
+ run.finishedAt = new Date().toISOString();
334
+ run.error = message;
335
+ this.persist(run);
336
+ this.logger(`[bdk] eval run ${runId}: failed — ${run.error}`);
337
+ }
338
+ finally {
339
+ this.abortByRunId.delete(runId);
340
+ if (this.activeRunId === runId) {
341
+ this.activeRunId = undefined;
347
342
  }
348
- });
343
+ }
349
344
  }
350
345
  applyCaseResult(runId, result) {
351
- var _a, _b;
352
346
  const run = this.runs.get(runId);
353
347
  if (run === undefined) {
354
348
  return;
@@ -366,7 +360,7 @@ export class EvalRunStore {
366
360
  c.assertions = result.assertions;
367
361
  c.durationMs = result.durationMs;
368
362
  c.logs = result.logs;
369
- c.metrics = Object.keys(result.metrics).length > 0 ? Object.assign({}, result.metrics) : undefined;
363
+ c.metrics = Object.keys(result.metrics).length > 0 ? { ...result.metrics } : undefined;
370
364
  c.inputs = result.inputs;
371
365
  if (result.toolCalls !== undefined) {
372
366
  c.toolCalls = result.toolCalls;
@@ -388,28 +382,26 @@ export class EvalRunStore {
388
382
  return;
389
383
  }
390
384
  run.summary.done += 1;
391
- const verdict = (_a = result.verdict) !== null && _a !== void 0 ? _a : (result.ok ? "passed" : "failed");
392
- run.summary[verdict] = ((_b = run.summary[verdict]) !== null && _b !== void 0 ? _b : 0) + 1;
385
+ const verdict = result.verdict ?? (result.ok ? "passed" : "failed");
386
+ run.summary[verdict] = (run.summary[verdict] ?? 0) + 1;
393
387
  }
394
388
  }
395
389
  function markInterruptedRun(run) {
396
- var _a, _b, _c;
397
390
  run.status = "failed";
398
- run.finishedAt = (_a = run.finishedAt) !== null && _a !== void 0 ? _a : new Date().toISOString();
399
- run.error = (_b = run.error) !== null && _b !== void 0 ? _b : INTERRUPTED_BATCH_ERROR;
391
+ run.finishedAt = run.finishedAt ?? new Date().toISOString();
392
+ run.error = run.error ?? INTERRUPTED_BATCH_ERROR;
400
393
  for (const c of run.cases) {
401
394
  if (c.status === "pending" || c.status === "running") {
402
395
  c.status = "done";
403
396
  c.ok = false;
404
- c.error = (_c = c.error) !== null && _c !== void 0 ? _c : INTERRUPTED_CASE_ERROR;
397
+ c.error = c.error ?? INTERRUPTED_CASE_ERROR;
405
398
  }
406
399
  }
407
400
  reconcileRunSummary(run);
408
401
  }
409
402
  function markCancelledRun(run) {
410
- var _a;
411
403
  run.status = "cancelled";
412
- run.finishedAt = (_a = run.finishedAt) !== null && _a !== void 0 ? _a : new Date().toISOString();
404
+ run.finishedAt = run.finishedAt ?? new Date().toISOString();
413
405
  run.error = CANCELLED_BATCH_ERROR;
414
406
  for (const c of run.cases) {
415
407
  if (c.status === "pending" || c.status === "running") {
@@ -421,22 +413,41 @@ function markCancelledRun(run) {
421
413
  reconcileRunSummary(run);
422
414
  }
423
415
  function reconcileRunSummary(run) {
424
- var _a;
425
416
  const counts = { passed: 0, failed: 0, scored: 0, skipped: 0 };
426
417
  for (const c of run.cases) {
427
- counts[(_a = c.verdict) !== null && _a !== void 0 ? _a : (c.ok === true ? "passed" : "failed")] += 1;
418
+ counts[c.verdict ?? (c.ok === true ? "passed" : "failed")] += 1;
428
419
  }
429
- run.summary = Object.assign(Object.assign({}, counts), { total: run.cases.length, done: run.cases.length });
420
+ run.summary = {
421
+ ...counts,
422
+ total: run.cases.length,
423
+ done: run.cases.length,
424
+ };
430
425
  }
431
426
  function snapshotListConfig(config, durableRuns) {
432
- return Object.assign(Object.assign(Object.assign({}, (config.maxConcurrency === undefined ? {} : { maxConcurrency: config.maxConcurrency })), (config.timeoutMs === undefined ? {} : { timeoutMs: config.timeoutMs })), { maxPlaygroundRuns: resolveEvalMaxPlaygroundRuns(config.maxPlaygroundRuns), durableRuns });
427
+ return {
428
+ ...(config.maxConcurrency === undefined ? {} : { maxConcurrency: config.maxConcurrency }),
429
+ ...(config.timeoutMs === undefined ? {} : { timeoutMs: config.timeoutMs }),
430
+ maxPlaygroundRuns: resolveEvalMaxPlaygroundRuns(config.maxPlaygroundRuns),
431
+ durableRuns,
432
+ };
433
433
  }
434
434
  function snapshotRunConfig(config, durableRuns) {
435
435
  const list = snapshotListConfig(config, durableRuns);
436
- return Object.assign(Object.assign(Object.assign({}, (list.maxConcurrency === undefined ? {} : { maxConcurrency: list.maxConcurrency })), (list.timeoutMs === undefined ? {} : { timeoutMs: list.timeoutMs })), { maxPlaygroundRuns: list.maxPlaygroundRuns, durableRuns: list.durableRuns });
436
+ return {
437
+ ...(list.maxConcurrency === undefined ? {} : { maxConcurrency: list.maxConcurrency }),
438
+ ...(list.timeoutMs === undefined ? {} : { timeoutMs: list.timeoutMs }),
439
+ maxPlaygroundRuns: list.maxPlaygroundRuns,
440
+ durableRuns: list.durableRuns,
441
+ };
437
442
  }
438
443
  function discoveredToPending(e) {
439
- return Object.assign(Object.assign({ id: e.id, fileId: e.fileId, status: "pending" }, (e.definition.description === undefined ? {} : { description: e.definition.description })), (e.definition.tags === undefined ? {} : { tags: e.definition.tags }));
444
+ return {
445
+ id: e.id,
446
+ fileId: e.fileId,
447
+ status: "pending",
448
+ ...(e.definition.description === undefined ? {} : { description: e.definition.description }),
449
+ ...(e.definition.tags === undefined ? {} : { tags: e.definition.tags }),
450
+ };
440
451
  }
441
452
  export class EvalRunConflictError extends Error {
442
453
  constructor(activeRunId) {