@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
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Hosted eval cases. The control plane runs each `defineEval` case as its own
3
+ * architecture v2 session: admission reserves the session's send for the
4
+ * case, execution runs the case body there with every `t.send` a turn on
5
+ * that session, and the verdict lands on the session log as
6
+ * `eval.case.result`, which the control plane reads back.
7
+ */
8
+ import type { AgentProjectEvalsInfo } from "../types.js";
9
+ import type { HostedSendStart } from "./hosted-delivery.js";
10
+ import type { SessionEngine } from "./session-engine.js";
11
+ type CaseEngine = Pick<SessionEngine, "listEvents" | "interrupt" | "recordEvalCaseResult">;
12
+ export declare function hostedEvalCatalog(projectRoot: string): Promise<AgentProjectEvalsInfo>;
13
+ /** One turn per captured send, or the whole case for an eval-case send. */
14
+ export declare function hostedSendStart(deps: {
15
+ engine: CaseEngine;
16
+ projectRoot: string;
17
+ logger: (line: string) => void;
18
+ caseDeadlineMs?: number;
19
+ }): HostedSendStart;
20
+ export {};
21
+ //# sourceMappingURL=hosted-eval-cases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-eval-cases.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-eval-cases.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,qBAAqB,EAKtB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,KAAK,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,WAAW,GAAG,sBAAsB,CAAC,CAAC;AAO3F,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAY3F;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,eAAe,CAelB"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Hosted eval cases. The control plane runs each `defineEval` case as its own
3
+ * architecture v2 session: admission reserves the session's send for the
4
+ * case, execution runs the case body there with every `t.send` a turn on
5
+ * that session, and the verdict lands on the session log as
6
+ * `eval.case.result`, which the control plane reads back.
7
+ */
8
+ import { setTimeout as sleep } from "node:timers/promises";
9
+ import { describeError } from "./describe-error.js";
10
+ import { discoverEvals, runEvalCase } from "./eval-runner.js";
11
+ import { evalCaseOf } from "./http-control-plane-session.js";
12
+ import { RunSessionTimeoutError } from "./run-client.js";
13
+ import { buildTrajectory } from "./trajectory.js";
14
+ /** Under the 26-minute limit the host puts on one delivery. */
15
+ const CASE_DEADLINE_MS = 20 * 60_000;
16
+ /** Per tool-call input or output kept on the result; the session log keeps all of it. */
17
+ const MAX_TOOL_IO_CHARS = 8 * 1024;
18
+ export async function hostedEvalCatalog(projectRoot) {
19
+ const { evals, config } = await discoverEvals(projectRoot);
20
+ return {
21
+ protocol: 1,
22
+ cases: evals.map(e => ({
23
+ id: e.id,
24
+ fileId: e.fileId,
25
+ description: e.definition.description,
26
+ tags: e.definition.tags,
27
+ })),
28
+ config: { maxConcurrency: config.maxConcurrency, timeoutMs: config.timeoutMs },
29
+ };
30
+ }
31
+ /** One turn per captured send, or the whole case for an eval-case send. */
32
+ export function hostedSendStart(deps) {
33
+ return async ({ args, message, options, sessionPublicId }) => {
34
+ const evalCase = evalCaseOf(options);
35
+ if (evalCase === undefined) {
36
+ return args.send(message, options);
37
+ }
38
+ const done = runHostedEvalCase({
39
+ ...deps,
40
+ args,
41
+ options,
42
+ sessionId: sessionPublicId,
43
+ evalCase,
44
+ });
45
+ return { id: sessionPublicId, waitForCompletion: () => done };
46
+ };
47
+ }
48
+ /**
49
+ * The delivery finishes once the verdict is recorded, whatever the verdict:
50
+ * a failed case must not look like a failed delivery, which would retry it.
51
+ */
52
+ async function runHostedEvalCase(input) {
53
+ const startedAt = Date.now();
54
+ const deadlineMs = input.caseDeadlineMs ?? CASE_DEADLINE_MS;
55
+ const deadline = new AbortController();
56
+ const cancel = new AbortController();
57
+ const result = await Promise.race([
58
+ runCase({ ...input, signal: cancel.signal }).catch(error => failedResult(input.evalCase, describeError(error), startedAt)),
59
+ sleep(deadlineMs, undefined, { signal: deadline.signal }).then(async () => {
60
+ // The losing case body keeps running; it must not start turns after this verdict.
61
+ cancel.abort();
62
+ await input.engine.interrupt(input.sessionId);
63
+ return failedResult(input.evalCase, `eval case exceeded ${deadlineMs / 60_000} minutes`, startedAt);
64
+ }),
65
+ ]).finally(() => deadline.abort());
66
+ input.logger(`[bdk] eval case ${input.evalCase.caseId} (${input.evalCase.runId}): ${result.verdict ?? "failed"}`);
67
+ await input.engine.recordEvalCaseResult(input.sessionId, resultEventData(input.evalCase, result));
68
+ return { status: "finished" };
69
+ }
70
+ async function runCase(input) {
71
+ const startedAt = Date.now();
72
+ const { evals, config } = await discoverEvals(input.projectRoot);
73
+ const discovered = evals.find(e => e.id === input.evalCase.caseId);
74
+ if (discovered === undefined) {
75
+ return failedResult(input.evalCase, `No eval case ${JSON.stringify(input.evalCase.caseId)} in this release`, startedAt);
76
+ }
77
+ return runEvalCase(discovered, config, sessionTransport(input.engine, input.args, input.options), input.signal);
78
+ }
79
+ /** `t.send` as a turn on the admitted session, read back from its event log. */
80
+ function sessionTransport(engine, args, base) {
81
+ return {
82
+ async send(turn) {
83
+ turn.signal?.throwIfAborted();
84
+ const session = await args.send(turn.message, {
85
+ ...base,
86
+ workspaceDir: turn.options.workspaceDir,
87
+ workspaceFiles: turn.options.workspaceFiles,
88
+ cloud: turn.options.cloud,
89
+ });
90
+ if (turn.signal?.aborted) {
91
+ await engine.interrupt(session.id);
92
+ turn.signal.throwIfAborted();
93
+ }
94
+ const timer = new AbortController();
95
+ const settled = await Promise.race([
96
+ session.waitForCompletion().then(() => true),
97
+ sleep(Math.min(turn.timeoutMs, CASE_DEADLINE_MS), false, { signal: timer.signal }),
98
+ ]).finally(() => timer.abort());
99
+ if (!settled) {
100
+ await engine.interrupt(session.id);
101
+ throw new RunSessionTimeoutError(`eval turn timed out after ${turn.timeoutMs}ms`, session.id, await engine.listEvents(session.id, turn.startIndex));
102
+ }
103
+ const events = await engine.listEvents(session.id, turn.startIndex);
104
+ for (const event of events) {
105
+ turn.onEvent?.(event);
106
+ }
107
+ const trajectory = buildTrajectory(events);
108
+ return {
109
+ sessionId: session.id,
110
+ events,
111
+ trajectory,
112
+ ok: trajectory.ok,
113
+ nextEventIndex: events.length === 0 ? undefined : events[events.length - 1].index + 1,
114
+ };
115
+ },
116
+ };
117
+ }
118
+ function failedResult(ref, error, startedAt) {
119
+ return {
120
+ id: ref.caseId,
121
+ path: "",
122
+ ok: false,
123
+ verdict: "failed",
124
+ assertions: [],
125
+ inputs: [],
126
+ error,
127
+ logs: [],
128
+ metrics: {},
129
+ durationMs: Date.now() - startedAt,
130
+ };
131
+ }
132
+ function boundedIo(value) {
133
+ if (value === undefined) {
134
+ return undefined;
135
+ }
136
+ const json = JSON.stringify(value) ?? "";
137
+ return json.length <= MAX_TOOL_IO_CHARS ? value : `${json.slice(0, MAX_TOOL_IO_CHARS)}…`;
138
+ }
139
+ function resultEventData(ref, result) {
140
+ return {
141
+ runId: ref.runId,
142
+ caseId: ref.caseId,
143
+ ok: result.ok,
144
+ verdict: result.verdict ?? (result.ok ? "passed" : "failed"),
145
+ skipReason: result.skipReason,
146
+ assertions: result.assertions,
147
+ durationMs: result.durationMs,
148
+ error: result.error,
149
+ logs: result.logs,
150
+ metrics: result.metrics,
151
+ metadata: result.metadata,
152
+ inputs: result.inputs,
153
+ finalText: result.finalText,
154
+ tools: result.tools,
155
+ toolCalls: result.toolCalls?.map(call => ({
156
+ toolName: call.toolName,
157
+ args: boundedIo(call.args),
158
+ output: boundedIo(call.output),
159
+ isError: call.isError,
160
+ })),
161
+ };
162
+ }
@@ -2,15 +2,6 @@
2
2
  * Local diagnostic record for one hosted execution. Flushed with durable
