@cursor/bdk 0.2.9 → 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 (570) 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/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  197. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  198. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  199. package/dist/docs/building-with-agents.html +37 -37
  200. package/dist/docs/building-with-agents.md +2 -0
  201. package/dist/docs/deployment.html +38 -38
  202. package/dist/docs/deployment.md +7 -0
  203. package/dist/docs/evals.html +36 -36
  204. package/dist/docs/guides/agent-to-agent.html +35 -35
  205. package/dist/docs/guides/bitbucket.html +38 -38
  206. package/dist/docs/guides/bitbucket.md +9 -1
  207. package/dist/docs/guides/cloud-agents.html +35 -35
  208. package/dist/docs/guides/convert-automation.html +35 -35
  209. package/dist/docs/guides/github.html +39 -39
  210. package/dist/docs/guides/github.md +20 -4
  211. package/dist/docs/guides/gitlab.html +38 -38
  212. package/dist/docs/guides/gitlab.md +9 -1
  213. package/dist/docs/guides/grokbot-agents.html +35 -35
  214. package/dist/docs/guides/hooks.html +35 -35
  215. package/dist/docs/guides/improve.html +35 -35
  216. package/dist/docs/guides/jev.html +35 -35
  217. package/dist/docs/guides/mcp-oauth.html +35 -35
  218. package/dist/docs/guides/migrate.html +66 -0
  219. package/dist/docs/guides/migrate.md +122 -0
  220. package/dist/docs/guides/opentelemetry.html +35 -35
  221. package/dist/docs/guides/slack.html +35 -35
  222. package/dist/docs/guides/webhooks.html +35 -35
  223. package/dist/docs/hashmap.json +1 -1
  224. package/dist/docs/hillclimbing.html +35 -35
  225. package/dist/docs/index.html +35 -35
  226. package/dist/docs/llms-full.txt +214 -6
  227. package/dist/docs/llms.txt +1 -0
  228. package/dist/docs/quickstart.html +35 -35
  229. package/dist/docs/reference/agent-config.html +35 -35
  230. package/dist/docs/reference/artifacts.html +35 -35
  231. package/dist/docs/reference/channels.html +35 -35
  232. package/dist/docs/reference/cli.html +39 -38
  233. package/dist/docs/reference/cli.md +39 -0
  234. package/dist/docs/reference/connections.html +35 -35
  235. package/dist/docs/reference/evals.html +35 -35
  236. package/dist/docs/reference/extensions.html +35 -35
  237. package/dist/docs/reference/hooks.html +35 -35
  238. package/dist/docs/reference/http-api.html +35 -35
  239. package/dist/docs/reference/instructions.html +35 -35
  240. package/dist/docs/reference/playground.html +35 -35
  241. package/dist/docs/reference/project-layout.html +35 -35
  242. package/dist/docs/reference/prompt.html +35 -35
  243. package/dist/docs/reference/schedules.html +35 -35
  244. package/dist/docs/reference/sessions.html +35 -35
  245. package/dist/docs/reference/skills.html +38 -38
  246. package/dist/docs/reference/subagents.html +35 -35
  247. package/dist/docs/reference/tools.html +35 -35
  248. package/dist/docs/templates/agentic-owners.html +35 -35
  249. package/dist/docs/templates/grokbot-agents.html +35 -35
  250. package/dist/docs/templates/security-reviewer.html +35 -35
  251. package/dist/docs/templates/thermo-quality-review.html +35 -35
  252. package/dist/docs/templates/thermo-review.html +35 -35
  253. package/dist/docs/templates/triage.html +35 -35
  254. package/dist/docs/troubleshooting.html +36 -36
  255. package/dist/docs/troubleshooting.md +1 -0
  256. package/dist/evals/assertions.js +20 -34
  257. package/dist/evals/expect.js +3 -6
  258. package/dist/evals/judge.js +5 -8
  259. package/dist/evals/loaders.js +45 -62
  260. package/dist/evals/matchers.js +2 -3
  261. package/dist/evals/reporters.js +43 -67
  262. package/dist/evals/results.js +1 -1
  263. package/dist/evals/run-facts.js +5 -6
  264. package/dist/evals.js +27 -15
  265. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  266. package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
  267. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  268. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  269. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  270. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  271. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  272. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  273. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  274. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  275. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  276. package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
  277. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  278. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  279. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  280. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  281. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  282. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  283. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  284. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  285. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  286. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  287. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  288. package/dist/extensions/jev/extension.js +3 -3
  289. package/dist/extensions/jev/lib/evaluate.js +43 -60
  290. package/dist/extensions/jev/tools/evaluate.js +6 -17
  291. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  292. package/dist/extensions.js +3 -5
  293. package/dist/files-backends/cursor-hosted.js +504 -523
  294. package/dist/files-backends/local-fs.js +72 -134
  295. package/dist/files.js +3 -3
  296. package/dist/filesystem.js +562 -861
  297. package/dist/index.js +16 -35
  298. package/dist/internal/advertise-tools.js +74 -86
  299. package/dist/internal/artifacts-store.js +298 -361
  300. package/dist/internal/as-of.js +2 -4
  301. package/dist/internal/authored-alias-hooks.js +6 -4
  302. package/dist/internal/authored-loaders.js +37 -52
  303. package/dist/internal/bounded-int.js +1 -2
  304. package/dist/internal/bounded.js +13 -24
  305. package/dist/internal/brand.js +1 -1
  306. package/dist/internal/browser-origin-guard.js +4 -4
  307. package/dist/internal/builtin-tools/artifacts.js +15 -27
  308. package/dist/internal/builtin-tools/index.js +2 -3
  309. package/dist/internal/builtin-tools/reminders.js +33 -52
  310. package/dist/internal/channel-architecture.d.ts +21 -0
  311. package/dist/internal/channel-architecture.d.ts.map +1 -0
  312. package/dist/internal/channel-architecture.js +41 -0
  313. package/dist/internal/channel-dispatch.js +3 -4
  314. package/dist/internal/channel-route-dispatch.js +40 -51
  315. package/dist/internal/channel-state.js +1 -1
  316. package/dist/internal/chat-client.js +319 -340
  317. package/dist/internal/cli-ax.js +1262 -1294
  318. package/dist/internal/cli-bitbucket.js +244 -272
  319. package/dist/internal/cli-convert-automation.js +137 -151
  320. package/dist/internal/cli-cursor.js +126 -147
  321. package/dist/internal/cli-deploy.d.ts.map +1 -1
  322. package/dist/internal/cli-deploy.js +1457 -1507
  323. package/dist/internal/cli-docs.js +130 -147
  324. package/dist/internal/cli-github.js +437 -476
  325. package/dist/internal/cli-gitlab.js +259 -288
  326. package/dist/internal/cli-images.js +266 -334
  327. package/dist/internal/cli-manifest.js +25 -37
  328. package/dist/internal/cli-mcp-oauth.js +228 -247
  329. package/dist/internal/cli-mcp.js +358 -383
  330. package/dist/internal/cli-migrate.js +73 -90
  331. package/dist/internal/cli-skills.js +35 -47
  332. package/dist/internal/cli-slack-manual.d.ts +0 -1
  333. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  334. package/dist/internal/cli-slack-manual.js +175 -204
  335. package/dist/internal/cli-slack.d.ts +1 -1
  336. package/dist/internal/cli-slack.d.ts.map +1 -1
  337. package/dist/internal/cli-slack.js +416 -456
  338. package/dist/internal/cloud-merge.js +7 -3
  339. package/dist/internal/cloud-turn-cost.js +8 -1
  340. package/dist/internal/connection-env.js +5 -6
  341. package/dist/internal/continuation-channel.js +10 -7
  342. package/dist/internal/continuation-identity.js +85 -67
  343. package/dist/internal/conversation-mirror.js +112 -131
  344. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  345. package/dist/internal/cron.js +3 -3
  346. package/dist/internal/cursor/account-mcp.js +147 -146
  347. package/dist/internal/cursor/backend-client.js +290 -320
  348. package/dist/internal/cursor/bound-secret-file.js +3 -3
  349. package/dist/internal/cursor/credentials.js +127 -142
  350. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  351. package/dist/internal/cursor/github-credentials.js +91 -108
  352. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  353. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  354. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  355. package/dist/internal/cursor/session-token.js +36 -48
  356. package/dist/internal/cursor/store-api-client.js +77 -92
  357. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  358. package/dist/internal/cursor-agent-template.js +1 -1
  359. package/dist/internal/cursor-deployment-relay.js +33 -54
  360. package/dist/internal/cursor-event-relay.js +65 -59
  361. package/dist/internal/cursor-relay-core.js +258 -286
  362. package/dist/internal/deferred-channel-session.js +3 -12
  363. package/dist/internal/deploy-client.js +410 -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-DXm_VXAQ.css +1 -0
  536. package/dist/playground/assets/{index-Co4CUVTQ.js → index-JekUQERK.js} +45 -45
  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
  570. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -7,7 +7,7 @@ const HTTP_SPAN_HANDLE_KEY = Symbol.for("anysphere.july.otel.httpSpanHandle");
