@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
@@ -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
  }