3
3
  * execution history and process output.
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 { createHash, randomBytes } from "node:crypto";
15
6
  import { mkdir, rename, unlink, writeFile } from "node:fs/promises";
16
7
  import { join } from "node:path";
@@ -69,9 +60,8 @@ export const HOSTED_ERROR_SNIPPET_MAX_CHARS = 700;
69
60
  * `Error.stack` with its message and first frames.
70
61
  */
71
62
  export function hostedErrorStackSnippet(error) {
72
- var _a;
73
63
  if (error instanceof Error) {
74
- const stack = (_a = error.stack) === null || _a === void 0 ? void 0 : _a.trim();
64
+ const stack = error.stack?.trim();
75
65
  if (stack !== undefined && stack.length > 0) {
76
66
  const lines = stack
77
67
  .split("\n")
@@ -132,7 +122,7 @@ export function parseHostedExecutionDiag(raw) {
132
122
  try {
133
123
  parsed = JSON.parse(raw);
134
124
  }
135
- catch (_a) {
125
+ catch {
136
126
  return undefined;
137
127
  }
138
128
  if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
@@ -185,27 +175,45 @@ export function parseHostedExecutionDiag(raw) {
185
175
  if (body.signalAborted !== undefined && typeof body.signalAborted !== "boolean") {
186
176
  return undefined;
187
177
  }
188
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ v: HOSTED_EXECUTION_DIAG_VERSION, executionId: body.executionId, writtenAt: body.writtenAt, sessionPublicId: body.sessionPublicId, sessionId: body.sessionId, turnStatus: body.turnStatus, durationMs: body.durationMs }, (message === undefined ? {} : { message })), (stack === undefined ? {} : { stack })), (body.signalAborted === true ? { signalAborted: true } : {})), (requestId === undefined ? {} : { requestId })), (abortReason === undefined ? {} : { abortReason })), (failureCode === undefined ? {} : { failureCode })), (errorCode === undefined ? {} : { errorCode })), (classification === undefined ? {} : { classification }));
178
+ return {
179
+ v: HOSTED_EXECUTION_DIAG_VERSION,
180
+ executionId: body.executionId,
181
+ writtenAt: body.writtenAt,
182
+ sessionPublicId: body.sessionPublicId,
183
+ sessionId: body.sessionId,
184
+ turnStatus: body.turnStatus,
185
+ durationMs: body.durationMs,
186
+ ...(message === undefined ? {} : { message }),
187
+ ...(stack === undefined ? {} : { stack }),
188
+ ...(body.signalAborted === true ? { signalAborted: true } : {}),
189
+ ...(requestId === undefined ? {} : { requestId }),
190
+ ...(abortReason === undefined ? {} : { abortReason }),
191
+ ...(failureCode === undefined ? {} : { failureCode }),
192
+ ...(errorCode === undefined ? {} : { errorCode }),
193
+ ...(classification === undefined ? {} : { classification }),
194
+ };
189
195
  }
