@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
@@ -9,15 +9,6 @@
9
9
  * existing thread into a fresh conversation. Run bookkeeping remains local;
10
10
  * the durable session event stream already records user-visible history.
11
11
  */
12
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
- return new (P || (P = Promise))(function (resolve, reject) {
15
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
- step((generator = generator.apply(thisArg, _arguments || [])).next());
19
- });
20
- };
21
12
  import { agentSdkAgentStoreKeys } from "../files.js";
22
13
  import { cursorHostedFiles } from "../files-backends/cursor-hosted.js";
23
14
  import { mapBounded } from "./bounded.js";
@@ -26,9 +17,8 @@ import { describeError } from "./describe-error.js";
26
17
  import { resolveAgentV2Hosting } from "./v2-hosting.js";
27
18
  /** Build a {@link ConversationMirror} over a {@link FileSink}. */
28
19
  export function createConversationMirror(options) {
29
- var _a;
30
20
  const { sink, agentName } = options;
31
- const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : (() => { });
21
+ const logger = options.logger ?? (() => { });
32
22
  /**
33
23
  * Blob ids known to be in the sink, per SDK agent id (upload dedupe).
34
24
  * Bounded oldest-out like the files backend's etag cache: a resident
@@ -72,8 +62,7 @@ export function createConversationMirror(options) {
72
62
  */
73
63
  const chains = new Map();
74
64
  function serialize(sdkAgentId, run) {
75
- var _a;
76
- const previous = (_a = chains.get(sdkAgentId)) !== null && _a !== void 0 ? _a : Promise.resolve();
65
+ const previous = chains.get(sdkAgentId) ?? Promise.resolve();
77
66
  const next = previous.then(run, run);
78
67
  const stored = next
79
68
  .catch(() => { })
@@ -85,90 +74,87 @@ export function createConversationMirror(options) {
85
74
  chains.set(sdkAgentId, stored);
86
75
  return next;
87
76
  }
88
- function mirroredBlobIds(sdkAgentId) {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- const cached = mirrored.get(sdkAgentId);
91
- if (cached !== undefined) {
92
- return cached;
93
- }
94
- // Seed from the previous manifest so a new process does not re-upload the
95
- // whole history on its first persist. A miss, an unusable manifest, or
96
- // a failed read seeds empty — re-uploading is wasteful, never wrong.
97
- const seeded = new Set();
98
- try {
99
- const read = yield readManifest(sink, agentName, sdkAgentId);
100
- if (read.outcome === "found") {
101
- for (const blobId of read.manifest.blobIds) {
102
- seeded.add(blobId);
103
- }
77
+ async function mirroredBlobIds(sdkAgentId) {
78
+ const cached = mirrored.get(sdkAgentId);
79
+ if (cached !== undefined) {
80
+ return cached;
81
+ }
82
+ // Seed from the previous manifest so a new process does not re-upload the
83
+ // whole history on its first persist. A miss, an unusable manifest, or
84
+ // a failed read seeds empty — re-uploading is wasteful, never wrong.
85
+ const seeded = new Set();
86
+ try {
87
+ const read = await readManifest(sink, agentName, sdkAgentId);
88
+ if (read.outcome === "found") {
89
+ for (const blobId of read.manifest.blobIds) {
90
+ seeded.add(blobId);
104
91
  }
105
92
  }
106
- catch (error) {
107
- logger(`[bdk] conversation mirror: could not read the prior manifest for ${sdkAgentId} (${describeError(error)}); re-uploading blobs`);
108
- }
109
- rememberMirrored(sdkAgentId, seeded);
110
- return seeded;
111
- });
93
+ }
94
+ catch (error) {
95
+ logger(`[bdk] conversation mirror: could not read the prior manifest for ${sdkAgentId} (${describeError(error)}); re-uploading blobs`);
96
+ }
97
+ rememberMirrored(sdkAgentId, seeded);
98
+ return seeded;
112
99
  }
113
- function uploadBlobs(store, sdkAgentId, blobIds, uploaded) {
114
- return __awaiter(this, void 0, void 0, function* () {
115
- var _a;
116
- const entries = [];
117
- for (const blobId of blobIds) {
118
- const body = yield store.checkpoints.get({ agentId: sdkAgentId, blobId });
119
- if (body !== null) {
120
- entries.push({
121
- blobId,
122
- key: agentSdkAgentStoreKeys.conversationBlob(agentName, sdkAgentId, blobId),
123
- body,
124
- });
125
- }
126
- }
127
- if (entries.length === 0) {
128
- return;
100
+ async function uploadBlobs(store, sdkAgentId, blobIds, uploaded) {
101
+ const entries = [];
102
+ for (const blobId of blobIds) {
103
+ const body = await store.checkpoints.get({ agentId: sdkAgentId, blobId });
104
+ if (body !== null) {
105
+ entries.push({
106
+ blobId,
107
+ key: agentSdkAgentStoreKeys.conversationBlob(agentName, sdkAgentId, blobId),
108
+ body,
109
+ });
129
110
  }
130
- if (sink.putMany === undefined) {
131
- for (const entry of entries) {
132
- yield sink.put(entry.key, entry.body);
133
- uploaded.add(entry.blobId);
134
- }
135
- return;
111
+ }
112
+ if (entries.length === 0) {
113
+ return;
114
+ }
115
+ if (sink.putMany === undefined) {
116
+ for (const entry of entries) {
117
+ await sink.put(entry.key, entry.body);
118
+ uploaded.add(entry.blobId);
136
119
  }
137
- const settled = yield sink.putMany(entries.map(({ key, body }) => ({ key, body })));
138
- let failure;
139
- for (const [index, entry] of entries.entries()) {
140
- const outcome = settled[index];
141
- if ((outcome === null || outcome === void 0 ? void 0 : outcome.status) === "fulfilled") {
142
- uploaded.add(entry.blobId);
143
- }
144
- else if (failure === undefined) {
145
- failure = (_a = outcome === null || outcome === void 0 ? void 0 : outcome.reason) !== null && _a !== void 0 ? _a : new Error(`conversation mirror: batched upload of "${entry.key}" returned no outcome`);
146
- }
120
+ return;
121
+ }
122
+ const settled = await sink.putMany(entries.map(({ key, body }) => ({ key, body })));
123
+ let failure;
124
+ for (const [index, entry] of entries.entries()) {
125
+ const outcome = settled[index];
126
+ if (outcome?.status === "fulfilled") {
127
+ uploaded.add(entry.blobId);
147
128
  }
148
- if (failure !== undefined) {
149
- throw failure;
129
+ else if (failure === undefined) {
130
+ failure =
131
+ outcome?.reason ??
132
+ new Error(`conversation mirror: batched upload of "${entry.key}" returned no outcome`);
150
133
  }
151
- });
134
+ }
135
+ if (failure !== undefined) {
136
+ throw failure;
137
+ }
152
138
  }
153
139
  return {
154
140
  persist(store, sdkAgentId) {
155
- return serialize(sdkAgentId, () => __awaiter(this, void 0, void 0, function* () {
156
- const document = yield store.agents.get({ agentId: sdkAgentId });
141
+ return serialize(sdkAgentId, async () => {
142
+ const document = await store.agents.get({ agentId: sdkAgentId });
157
143
  if (document === null || document.latestCheckpoint == null) {
158
144
  // Nothing restorable yet (no conversation, or no checkpoint).
159
145
  return;
160
146
  }
161
- const uploaded = yield mirroredBlobIds(sdkAgentId);
162
- const blobIds = yield listCheckpointBlobIds(store, sdkAgentId);
147
+ const uploaded = await mirroredBlobIds(sdkAgentId);
148
+ const blobIds = await listCheckpointBlobIds(store, sdkAgentId);
163
149
  const pending = blobIds.filter(blobId => !uploaded.has(blobId));
164
150
  for (let start = 0; start < pending.length; start += PERSIST_UPLOAD_BATCH_SIZE) {
165
- yield uploadBlobs(store, sdkAgentId, pending.slice(start, start + PERSIST_UPLOAD_BATCH_SIZE), uploaded);
151
+ await uploadBlobs(store, sdkAgentId, pending.slice(start, start + PERSIST_UPLOAD_BATCH_SIZE), uploaded);
166
152
  }
167
153
  const manifest = {
168
154
  v: 1,
169
155
  // The referenced run is process-local bookkeeping and is not mirrored;
170
156
  // a hydrated store must not point at a run row it does not hold.
171
- agent: Object.assign(Object.assign({}, document), { activeRunId: null }),
157
+ agent: { ...document, activeRunId: null },
172
158
  blobIds: blobIds.filter(blobId => uploaded.has(blobId)),
173
159
  persistedAtMs: Date.now(),
174
160
  };
@@ -184,18 +170,17 @@ export function createConversationMirror(options) {
184
170
  }
185
171
  lastManifestContent.delete(sdkAgentId);
186
172
  // Manifest last: it only ever references blobs already uploaded.
187
- yield sink.put(agentSdkAgentStoreKeys.conversationManifest(agentName, sdkAgentId), new TextEncoder().encode(JSON.stringify(manifest)));
173
+ await sink.put(agentSdkAgentStoreKeys.conversationManifest(agentName, sdkAgentId), new TextEncoder().encode(JSON.stringify(manifest)));
188
174
  rememberManifest(sdkAgentId, content);
189
- }));
175
+ });
190
176
  },
191
177
  hydrate(store, sdkAgentId) {
192
- return serialize(sdkAgentId, () => __awaiter(this, void 0, void 0, function* () {
193
- var _a;
194
- const existing = yield store.agents.get({ agentId: sdkAgentId });
178
+ return serialize(sdkAgentId, async () => {
179
+ const existing = await store.agents.get({ agentId: sdkAgentId });
195
180
  if (existing !== null) {
196
181
  return false;
197
182
  }
198
- const read = yield readManifest(sink, agentName, sdkAgentId);
183
+ const read = await readManifest(sink, agentName, sdkAgentId);
199
184
  if (read.outcome === "miss") {
200
185
  return false;
201
186
  }
@@ -208,7 +193,7 @@ export function createConversationMirror(options) {
208
193
  return false;
209
194
  }
210
195
  const manifest = read.manifest;
211
- const rootBlobId = (_a = manifest.agent.latestCheckpoint) === null || _a === void 0 ? void 0 : _a.rootBlobId;
196
+ const rootBlobId = manifest.agent.latestCheckpoint?.rootBlobId;
212
197
  if (rootBlobId === undefined || !manifest.blobIds.includes(rootBlobId)) {
213
198
  logger(`[bdk] conversation mirror: the manifest for ${sdkAgentId} does not list its root checkpoint blob; treating the conversation as unrestorable`);
214
199
  return false;
@@ -217,8 +202,8 @@ export function createConversationMirror(options) {
217
202
  // fall back to bounded parallel reads when the sink has no batch API.
218
203
  const blobKeys = manifest.blobIds.map(blobId => agentSdkAgentStoreKeys.conversationBlob(agentName, sdkAgentId, blobId));
219
204
  const blobBodies = sink.getMany !== undefined
220
- ? yield sink.getMany(blobKeys)
221
- : yield mapBounded(blobKeys, HYDRATE_DOWNLOAD_CONCURRENCY, key => sink.get(key));
205
+ ? await sink.getMany(blobKeys)
206
+ : await mapBounded(blobKeys, HYDRATE_DOWNLOAD_CONCURRENCY, key => sink.get(key));
222
207
  const bodies = manifest.blobIds.map((blobId, index) => ({
223
208
  blobId,
224
209
  body: blobBodies[index],
@@ -237,11 +222,11 @@ export function createConversationMirror(options) {
237
222
  for (const entry of bodies) {
238
223
  const body = entry.body;
239
224
  const bytes = body instanceof Uint8Array ? body : body.body;
240
- if ((yield store.checkpoints.get({
225
+ if ((await store.checkpoints.get({
241
226
  agentId: sdkAgentId,
242
227
  blobId: entry.blobId,
243
228
  })) === null) {
244
- yield store.checkpoints.create({
229
+ await store.checkpoints.create({
245
230
  agentId: sdkAgentId,
246
231
  blobId: entry.blobId,
247
232
  data: bytes,
@@ -249,18 +234,18 @@ export function createConversationMirror(options) {
249
234
  }
250
235
  restored.add(entry.blobId);
251
236
  }
252
- yield store.agents.create({
253
- agent: Object.assign(Object.assign({}, manifest.agent), { activeRunId: null }),
237
+ await store.agents.create({
238
+ agent: { ...manifest.agent, activeRunId: null },
254
239
  });
255
240
  rememberMirrored(sdkAgentId, restored);
256
241
  logger(`[bdk] conversation mirror: restored the conversation for ${sdkAgentId} (${restored.size} checkpoint blob(s))`);
257
242
  return true;
258
- }));
243
+ });
259
244
  },
260
245
  };
261
246
  }
262
247
  /** Oldest-out cap on the per-conversation upload-dedupe cache. */
263
- const MAX_TRACKED_CONVERSATIONS = 1000;
248
+ const MAX_TRACKED_CONVERSATIONS = 1_000;
264
249
  /** Parallel blob downloads during hydrate (resume critical path). */
265
250
  const HYDRATE_DOWNLOAD_CONCURRENCY = 8;
266
251
  const PERSIST_UPLOAD_BATCH_SIZE = 50;
@@ -269,46 +254,42 @@ const PERSIST_UPLOAD_BATCH_SIZE = 50;
269
254
  * outage must fail the follow-up, not fork the thread); everything the
270
255
  * bytes themselves can be wrong about is reported as `unusable`.
271
256
  */
272
- function readManifest(sink, agentName, sdkAgentId) {
273
- return __awaiter(this, void 0, void 0, function* () {
274
- const body = yield sink.get(agentSdkAgentStoreKeys.conversationManifest(agentName, sdkAgentId));
275
- if (body === undefined) {
276
- return { outcome: "miss" };
277
- }
278
- const bytes = body instanceof Uint8Array ? body : body.body;
279
- let parsed;
280
- try {
281
- parsed = JSON.parse(new TextDecoder().decode(bytes));
282
- }
283
- catch (_a) {
284
- return { outcome: "unusable", reason: "not JSON" };
285
- }
286
- if (parsed === null || typeof parsed !== "object" || parsed.v !== 1) {
287
- return { outcome: "unusable", reason: "unsupported manifest version" };
288
- }
289
- const manifest = parsed;
290
- if (manifest.agent === null ||
291
- typeof manifest.agent !== "object" ||
292
- manifest.agent.agentId !== sdkAgentId ||
293
- !Array.isArray(manifest.blobIds)) {
294
- return { outcome: "unusable", reason: "malformed manifest" };
295
- }
296
- return { outcome: "found", manifest };
297
- });
257
+ async function readManifest(sink, agentName, sdkAgentId) {
258
+ const body = await sink.get(agentSdkAgentStoreKeys.conversationManifest(agentName, sdkAgentId));
259
+ if (body === undefined) {
260
+ return { outcome: "miss" };
261
+ }
262
+ const bytes = body instanceof Uint8Array ? body : body.body;
263
+ let parsed;
264
+ try {
265
+ parsed = JSON.parse(new TextDecoder().decode(bytes));
266
+ }
267
+ catch {
268
+ return { outcome: "unusable", reason: "not JSON" };
269
+ }
270
+ if (parsed === null || typeof parsed !== "object" || parsed.v !== 1) {
271
+ return { outcome: "unusable", reason: "unsupported manifest version" };
272
+ }
273
+ const manifest = parsed;
274
+ if (manifest.agent === null ||
275
+ typeof manifest.agent !== "object" ||
276
+ manifest.agent.agentId !== sdkAgentId ||
277
+ !Array.isArray(manifest.blobIds)) {
278
+ return { outcome: "unusable", reason: "malformed manifest" };
279
+ }
280
+ return { outcome: "found", manifest };
298
281
  }
299
- function listCheckpointBlobIds(store, sdkAgentId) {
300
- return __awaiter(this, void 0, void 0, function* () {
301
- const blobIds = [];
302
- let cursor;
303
- do {
304
- const page = yield store.checkpoints.list({
305
- filter: { agentIds: [sdkAgentId], cursor },
306
- });
307
- blobIds.push(...page.items);
308
- cursor = page.nextCursor;
309
- } while (cursor !== undefined);
310
- return blobIds;
311
- });
282
+ async function listCheckpointBlobIds(store, sdkAgentId) {
283
+ const blobIds = [];
284
+ let cursor;
285
+ do {
286
+ const page = await store.checkpoints.list({
287
+ filter: { agentIds: [sdkAgentId], cursor },
288
+ });
289
+ blobIds.push(...page.items);
290
+ cursor = page.nextCursor;
291
+ } while (cursor !== undefined);
292
+ return blobIds;
312
293
  }
313
294
  /**
314
295
  * Whether (and over which sink) this serve process mirrors conversations.
@@ -328,7 +309,7 @@ export function selectConversationMirror(input) {
328
309
  return createConversationMirror({
329
310
  sink: cursorHostedFiles({
330
311
  resolveStoreSourceId: () => hosting.resolveStoreIds().frameworkStoreSourceId,
331
- resolveApiKey: () => { var _a; return (_a = resolveApiKeySync()) === null || _a === void 0 ? void 0 : _a.apiKey; },
312
+ resolveApiKey: () => resolveApiKeySync()?.apiKey,
332
313
  }),
333
314
  agentName: input.project.name,
334
315
  logger: input.logger,
@@ -11,10 +11,8 @@ import { MEMORY_TS } from "../init-scaffold.js";
11
11
  import { CANONICAL_PROJECT_ROOT, projectPath } from "../project-layout.js";
12
12
  import { SlugRegistry, slugify } from "./slug.js";
13
13
  export function convertWorkflow(input) {
14
- var _a, _b;
15
- var _c, _d, _e;
16
14
  const { automation, workflow, mcpServers, exportedAt } = input;
17
- const projectRoot = (_c = input.projectRoot) !== null && _c !== void 0 ? _c : CANONICAL_PROJECT_ROOT;
15
+ const projectRoot = input.projectRoot ?? CANONICAL_PROJECT_ROOT;
18
16
  const out = {
19
17
  projectRoot,
20
18
  files: [],
@@ -27,7 +25,7 @@ export function convertWorkflow(input) {
27
25
  }
28
26
  // Pin the model the prompt actually ran with; the workflow-level model is
29
27
  // only a fallback. Silently swapping models changes cost and behavior.
30
- const promptModel = (_b = (_a = workflow.prompts) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.model;
28
+ const promptModel = workflow.prompts?.[0]?.model;
31
29
  const pinnedModel = promptModel !== undefined && promptModel !== "" ? promptModel : workflow.model;
32
30
  if (promptModel !== undefined &&
33
31
  promptModel !== "" &&
@@ -44,7 +42,7 @@ export function convertWorkflow(input) {
44
42
  path: projectPath(projectRoot, "agent.ts"),
45
43
  contents: renderAgentTs(automation, workflow, pinnedModel),
46
44
  });
47
- const triggers = (_d = workflow.triggers) !== null && _d !== void 0 ? _d : [];
45
+ const triggers = workflow.triggers ?? [];
48
46
  const scheduleSlugs = new SlugRegistry();
49
47
  const channelSlugs = new SlugRegistry();
50
48
  const gitTriggers = [];
@@ -80,7 +78,7 @@ export function convertWorkflow(input) {
80
78
  emitBoilerplateChannel(automation, trigger, kind, channelSlugs, out);
81
79
  }
82
80
  emitMcpConnections(automation, mcpServers, out);
83
- const hasSlackAction = ((_e = workflow.actions) !== null && _e !== void 0 ? _e : []).some(action => action.slack !== undefined || action.readSlack !== undefined);
81
+ const hasSlackAction = (workflow.actions ?? []).some(action => action.slack !== undefined || action.readSlack !== undefined);
84
82
  const hasSlackConnection = hasSlackAction && emitSlackAccountConnection(automation, out);
85
83
  if (workflow.memoryEnabled === true) {
86
84
  out.files.push({
@@ -99,7 +97,6 @@ export function convertWorkflow(input) {
99
97
  // instructions.md
100
98
  // ============================================================================
101
99
  function renderInstructions(automation, workflow, exportedAt, warnings, projectRoot) {
102
- var _a, _b;
103
100
  const header = [
104
101
  "<!--",
105
102
  ` Exported from Cursor automation "${commentSafe(automation.name)}"`,
@@ -108,7 +105,7 @@ function renderInstructions(automation, workflow, exportedAt, warnings, projectR
108
105
  ` exported: ${commentSafe(exportedAt)}`,
109
106
  "-->",
110
107
  ].join("\n");
111
- const prompts = (_a = workflow.prompts) !== null && _a !== void 0 ? _a : [];
108
+ const prompts = workflow.prompts ?? [];
112
109
  if (prompts.length === 0) {
113
110
  warnings.push(`The source automation has no prompts — ${projectPath(projectRoot, "instructions.md")} contains a placeholder.`);
114
111
  return `${header}\n\nTODO: the source automation had no prompt text. Write this agent's instructions.\n`;
@@ -121,7 +118,7 @@ function renderInstructions(automation, workflow, exportedAt, warnings, projectR
121
118
  const prompt = prompts[0];
122
119
  const meta = promptMeta(prompt);
123
120
  const heading = meta === "" ? "" : `<!-- ${meta} -->\n\n`;
124
- return `${header}\n\n${heading}${sanitizePromptText((_b = prompt.prompt) !== null && _b !== void 0 ? _b : "", warnings, projectRoot)}\n`;
121
+ return `${header}\n\n${heading}${sanitizePromptText(prompt.prompt ?? "", warnings, projectRoot)}\n`;
125
122
  }
126
123
  /**
127
124
  * Strip Cursor-backend prompt markup that means nothing in BDK:
@@ -182,8 +179,7 @@ function renderAgentTs(automation, workflow, pinnedModel) {
182
179
  // Schedules (cron triggers)
183
180
  // ============================================================================
184
181
  function emitSchedule(automation, trigger, slugs, out) {
185
- var _a;
186
- const cron = (_a = trigger.cron) === null || _a === void 0 ? void 0 : _a.cron;
182
+ const cron = trigger.cron?.cron;
187
183
  if (cron === undefined || cron === "") {
188
184
  out.warnings.push("A cron trigger had no cron expression and was skipped.");
189
185
  return;
@@ -265,8 +261,6 @@ const PR_ACTION_NUMBERS = {
265
261
  7: "GIT_PULL_REQUEST_ACTION_UNLABELED",
266
262
  };
267
263
  function emitGithubChannel(automation, workflow, triggers, slugs, out) {
268
- var _a, _b;
269
- var _c, _d, _e, _f, _g, _h;
270
264
  const slug = slugs.claim("github");
271
265
  const path = projectPath(out.projectRoot, `channels/${slug}.ts`);
272
266
  const webhookEvents = [];
@@ -290,7 +284,7 @@ function emitGithubChannel(automation, workflow, triggers, slugs, out) {
290
284
  const userAllowlist = [];
291
285
  for (const trigger of triggers) {
292
286
  const git = trigger.git;
293
- userAllowlist.push(...((_c = git.userAllowlist) !== null && _c !== void 0 ? _c : []).filter(user => user !== ""));
287
+ userAllowlist.push(...(git.userAllowlist ?? []).filter(user => user !== ""));
294
288
  for (const [eventKey, events] of Object.entries(GIT_EVENT_WEBHOOKS)) {
295
289
  const event = git[eventKey];
296
290
  if (event === undefined || typeof event !== "object") {
@@ -299,12 +293,12 @@ function emitGithubChannel(automation, workflow, triggers, slugs, out) {
299
293
  webhookEvents.push(...events);
300
294
  const eventObject = event;
301
295
  if (eventKey === "pullRequest") {
302
- const raw = String((_d = eventObject.prAction) !== null && _d !== void 0 ? _d : "");
303
- const prAction = (_e = PR_ACTION_NUMBERS[raw]) !== null && _e !== void 0 ? _e : (raw === "" ? "GIT_PULL_REQUEST_ACTION_UNSPECIFIED" : raw);
296
+ const raw = String(eventObject.prAction ?? "");
297
+ const prAction = PR_ACTION_NUMBERS[raw] ?? (raw === "" ? "GIT_PULL_REQUEST_ACTION_UNSPECIFIED" : raw);
304
298
  if (prAction === "GIT_PULL_REQUEST_ACTION_COMMENTED") {
305
299
  webhookEvents.push("issue_comment");
306
300
  hasCommentedAction = true;
307
- if (((_f = git.userAllowlist) !== null && _f !== void 0 ? _f : []).length > 0 ||
301
+ if ((git.userAllowlist ?? []).length > 0 ||
308
302
  (Array.isArray(eventObject.commenterAllowlist) &&
309
303
  eventObject.commenterAllowlist.length > 0) ||
310
304
  (typeof eventObject.commentContains === "string" && eventObject.commentContains !== "")) {
@@ -340,7 +334,7 @@ function emitGithubChannel(automation, workflow, triggers, slugs, out) {
340
334
  // user_allowlist gates the PR author and commenter_allowlist the
341
335
  // commenter here — neither identity is visible to onComment — and
342
336
  // comment_contains filters the body.
343
- if (((_g = git.userAllowlist) !== null && _g !== void 0 ? _g : []).length > 0 ||
337
+ if ((git.userAllowlist ?? []).length > 0 ||
344
338
  (Array.isArray(eventObject.commenterAllowlist) &&
345
339
  eventObject.commenterAllowlist.length > 0) ||
346
340
  (typeof eventObject.commentContains === "string" && eventObject.commentContains !== "")) {
@@ -421,10 +415,10 @@ function emitGithubChannel(automation, workflow, triggers, slugs, out) {
421
415
  }
422
416
  }
423
417
  }
424
- if (((_a = workflow.gitConfig) === null || _a === void 0 ? void 0 : _a.repo) !== undefined && workflow.gitConfig.repo !== "") {
418
+ if (workflow.gitConfig?.repo !== undefined && workflow.gitConfig.repo !== "") {
425
419
  repos.push(workflow.gitConfig.repo);
426
420
  }
427
- repos.push(...((_h = (_b = workflow.gitConfig) === null || _b === void 0 ? void 0 : _b.repos) !== null && _h !== void 0 ? _h : []));
421
+ repos.push(...(workflow.gitConfig?.repos ?? []));
428
422
  const uniqueEvents = dedupe(webhookEvents);
429
423
  const uniqueRepos = dedupe(dedupe(repos.filter(repo => repo !== "")).flatMap(repo => {
430
424
  const normalized = normalizeRepoIdentifier(repo, out);
@@ -647,7 +641,6 @@ function isSlackTrigger(trigger) {
647
641
  trigger.slackChannelCreated !== undefined);
648
642
  }
649
643
  function emitSlackChannel(automation, triggers, slugs, out) {
650
- var _a;
651
644
  const slug = slugs.claim("slack");
652
645
  const path = projectPath(out.projectRoot, `channels/${slug}.ts`);
653
646
  const watches = triggers.filter(t => t.slackTrigger !== undefined);
@@ -667,7 +660,7 @@ function emitSlackChannel(automation, triggers, slugs, out) {
667
660
  }
668
661
  // The backend defaults a missing/UNSPECIFIED mode to ON (checkmark
669
662
  // reaction); only explicit OFF means no reaction was added.
670
- const reactionMode = String((_a = config.slackCompletionReactionMode) !== null && _a !== void 0 ? _a : "");
663
+ const reactionMode = String(config.slackCompletionReactionMode ?? "");
671
664
  if (reactionMode !== "SLACK_COMPLETION_REACTION_MODE_OFF" && reactionMode !== "2") {
672
665
  reactionDropped = true;
673
666
  }
@@ -676,7 +669,7 @@ function emitSlackChannel(automation, triggers, slugs, out) {
676
669
  out.warnings.push(`The Slack trigger marked triggering messages with a completion reaction; BDK has no completion-reaction option, so that signal is lost unless ${projectPath(out.projectRoot, "instructions.md")} tells the agent to add the reaction itself via Slack tools.`);
677
670
  }
678
671
  out.setupSteps.push(socketMode
679
- ? `Slack channel-watch / reaction / channel-created triggers need a dedicated Socket Mode Slack app: run \`${CLI_COMMAND_NAME} slack create --channel-posts\`, then finish in the dashboard wizard.`
672
+ ? `Slack channel-watch / reaction / channel-created triggers need a dedicated Socket Mode Slack app: run \`${CLI_COMMAND_NAME} slack create\`, then finish in the dashboard wizard.`
680
673
  : `Slack mentions need a dedicated Socket Mode Slack app: run \`${CLI_COMMAND_NAME} slack create\`, then finish in the dashboard wizard.`);
681
674
  const header = [
682
675
  `import { slackChannel } from "${PACKAGE_NAME}/channels/slack";`,
@@ -719,7 +712,7 @@ function emitSlackChannel(automation, triggers, slugs, out) {
719
712
  }
720
713
  body = [
721
714
  "//",
722
- `// Run \`${CLI_COMMAND_NAME} slack create --channel-posts\` for a dedicated Slack app.`,
715
+ `// Run \`${CLI_COMMAND_NAME} slack create\` for a dedicated Slack app.`,
723
716
  ...slackChannelExport(automation.name, engagement),
724
717
  ];
725
718
  }
@@ -750,8 +743,7 @@ function slackChannelExport(name, optionLines) {
750
743
  return ["export default slackChannel({", ...options, "});"];
751
744
  }
752
745
  function slackChannelList(trigger) {
753
- var _a;
754
- return [...((_a = trigger === null || trigger === void 0 ? void 0 : trigger.channels) !== null && _a !== void 0 ? _a : []), trigger === null || trigger === void 0 ? void 0 : trigger.channel].filter((channel) => typeof channel === "string" && channel !== "");
746
+ return [...(trigger?.channels ?? []), trigger?.channel].filter((channel) => typeof channel === "string" && channel !== "");
755
747
  }
756
748
  const BOILERPLATE_KINDS = [
757
749
  { key: "linear", slug: "linear", label: "Linear" },
@@ -938,11 +930,9 @@ function slackActionStep(action, { hasSlackChannel, hasSlackConnection }, projec
938
930
  return `Verify: slack post (target: ${target}) — the automation posted to Slack, but the exported project has no Slack integration; wire a Slack channel or a Cursor account MCP connection (defineConnection({ cursorAccount: true, servers: ["Slack"] })) to restore it.`;
939
931
  }
940
932
  function behaviorSteps(workflow, warnings, slack, projectRoot) {
941
- var _a;
942
- var _b, _c;
943
933
  const steps = [];
944
934
  const knownActionSteps = actionSteps(projectRoot);
945
- for (const action of (_b = workflow.actions) !== null && _b !== void 0 ? _b : []) {
935
+ for (const action of workflow.actions ?? []) {
946
936
  if (action.mcp !== undefined) {
947
937
  continue; // Covered by the exported mcpServers list.
948
938
  }
@@ -956,14 +946,14 @@ function behaviorSteps(workflow, warnings, slack, projectRoot) {
956
946
  : 'Verify: read_slack — expose Slack read access via a Cursor account MCP connection (defineConnection({ cursorAccount: true, servers: ["Slack"] })).');
957
947
  continue;
958
948
  }
959
- const step = (_a = Object.entries(knownActionSteps).find(([key]) => action[key] !== undefined)) === null || _a === void 0 ? void 0 : _a[1];
949
+ const step = Object.entries(knownActionSteps).find(([key]) => action[key] !== undefined)?.[1];
960
950
  if (step === undefined) {
961
951
  warnings.push(`Unrecognized action (keys: ${Object.keys(action).join(", ") || "none"}) was skipped — verify its behavior manually.`);
962
952
  continue;
963
953
  }
964
954
  steps.push(step);
965
955
  }
966
- const disabled = (_c = workflow.disabledDefaultTools) !== null && _c !== void 0 ? _c : [];
956
+ const disabled = workflow.disabledDefaultTools ?? [];
967
957
  if (disabled.length > 0) {
968
958
  steps.push(`Verify: disabled_default_tools (${disabled.join(", ")}) — BDK has no default automation tools; enforce the equivalent restriction in ${projectPath(projectRoot, "instructions.md")}.`);
969
959
  }
@@ -24,8 +24,8 @@ function createCroner(source) {
24
24
  * Implemented via croner's nextRun from one second before the minute floor.
25
25
  */
26
26
  function matchesCron(cron, date) {
27
- const floorMs = Math.floor(date.getTime() / 60000) * 60000;
28
- const next = cron.nextRun(new Date(floorMs - 1000));
27
+ const floorMs = Math.floor(date.getTime() / 60_000) * 60_000;
28
+ const next = cron.nextRun(new Date(floorMs - 1_000));
29
29
  return next !== null && next.getTime() === floorMs;
30
30
  }
31
31
  export function parseCron(source) {
@@ -54,7 +54,7 @@ export function isValidCron(source) {
54
54
  parseCron(source);
55
55
  return true;
56
56
  }
57
- catch (_a) {
57
+ catch {
58
58
  return false;
59
59
  }
60
60
  }