@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
@@ -5,15 +5,6 @@
5
5
  * session, collect the NDJSON stream until the turn parks, and return a
6
6
  * compact {@link Trajectory} plus the continuation token for follow-ups.
7
7
  */
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
8
  import { setTimeout as sleep } from "node:timers/promises";
18
9
  import { mergeRequestHeaders } from "./request-headers.js";
19
10
  import { fetchSessionEvents } from "./sessions-client.js";
@@ -30,10 +21,10 @@ export class RunSessionTimeoutError extends Error {
30
21
  }
31
22
  }
32
23
  const TERMINAL_TYPES = new Set(["session.waiting", "session.completed", "session.failed"]);
33
- const STALL_MS = 5000;
24
+ const STALL_MS = 5_000;
34
25
  /** Pause before reopening a stream the server closed; doubles while closes bring nothing. */
35
26
  const REOPEN_DELAY_MS = 500;
36
- const MAX_REOPEN_DELAY_MS = 8000;
27
+ const MAX_REOPEN_DELAY_MS = 8_000;
37
28
  /** Refused reopens in a row, with no progress, before the turn fails. */
38
29
  const MAX_REFUSALS = 5;
39
30
  /** Reopen statuses worth retrying; any other failed open fails the turn. */
@@ -44,106 +35,113 @@ const MAX_READ_STALLS = 4;
44
35
  * Run one or more messages against a live agent-serve base URL
45
36
  * (e.g. `http://127.0.0.1:3000/weather-agent`).
46
37
  */
47
- export function runSession(options) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- var _a;
50
- if (options.messages.length === 0) {
51
- throw new Error("runSession requires at least one message");
52
- }
53
- const baseUrl = options.baseUrl.replace(/\/$/, "");
54
- let sessionId = options.sessionId;
55
- let continuationToken = options.continuationToken;
56
- const allEvents = [];
57
- let nextEventIndex = (_a = options.startIndex) !== null && _a !== void 0 ? _a : 0;
58
- const auth = {
59
- bearerToken: options.bearerToken,
60
- headers: options.headers,
61
- };
62
- for (const message of options.messages) {
63
- const turn = yield runOneTurn({
64
- baseUrl,
65
- message,
66
- sessionId,
67
- continuationToken,
68
- startIndex: sessionId === undefined ? 0 : nextEventIndex,
69
- auth,
70
- timeoutMs: options.timeoutMs,
71
- stallMs: options.stallMs,
72
- signal: options.signal,
73
- onEvent: options.onEvent,
74
- purpose: sessionId === undefined ? options.purpose : undefined,
75
- workspaceDir: sessionId === undefined ? options.workspaceDir : undefined,
76
- workspaceFiles: sessionId === undefined ? options.workspaceFiles : undefined,
77
- cloud: sessionId === undefined ? options.cloud : undefined,
78
- });
79
- sessionId = turn.sessionId;
80
- continuationToken = turn.continuationToken;
81
- allEvents.push(...turn.events);
82
- if (turn.events.length > 0) {
83
- const last = turn.events[turn.events.length - 1];
84
- nextEventIndex = last.index + 1;
85
- }
86
- if (!turn.ok) {
87
- break;
88
- }
38
+ export async function runSession(options) {
39
+ if (options.messages.length === 0) {
40
+ throw new Error("runSession requires at least one message");
41
+ }
42
+ const baseUrl = options.baseUrl.replace(/\/$/, "");
43
+ let sessionId = options.sessionId;
44
+ let continuationToken = options.continuationToken;
45
+ const allEvents = [];
46
+ let nextEventIndex = options.startIndex ?? 0;
47
+ const auth = {
48
+ bearerToken: options.bearerToken,
49
+ headers: options.headers,
50
+ };
51
+ for (const message of options.messages) {
52
+ const turn = await runOneTurn({
53
+ baseUrl,
54
+ message,
55
+ sessionId,
56
+ continuationToken,
57
+ startIndex: sessionId === undefined ? 0 : nextEventIndex,
58
+ auth,
59
+ timeoutMs: options.timeoutMs,
60
+ stallMs: options.stallMs,
61
+ signal: options.signal,
62
+ onEvent: options.onEvent,
63
+ purpose: sessionId === undefined ? options.purpose : undefined,
64
+ workspaceDir: sessionId === undefined ? options.workspaceDir : undefined,
65
+ workspaceFiles: sessionId === undefined ? options.workspaceFiles : undefined,
66
+ cloud: sessionId === undefined ? options.cloud : undefined,
67
+ });
68
+ sessionId = turn.sessionId;
69
+ continuationToken = turn.continuationToken;
70
+ allEvents.push(...turn.events);
71
+ if (turn.events.length > 0) {
72
+ const last = turn.events[turn.events.length - 1];
73
+ nextEventIndex = last.index + 1;
89
74
  }
90
- if (sessionId === undefined) {
91
- throw new Error("server did not return a session id");
75
+ if (!turn.ok) {
76
+ break;
92
77
  }
93
- const trajectory = buildTrajectory(allEvents);
94
- return Object.assign(Object.assign({ sessionId }, (continuationToken === undefined ? {} : { continuationToken })), { baseUrl, events: allEvents, trajectory, ok: trajectory.ok, nextEventIndex: allEvents.length === 0 ? undefined : nextEventIndex });
95
- });
78
+ }
79
+ if (sessionId === undefined) {
80
+ throw new Error("server did not return a session id");
81
+ }
82
+ const trajectory = buildTrajectory(allEvents);
83
+ return {
84
+ sessionId,
85
+ ...(continuationToken === undefined ? {} : { continuationToken }),
86
+ baseUrl,
87
+ events: allEvents,
88
+ trajectory,
89
+ ok: trajectory.ok,
90
+ nextEventIndex: allEvents.length === 0 ? undefined : nextEventIndex,
91
+ };
96
92
  }