190
196
  /**
191
197
  * Overwrite the per-execution diag file. Soft-fail: a write error must not
192
198
  * change the hosted-execution HTTP reply.
193
199
  */
194
- export function writeHostedExecutionDiag(stateRoot, diag) {
195
- return __awaiter(this, void 0, void 0, function* () {
196
- const path = hostedExecutionDiagPath(stateRoot);
197
- const tmp = `${path}.${randomBytes(8).toString("hex")}.tmp`;
198
- try {
199
- yield mkdir(stateRoot, { recursive: true });
200
- const serialized = JSON.stringify(diag);
201
- const body = serialized.length > HOSTED_EXECUTION_DIAG_MAX_BYTES
202
- ? JSON.stringify(Object.assign(Object.assign({}, diag), { stack: undefined, message: boundedOptionalString(diag.message, 256) }))
203
- : serialized;
204
- yield writeFile(tmp, body, "utf8");
205
- yield rename(tmp, path);
206
- }
207
- catch (_a) {
208
- yield unlink(tmp).catch(() => undefined);
209
- }
210
- });
200
+ export async function writeHostedExecutionDiag(stateRoot, diag) {
201
+ const path = hostedExecutionDiagPath(stateRoot);
202
+ const tmp = `${path}.${randomBytes(8).toString("hex")}.tmp`;
203
+ try {
204
+ await mkdir(stateRoot, { recursive: true });
205
+ const serialized = JSON.stringify(diag);
206
+ const body = serialized.length > HOSTED_EXECUTION_DIAG_MAX_BYTES
207
+ ? JSON.stringify({
208
+ ...diag,
209
+ stack: undefined,
210
+ message: boundedOptionalString(diag.message, 256),
211
+ })
212
+ : serialized;
213
+ await writeFile(tmp, body, "utf8");
214
+ await rename(tmp, path);
215
+ }
216
+ catch {
217
+ await unlink(tmp).catch(() => undefined);
218
+ }
211
219
  }
@@ -8,15 +8,6 @@
8
8
  * Between running and terminal, {@link refreshStartLogWhile} refreshes only
9
9
  * process output.
10
10
  */
11
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
- return new (P || (P = Promise))(function (resolve, reject) {
14
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
- step((generator = generator.apply(thisArg, _arguments || [])).next());
18
- });
19
- };
20
11
  import { hostedErrorStackSnippet, writeHostedExecutionDiag, } from "./hosted-execution-diag.js";
