@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
@@ -19,15 +19,6 @@
19
19
  * per agent, and splitting it would change backpressure behavior, which this
20
20
  * seam deliberately does not touch.
21
21
  */
22
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
23
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
24
- return new (P || (P = Promise))(function (resolve, reject) {
25
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
26
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
27
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
28
- step((generator = generator.apply(thisArg, _arguments || [])).next());
29
- });
30
- };
31
22
  import { resolveStoragePolicy, storageKeys, } from "../storage.js";
32
23
  import { isCursorHostedStorage } from "../storage-backends/cursor-hosted.js";
33
24
  import { describeError } from "./describe-error.js";
@@ -52,16 +43,16 @@ const TERMINAL_SESSION_EVENTS = new Set([
52
43
  * At-most-once delivery already tolerates loss; bounding the queue keeps a
53
44
  * slow sink from growing memory without limit under sustained traffic.
54
45
  */
55
- const MAX_PENDING_OPS = 1000;
46
+ const MAX_PENDING_OPS = 1_000;
56
47
  /**
57
48
  * How long {@link StorageCoordinator.close} waits for the sink to
58
49
  * drain before giving up. Keeps a hung sink within the shutdown budget.
59
50
  */
60
- const CLOSE_DRAIN_TIMEOUT_MS = 10000;
51
+ const CLOSE_DRAIN_TIMEOUT_MS = 10_000;
61
52
  /** Debounced event batching flushes early past this many buffered events. */
62
53
  const DEBOUNCE_MAX_BATCH = 200;
63
54
  /** Cap on the per-session acked-record dedupe cache (oldest-out). */
64
- const MAX_ACKED_RECORDS = 5000;
55
+ const MAX_ACKED_RECORDS = 5_000;
65
56
  /**
66
57
  * Cap on consecutive record rewrites skipped because only volatile
67
58
  * bookkeeping changed. Bounds how stale the durable copy's `turnCount` /
@@ -78,7 +69,7 @@ export const MAX_VOLATILE_RECORD_SKIPS = 20;
78
69
  * metadata) would lag.
79
70
  */
80
71
  function resumeProjectionJson(record) {
81
- return JSON.stringify(Object.assign(Object.assign({}, record), { turnCount: 0, updatedAt: "" }));
72
+ return JSON.stringify({ ...record, turnCount: 0, updatedAt: "" });
82
73
  }
83
74
  /** Session records out of raw sink entries; rows without a usable id are dropped. */
84
75
  function sessionRecordsOf(entries) {
@@ -88,7 +79,6 @@ function sessionRecordsOf(entries) {
88
79
  }
89
80
  export class StorageCoordinator {
90
81
  constructor(options) {
91
- var _a;
92
82
  /** Per-session pending state (events + coalesced record). */
93
83
  this.buffers = new Map();
94
84
  /**
@@ -119,7 +109,7 @@ export class StorageCoordinator {
119
109
  this.dropped = 0;
120
110
  this.closed = false;
121
111
  this.definition = options.definition;
122
- this.keys = (_a = options.keys) !== null && _a !== void 0 ? _a : storageKeys;
112
+ this.keys = options.keys ?? storageKeys;
123
113
  this.policy = resolveStoragePolicy(options.definition.policy);
124
114
  this.agentName = options.agentName;
125
115
  this.projectRoot = options.projectRoot;
@@ -183,26 +173,26 @@ export class StorageCoordinator {
183
173
  this.flushSessionInternal(sessionId, "policy", true);
184
174
  }
185
175
  flushSessionInternal(sessionId, reason, exactRecord) {
186
- var _a, _b;
187
176
  const buffer = this.buffers.get(sessionId);
188
177
  const acked = this.lastAckedRecord.get(sessionId);
189
- if (buffer === undefined && !(exactRecord && (acked === null || acked === void 0 ? void 0 : acked.skippedJson) !== undefined)) {
178
+ if (buffer === undefined && !(exactRecord && acked?.skippedJson !== undefined)) {
190
179
  return;
191
180
  }
192
181
  this.buffers.delete(sessionId);
193
- if ((buffer === null || buffer === void 0 ? void 0 : buffer.debounceTimer) !== undefined) {
182
+ if (buffer?.debounceTimer !== undefined) {
194
183
  clearTimeout(buffer.debounceTimer);
195
184
  }
196
- const events = (_a = buffer === null || buffer === void 0 ? void 0 : buffer.events) !== null && _a !== void 0 ? _a : [];
185
+ const events = buffer?.events ?? [];
197
186
  // A terminal event can arrive through a debounce-policy timer flush,
198
187
  // where eventDispatched never ran: detect it from the buffered events
199
188
  // so a finished session's record is exact under either policy.
200
189
  const exact = exactRecord || events.some(event => TERMINAL_SESSION_EVENTS.has(event.type));
201
190
  // Exact flushes repair earlier volatile-only skips: when the buffer no
202
191
  // longer holds a record, the newest skipped one still gets written.
203
- const record = (_b = buffer === null || buffer === void 0 ? void 0 : buffer.record) !== null && _b !== void 0 ? _b : (exact && (acked === null || acked === void 0 ? void 0 : acked.skippedJson) !== undefined
204
- ? JSON.parse(acked.skippedJson)
205
- : undefined);
192
+ const record = buffer?.record ??
193
+ (exact && acked?.skippedJson !== undefined
194
+ ? JSON.parse(acked.skippedJson)
195
+ : undefined);
206
196
  const ops = [];
207
197
  const puts = [];
208
198
  const first = events[0];
@@ -217,7 +207,7 @@ export class StorageCoordinator {
217
207
  if (record !== undefined) {
218
208
  const recordJson = JSON.stringify(record);
219
209
  const projection = resumeProjectionJson(record);
220
- if ((acked === null || acked === void 0 ? void 0 : acked.json) === recordJson) {
210
+ if (acked?.json === recordJson) {
221
211
  // Byte-identical to the last acknowledged write: rewriting it buys
222
212
  // nothing. Events and continuation index still flush normally.
223
213
  }
@@ -258,7 +248,6 @@ export class StorageCoordinator {
258
248
  * logged and dropped (at-most-once), never failing batch siblings.
259
249
  */
260
250
  putsOp(puts, recordAck) {
261
- var _a;
262
251
  const recordKey = recordAck === undefined ? undefined : this.keys.session(this.agentName, recordAck.sessionId);
263
252
  const settleRecord = (failed) => {
264
253
  if (recordAck === undefined) {
@@ -280,12 +269,12 @@ export class StorageCoordinator {
280
269
  skips: 0,
281
270
  });
282
271
  };
283
- const putMany = (_a = this.definition.putMany) === null || _a === void 0 ? void 0 : _a.bind(this.definition);
272
+ const putMany = this.definition.putMany?.bind(this.definition);
284
273
  if (putMany !== undefined) {
285
274
  return {
286
275
  label: `putMany(${puts.map(entry => entry.key).join(", ")})`,
287
- run: (ctx) => __awaiter(this, void 0, void 0, function* () {
288
- const results = yield putMany(puts, ctx);
276
+ run: async (ctx) => {
277
+ const results = await putMany(puts, ctx);
289
278
  let recordFailed = false;
290
279
  for (const result of results) {
291
280
  if (result.error === undefined) {
@@ -297,16 +286,16 @@ export class StorageCoordinator {
297
286
  this.logger(`[bdk] storage put(${result.key}) failed: ${describeError(result.error)}`);
298
287
  }
299
288
  settleRecord(recordFailed);
300
- }),
289
+ },
301
290
  };
302
291
  }
303
292
  return {
304
293
  label: `put(${puts.map(entry => entry.key).join(", ")})`,
305
- run: (ctx) => __awaiter(this, void 0, void 0, function* () {
294
+ run: async (ctx) => {
306
295
  let recordFailed = false;
307
296
  for (const entry of puts) {
308
297
  try {
309
- yield this.definition.put(entry.key, entry.value, ctx);
298
+ await this.definition.put(entry.key, entry.value, ctx);
310
299
  }
311
300
  catch (error) {
312
301
  if (entry.key === recordKey) {
@@ -316,7 +305,7 @@ export class StorageCoordinator {
316
305
  }
317
306
  }
318
307
  settleRecord(recordFailed);
319
- }),
308
+ },
320
309
  };
321
310
  }
322
311
  /**
@@ -352,7 +341,7 @@ export class StorageCoordinator {
352
341
  deleteOp(key) {
353
342
  return {
354
343
  label: `delete(${key})`,
355
- run: ctx => { var _a, _b; return (_b = (_a = this.definition).delete) === null || _b === void 0 ? void 0 : _b.call(_a, key, ctx); },
344
+ run: ctx => this.definition.delete?.(key, ctx),
356
345
  };
357
346
  }
358
347
  // ==========================================================================
@@ -374,31 +363,27 @@ export class StorageCoordinator {
374
363
  * logged and read as "nothing saved" — a broken store must never block
375
364
  * serve start.
376
365
  */
377
- listSessions() {
378
- return __awaiter(this, void 0, void 0, function* () {
379
- const entries = yield this.tryList(this.keys.sessionPrefix(this.agentName));
380
- return entries
381
- .map(entry => entry.value)
382
- .filter(record => record != null);
383
- });
366
+ async listSessions() {
367
+ const entries = await this.tryList(this.keys.sessionPrefix(this.agentName));
368
+ return entries
369
+ .map(entry => entry.value)
370
+ .filter(record => record != null);
384
371
  }
385
372
  /**
386
373
  * Session records from the sink for the sessions API. Unlike
387
374
  * {@link listSessions}, missing `list` or a thrown sink error **propagates**
388
375
  * so the caller can fall back to the local session store.
389
376
  */
390
- listSessionsFromSink() {
391
- return __awaiter(this, void 0, void 0, function* () {
392
- const list = this.definition.list;
393
- if (list === undefined) {
394
- throw new Error("storage sink has no list");
395
- }
396
- const entries = yield list(this.keys.sessionPrefix(this.agentName), this.context("restore"));
397
- if (!Array.isArray(entries)) {
398
- throw new Error("storage list returned a non-array");
399
- }
400
- return sessionRecordsOf(entries);
401
- });
377
+ async listSessionsFromSink() {
378
+ const list = this.definition.list;
379
+ if (list === undefined) {
380
+ throw new Error("storage sink has no list");
381
+ }
382
+ const entries = await list(this.keys.sessionPrefix(this.agentName), this.context("restore"));
383
+ if (!Array.isArray(entries)) {
384
+ throw new Error("storage list returned a non-array");
385
+ }
386
+ return sessionRecordsOf(entries);
402
387
  }
403
388
  /**
404
389
  * Newest-written session records from the sink (`GET /v1/sessions?latest=1`
@@ -406,35 +391,31 @@ export class StorageCoordinator {
406
391
  * posture as {@link listSessionsFromSink}; `undefined` when the sink
407
392
  * cannot order by write time, so the caller falls back to the full list.
408
393
  */
409
- listNewestSessionsFromSink(limit) {
410
- return __awaiter(this, void 0, void 0, function* () {
411
- const listNewest = this.definition.listNewest;
412
- if (listNewest === undefined) {
413
- return undefined;
414
- }
415
- const entries = yield listNewest(this.keys.sessionPrefix(this.agentName), limit, this.context("restore"));
416
- if (!Array.isArray(entries)) {
417
- throw new Error("storage listNewest returned a non-array");
418
- }
419
- return sessionRecordsOf(entries);
420
- });
394
+ async listNewestSessionsFromSink(limit) {
395
+ const listNewest = this.definition.listNewest;
396
+ if (listNewest === undefined) {
397
+ return undefined;
398
+ }
399
+ const entries = await listNewest(this.keys.sessionPrefix(this.agentName), limit, this.context("restore"));
400
+ if (!Array.isArray(entries)) {
401
+ throw new Error("storage listNewest returned a non-array");
402
+ }
403
+ return sessionRecordsOf(entries);
421
404
  }
422
405
  /**
423
406
  * Saved event stream for one session: chunk values concatenated in key
424
407
  * order (chunks are keyed by their first event's index, zero-padded, so
425
408
  * ascending key order is append order). Errors read as an empty stream.
426
409
  */
427
- listSessionEvents(sessionId) {
428
- return __awaiter(this, void 0, void 0, function* () {
429
- const entries = yield this.tryList(this.keys.sessionEventsPrefix(this.agentName, sessionId));
430
- const events = [];
431
- for (const entry of entries) {
432
- if (Array.isArray(entry.value)) {
433
- events.push(...entry.value);
434
- }
410
+ async listSessionEvents(sessionId) {
411
+ const entries = await this.tryList(this.keys.sessionEventsPrefix(this.agentName, sessionId));
412
+ const events = [];
413
+ for (const entry of entries) {
414
+ if (Array.isArray(entry.value)) {
415
+ events.push(...entry.value);
435
416
  }
436
- return events;
437
- });
417
+ }
418
+ return events;
438
419
  }
439
420
  /**
440
421
  * One saved session by id (lazy restore for playground Open-trace /
@@ -442,25 +423,23 @@ export class StorageCoordinator {
442
423
  * — same posture as {@link getSessionByContinuation}. A definitive miss
443
424
  * (no row, or a write-only sink without `get`) resolves undefined.
444
425
  */
445
- getSessionById(sessionId) {
446
- return __awaiter(this, void 0, void 0, function* () {
447
- const get = this.definition.get;
448
- if (get === undefined) {
449
- return undefined;
450
- }
451
- if (typeof sessionId !== "string" || sessionId === "") {
452
- return undefined;
453
- }
454
- const ctx = this.context("restore");
455
- const record = (yield get(this.keys.session(this.agentName, sessionId), ctx));
456
- if (record == null) {
457
- return undefined;
458
- }
459
- if (record.sessionId !== sessionId) {
460
- throw new Error(`storage returned a session that does not match the requested id ${sessionId}`);
461
- }
462
- return record;
463
- });
426
+ async getSessionById(sessionId) {
427
+ const get = this.definition.get;
428
+ if (get === undefined) {
429
+ return undefined;
430
+ }
431
+ if (typeof sessionId !== "string" || sessionId === "") {
432
+ return undefined;
433
+ }
434
+ const ctx = this.context("restore");
435
+ const record = (await get(this.keys.session(this.agentName, sessionId), ctx));
436
+ if (record == null) {
437
+ return undefined;
438
+ }
439
+ if (record.sessionId !== sessionId) {
440
+ throw new Error(`storage returned a session that does not match the requested id ${sessionId}`);
441
+ }
442
+ return record;
464
443
  }
465
444
  /**
466
445
  * One saved session by channel continuation key (lazy restore). Unlike
@@ -471,37 +450,35 @@ export class StorageCoordinator {
471
450
  * A definitive miss (no index entry, or a write-only sink without
472
451
  * `get`) resolves undefined.
473
452
  */
474
- getSessionByContinuation(channelId, continuationKey) {
475
- return __awaiter(this, void 0, void 0, function* () {
476
- const get = this.definition.get;
477
- if (get === undefined) {
478
- return undefined;
479
- }
480
- const ctx = this.context("restore");
481
- const pointer = yield get(this.keys.continuation(this.agentName, channelId, continuationKey), ctx);
482
- if (pointer == null) {
483
- return undefined;
484
- }
485
- const sessionId = typeof pointer === "object" && !Array.isArray(pointer) ? pointer.sessionId : undefined;
486
- if (typeof sessionId !== "string" || sessionId === "") {
487
- throw new Error(`storage returned a malformed continuation entry for channel ${channelId}`);
488
- }
489
- const record = yield this.getSessionById(sessionId);
490
- if (record === undefined) {
491
- // Index entry without its record (e.g. the record write was shed
492
- // under at-most-once). The session is unrecoverable; treat as a miss
493
- // so the conversation can continue rather than failing forever.
494
- this.logger(`[bdk] storage continuation entry points at missing session ${sessionId}; treating as a miss`);
495
- return undefined;
496
- }
497
- // The sink must answer for the exact key it was asked about — a
498
- // mismatched row is a broken store, not a miss; treating it as a miss
499
- // would fork the continuation token onto a new session.
500
- if (record.channelId !== channelId || record.continuationKey !== continuationKey) {
501
- throw new Error(`storage returned a session that does not match the requested continuation (channel ${channelId})`);
502
- }
503
- return record;
504
- });
453
+ async getSessionByContinuation(channelId, continuationKey) {
454
+ const get = this.definition.get;
455
+ if (get === undefined) {
456
+ return undefined;
457
+ }
458
+ const ctx = this.context("restore");
459
+ const pointer = await get(this.keys.continuation(this.agentName, channelId, continuationKey), ctx);
460
+ if (pointer == null) {
461
+ return undefined;
462
+ }
463
+ const sessionId = typeof pointer === "object" && !Array.isArray(pointer) ? pointer.sessionId : undefined;
464
+ if (typeof sessionId !== "string" || sessionId === "") {
465
+ throw new Error(`storage returned a malformed continuation entry for channel ${channelId}`);
466
+ }
467
+ const record = await this.getSessionById(sessionId);
468
+ if (record === undefined) {
469
+ // Index entry without its record (e.g. the record write was shed
470
+ // under at-most-once). The session is unrecoverable; treat as a miss
471
+ // so the conversation can continue rather than failing forever.
472
+ this.logger(`[bdk] storage continuation entry points at missing session ${sessionId}; treating as a miss`);
473
+ return undefined;
474
+ }
475
+ // The sink must answer for the exact key it was asked about — a
476
+ // mismatched row is a broken store, not a miss; treating it as a miss
477
+ // would fork the continuation token onto a new session.
478
+ if (record.channelId !== channelId || record.continuationKey !== continuationKey) {
479
+ throw new Error(`storage returned a session that does not match the requested continuation (channel ${channelId})`);
480
+ }
481
+ return record;
505
482
  }
506
483
  // ==========================================================================
507
484
  // Author KV ({@link HostContext.kv})
@@ -517,34 +494,27 @@ export class StorageCoordinator {
517
494
  * Awaited author KV read. Unlike framework session mirrors, this awaits
518
495
  * the sink and propagates errors — handlers need read-after-write.
519
496
  */
520
- kvGet(authorKey) {
521
- return __awaiter(this, void 0, void 0, function* () {
522
- const get = this.definition.get;
523
- if (get === undefined) {
524
- throw new Error("storage get is not configured");
525
- }
526
- const key = this.keys.kv(this.agentName, authorKey);
527
- // Preserve stored JSON `null` (distinct from a missing key).
528
- return yield get(key, this.context("restore"));
529
- });
497
+ async kvGet(authorKey) {
498
+ const get = this.definition.get;
499
+ if (get === undefined) {
500
+ throw new Error("storage get is not configured");
501
+ }
502
+ const key = this.keys.kv(this.agentName, authorKey);
503
+ // Preserve stored JSON `null` (distinct from a missing key).
504
+ return await get(key, this.context("restore"));
530
505
  }
531
506
  /**
532
507
  * Awaited author KV write. Goes straight to the sink (not the
533
508
  * at-most-once delivery queue) so callers observe durable success/failure.
534
509
  */
535
- kvPut(authorKey, value) {
536
- return __awaiter(this, void 0, void 0, function* () {
537
- const key = this.keys.kv(this.agentName, authorKey);
538
- yield this.definition.put(key, value, this.context("policy"));
539
- });
510
+ async kvPut(authorKey, value) {
511
+ const key = this.keys.kv(this.agentName, authorKey);
512
+ await this.definition.put(key, value, this.context("policy"));
540
513
  }
541
514
  /** Awaited author KV delete. No-op when the sink omits `delete`. */
542
- kvDelete(authorKey) {
543
- return __awaiter(this, void 0, void 0, function* () {
544
- var _a, _b;
545
- const key = this.keys.kv(this.agentName, authorKey);
546
- yield (_b = (_a = this.definition).delete) === null || _b === void 0 ? void 0 : _b.call(_a, key, this.context("policy"));
547
- });
515
+ async kvDelete(authorKey) {
516
+ const key = this.keys.kv(this.agentName, authorKey);
517
+ await this.definition.delete?.(key, this.context("policy"));
548
518
  }
549
519
  // ==========================================================================
550
520
  // Evals (dedicated `evals` table)
@@ -579,16 +549,16 @@ export class StorageCoordinator {
579
549
  },
580
550
  ], "policy");
581
551
  },
582
- list: () => __awaiter(this, void 0, void 0, function* () {
552
+ list: async () => {
583
553
  try {
584
- const runs = yield table.list(this.context("restore"));
554
+ const runs = await table.list(this.context("restore"));
585
555
  return Array.isArray(runs) ? runs : [];
586
556
  }
587
557
  catch (error) {
588
558
  this.logger(`[bdk] storage evals.list() failed: ${describeError(error)}`);
589
559
  return [];
590
560
  }
591
- }),
561
+ },
592
562
  };
593
563
  }
594
564
  // ==========================================================================
@@ -598,36 +568,33 @@ export class StorageCoordinator {
598
568
  * Flush all buffers and drain the queue, giving the sink at most
599
569
  * {@link CLOSE_DRAIN_TIMEOUT_MS}. Called from engine close.
600
570
  */
601
- close() {
602
- return __awaiter(this, void 0, void 0, function* () {
603
- if (!this.closed) {
604
- for (const sessionId of [...this.buffers.keys()]) {
605
- this.flushSession(sessionId, "shutdown");
606
- }
607
- // Sessions whose newest record was only ever skipped (volatile-only
608
- // turns) have no buffer left; drain their stashed records too so a
609
- // graceful shutdown leaves exact bookkeeping behind.
610
- for (const [sessionId, acked] of this.lastAckedRecord) {
611
- if (acked.skippedJson !== undefined) {
612
- this.flushSessionInternal(sessionId, "shutdown", true);
613
- }
614
- }
615
- this.closed = true;
571
+ async close() {
572
+ if (!this.closed) {
573
+ for (const sessionId of [...this.buffers.keys()]) {
574
+ this.flushSession(sessionId, "shutdown");
616
575
  }
617
- let timer;
618
- const drained = yield Promise.race([
619
- this.queue.then(() => true),
620
- new Promise(resolve => {
621
- var _a;
622
- timer = setTimeout(() => resolve(false), CLOSE_DRAIN_TIMEOUT_MS);
623
- (_a = timer.unref) === null || _a === void 0 ? void 0 : _a.call(timer);
624
- }),
625
- ]);
626
- clearTimeout(timer);
627
- if (!drained) {
628
- this.logger(`[bdk] storage shutdown drain timed out after ${CLOSE_DRAIN_TIMEOUT_MS}ms with ${this.pending} write(s) undelivered`);
576
+ // Sessions whose newest record was only ever skipped (volatile-only
577
+ // turns) have no buffer left; drain their stashed records too so a
578
+ // graceful shutdown leaves exact bookkeeping behind.
579
+ for (const [sessionId, acked] of this.lastAckedRecord) {
580
+ if (acked.skippedJson !== undefined) {
581
+ this.flushSessionInternal(sessionId, "shutdown", true);
582
+ }
629
583
  }
630
- });
584
+ this.closed = true;
585
+ }
586
+ let timer;
587
+ const drained = await Promise.race([
588
+ this.queue.then(() => true),
589
+ new Promise(resolve => {
590
+ timer = setTimeout(() => resolve(false), CLOSE_DRAIN_TIMEOUT_MS);
591
+ timer.unref?.();
592
+ }),
593
+ ]);
594
+ clearTimeout(timer);
595
+ if (!drained) {
596
+ this.logger(`[bdk] storage shutdown drain timed out after ${CLOSE_DRAIN_TIMEOUT_MS}ms with ${this.pending} write(s) undelivered`);
597
+ }
631
598
  }
632
599
  /** Pending deliveries (exposed for tests and drain instrumentation). */
633
600
  whenIdle() {
@@ -642,7 +609,6 @@ export class StorageCoordinator {
642
609
  return buffer;
643
610
  }
644
611
  armDebounce(sessionId, buffer, debounceMs) {
645
- var _a, _b;
646
612
  if (buffer.debounceTimer !== undefined) {
647
613
  clearTimeout(buffer.debounceTimer);
648
614
  }
@@ -651,24 +617,22 @@ export class StorageCoordinator {
651
617
  this.flushSession(sessionId);
652
618
  }, debounceMs);
653
619
  // Never keep the process alive just for a pending storage flush.
654
- (_b = (_a = buffer.debounceTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);
620
+ buffer.debounceTimer.unref?.();
655
621
  }
656
622
  /** `list` wrapper for the startup reads: missing hook or throw ⇒ empty. */
657
- tryList(prefix) {
658
- return __awaiter(this, void 0, void 0, function* () {
659
- const list = this.definition.list;
660
- if (list === undefined) {
661
- return [];
662
- }
663
- try {
664
- const entries = yield list(prefix, this.context("restore"));
665
- return Array.isArray(entries) ? entries : [];
666
- }
667
- catch (error) {
668
- this.logger(`[bdk] storage list(${prefix}) failed: ${describeError(error)}`);
669
- return [];
670
- }
671
- });
623
+ async tryList(prefix) {
624
+ const list = this.definition.list;
625
+ if (list === undefined) {
626
+ return [];
627
+ }
628
+ try {
629
+ const entries = await list(prefix, this.context("restore"));
630
+ return Array.isArray(entries) ? entries : [];
631
+ }
632
+ catch (error) {
633
+ this.logger(`[bdk] storage list(${prefix}) failed: ${describeError(error)}`);
634
+ return [];
635
+ }
672
636
  }
673
637
  enqueue(ops, reason) {
674
638
  if (this.closed && reason !== "shutdown") {
@@ -676,17 +640,17 @@ export class StorageCoordinator {
676
640
  }
677
641
  if (this.pending + ops.length > MAX_PENDING_OPS) {
678
642
  this.dropped += ops.length;
679
- if (this.dropped <= ops.length || this.dropped % 1000 < ops.length) {
643
+ if (this.dropped <= ops.length || this.dropped % 1_000 < ops.length) {
680
644
  this.logger(`[bdk] storage queue full (${MAX_PENDING_OPS} pending writes); dropped ${this.dropped} write(s) so far — the sink is too slow for the traffic`);
681
645
  }
682
646
  return;
683
647
  }
684
648
  this.pending += ops.length;
685
649
  const ctx = this.context(reason);
686
- this.queue = this.queue.then(() => __awaiter(this, void 0, void 0, function* () {
650
+ this.queue = this.queue.then(async () => {
687
651
  for (const op of ops) {
688
652
  try {
689
- yield op.run(ctx);
653
+ await op.run(ctx);
690
654
  }
691
655
  catch (error) {
692
656
  this.logger(`[bdk] storage ${op.label} failed: ${describeError(error)}`);
@@ -695,7 +659,7 @@ export class StorageCoordinator {
695
659
  this.pending -= 1;
696
660
  }
697
661
  }
698
- }));
662
+ });
699
663
  }
700
664
  context(reason) {
701
665
  return { agentName: this.agentName, projectRoot: this.projectRoot, reason };
@@ -3,15 +3,6 @@
3
3
  * skills, workspace seed, and session workspaceFile syncs so they keep the
4
4
  * same write-then-sweep discipline and the same path refusals.
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 { posix } from "node:path";
16
7
  import { FileConflictError } from "../files.js";
17
8
  /**
@@ -20,16 +11,13 @@ import { FileConflictError } from "../files.js";
20
11
  * Writes land before stale deletes, so a failed sync never leaves a gap a
21
12
  * concurrent cloud reader could see.
22
13
  */
23
- export function mirrorToStore(args) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- var _a;
26
- yield Promise.all([...args.desired].map(([key, body]) => putLastWriterWins(args.sink, key, body)));
27
- const listed = yield Promise.all([args.prefix, ...((_a = args.legacyPrefixes) !== null && _a !== void 0 ? _a : [])].map(prefix => args.sink.list(prefix)));
28
- yield Promise.all(listed
29
- .flat()
30
- .filter(entry => !args.desired.has(entry.key))
31
- .map(entry => args.sink.delete(entry.key)));
32
- });
14
+ export async function mirrorToStore(args) {
15
+ await Promise.all([...args.desired].map(([key, body]) => putLastWriterWins(args.sink, key, body)));
16
+ const listed = await Promise.all([args.prefix, ...(args.legacyPrefixes ?? [])].map(prefix => args.sink.list(prefix)));
17
+ await Promise.all(listed
18
+ .flat()
19
+ .filter(entry => !args.desired.has(entry.key))
20
+ .map(entry => args.sink.delete(entry.key)));
33
21
  }
34
22
  /**
35
23
  * Same refusals as local materialization's `resolveInside`: a rel that
@@ -53,16 +41,14 @@ export function storeRelPath(relPath, what) {
53
41
  * Last writer wins. A raced conditional put clears the sink's cached etag,
54
42
  * so one retry re-learns the current version and lands.
55
43
  */
56
- function putLastWriterWins(sink, key, body) {
57
- return __awaiter(this, void 0, void 0, function* () {
58
- try {
59
- yield sink.put(key, body);
60
- }
61
- catch (error) {
62
- if (!(error instanceof FileConflictError)) {
63
- throw error;
64
- }
65
- yield sink.put(key, body);
44
+ async function putLastWriterWins(sink, key, body) {
45
+ try {
46
+ await sink.put(key, body);
47
+ }
48
+ catch (error) {
49
+ if (!(error instanceof FileConflictError)) {
50
+ throw error;
66
51
  }
67
- });
52
+ await sink.put(key, body);
53
+ }
68
54
  }