97
- function runOneTurn(args) {
98
- return __awaiter(this, void 0, void 0, function* () {
99
- var _a, _b, _c, _d, _e, _f;
100
- let sessionId = args.sessionId;
101
- let continuationToken = args.continuationToken;
102
- if (sessionId === undefined) {
103
- const body = { message: args.message };
104
- if (args.purpose !== undefined) {
105
- body.purpose = args.purpose;
106
- }
107
- if (args.workspaceDir !== undefined) {
108
- body.workspaceDir = args.workspaceDir;
109
- }
110
- if (args.workspaceFiles !== undefined) {
111
- body.workspaceFiles = args.workspaceFiles;
112
- }
113
- if (args.cloud !== undefined) {
114
- body.cloud = args.cloud;
115
- }
116
- const created = yield postJson(args.baseUrl, "/v1/session", body, args.auth);
117
- if (created.status >= 400 || created.body.ok === false) {
118
- throw new Error(`POST /v1/session failed: ${(_a = str(created.body.error)) !== null && _a !== void 0 ? _a : created.status} ${(_b = str(created.body.message)) !== null && _b !== void 0 ? _b : ""}`.trim());
119
- }
120
- sessionId = str(created.body.sessionId);
121
- continuationToken = str(created.body.continuationToken);
93
+ async function runOneTurn(args) {
94
+ let sessionId = args.sessionId;
95
+ let continuationToken = args.continuationToken;
96
+ if (sessionId === undefined) {
97
+ const body = { message: args.message };
98
+ if (args.purpose !== undefined) {
99
+ body.purpose = args.purpose;
122
100
  }
123
- else {
124
- const resp = yield postJson(args.baseUrl, `/v1/session/${sessionId}`, { message: args.message, continuationToken }, args.auth);
125
- if (resp.status >= 400 || resp.body.ok === false) {
126
- throw new Error(`follow-up failed: ${(_c = str(resp.body.error)) !== null && _c !== void 0 ? _c : resp.status}: ${(_d = str(resp.body.message)) !== null && _d !== void 0 ? _d : ""}`.trim());
127
- }
128
- continuationToken = (_e = str(resp.body.continuationToken)) !== null && _e !== void 0 ? _e : continuationToken;
101
+ if (args.workspaceDir !== undefined) {
102
+ body.workspaceDir = args.workspaceDir;
129
103
  }
130
- if (sessionId === undefined) {
131
- throw new Error("server did not return a session id");
104
+ if (args.workspaceFiles !== undefined) {
105
+ body.workspaceFiles = args.workspaceFiles;
132
106
  }
133
- const events = yield collectStream({
134
- baseUrl: args.baseUrl,
135
- sessionId,
136
- startIndex: args.startIndex,
137
- auth: args.auth,
138
- timeoutMs: args.timeoutMs,
139
- stallMs: (_f = args.stallMs) !== null && _f !== void 0 ? _f : STALL_MS,
140
- signal: args.signal,
141
- onEvent: args.onEvent,
142
- });
143
- const turnFailed = events.some(e => e.type === "turn.failed");
144
- const sessionFailed = events.some(e => e.type === "session.failed");
145
- return Object.assign(Object.assign({ sessionId }, (continuationToken === undefined ? {} : { continuationToken })), { events, ok: !turnFailed && !sessionFailed });
107
+ if (args.cloud !== undefined) {
108
+ body.cloud = args.cloud;
109
+ }
110
+ const created = await postJson(args.baseUrl, "/v1/session", body, args.auth);
111
+ if (created.status >= 400 || created.body.ok === false) {
112
+ throw new Error(`POST /v1/session failed: ${str(created.body.error) ?? created.status} ${str(created.body.message) ?? ""}`.trim());
113
+ }
114
+ sessionId = str(created.body.sessionId);
115
+ continuationToken = str(created.body.continuationToken);
116
+ }
117
+ else {
118
+ const resp = await postJson(args.baseUrl, `/v1/session/${sessionId}`, { message: args.message, continuationToken }, args.auth);
119
+ if (resp.status >= 400 || resp.body.ok === false) {
120
+ throw new Error(`follow-up failed: ${str(resp.body.error) ?? resp.status}: ${str(resp.body.message) ?? ""}`.trim());
121
+ }
122
+ continuationToken = str(resp.body.continuationToken) ?? continuationToken;
123
+ }
124
+ if (sessionId === undefined) {
125
+ throw new Error("server did not return a session id");
126
+ }
127
+ const events = await collectStream({
128
+ baseUrl: args.baseUrl,
129
+ sessionId,
130
+ startIndex: args.startIndex,
131
+ auth: args.auth,
132
+ timeoutMs: args.timeoutMs,
133
+ stallMs: args.stallMs ?? STALL_MS,
134
+ signal: args.signal,
135
+ onEvent: args.onEvent,
146
136
  });
137
+ const turnFailed = events.some(e => e.type === "turn.failed");
138
+ const sessionFailed = events.some(e => e.type === "session.failed");
139
+ return {
140
+ sessionId,
141
+ ...(continuationToken === undefined ? {} : { continuationToken }),
142
+ events,
143
+ ok: !turnFailed && !sessionFailed,
144
+ };
147
145
  }
148
146
  /** One turn's events in log order. Replays of events already seen are dropped. */
149
147
  class TurnEvents {
@@ -171,7 +169,6 @@ class TurnEvents {
171
169
  return this.asks.size > 0;
172
170
  }
173
171
  add(event) {
174
- var _a;
175
172
  if (this.done || event.index < this.next) {
176
173
  return;
177
174
  }
@@ -182,7 +179,7 @@ class TurnEvents {
182
179
  else if (event.type === "action.approval_resolved" || event.type === "action.auth_resolved") {
183
180
  this.asks.delete(event.data.callId);
184
181
  }
185
- (_a = this.onEvent) === null || _a === void 0 ? void 0 : _a.call(this, event);
182
+ this.onEvent?.(event);
186
183
  }
187
184
  }
188
185
  /**
@@ -196,56 +193,52 @@ class TurnEvents {
196
193
  * At the deadline the log is read once more with the full read budget, and a
197
194
  * finished or parked turn returns instead of timing out.
198
195
  */
199
- function collectStream(args) {
200
- return __awaiter(this, void 0, void 0, function* () {
201
- var _a, _b;
202
- var _c;
203
- const turn = new TurnEvents(args.startIndex, args.onEvent);
204
- const readLog = logReader(args, turn);
205
- const deadline = new AbortController();
206
- const timer = args.timeoutMs === undefined ? undefined : setTimeout(() => deadline.abort(), args.timeoutMs);
207
- const signal = args.signal === undefined ? deadline.signal : AbortSignal.any([args.signal, deadline.signal]);
208
- try {
209
- let retry = false;
210
- let closes = 0;
211
- let refusals = 0;
212
- for (;;) {
213
- const seen = turn.next;
214
- const end = yield followStream(args, turn, signal, retry);
215
- retry = true;
216
- if (end === "done" || (yield readLog(signal)) || (end === "quiet" && turn.parked)) {
217
- return turn.events;
218
- }
219
- const refused = typeof end === "object" ? end.refused : undefined;
220
- refusals = refused !== undefined && turn.next === seen ? refusals + 1 : 0;
221
- if (refusals === MAX_REFUSALS) {
222
- throw new Error(`stream refused ${MAX_REFUSALS} reopens in a row, last: ${refused} (session ${args.sessionId})`);
223
- }
224
- if (end !== "quiet") {
225
- closes = turn.next > seen ? 0 : closes + 1;
226
- yield sleep(Math.min(REOPEN_DELAY_MS * Math.pow(2, closes), MAX_REOPEN_DELAY_MS), undefined, {
227
- signal,
228
- });
229
- }
230
- }
231
- }
232
- catch (error) {
233
- if (!signal.aborted) {
234
- throw error;
235
- }
236
- if (!((_a = args.signal) === null || _a === void 0 ? void 0 : _a.aborted) &&
237
- ((yield readLog(args.signal, MAX_READ_STALLS * args.stallMs)) || turn.parked)) {
196
+ async function collectStream(args) {
197
+ const turn = new TurnEvents(args.startIndex, args.onEvent);
198
+ const readLog = logReader(args, turn);
199
+ const deadline = new AbortController();
200
+ const timer = args.timeoutMs === undefined ? undefined : setTimeout(() => deadline.abort(), args.timeoutMs);
201
+ const signal = args.signal === undefined ? deadline.signal : AbortSignal.any([args.signal, deadline.signal]);
202
+ try {
203
+ let retry = false;
204
+ let closes = 0;
205
+ let refusals = 0;
206
+ for (;;) {
207
+ const seen = turn.next;
208
+ const end = await followStream(args, turn, signal, retry);
209
+ retry = true;
210
+ if (end === "done" || (await readLog(signal)) || (end === "quiet" && turn.parked)) {
238
211
  return turn.events;
239
212
  }
240
- if ((_b = args.signal) === null || _b === void 0 ? void 0 : _b.aborted) {
241
- throw new Error("cancelled");
213
+ const refused = typeof end === "object" ? end.refused : undefined;
214
+ refusals = refused !== undefined && turn.next === seen ? refusals + 1 : 0;
215
+ if (refusals === MAX_REFUSALS) {
216
+ throw new Error(`stream refused ${MAX_REFUSALS} reopens in a row, last: ${refused} (session ${args.sessionId})`);
217
+ }
218
+ if (end !== "quiet") {
219
+ closes = turn.next > seen ? 0 : closes + 1;
220
+ await sleep(Math.min(REOPEN_DELAY_MS * 2 ** closes, MAX_REOPEN_DELAY_MS), undefined, {
221
+ signal,
222
+ });
242
223
  }
243
- throw new RunSessionTimeoutError(`turn timed out after ${(_c = args.timeoutMs) !== null && _c !== void 0 ? _c : "?"}ms (session ${args.sessionId})`, args.sessionId, turn.events);
244
224
  }
245
- finally {
246
- clearTimeout(timer);
225
+ }
226
+ catch (error) {
227
+ if (!signal.aborted) {
228
+ throw error;
247
229
  }
248
- });
230
+ if (!args.signal?.aborted &&
231
+ ((await readLog(args.signal, MAX_READ_STALLS * args.stallMs)) || turn.parked)) {
232
+ return turn.events;
233
+ }
234
+ if (args.signal?.aborted) {
235
+ throw new Error("cancelled");
236
+ }
237
+ throw new RunSessionTimeoutError(`turn timed out after ${args.timeoutMs ?? "?"}ms (session ${args.sessionId})`, args.sessionId, turn.events);
238
+ }
239
+ finally {
240
+ clearTimeout(timer);
241
+ }
249
242
  }
250
243
  /**
251
244
  * Follow one stream connection until the turn's terminal event (`done`), the
@@ -254,70 +247,68 @@ function collectStream(args) {
254
247
  * `retry` is `refused` on a network error, 429, 502, 503 or 504. Anything
255
248
  * that goes wrong recording events throws.
256
249
  */
257
- function followStream(args, turn, signal, retry) {
258
- return __awaiter(this, void 0, void 0, function* () {
259
- const quiet = new AbortController();
260
- const idle = setTimeout(() => quiet.abort(), args.stallMs);
250
+ async function followStream(args, turn, signal, retry) {
251
+ const quiet = new AbortController();
252
+ const idle = setTimeout(() => quiet.abort(), args.stallMs);
253
+ try {
254
+ let resp;
261
255
  try {
262
- let resp;
256
+ resp = await fetch(`${args.baseUrl}/v1/session/${args.sessionId}/stream?startIndex=${turn.next}`, {
257
+ headers: mergeRequestHeaders(args.auth),
258
+ signal: AbortSignal.any([signal, quiet.signal]),
259
+ });
260
+ }
261
+ catch (error) {
262
+ if (signal.aborted) {
263
+ throw error;
264
+ }
265
+ if (quiet.signal.aborted) {
266
+ return "quiet";
267
+ }
268
+ if (retry) {
269
+ return { refused: error instanceof Error ? error.message : String(error) };
270
+ }
271
+ throw error;
272
+ }
273
+ if (retry && TRANSIENT_STATUSES.has(resp.status)) {
274
+ return { refused: String(resp.status) };
275
+ }
276
+ if (!resp.ok || resp.body === null) {
277
+ throw new Error(`stream failed (${resp.status})`);
278
+ }
279
+ const reader = resp.body.getReader();
280
+ const decoder = new TextDecoder();
281
+ let buffer = "";
282
+ for (;;) {
283
+ let chunk;
263
284
  try {
264
- resp = yield fetch(`${args.baseUrl}/v1/session/${args.sessionId}/stream?startIndex=${turn.next}`, {
265
- headers: mergeRequestHeaders(args.auth),
266
- signal: AbortSignal.any([signal, quiet.signal]),
267
- });
285
+ chunk = await reader.read();
268
286
  }
269
287
  catch (error) {
270
288
  if (signal.aborted) {
271
289
  throw error;
272
290
  }
273
- if (quiet.signal.aborted) {
274
- return "quiet";
275
- }
276
- if (retry) {
277
- return { refused: error instanceof Error ? error.message : String(error) };
278
- }
279
- throw error;
291
+ return quiet.signal.aborted ? "quiet" : "closed";
280
292
  }
281
- if (retry && TRANSIENT_STATUSES.has(resp.status)) {
282
- return { refused: String(resp.status) };
293
+ if (chunk.done) {
294
+ return "closed";
283
295
  }
284
- if (!resp.ok || resp.body === null) {
285
- throw new Error(`stream failed (${resp.status})`);
296
+ idle.refresh();
297
+ buffer += decoder.decode(chunk.value, { stream: true });
298
+ const cut = buffer.lastIndexOf("\n") + 1;
299
+ for (const event of parseEventsNdjson(buffer.slice(0, cut))) {
300
+ turn.add(event);
286
301
  }
287
- const reader = resp.body.getReader();
288
- const decoder = new TextDecoder();
289
- let buffer = "";
290
- for (;;) {
291
- let chunk;
292
- try {
293
- chunk = yield reader.read();
294
- }
295
- catch (error) {
296
- if (signal.aborted) {
297
- throw error;
298
- }
299
- return quiet.signal.aborted ? "quiet" : "closed";
300
- }
301
- if (chunk.done) {
302
- return "closed";
303
- }
304
- idle.refresh();
305
- buffer += decoder.decode(chunk.value, { stream: true });
306
- const cut = buffer.lastIndexOf("\n") + 1;
307
- for (const event of parseEventsNdjson(buffer.slice(0, cut))) {
308
- turn.add(event);
309
- }
310
- buffer = buffer.slice(cut);
311
- if (turn.done) {
312
- return "done";
313
- }
302
+ buffer = buffer.slice(cut);
303
+ if (turn.done) {
304
+ return "done";
314
305
  }
315
306
  }
316
- finally {
317
- clearTimeout(idle);
318
- quiet.abort();
319
- }
320
- });
307
+ }
308
+ finally {
309
+ clearTimeout(idle);
310
+ quiet.abort();
311
+ }
321
312
  }
322
313
  /**
323
314
  * Reads the turn's events from the session's durable log; each read resolves
@@ -329,9 +320,9 @@ function followStream(args, turn, signal, retry) {
329
320
  */
330
321
  function logReader(args, turn) {
331
322
  let budgetMs = args.stallMs;
332
- return (signal_1, ...args_1) => __awaiter(this, [signal_1, ...args_1], void 0, function* (signal, ms = budgetMs) {
323
+ return async (signal, ms = budgetMs) => {
333
324
  const budget = AbortSignal.timeout(ms);
334
- const events = yield fetchSessionEvents({
325
+ const events = await fetchSessionEvents({
335
326
  baseUrl: args.baseUrl,
336
327
  sessionId: args.sessionId,
337
328
  auth: args.auth,
@@ -344,33 +335,34 @@ function logReader(args, turn) {
344
335
  turn.add(event);
345
336
  }
346
337
  return turn.done;
347
- });
338
+ };
348
339
  }
349
- function postJson(baseUrl, path, body, auth) {
350
- return __awaiter(this, void 0, void 0, function* () {
351
- const resp = yield fetch(`${baseUrl}${path}`, {
352
- method: "POST",
353
- headers: Object.assign({ "content-type": "application/json" }, mergeRequestHeaders(auth)),
354
- body: JSON.stringify(body),
355
- });
356
- const text = yield resp.text();
357
- let parsed = {};
358
- if (text) {
359
- try {
360
- parsed = JSON.parse(text);
361
- }
362
- catch (_a) {
363
- parsed = { message: text };
364
- }
340
+ async function postJson(baseUrl, path, body, auth) {
341
+ const resp = await fetch(`${baseUrl}${path}`, {
342
+ method: "POST",
343
+ headers: {
344
+ "content-type": "application/json",
345
+ ...mergeRequestHeaders(auth),
346
+ },
347
+ body: JSON.stringify(body),
348
+ });
349
+ const text = await resp.text();
350
+ let parsed = {};
351
+ if (text) {
352
+ try {
353
+ parsed = JSON.parse(text);
365
354
  }
366
- const anyrunReason = resp.headers.get("x-anyrun-failure-reason");
367
- if (anyrunReason !== null &&
368
- anyrunReason !== "" &&
369
- (parsed.message === undefined || parsed.message === "")) {
370
- parsed.message = anyrunReason;
355
+ catch {
356
+ parsed = { message: text };
371
357
  }
372
- return { status: resp.status, body: parsed };
373
- });
358
+ }
359
+ const anyrunReason = resp.headers.get("x-anyrun-failure-reason");
360
+ if (anyrunReason !== null &&
361
+ anyrunReason !== "" &&
362
+ (parsed.message === undefined || parsed.message === "")) {
363
+ parsed.message = anyrunReason;
364
+ }
365
+ return { status: resp.status, body: parsed };
374
366
  }
375
367
  function str(value) {
376
368
  return typeof value === "string" ? value : undefined;
@@ -4,57 +4,32 @@
4
4
  * remote client (`internal/grokbot/runner.ts`), which drives the hosted
5
5
  * Grok Bot (Sand) harness through the public `/v0/grokbot` session API.
6
6
  */
7
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
- return new (P || (P = Promise))(function (resolve, reject) {
10
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
- step((generator = generator.apply(thisArg, _arguments || [])).next());
14
- });
15
- };
16
7
  export class RuntimeDispatchingRunner {
17
8
  constructor(options) {
18
9
  this.options = options;
19
10
  }
20
- runTurn(request) {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- if (request.runtime === "grokbot") {
23
- return this.options.grokbot.runTurn(request);
24
- }
25
- return this.options.sdkRunner.runTurn(request);
26
- });
11
+ async runTurn(request) {
12
+ if (request.runtime === "grokbot") {
13
+ return this.options.grokbot.runTurn(request);
14
+ }
15
+ return this.options.sdkRunner.runTurn(request);
27
16
  }
28
- steer(request) {
29
- return __awaiter(this, void 0, void 0, function* () {
30
- var _a, _b;
31
- var _c;
32
- return (_c = (yield (_b = (_a = this.options.sdkRunner).steer) === null || _b === void 0 ? void 0 : _b.call(_a, request))) !== null && _c !== void 0 ? _c : "revert_to_followup";
33
- });
17
+ async steer(request) {
18
+ return (await this.options.sdkRunner.steer?.(request)) ?? "revert_to_followup";
34
19
  }
35
- prewarm(request) {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- var _a, _b;
38
- var _c;
39
- // Prewarming is a local-harness concern; the engine only calls it for
40
- // local-runtime agents.
41
- return ((_c = (_b = (_a = this.options.sdkRunner).prewarm) === null || _b === void 0 ? void 0 : _b.call(_a, request)) !== null && _c !== void 0 ? _c : {
42
- warmed: false,
43
- reason: "the local and cloud turn runner does not support prewarming",
44
- });
20
+ async prewarm(request) {
21
+ // Prewarming is a local-harness concern; the engine only calls it for
22
+ // local-runtime agents.
23
+ return (this.options.sdkRunner.prewarm?.(request) ?? {
24
+ warmed: false,
25
+ reason: "the local and cloud turn runner does not support prewarming",
45
26
  });
46
27
  }
47
- drainConversation(sessionId) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- var _a, _b;
50
- yield (_b = (_a = this.options.sdkRunner).drainConversation) === null || _b === void 0 ? void 0 : _b.call(_a, sessionId);
51
- });
28
+ async drainConversation(sessionId) {
29
+ await this.options.sdkRunner.drainConversation?.(sessionId);
52
30
  }
53
- dispose() {
54
- return __awaiter(this, void 0, void 0, function* () {
55
- var _a, _b, _c, _d;
56
- yield (_b = (_a = this.options.sdkRunner).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
57
- yield (_d = (_c = this.options.grokbot).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);
58
- });
31
+ async dispose() {
32
+ await this.options.sdkRunner.dispose?.();
33
+ await this.options.grokbot.dispose?.();
59
34
  }
60
35
  }