21
12
  import { serializeSessionRunError, snapshotSessionRunLogs, } from "./session-run-log.js";
22
13
  const MAX_ERROR_MESSAGE_LENGTH = 1024;
@@ -29,79 +20,97 @@ function boundedMessage(text) {
29
20
  * Write local diagnostics and durable output together. Soft-fail per sink so
30
21
  * a storage outage does not change the hosted response.
31
22
  */
32
- export function flushHostedExecutionRecord(sinks, fields) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- var _a;
35
- var _b;
36
- const writtenAt = new Date().toISOString();
37
- const message = fields.message === undefined ? undefined : boundedMessage(fields.message);
38
- const stack = fields.error === undefined ? undefined : hostedErrorStackSnippet(fields.error);
39
- if (sinks.stateRoot !== undefined) {
40
- yield writeHostedExecutionDiag(sinks.stateRoot, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ v: 1, executionId: fields.executionId, writtenAt, sessionPublicId: fields.sessionPublicId, sessionId: fields.sessionId, turnStatus: fields.turnStatus, durationMs: fields.durationMs }, (message === undefined ? {} : { message })), (stack === undefined || stack.length === 0 ? {} : { stack })), { signalAborted: fields.abortReason === "signal_abort" ? true : undefined }), (fields.abortReason === undefined ? {} : { abortReason: fields.abortReason })), { failureCode: fields.failureCode }), (fields.errorCode === undefined ? {} : { errorCode: fields.errorCode })), { classification: fields.classification }));
23
+ export async function flushHostedExecutionRecord(sinks, fields) {
24
+ const writtenAt = new Date().toISOString();
25
+ const message = fields.message === undefined ? undefined : boundedMessage(fields.message);
26
+ const stack = fields.error === undefined ? undefined : hostedErrorStackSnippet(fields.error);
27
+ if (sinks.stateRoot !== undefined) {
28
+ await writeHostedExecutionDiag(sinks.stateRoot, {
29
+ v: 1,
30
+ executionId: fields.executionId,
31
+ writtenAt,
32
+ sessionPublicId: fields.sessionPublicId,
33
+ sessionId: fields.sessionId,
34
+ turnStatus: fields.turnStatus,
35
+ durationMs: fields.durationMs,
36
+ ...(message === undefined ? {} : { message }),
37
+ ...(stack === undefined || stack.length === 0 ? {} : { stack }),
38
+ signalAborted: fields.abortReason === "signal_abort" ? true : undefined,
39
+ ...(fields.abortReason === undefined ? {} : { abortReason: fields.abortReason }),
40
+ failureCode: fields.failureCode,
41
+ ...(fields.errorCode === undefined ? {} : { errorCode: fields.errorCode }),
42
+ classification: fields.classification,
43
+ });
44
+ }
45
+ if (sinks.persistSessionRun !== undefined) {
46
+ const error = fields.error === undefined ? undefined : serializeSessionRunError(fields.error);
47
+ try {
48
+ await sinks.persistSessionRun({
49
+ executionId: fields.executionId,
50
+ writtenAt,
51
+ sessionPublicId: fields.sessionPublicId,
52
+ sessionId: fields.sessionId,
53
+ turnStatus: fields.turnStatus,
54
+ durationMs: fields.durationMs,
55
+ ...(fields.abortReason === undefined ? {} : { abortReason: fields.abortReason }),
56
+ ...(message === undefined ? {} : { message }),
57
+ ...(error === undefined ? {} : { error }),
58
+ logs: snapshotSessionRunLogs(sinks.snapshotLogs?.() ?? []),
59
+ });
60
+ }
61
+ catch {
62
+ // Soft-fail: a store outage must not change the HTTP reply.
41
63
  }
42
- if (sinks.persistSessionRun !== undefined) {
43
- const error = fields.error === undefined ? undefined : serializeSessionRunError(fields.error);
44
- try {
45
- yield sinks.persistSessionRun(Object.assign(Object.assign(Object.assign(Object.assign({ executionId: fields.executionId, writtenAt, sessionPublicId: fields.sessionPublicId, sessionId: fields.sessionId, turnStatus: fields.turnStatus, durationMs: fields.durationMs }, (fields.abortReason === undefined ? {} : { abortReason: fields.abortReason })), (message === undefined ? {} : { message })), (error === undefined ? {} : { error })), { logs: snapshotSessionRunLogs((_b = (_a = sinks.snapshotLogs) === null || _a === void 0 ? void 0 : _a.call(sinks)) !== null && _b !== void 0 ? _b : []) }));
46
- }
47
- catch (_c) {
48
- // Soft-fail: a store outage must not change the HTTP reply.
49
- }
64
+ }
65
+ if (sinks.flushStartLog !== undefined) {
66
+ try {
67
+ await sinks.flushStartLog(fields.sessionPublicId);
50
68
  }
51
- if (sinks.flushStartLog !== undefined) {
52
- try {
53
- yield sinks.flushStartLog(fields.sessionPublicId);
54
- }
55
- catch (_d) {
56
- // Soft-fail: same posture as the session-run persist.
57
- }
69
+ catch {
70
+ // Soft-fail: same posture as the session-run persist.
58
71
  }
59
- });
72
+ }
60
73
  }