7
7
  /** End the inbound SERVER span once the Fetch status is known (hosted flush). */
8
8
  export function endActiveHttpSpan(statusCode, error) {
9
9
  const handle = context.active().getValue(HTTP_SPAN_HANDLE_KEY);
10
- handle === null || handle === void 0 ? void 0 : handle.end(statusCode, error);
10
+ handle?.end(statusCode, error);
11
11
  }
12
12
  /**
13
13
  * Instrument one inbound Node request: SERVER span, W3C extract, auto-end
@@ -29,7 +29,6 @@ export function instrumentHttp(runtime, req, res, fn) {
29
29
  return context.with(handle.context.setValue(HTTP_SPAN_HANDLE_KEY, handle), fn);
30
30
  }
31
31
  function startHttpSpan(runtime, req) {
32
- var _a, _b, _c, _d;
33
32
  if (runtime === undefined || runtime.config.traces === false) {
34
33
  return undefined;
35
34
  }
@@ -44,15 +43,15 @@ function startHttpSpan(runtime, req) {
44
43
  }
45
44
  }
46
45
  const parent = propagation.extract(context.active(), headers);
47
- const method = (_a = req.method) !== null && _a !== void 0 ? _a : "GET";
48
- const path = (_c = ((_b = req.url) !== null && _b !== void 0 ? _b : "/").split("?")[0]) !== null && _c !== void 0 ? _c : "/";
46
+ const method = req.method ?? "GET";
47
+ const path = (req.url ?? "/").split("?")[0] ?? "/";
49
48
  const started = Date.now();
50
49
  const span = runtime.tracer.startSpan("agent_sdk.http", {
51
50
  kind: SpanKind.SERVER,
52
51
  attributes: {
53
52
  "http.request.method": method,
54
53
  "url.path": path,
55
- "network.peer.address": (_d = req.socket.remoteAddress) !== null && _d !== void 0 ? _d : "",
54
+ "network.peer.address": req.socket.remoteAddress ?? "",
56
55
  },
57
56
  }, parent);
58
57
  const ctx = trace.setSpan(parent, span);
@@ -60,7 +59,6 @@ function startHttpSpan(runtime, req) {
60
59
  return {
61
60
  context: ctx,
62
61
  end(statusCode, error) {
63
- var _a;
64
62
  if (ended) {
65
63
  return;
66
64
  }
@@ -80,7 +78,7 @@ function startHttpSpan(runtime, req) {
80
78
  span.setStatus({ code: SpanStatusCode.OK });
81
79
  }
82
80
  span.end();
83
- (_a = runtime.httpDuration) === null || _a === void 0 ? void 0 : _a.record(Date.now() - started, {
81
+ runtime.httpDuration?.record(Date.now() - started, {
84
82
  "http.request.method": method,
85
83
  "http.response.status_code": statusCode,
86
84
  "url.path": routeClass(path),
@@ -3,15 +3,6 @@
3
3
  * HTTP + SSE fetches, SEP-414 `_meta.traceparent` on JSON-RPC params, and
4
4
  * CLIENT spans for `tools/list` / `tools/call`.
5
5
  */
6
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
- return new (P || (P = Promise))(function (resolve, reject) {
9
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
- step((generator = generator.apply(thisArg, _arguments || [])).next());
13
- });
14
- };
15
6
  import { context, SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
16
7
  import { activeTraceparent, instrumentedFetch } from "../../otel.js";
17
8
  import { attrs } from "./attrs.js";
@@ -37,9 +28,9 @@ export function runMcpClientSpan(args, fn) {
37
28
  "agent_sdk.mcp.connection": args.connection,
38
29
  }),
39
30
  });
40
- return context.with(trace.setSpan(context.active(), span), () => __awaiter(this, void 0, void 0, function* () {
31
+ return context.with(trace.setSpan(context.active(), span), async () => {
41
32
  try {
42
- return yield fn();
33
+ return await fn();
43
34
  }
44
35
  catch (error) {
45
36
  span.setStatus({
@@ -51,5 +42,5 @@ export function runMcpClientSpan(args, fn) {
51
42
  finally {
52
43
  span.end();
53
44
  }
54
- }));
45
+ });
55
46
  }
@@ -5,15 +5,6 @@
5
5
  * already owns the process (CLI, extension host, etc.). Spans still use
6
6
  * `trace.getTracer()` so they nest under an existing parent when present.
7
7
  */
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
8
  import { DiagLogLevel, diag, metrics, trace } from "@opentelemetry/api";
18
9
  import { logs } from "@opentelemetry/api-logs";
19
10
  import { ExportResultCode } from "@opentelemetry/core";
@@ -38,29 +29,28 @@ const INSTRUMENTATION = "agent_sdk";
38
29
  * lands. Bound the exporter wait so a slow collector cannot hold the
39
30
  * delivery (OTLP BatchSpanProcessor defaults to 30s).
40
31
  */
41
- export const OTEL_FORCE_FLUSH_TIMEOUT_MS = 1000;
32
+ export const OTEL_FORCE_FLUSH_TIMEOUT_MS = 1_000;
42
33
  /**
43
34
  * First hosted OTLP POST may include a cold TLS handshake to Datadog.
44
35
  * Bound separately from {@link OTEL_FORCE_FLUSH_TIMEOUT_MS} so the
45
36
  * queued turn/tool batch is not abandoned after 1s.
46
37
  */
47
- export const OTEL_DEFERRED_EXPORT_TIMEOUT_MS = 5000;
38
+ export const OTEL_DEFERRED_EXPORT_TIMEOUT_MS = 5_000;
48
39
  /** Drop oldest finished spans when no collector has drained the buffer. */
49
- export const OTEL_IN_MEMORY_SPAN_LIMIT = 2048;
40
+ export const OTEL_IN_MEMORY_SPAN_LIMIT = 2_048;
50
41
  export function createOtelRuntime(config, log, options) {
51
- var _a;
52
42
  if (!config.enabled) {
53
43
  return undefined;
54
44
  }
55
45
  if (config.traces !== false) {
56
46
  installOutboundFetchInstrumentation();
57
47
  }
58
- const proto = (_a = process.env.OTEL_EXPORTER_OTLP_PROTOCOL) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();
48
+ const proto = process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim().toLowerCase();
59
49
  if (proto === "grpc") {
60
50
  log("[bdk:otel] OTEL_EXPORTER_OTLP_PROTOCOL=grpc is unsupported; using http/protobuf");
61
51
  }
62
52
  ensureW3cPropagator();
63
- const sdk = startOtelSdk(config, log, options === null || options === void 0 ? void 0 : options.resolveExport);
53
+ const sdk = startOtelSdk(config, log, options?.resolveExport);
64
54
  const meter = config.metrics === false ? undefined : metrics.getMeterProvider().getMeter(INSTRUMENTATION);
65
55
  return {
66
56
  config,
@@ -77,36 +67,29 @@ export function createOtelRuntime(config, log, options) {
77
67
  shutdown: sdk.shutdown,
78
68
  };
79
69
  }
80
- export function forceFlushOtelRuntime(runtime) {
81
- return __awaiter(this, void 0, void 0, function* () {
82
- yield runtime === null || runtime === void 0 ? void 0 : runtime.forceFlush();
83
- });
70
+ export async function forceFlushOtelRuntime(runtime) {
71
+ await runtime?.forceFlush();
84
72
  }
85
- export function shutdownOtelRuntime(runtime) {
86
- return __awaiter(this, void 0, void 0, function* () {
87
- yield runtime === null || runtime === void 0 ? void 0 : runtime.shutdown();
88
- });
73
+ export async function shutdownOtelRuntime(runtime) {
74
+ await runtime?.shutdown();
89
75
  }
90
- export function raceOtelForceFlush(work_1, log_1) {
91
- return __awaiter(this, arguments, void 0, function* (work, log, timeoutMs = OTEL_FORCE_FLUSH_TIMEOUT_MS) {
92
- let timer;
93
- const timeout = new Promise(resolve => {
94
- timer = setTimeout(() => resolve("timeout"), timeoutMs);
95
- });
96
- const result = yield Promise.race([
97
- work.then(() => "done").catch(() => "done"),
98
- timeout,
99
- ]);
100
- if (timer !== undefined) {
101
- clearTimeout(timer);
102
- }
103
- if (result === "timeout") {
104
- log(`[bdk:otel] forceFlush exceeded ${timeoutMs}ms; continuing`);
105
- }
76
+ export async function raceOtelForceFlush(work, log, timeoutMs = OTEL_FORCE_FLUSH_TIMEOUT_MS) {
77
+ let timer;
78
+ const timeout = new Promise(resolve => {
79
+ timer = setTimeout(() => resolve("timeout"), timeoutMs);
106
80
  });
81
+ const result = await Promise.race([
82
+ work.then(() => "done").catch(() => "done"),
83
+ timeout,
84
+ ]);
85
+ if (timer !== undefined) {
86
+ clearTimeout(timer);
87
+ }
88
+ if (result === "timeout") {
89
+ log(`[bdk:otel] forceFlush exceeded ${timeoutMs}ms; continuing`);
90
+ }
107
91
  }
108
92
  function startOtelSdk(config, logger, resolveExport) {
109
- var _a, _b;
110
93
  diag.setLogger({
111
94
  verbose: m => logger(`[bdk:otel] ${m}`),
112
95
  debug: m => logger(`[bdk:otel] ${m}`),
@@ -140,7 +123,7 @@ function startOtelSdk(config, logger, resolveExport) {
140
123
  resource,
141
124
  spanProcessors,
142
125
  sampler: new ParentBasedSampler({
143
- root: new TraceIdRatioBasedSampler((_a = traceOpts.sampleRatio) !== null && _a !== void 0 ? _a : 1),
126
+ root: new TraceIdRatioBasedSampler(traceOpts.sampleRatio ?? 1),
144
127
  }),
145
128
  });
146
129
  tracerProvider.register();
@@ -150,7 +133,7 @@ function startOtelSdk(config, logger, resolveExport) {
150
133
  if (metricOpts !== false) {
151
134
  const exporters = exportersForSignal(config.exporters, "metrics");
152
135
  if (exporters.length > 0) {
153
- const exportIntervalMillis = (_b = metricOpts.exportIntervalMillis) !== null && _b !== void 0 ? _b : 10000;
136
+ const exportIntervalMillis = metricOpts.exportIntervalMillis ?? 10_000;
154
137
  const provider = new MeterProvider({
155
138
  resource,
156
139
  readers: exporters.map(exporter => new PeriodicExportingMetricReader({
@@ -190,8 +173,7 @@ function startOtelSdk(config, logger, resolveExport) {
190
173
  else {
191
174
  logger(`[bdk] otel recording service=${config.serviceName} (export on flush when OTLP exporters resolve)`);
192
175
  }
193
- const flushDeferred = () => __awaiter(this, void 0, void 0, function* () {
194
- var _a;
176
+ const flushDeferred = async () => {
195
177
  if (memoryExporter === undefined) {
196
178
  return;
197
179
  }
@@ -199,7 +181,7 @@ function startOtelSdk(config, logger, resolveExport) {
199
181
  if (spans.length === 0) {
200
182
  return;
201
183
  }
202
- const exportConfig = (_a = resolveExport === null || resolveExport === void 0 ? void 0 : resolveExport()) !== null && _a !== void 0 ? _a : config;
184
+ const exportConfig = resolveExport?.() ?? config;
203
185
  const destinations = exportersForSignal(exportConfig.exporters, "traces");
204
186
  if (destinations.length === 0) {
205
187
  return;
@@ -207,30 +189,30 @@ function startOtelSdk(config, logger, resolveExport) {
207
189
  // Spans already carry the bake-time Resource. Hosted v2 binds
208
190
  // deployment secrets after bake, so env / service extras on
209
191
  // exportConfig must replace that Resource on the wire.
210
- const ok = yield exportQueuedSpans(spans, destinations, logger, buildResource(exportConfig));
192
+ const ok = await exportQueuedSpans(spans, destinations, logger, buildResource(exportConfig));
211
193
  if (ok) {
212
194
  memoryExporter.reset();
213
195
  }
214
- });
196
+ };
215
197
  return {
216
- forceFlush: () => __awaiter(this, void 0, void 0, function* () {
217
- yield Promise.allSettled([
198
+ forceFlush: async () => {
199
+ await Promise.allSettled([
218
200
  raceOtelForceFlush(Promise.allSettled([
219
- tracerProvider === null || tracerProvider === void 0 ? void 0 : tracerProvider.forceFlush(),
220
- meterProvider === null || meterProvider === void 0 ? void 0 : meterProvider.forceFlush(),
221
- loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.forceFlush(),
201
+ tracerProvider?.forceFlush(),
202
+ meterProvider?.forceFlush(),
203
+ loggerProvider?.forceFlush(),
222
204
  ]), logger),
223
205
  raceOtelForceFlush(flushDeferred(), logger, OTEL_DEFERRED_EXPORT_TIMEOUT_MS),
224
206
  ]);
225
- }),
226
- shutdown: () => __awaiter(this, void 0, void 0, function* () {
227
- yield flushDeferred();
228
- yield Promise.allSettled([
229
- tracerProvider === null || tracerProvider === void 0 ? void 0 : tracerProvider.shutdown(),
230
- meterProvider === null || meterProvider === void 0 ? void 0 : meterProvider.shutdown(),
231
- loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.shutdown(),
207
+ },
208
+ shutdown: async () => {
209
+ await flushDeferred();
210
+ await Promise.allSettled([
211
+ tracerProvider?.shutdown(),
212
+ meterProvider?.shutdown(),
213
+ loggerProvider?.shutdown(),
232
214
  ]);
233
- }),
215
+ },
234
216
  };
235
217
  }
236
218
  function withExportResource(span, resource) {
@@ -243,31 +225,36 @@ function withExportResource(span, resource) {
243
225
  },
244
226
  });
245
227
  }
246
- function exportQueuedSpans(spans, destinations, logger, resource) {
247
- return __awaiter(this, void 0, void 0, function* () {
248
- const payload = spans.map(span => withExportResource(span, resource));
249
- const exporters = destinations.map(destination => createTraceExporter(destination, signalUrl(destination.url, "traces")));
250
- try {
251
- const results = yield Promise.all(exporters.map(exporter => new Promise(resolve => {
252
- exporter.export(payload, (result) => {
253
- resolve(result.code === ExportResultCode.SUCCESS);
254
- });
255
- })));
256
- return results.every(ok => ok);
257
- }
258
- catch (error) {
259
- logger(`[bdk:otel] deferred export failed: ${error instanceof Error ? error.message : String(error)}`);
260
- return false;
261
- }
262
- finally {
263
- yield Promise.allSettled(exporters.map(exporter => exporter.shutdown()));
264
- }
265
- });
228
+ async function exportQueuedSpans(spans, destinations, logger, resource) {
229
+ const payload = spans.map(span => withExportResource(span, resource));
230
+ const exporters = destinations.map(destination => createTraceExporter(destination, signalUrl(destination.url, "traces")));
231
+ try {
232
+ const results = await Promise.all(exporters.map(exporter => new Promise(resolve => {
233
+ exporter.export(payload, (result) => {
234
+ resolve(result.code === ExportResultCode.SUCCESS);
235
+ });
236
+ })));
237
+ return results.every(ok => ok);
238
+ }
239
+ catch (error) {
240
+ logger(`[bdk:otel] deferred export failed: ${error instanceof Error ? error.message : String(error)}`);
241
+ return false;
242
+ }
243
+ finally {
244
+ await Promise.allSettled(exporters.map(exporter => exporter.shutdown()));
245
+ }
266
246
  }
267
247
  function buildResource(config) {
268
248
  // Align with Cursor enterprise wire resource attrs where they overlap so
269
249
  // Agent SDK traces join org metrics/logs in the same collector.
270
- const resourceAttrs = Object.assign({ [ATTR_SERVICE_NAME]: config.serviceName, "telemetry.sdk.language": "nodejs", "cursor.surface": "unspecified", "cursor.entrypoint": "sdk_ts", "agent_sdk.framework": "@cursor/bdk" }, config.resourceAttributes);
250
+ const resourceAttrs = {
251
+ [ATTR_SERVICE_NAME]: config.serviceName,
252
+ "telemetry.sdk.language": "nodejs",
253
+ "cursor.surface": "unspecified",
254
+ "cursor.entrypoint": "sdk_ts",
255
+ "agent_sdk.framework": "@cursor/bdk",
256
+ ...config.resourceAttributes,
257
+ };
271
258
  if (config.serviceVersion !== undefined) {
272
259
  resourceAttrs[ATTR_SERVICE_VERSION] = config.serviceVersion;
273
260
  }
@@ -278,9 +265,8 @@ function signalUrl(base, signal) {
278
265
  }
279
266
  /** True when a non-noop TracerProvider already owns the process. */
280
267
  function hasRealTracerProvider() {
281
- var _a;
282
268
  const provider = trace.getTracerProvider();
283
- const delegate = (_a = provider.getDelegate) === null || _a === void 0 ? void 0 : _a.call(provider);
269
+ const delegate = provider.getDelegate?.();
284
270
  return delegate !== undefined && delegate.constructor.name !== "NoopTracerProvider";
285
271
  }
286
272
  function isProtobuf(exporter) {
@@ -2,15 +2,6 @@
2
2
  * Package `defineConnection({ tools })` into a `node -e` stdio transport a
3
3
  * repo-less cloud VM can spawn.
4
4
  */
5
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
- return new (P || (P = Promise))(function (resolve, reject) {
8
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
- step((generator = generator.apply(thisArg, _arguments || [])).next());
12
- });
13
- };
14
5
  import { existsSync } from "node:fs";
15
6
  import { createRequire } from "node:module";
16
7
  import { dirname, join } from "node:path";
@@ -27,39 +18,41 @@ function jsonSchemaCatalog(tools) {
27
18
  const catalog = {};
28
19
  for (const [name, tool] of Object.entries(tools)) {
29
20
  const outputSchema = toolOutputJsonSchema(tool.outputSchema);
30
- catalog[name] = Object.assign({ description: tool.description, inputSchema: toolInputJsonSchema(tool.inputSchema) }, (outputSchema === undefined ? {} : { outputSchema: outputSchema }));
21
+ catalog[name] = {
22
+ description: tool.description,
23
+ inputSchema: toolInputJsonSchema(tool.inputSchema),
24
+ ...(outputSchema === undefined ? {} : { outputSchema: outputSchema }),
25
+ };
31
26
  }
32
27
  return catalog;
33
28
  }
34
- export function packageInlineStdioConnection(options) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- var _a;
37
- const runtimePath = sibling("inline-stdio-mcp");
38
- const stubPath = sibling("inline-stdio-define-stub");
39
- const catalog = jsonSchemaCatalog(options.tools);
40
- const result = yield esbuild.build({
41
- entryPoints: ["inline-stdio-entry"],
42
- bundle: true,
43
- write: false,
44
- platform: "node",
45
- format: "esm",
46
- target: "node22",
47
- minify: true,
48
- legalComments: "none",
49
- absWorkingDir: options.absWorkingDir,
50
- alias: {
51
- zod: require.resolve("zod"),
52
- },
53
- plugins: [
54
- {
55
- name: "inline-stdio-entry",
56
- setup(build) {
57
- build.onResolve({ filter: /^inline-stdio-entry$/ }, () => ({
58
- path: "inline-stdio-entry",
59
- namespace: "inline-stdio",
60
- }));
61
- build.onLoad({ filter: /.*/, namespace: "inline-stdio" }, () => ({
62
- contents: `import definition from ${JSON.stringify(options.entryPath)};
29
+ export async function packageInlineStdioConnection(options) {
30
+ const runtimePath = sibling("inline-stdio-mcp");
31
+ const stubPath = sibling("inline-stdio-define-stub");
32
+ const catalog = jsonSchemaCatalog(options.tools);
33
+ const result = await esbuild.build({
34
+ entryPoints: ["inline-stdio-entry"],
35
+ bundle: true,
36
+ write: false,
37
+ platform: "node",
38
+ format: "esm",
39
+ target: "node22",
40
+ minify: true,
41
+ legalComments: "none",
42
+ absWorkingDir: options.absWorkingDir,
43
+ alias: {
44
+ zod: require.resolve("zod"),
45
+ },
46
+ plugins: [
47
+ {
48
+ name: "inline-stdio-entry",
49
+ setup(build) {
50
+ build.onResolve({ filter: /^inline-stdio-entry$/ }, () => ({
51
+ path: "inline-stdio-entry",
52
+ namespace: "inline-stdio",
53
+ }));
54
+ build.onLoad({ filter: /.*/, namespace: "inline-stdio" }, () => ({
55
+ contents: `import definition from ${JSON.stringify(options.entryPath)};
63
56
  import { serveInlineStdioMcp } from ${JSON.stringify(runtimePath)};
64
57
  serveInlineStdioMcp(
65
58
  ${JSON.stringify(options.name)},
@@ -67,33 +60,32 @@ serveInlineStdioMcp(
67
60
  ${JSON.stringify(catalog)}
68
61
  );
69
62
  `,
70
- resolveDir: dirname(options.entryPath),
71
- loader: "ts",
72
- }));
73
- },
63
+ resolveDir: dirname(options.entryPath),
64
+ loader: "ts",
65
+ }));
74
66
  },
75
- {
76
- name: "inline-stdio-connection-stub",
77
- setup(build) {
78
- build.onResolve({ filter: /^@cursor\/(?:bdk|july)\/connections$/ }, () => ({
79
- path: stubPath,
80
- }));
81
- },
67
+ },
68
+ {
69
+ name: "inline-stdio-connection-stub",
70
+ setup(build) {
71
+ build.onResolve({ filter: /^@cursor\/(?:bdk|july)\/connections$/ }, () => ({
72
+ path: stubPath,
73
+ }));
82
74
  },
83
- ],
84
- });
85
- const file = (_a = result.outputFiles) === null || _a === void 0 ? void 0 : _a[0];
86
- if (file === undefined) {
87
- throw new Error(`Failed to package inline stdio MCP connection "${options.name}": esbuild produced no output.`);
88
- }
89
- const source = file.text.replace(/^#!.*\r?\n/, "");
90
- if (source.trim() === "") {
91
- throw new Error(`Failed to package inline stdio MCP connection "${options.name}": empty bundle.`);
92
- }
93
- return {
94
- type: "stdio",
95
- command: "node",
96
- args: ["--input-type=module", "-e", source],
97
- };
75
+ },
76
+ ],
98
77
  });
78
+ const file = result.outputFiles?.[0];
79
+ if (file === undefined) {
80
+ throw new Error(`Failed to package inline stdio MCP connection "${options.name}": esbuild produced no output.`);
81
+ }
82
+ const source = file.text.replace(/^#!.*\r?\n/, "");
83
+ if (source.trim() === "") {
84
+ throw new Error(`Failed to package inline stdio MCP connection "${options.name}": empty bundle.`);
85
+ }
86
+ return {
87
+ type: "stdio",
88
+ command: "node",
89
+ args: ["--input-type=module", "-e", source],
90
+ };
99
91
  }
@@ -18,14 +18,13 @@ import { MCP_ENDPOINT_PATH } from "./mcp-endpoint.js";
18
18
  * self-references (an agent asking itself recurses forever).
19
19
  */
20
20
  export function collectPeerConnections(mounts) {
21
- var _a;
22
21
  const knownSlugs = new Set(mounts.map(({ slug }) => slug).filter(slug => slug !== ""));
23
22
  const bySlug = new Map();
24
23
  for (const { slug, project } of mounts) {
25
24
  const refs = [];
26
25
  for (const connection of [
27
26
  ...project.agent.connections,
28
- ...((_a = project.agent.hostConnections) !== null && _a !== void 0 ? _a : []),
27
+ ...(project.agent.hostConnections ?? []),
29
28
  ]) {
30
29
  if (!isPeerConnectionTransport(connection.transport)) {
31
30
  continue;
@@ -58,9 +57,14 @@ export function resolvePeerConnections(args) {
58
57
  const serverBase = trimTrailingSlash(args.serverUrl);
59
58
  const publicBase = args.publicUrl === undefined ? undefined : trimTrailingSlash(args.publicUrl);
60
59
  const headers = args.authToken === undefined ? undefined : { authorization: `Bearer ${args.authToken}` };
61
- return args.refs.map(ref => (Object.assign(Object.assign({ name: ref.name, localUrl: `${serverBase}/${ref.targetSlug}${MCP_ENDPOINT_PATH}` }, (publicBase === undefined
62
- ? {}
63
- : { cloudUrl: `${publicBase}/${ref.targetSlug}${MCP_ENDPOINT_PATH}` })), (headers === undefined ? {} : { headers }))));
60
+ return args.refs.map(ref => ({
61
+ name: ref.name,
62
+ localUrl: `${serverBase}/${ref.targetSlug}${MCP_ENDPOINT_PATH}`,
63
+ ...(publicBase === undefined
64
+ ? {}
65
+ : { cloudUrl: `${publicBase}/${ref.targetSlug}${MCP_ENDPOINT_PATH}` }),
66
+ ...(headers === undefined ? {} : { headers }),
67
+ }));
64
68
  }
65
69
  function trimTrailingSlash(url) {
66
70
  return url.endsWith("/") ? url.slice(0, -1) : url;
@@ -3,68 +3,53 @@
3
3
  * `agent/schedules/*`. Upsert current names and delete ones that disappeared
4
4
  * since the last successful sync (persisted under the engine state root).
5
5
  */
6
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
- return new (P || (P = Promise))(function (resolve, reject) {
9
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
- step((generator = generator.apply(thisArg, _arguments || [])).next());
13
- });
14
- };
15
6
  import { mkdir, readFile, writeFile } from "node:fs/promises";
16
7
  import { dirname } from "node:path";
17
8
  export const PLATFORM_SCHEDULE_CATALOG_FILENAME = "platform-schedule-names.json";
18
- export function syncHostedPlatformSchedules(args) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- const previous = yield readScheduleCatalog(args.catalogPath);
21
- const currentNames = args.schedules.map(schedule => schedule.name);
22
- const currentSet = new Set(currentNames);
23
- const failedDeletes = [];
24
- for (const name of previous) {
25
- if (currentSet.has(name)) {
26
- continue;
27
- }
28
- try {
29
- yield args.timers.deleteSchedule(name);
30
- }
31
- catch (error) {
32
- failedDeletes.push(name);
33
- args.logger(`[bdk] platform timer delete failed for schedule "${name}": ${error instanceof Error ? error.message : String(error)}`);
34
- }
9
+ export async function syncHostedPlatformSchedules(args) {
10
+ const previous = await readScheduleCatalog(args.catalogPath);
11
+ const currentNames = args.schedules.map(schedule => schedule.name);
12
+ const currentSet = new Set(currentNames);
13
+ const failedDeletes = [];
14
+ for (const name of previous) {
15
+ if (currentSet.has(name)) {
16
+ continue;
35
17
  }
36
- for (const schedule of args.schedules) {
37
- try {
38
- yield args.timers.upsertSchedule({
39
- name: schedule.name,
40
- cron: schedule.cron,
41
- });
42
- }
43
- catch (error) {
44
- args.logger(`[bdk] platform timer upsert failed for schedule "${schedule.name}": ${error instanceof Error ? error.message : String(error)}`);
45
- }
18
+ try {
19
+ await args.timers.deleteSchedule(name);
46
20
  }
47
- // Keep failed removals in the catalog so the next boot retries them.
48
- yield writeScheduleCatalog(args.catalogPath, [...new Set([...currentNames, ...failedDeletes])]);
49
- });
50
- }
51
- function readScheduleCatalog(catalogPath) {
52
- return __awaiter(this, void 0, void 0, function* () {
21
+ catch (error) {
22
+ failedDeletes.push(name);
23
+ args.logger(`[bdk] platform timer delete failed for schedule "${name}": ${error instanceof Error ? error.message : String(error)}`);
24
+ }
25
+ }
26
+ for (const schedule of args.schedules) {
53
27
  try {
54
- const parsed = JSON.parse(yield readFile(catalogPath, "utf8"));
55
- if (!Array.isArray(parsed)) {
56
- return [];
57
- }
58
- return parsed.filter((entry) => typeof entry === "string");
28
+ await args.timers.upsertSchedule({
29
+ name: schedule.name,
30
+ cron: schedule.cron,
31
+ });
59
32
  }
60
- catch (_a) {
33
+ catch (error) {
34
+ args.logger(`[bdk] platform timer upsert failed for schedule "${schedule.name}": ${error instanceof Error ? error.message : String(error)}`);
35
+ }
36
+ }
37
+ // Keep failed removals in the catalog so the next boot retries them.
38
+ await writeScheduleCatalog(args.catalogPath, [...new Set([...currentNames, ...failedDeletes])]);
39
+ }
40
+ async function readScheduleCatalog(catalogPath) {
41
+ try {
42
+ const parsed = JSON.parse(await readFile(catalogPath, "utf8"));
43
+ if (!Array.isArray(parsed)) {
61
44
  return [];
62
45
  }
63
- });
46
+ return parsed.filter((entry) => typeof entry === "string");
47
+ }
48
+ catch {
49
+ return [];
50
+ }
64
51
  }
65
- function writeScheduleCatalog(catalogPath, names) {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- yield mkdir(dirname(catalogPath), { recursive: true });
68
- yield writeFile(catalogPath, `${JSON.stringify(names)}\n`, "utf8");
69
- });
52
+ async function writeScheduleCatalog(catalogPath, names) {
53
+ await mkdir(dirname(catalogPath), { recursive: true });
54
+ await writeFile(catalogPath, `${JSON.stringify(names)}\n`, "utf8");
70
55
  }