61
74
  /**
62
75
  * Each refresh is a store write on the deployment's shared write budget, so
63
76
  * keep it coarse. An unchanged tee costs nothing (the store skips the put).
64
77
  */
65
- export const HOSTED_START_LOG_REFRESH_INTERVAL_MS = 30000;
78
+ export const HOSTED_START_LOG_REFRESH_INTERVAL_MS = 30_000;
66
79
  /**
67
80
  * Refresh the tee while `run` (the turn) settles: v2 has no engine to tail,
68
81
  * so this snapshot is the only view of a running turn. A tick is skipped
69
82
  * while a refresh is still in flight, and the last one settles before this
70
83
  * returns so it cannot land after the terminal flush.
71
84
  */
72
- export function refreshStartLogWhile(sinks, startLogId, run) {
73
- return __awaiter(this, void 0, void 0, function* () {
74
- const flush = sinks.flushStartLog;
75
- if (flush === undefined) {
76
- return yield run();
77
- }
78
- let refresh;
79
- const timer = setInterval(() => {
80
- // Soft-fail like the other flushes. A rejection left unhandled here would
81
- // trip the process-death flush.
82
- refresh !== null && refresh !== void 0 ? refresh : (refresh = flush(startLogId)
83
- .catch(() => undefined)
84
- .finally(() => {
85
- refresh = undefined;
86
- }));
87
- }, HOSTED_START_LOG_REFRESH_INTERVAL_MS);
88
- try {
89
- return yield run();
90
- }
91
- finally {
92
- clearInterval(timer);
93
- yield refresh;
94
- }
95
- });
85
+ export async function refreshStartLogWhile(sinks, startLogId, run) {
86
+ const flush = sinks.flushStartLog;
87
+ if (flush === undefined) {
88
+ return await run();
89
+ }
90
+ let refresh;
91
+ const timer = setInterval(() => {
92
+ // Soft-fail like the other flushes. A rejection left unhandled here would
93
+ // trip the process-death flush.
94
+ refresh ??= flush(startLogId)
95
+ .catch(() => undefined)
96
+ .finally(() => {
97
+ refresh = undefined;
98
+ });
99
+ }, HOSTED_START_LOG_REFRESH_INTERVAL_MS);
100
+ try {
101
+ return await run();
102
+ }
103
+ finally {
104
+ clearInterval(timer);
105
+ await refresh;
106
+ }
96
107
  }
97
108
  /**
98
109
  * Durable-only crash flush. Leaves `hosted-execution.json` at `running`.
99
110
  */
100
- export function flushHostedExecutionProcessDeath(args) {
101
- return __awaiter(this, void 0, void 0, function* () {
102
- yield args.flushProcessDeath(args.reason, args.error);
103
- if (args.startLogId !== undefined && args.flushStartLog !== undefined) {
104
- yield args.flushStartLog(args.startLogId);
105
- }
106
- });
111
+ export async function flushHostedExecutionProcessDeath(args) {
112
+ await args.flushProcessDeath(args.reason, args.error);
113
+ if (args.startLogId !== undefined && args.flushStartLog !== undefined) {
114
+ await args.flushStartLog(args.startLogId);
115
+ }
107
116
  }
@@ -51,7 +51,7 @@ export function resetHostedExecutionLatencyForTests() {
51
51
  nowOverride = undefined;
52
52
  }
53
53
  function resolveMeter() {
54
- return meterOverride !== null && meterOverride !== void 0 ? meterOverride : metrics.getMeter(INSTRUMENTATION);
54
+ return meterOverride ?? metrics.getMeter(INSTRUMENTATION);
55
55
  }
56
56
  function durationInstrument() {
57
57
  if (durationHistogram === undefined) {
@@ -110,17 +110,19 @@ export function isDuringHostedExecutionLatency() {
110
110
  * progress updates and final fallback posts are ignored.
111
111
  */
112
112
  export function markHostedFirstVisibleReply(args) {
113
- var _a;
114
113
  const store = latencyAls.getStore();
115
114
  if (store === undefined || store.firstVisibleAt !== undefined) {
116
115
  return false;
117
116
  }
118
117
  store.firstVisibleAt = hostedExecutionNow();
119
118
  store.firstVisibleOutcome = args.outcome;
120
- store.deliverySurface = (_a = args.deliverySurface) !== null && _a !== void 0 ? _a : "slack";
119
+ store.deliverySurface = args.deliverySurface ?? "slack";
121
120
  if (!store.visibleCounterEmitted) {
122
121
  store.visibleCounterEmitted = true;
123
- visibleInstrument().add(1, Object.assign(Object.assign({}, baseAttrs(store)), { outcome: args.outcome }));
122
+ visibleInstrument().add(1, {
123
+ ...baseAttrs(store),
124
+ outcome: args.outcome,
125
+ });
124
126
  }
125
127
  return true;
126
128
  }
@@ -134,7 +136,7 @@ export function noteHostedVisibleReplyError(args) {
134
136
  return;
135
137
  }
136
138
  store.errorEmitted = true;
137
- if ((args === null || args === void 0 ? void 0 : args.deliverySurface) !== undefined) {
139
+ if (args?.deliverySurface !== undefined) {
138
140
  store.deliverySurface = args.deliverySurface;
139
141
  }
140
142
  else if (store.deliverySurface === "none") {
@@ -142,7 +144,10 @@ export function noteHostedVisibleReplyError(args) {
142
144
  }
143
145
  if (!store.visibleCounterEmitted) {
144
146
  store.visibleCounterEmitted = true;
145
- visibleInstrument().add(1, Object.assign(Object.assign({}, baseAttrs(store)), { outcome: "error" }));
147
+ visibleInstrument().add(1, {
148
+ ...baseAttrs(store),
149
+ outcome: "error",
150
+ });
146
151
  }
147
152
  }
148
153
  function resolveOutcome(store) {
@@ -171,7 +176,10 @@ export function finalizeHostedExecutionLatency(marks) {
171
176
  const outcome = resolveOutcome(store);
172
177
  if (!store.visibleCounterEmitted) {
173
178
  store.visibleCounterEmitted = true;
174
- visibleInstrument().add(1, Object.assign(Object.assign({}, baseAttrs(store)), { outcome: "none" }));
179
+ visibleInstrument().add(1, {
180
+ ...baseAttrs(store),
181
+ outcome: "none",
182
+ });
175
183
  }
176
184
  const phases = {
177
185
  durability_drain: Math.max(0, marks.drainAt - marks.completionAt),
@@ -189,7 +197,7 @@ export function finalizeHostedExecutionLatency(marks) {
189
197
  };
190
198
  const histogram = durationInstrument();
191
199
  for (const [phase, value] of Object.entries(phases)) {
192
- histogram.record(value, Object.assign(Object.assign({}, attrs), { phase }));
200
+ histogram.record(value, { ...attrs, phase });
193
201
  }
194
202
  return {
195
203
  channelKind: store.channelKind,
@@ -33,8 +33,8 @@ function managedAutomationTable() {
33
33
  return table;
34
34
  }
35
35
  /** Long enough to outlive a slow review run kicked off by the delivery. */
36
- const MANAGED_AUTOMATION_TTL_MS = 60 * 60000;
37
- const MANAGED_AUTOMATION_MAX_ENTRIES = 10000;
36
+ const MANAGED_AUTOMATION_TTL_MS = 60 * 60_000;
37
+ const MANAGED_AUTOMATION_MAX_ENTRIES = 10_000;
38
38
  export function recordHostedManagedAutomation(delivery) {
39
39
  if (delivery.managedAutomation === undefined) {
40
40
  console.info(`[bdk] hosted managedAutomation not recorded deliveryId=${delivery.deliveryId}: admission envelope carried no managedAutomation slice (non-managed delivery, or the control plane resolved no MCP servers and no Slack channels)`);
@@ -78,15 +78,14 @@ export function isReservedSecretName(name) {
78
78
  * secret names, each prefixed with its field (`egressDomains: …`).
79
79
  */
80
80
  export function hostingEntryErrors(declared) {
81
- var _a, _b;
82
81
  const errors = [];
83
- for (const domain of (_a = declared.egressDomains) !== null && _a !== void 0 ? _a : []) {
82
+ for (const domain of declared.egressDomains ?? []) {
84
83
  const domainError = validateEgressDomain(domain);
85
84
  if (domainError !== undefined) {
86
85
  errors.push(`egressDomains: ${domainError}`);
87
86
  }
88
87
  }
89
- for (const name of (_b = declared.secretNames) !== null && _b !== void 0 ? _b : []) {
88
+ for (const name of declared.secretNames ?? []) {
90
89
  const nameError = validateSecretName(name);
91
90
  if (nameError !== undefined) {
92
91
  errors.push(`secretNames: ${nameError}`);
@@ -11,7 +11,10 @@ import { attachHttpControlPlaneAdmission } from "./http-control-plane-session.js
11
11
  */
12
12
  export function httpChannel(config = {}) {
13
13
  const definition = config.continuation !== undefined
14
- ? brandDefinition("http-channel", Object.assign(Object.assign({}, config), { continuation: normalizeIdentity(config.continuation, "http") }))
14
+ ? brandDefinition("http-channel", {
15
+ ...config,
16
+ continuation: normalizeIdentity(config.continuation, "http"),
17
+ })
15
18
  : brandDefinition("http-channel", config);
16
19
  attachHttpControlPlaneAdmission(definition);
17
20
  return definition;