@cursor/bdk 0.2.9 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/dist/artifacts.js +3 -5
  2. package/dist/bin/agent-serve.js +803 -812
  3. package/dist/channels/bitbucket/api.js +305 -321
  4. package/dist/channels/bitbucket/binding.js +97 -61
  5. package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
  6. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
  7. package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
  8. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
  9. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  10. package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
  11. package/dist/channels/bitbucket/checks.js +9 -21
  12. package/dist/channels/bitbucket/cursor-account.js +1 -1
  13. package/dist/channels/bitbucket/defaults.js +14 -4
  14. package/dist/channels/bitbucket/events.js +1 -2
  15. package/dist/channels/bitbucket/index.d.ts +6 -2
  16. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  17. package/dist/channels/bitbucket/index.js +6 -2
  18. package/dist/channels/bitbucket/replay.js +80 -56
  19. package/dist/channels/bitbucket/state.js +16 -7
  20. package/dist/channels/bitbucket/types.d.ts +11 -2
  21. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  22. package/dist/channels/checks.js +18 -28
  23. package/dist/channels/deployments/deployments-channel.js +26 -34
  24. package/dist/channels/github/api.js +216 -210
  25. package/dist/channels/github/auth.d.ts +5 -1
  26. package/dist/channels/github/auth.d.ts.map +1 -1
  27. package/dist/channels/github/auth.js +157 -174
  28. package/dist/channels/github/binding.js +48 -39
  29. package/dist/channels/github/checks.js +9 -14
  30. package/dist/channels/github/cursor-account.js +6 -11
  31. package/dist/channels/github/defaults.js +105 -130
  32. package/dist/channels/github/forward.js +13 -17
  33. package/dist/channels/github/github-channel.d.ts +43 -2
  34. package/dist/channels/github/github-channel.d.ts.map +1 -1
  35. package/dist/channels/github/github-channel.js +1228 -958
  36. package/dist/channels/github/progress.js +145 -146
  37. package/dist/channels/github/replay.js +30 -39
  38. package/dist/channels/github/state.js +40 -16
  39. package/dist/channels/github/types.d.ts +30 -6
  40. package/dist/channels/github/types.d.ts.map +1 -1
  41. package/dist/channels/gitlab/api.js +100 -114
  42. package/dist/channels/gitlab/binding.js +52 -33
  43. package/dist/channels/gitlab/checks.js +28 -29
  44. package/dist/channels/gitlab/cursor-account.js +1 -1
  45. package/dist/channels/gitlab/defaults.js +9 -3
  46. package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
  47. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
  48. package/dist/channels/gitlab/gitlab-channel.js +95 -42
  49. package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
  50. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
  51. package/dist/channels/gitlab/gitlab-webhook.js +282 -249
  52. package/dist/channels/gitlab/index.d.ts +6 -2
  53. package/dist/channels/gitlab/index.d.ts.map +1 -1
  54. package/dist/channels/gitlab/index.js +6 -2
  55. package/dist/channels/gitlab/replay.js +50 -27
  56. package/dist/channels/gitlab/state.js +14 -6
  57. package/dist/channels/gitlab/types.d.ts +13 -2
  58. package/dist/channels/gitlab/types.d.ts.map +1 -1
  59. package/dist/channels/origin/api.js +100 -116
  60. package/dist/channels/origin/binding.js +15 -16
  61. package/dist/channels/origin/checks.js +30 -28
  62. package/dist/channels/origin/defaults.js +50 -65
  63. package/dist/channels/origin/origin-channel.js +266 -272
  64. package/dist/channels/origin/origin-webhook.js +70 -88
  65. package/dist/channels/origin/reactions.js +9 -21
  66. package/dist/channels/origin/state.js +13 -5
  67. package/dist/channels/slack/agentic-delivery.js +426 -478
  68. package/dist/channels/slack/agentic-posted.js +9 -10
  69. package/dist/channels/slack/agentic-signals.js +2 -3
  70. package/dist/channels/slack/api.js +417 -427
  71. package/dist/channels/slack/approvals.js +1 -1
  72. package/dist/channels/slack/assistant.js +37 -47
  73. package/dist/channels/slack/attachments.js +188 -206
  74. package/dist/channels/slack/auth.js +8 -6
  75. package/dist/channels/slack/bot-mentions.js +31 -45
  76. package/dist/channels/slack/channel-watch.js +42 -48
  77. package/dist/channels/slack/cli-project.js +112 -137
  78. package/dist/channels/slack/code-fences.js +3 -5
  79. package/dist/channels/slack/constants.js +2 -2
  80. package/dist/channels/slack/credentials.js +23 -38
  81. package/dist/channels/slack/defaults.js +292 -331
  82. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  83. package/dist/channels/slack/dispatch.js +533 -460
  84. package/dist/channels/slack/doctor.js +200 -214
  85. package/dist/channels/slack/eval-directive.js +79 -96
  86. package/dist/channels/slack/event-id-dedupe.js +1 -1
  87. package/dist/channels/slack/external-policy.js +26 -39
  88. package/dist/channels/slack/footer.js +28 -41
  89. package/dist/channels/slack/inbound.d.ts +1 -0
  90. package/dist/channels/slack/inbound.d.ts.map +1 -1
  91. package/dist/channels/slack/inbound.js +50 -31
  92. package/dist/channels/slack/init.d.ts +1 -5
  93. package/dist/channels/slack/init.d.ts.map +1 -1
  94. package/dist/channels/slack/init.js +42 -59
  95. package/dist/channels/slack/interactive.d.ts +9 -3
  96. package/dist/channels/slack/interactive.d.ts.map +1 -1
  97. package/dist/channels/slack/interactive.js +160 -162
  98. package/dist/channels/slack/links.js +1 -2
  99. package/dist/channels/slack/live-delivery.js +172 -190
  100. package/dist/channels/slack/manifest.d.ts.map +1 -1
  101. package/dist/channels/slack/manifest.js +44 -23
  102. package/dist/channels/slack/message-body.js +2 -2
  103. package/dist/channels/slack/nudge-carrier.js +30 -42
  104. package/dist/channels/slack/nudge-store.js +164 -191
  105. package/dist/channels/slack/paint-start.js +66 -81
  106. package/dist/channels/slack/placeholder.js +123 -152
  107. package/dist/channels/slack/pr-ref.js +1 -1
  108. package/dist/channels/slack/progress-delivery.js +65 -78
  109. package/dist/channels/slack/reasoning-card.js +36 -49
  110. package/dist/channels/slack/recording-sink.js +12 -24
  111. package/dist/channels/slack/reply-options.js +7 -12
  112. package/dist/channels/slack/self-identity.js +27 -35
  113. package/dist/channels/slack/sender-name.d.ts +12 -3
  114. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  115. package/dist/channels/slack/sender-name.js +57 -61
  116. package/dist/channels/slack/setup.js +2 -4
  117. package/dist/channels/slack/slack-channel.d.ts +6 -4
  118. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  119. package/dist/channels/slack/slack-channel.js +441 -308
  120. package/dist/channels/slack/socket-mode.js +38 -52
  121. package/dist/channels/slack/thread-context.js +143 -160
  122. package/dist/channels/slack/tool-approval-events.js +149 -166
  123. package/dist/channels/slack/tool-cards.js +6 -11
  124. package/dist/channels/slack/tool-chip.js +1 -2
  125. package/dist/channels/slack/types.d.ts +15 -17
  126. package/dist/channels/slack/types.d.ts.map +1 -1
  127. package/dist/channels/slack/upload.js +84 -97
  128. package/dist/channels/slack/user-info.js +27 -41
  129. package/dist/channels.js +9 -20
  130. package/dist/dashboard-session-url.js +3 -4
  131. package/dist/docs/404.html +2 -2
  132. package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
  133. package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
  134. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
  135. package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
  136. package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
  137. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
  138. package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
  139. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
  140. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
  141. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
  142. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
  143. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
  144. package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
  145. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
  146. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
  147. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
  148. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
  149. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
  150. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
  151. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
  152. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
  153. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
  154. package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
  155. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
  156. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
  157. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
  158. package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
  159. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
  160. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
  161. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
  162. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
  163. package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
  164. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
  165. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
  166. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
  167. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
  168. package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
  169. package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
  170. package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
  171. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
  172. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
  173. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
  174. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
  175. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
  176. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
  177. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
  178. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
  179. package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
  180. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
  181. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
  182. package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
  183. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
  184. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
  185. package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
  186. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
  187. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
  188. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
  189. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
  190. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
  191. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
  192. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
  193. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
  194. package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
  195. package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
  196. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  197. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  198. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  199. package/dist/docs/building-with-agents.html +37 -37
  200. package/dist/docs/building-with-agents.md +2 -0
  201. package/dist/docs/deployment.html +38 -38
  202. package/dist/docs/deployment.md +7 -0
  203. package/dist/docs/evals.html +36 -36
  204. package/dist/docs/guides/agent-to-agent.html +35 -35
  205. package/dist/docs/guides/bitbucket.html +38 -38
  206. package/dist/docs/guides/bitbucket.md +9 -1
  207. package/dist/docs/guides/cloud-agents.html +35 -35
  208. package/dist/docs/guides/convert-automation.html +35 -35
  209. package/dist/docs/guides/github.html +39 -39
  210. package/dist/docs/guides/github.md +20 -4
  211. package/dist/docs/guides/gitlab.html +38 -38
  212. package/dist/docs/guides/gitlab.md +9 -1
  213. package/dist/docs/guides/grokbot-agents.html +35 -35
  214. package/dist/docs/guides/hooks.html +35 -35
  215. package/dist/docs/guides/improve.html +35 -35
  216. package/dist/docs/guides/jev.html +35 -35
  217. package/dist/docs/guides/mcp-oauth.html +35 -35
  218. package/dist/docs/guides/migrate.html +66 -0
  219. package/dist/docs/guides/migrate.md +122 -0
  220. package/dist/docs/guides/opentelemetry.html +35 -35
  221. package/dist/docs/guides/slack.html +35 -35
  222. package/dist/docs/guides/webhooks.html +35 -35
  223. package/dist/docs/hashmap.json +1 -1
  224. package/dist/docs/hillclimbing.html +35 -35
  225. package/dist/docs/index.html +35 -35
  226. package/dist/docs/llms-full.txt +214 -6
  227. package/dist/docs/llms.txt +1 -0
  228. package/dist/docs/quickstart.html +35 -35
  229. package/dist/docs/reference/agent-config.html +35 -35
  230. package/dist/docs/reference/artifacts.html +35 -35
  231. package/dist/docs/reference/channels.html +35 -35
  232. package/dist/docs/reference/cli.html +39 -38
  233. package/dist/docs/reference/cli.md +39 -0
  234. package/dist/docs/reference/connections.html +35 -35
  235. package/dist/docs/reference/evals.html +35 -35
  236. package/dist/docs/reference/extensions.html +35 -35
  237. package/dist/docs/reference/hooks.html +35 -35
  238. package/dist/docs/reference/http-api.html +35 -35
  239. package/dist/docs/reference/instructions.html +35 -35
  240. package/dist/docs/reference/playground.html +35 -35
  241. package/dist/docs/reference/project-layout.html +35 -35
  242. package/dist/docs/reference/prompt.html +35 -35
  243. package/dist/docs/reference/schedules.html +35 -35
  244. package/dist/docs/reference/sessions.html +35 -35
  245. package/dist/docs/reference/skills.html +38 -38
  246. package/dist/docs/reference/subagents.html +35 -35
  247. package/dist/docs/reference/tools.html +35 -35
  248. package/dist/docs/templates/agentic-owners.html +35 -35
  249. package/dist/docs/templates/grokbot-agents.html +35 -35
  250. package/dist/docs/templates/security-reviewer.html +35 -35
  251. package/dist/docs/templates/thermo-quality-review.html +35 -35
  252. package/dist/docs/templates/thermo-review.html +35 -35
  253. package/dist/docs/templates/triage.html +35 -35
  254. package/dist/docs/troubleshooting.html +36 -36
  255. package/dist/docs/troubleshooting.md +1 -0
  256. package/dist/evals/assertions.js +20 -34
  257. package/dist/evals/expect.js +3 -6
  258. package/dist/evals/judge.js +5 -8
  259. package/dist/evals/loaders.js +45 -62
  260. package/dist/evals/matchers.js +2 -3
  261. package/dist/evals/reporters.js +43 -67
  262. package/dist/evals/results.js +1 -1
  263. package/dist/evals/run-facts.js +5 -6
  264. package/dist/evals.js +27 -15
  265. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  266. package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
  267. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  268. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  269. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  270. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  271. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  272. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  273. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  274. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  275. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  276. package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
  277. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  278. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  279. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  280. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  281. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  282. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  283. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  284. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  285. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  286. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  287. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  288. package/dist/extensions/jev/extension.js +3 -3
  289. package/dist/extensions/jev/lib/evaluate.js +43 -60
  290. package/dist/extensions/jev/tools/evaluate.js +6 -17
  291. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  292. package/dist/extensions.js +3 -5
  293. package/dist/files-backends/cursor-hosted.js +504 -523
  294. package/dist/files-backends/local-fs.js +72 -134
  295. package/dist/files.js +3 -3
  296. package/dist/filesystem.js +562 -861
  297. package/dist/index.js +16 -35
  298. package/dist/internal/advertise-tools.js +74 -86
  299. package/dist/internal/artifacts-store.js +298 -361
  300. package/dist/internal/as-of.js +2 -4
  301. package/dist/internal/authored-alias-hooks.js +6 -4
  302. package/dist/internal/authored-loaders.js +37 -52
  303. package/dist/internal/bounded-int.js +1 -2
  304. package/dist/internal/bounded.js +13 -24
  305. package/dist/internal/brand.js +1 -1
  306. package/dist/internal/browser-origin-guard.js +4 -4
  307. package/dist/internal/builtin-tools/artifacts.js +15 -27
  308. package/dist/internal/builtin-tools/index.js +2 -3
  309. package/dist/internal/builtin-tools/reminders.js +33 -52
  310. package/dist/internal/channel-architecture.d.ts +21 -0
  311. package/dist/internal/channel-architecture.d.ts.map +1 -0
  312. package/dist/internal/channel-architecture.js +41 -0
  313. package/dist/internal/channel-dispatch.js +3 -4
  314. package/dist/internal/channel-route-dispatch.js +40 -51
  315. package/dist/internal/channel-state.js +1 -1
  316. package/dist/internal/chat-client.js +319 -340
  317. package/dist/internal/cli-ax.js +1262 -1294
  318. package/dist/internal/cli-bitbucket.js +244 -272
  319. package/dist/internal/cli-convert-automation.js +137 -151
  320. package/dist/internal/cli-cursor.js +126 -147
  321. package/dist/internal/cli-deploy.d.ts.map +1 -1
  322. package/dist/internal/cli-deploy.js +1457 -1507
  323. package/dist/internal/cli-docs.js +130 -147
  324. package/dist/internal/cli-github.js +437 -476
  325. package/dist/internal/cli-gitlab.js +259 -288
  326. package/dist/internal/cli-images.js +266 -334
  327. package/dist/internal/cli-manifest.js +25 -37
  328. package/dist/internal/cli-mcp-oauth.js +228 -247
  329. package/dist/internal/cli-mcp.js +358 -383
  330. package/dist/internal/cli-migrate.js +73 -90
  331. package/dist/internal/cli-skills.js +35 -47
  332. package/dist/internal/cli-slack-manual.d.ts +0 -1
  333. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  334. package/dist/internal/cli-slack-manual.js +175 -204
  335. package/dist/internal/cli-slack.d.ts +1 -1
  336. package/dist/internal/cli-slack.d.ts.map +1 -1
  337. package/dist/internal/cli-slack.js +416 -456
  338. package/dist/internal/cloud-merge.js +7 -3
  339. package/dist/internal/cloud-turn-cost.js +8 -1
  340. package/dist/internal/connection-env.js +5 -6
  341. package/dist/internal/continuation-channel.js +10 -7
  342. package/dist/internal/continuation-identity.js +85 -67
  343. package/dist/internal/conversation-mirror.js +112 -131
  344. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  345. package/dist/internal/cron.js +3 -3
  346. package/dist/internal/cursor/account-mcp.js +147 -146
  347. package/dist/internal/cursor/backend-client.js +290 -320
  348. package/dist/internal/cursor/bound-secret-file.js +3 -3
  349. package/dist/internal/cursor/credentials.js +127 -142
  350. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  351. package/dist/internal/cursor/github-credentials.js +91 -108
  352. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  353. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  354. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  355. package/dist/internal/cursor/session-token.js +36 -48
  356. package/dist/internal/cursor/store-api-client.js +77 -92
  357. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  358. package/dist/internal/cursor-agent-template.js +1 -1
  359. package/dist/internal/cursor-deployment-relay.js +33 -54
  360. package/dist/internal/cursor-event-relay.js +65 -59
  361. package/dist/internal/cursor-relay-core.js +258 -286
  362. package/dist/internal/deferred-channel-session.js +3 -12
  363. package/dist/internal/deploy-client.js +410 -475
  364. package/dist/internal/deploy-manifest.d.ts +17 -0
  365. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  366. package/dist/internal/deploy-manifest.js +71 -21
  367. package/dist/internal/deploy-source.js +31 -43
  368. package/dist/internal/discovery/agent-config.js +45 -59
  369. package/dist/internal/discovery/agent.js +276 -280
  370. package/dist/internal/discovery/channels.js +67 -80
  371. package/dist/internal/discovery/connections.js +286 -296
  372. package/dist/internal/discovery/context.js +2 -13
  373. package/dist/internal/discovery/cursor-plugin.js +223 -259
  374. package/dist/internal/discovery/extension-overlay.js +104 -131
  375. package/dist/internal/discovery/extensions.js +276 -281
  376. package/dist/internal/discovery/fs.js +56 -79
  377. package/dist/internal/discovery/hooks.js +39 -50
  378. package/dist/internal/discovery/info.js +17 -19
  379. package/dist/internal/discovery/instructions.js +58 -71
  380. package/dist/internal/discovery/modules.js +45 -58
  381. package/dist/internal/discovery/project.d.ts.map +1 -1
  382. package/dist/internal/discovery/project.js +192 -215
  383. package/dist/internal/discovery/reminders.js +41 -52
  384. package/dist/internal/discovery/runtime.js +1 -1
  385. package/dist/internal/discovery/schedules.js +71 -82
  386. package/dist/internal/discovery/seed-files.js +21 -32
  387. package/dist/internal/discovery/services.js +74 -96
  388. package/dist/internal/discovery/skills.js +77 -94
  389. package/dist/internal/discovery/subagent.js +79 -95
  390. package/dist/internal/discovery/tools.js +12 -23
  391. package/dist/internal/distribution.js +2 -2
  392. package/dist/internal/docs-site.js +30 -45
  393. package/dist/internal/duration.js +1 -1
  394. package/dist/internal/env-file.js +48 -64
  395. package/dist/internal/eval-judge-model.js +17 -28
  396. package/dist/internal/eval-run-store.js +265 -254
  397. package/dist/internal/eval-runner.d.ts +8 -0
  398. package/dist/internal/eval-runner.d.ts.map +1 -1
  399. package/dist/internal/eval-runner.js +406 -408
  400. package/dist/internal/eval-transport.d.ts +24 -0
  401. package/dist/internal/eval-transport.d.ts.map +1 -0
  402. package/dist/internal/eval-transport.js +22 -0
  403. package/dist/internal/evals-client.js +242 -246
  404. package/dist/internal/event-log.js +72 -120
  405. package/dist/internal/event-mapper.js +30 -31
  406. package/dist/internal/factory-resource-channel.js +16 -30
  407. package/dist/internal/filesystem/errors.js +6 -6
  408. package/dist/internal/filesystem/format.js +10 -13
  409. package/dist/internal/filesystem/merge.js +52 -94
  410. package/dist/internal/filesystem/nearest.js +15 -27
  411. package/dist/internal/filesystem/scratch.js +65 -85
  412. package/dist/internal/filesystem/tools.js +221 -241
  413. package/dist/internal/filesystem/walk.js +76 -143
  414. package/dist/internal/framework-file-storage.js +118 -139
  415. package/dist/internal/framework-storage-selection.js +21 -13
  416. package/dist/internal/frontmatter.js +4 -6
  417. package/dist/internal/github-fanout.js +50 -64
  418. package/dist/internal/guest-network.js +96 -109
  419. package/dist/internal/handleAgentServeTrigger.js +121 -126
  420. package/dist/internal/host-files.js +73 -88
  421. package/dist/internal/host-kv.js +21 -36
  422. package/dist/internal/host-otel.js +22 -19
  423. package/dist/internal/host-platforms.js +49 -63
  424. package/dist/internal/hosted-catch-protocol.d.ts +1 -0
  425. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  426. package/dist/internal/hosted-catch-protocol.js +1 -0
  427. package/dist/internal/hosted-catch.d.ts +5 -3
  428. package/dist/internal/hosted-catch.d.ts.map +1 -1
  429. package/dist/internal/hosted-catch.js +84 -93
  430. package/dist/internal/hosted-delivery-protocol.js +32 -8
  431. package/dist/internal/hosted-delivery.d.ts +13 -1
  432. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  433. package/dist/internal/hosted-delivery.js +614 -584
  434. package/dist/internal/hosted-eval-cases.d.ts +21 -0
  435. package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
  436. package/dist/internal/hosted-eval-cases.js +162 -0
  437. package/dist/internal/hosted-execution-diag.js +38 -30
  438. package/dist/internal/hosted-execution-flush.js +75 -66
  439. package/dist/internal/hosted-execution-latency.js +16 -8
  440. package/dist/internal/hosted-managed-automation.js +2 -2
  441. package/dist/internal/hosting.js +2 -3
  442. package/dist/internal/http-channel-define.js +4 -1
  443. package/dist/internal/http-channel.js +101 -112
  444. package/dist/internal/http-control-plane-session.d.ts +18 -1
  445. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  446. package/dist/internal/http-control-plane-session.js +66 -32
  447. package/dist/internal/incoming-headers-to-fetch.js +1 -2
  448. package/dist/internal/init-interview.js +73 -93
  449. package/dist/internal/init-project.js +182 -214
  450. package/dist/internal/init-scaffold.js +10 -21
  451. package/dist/internal/inline-stdio-mcp.js +80 -86
  452. package/dist/internal/install-cursor-skills.js +231 -273
  453. package/dist/internal/legacy-command-guard.js +18 -31
  454. package/dist/internal/listen-port.js +34 -45
  455. package/dist/internal/local-control-plane.js +293 -307
  456. package/dist/internal/local-env.js +1 -1
  457. package/dist/internal/local-ingress.js +15 -9
  458. package/dist/internal/log-ring.js +1 -2
  459. package/dist/internal/logs-client.js +207 -227
  460. package/dist/internal/map-pool.js +24 -38
  461. package/dist/internal/mcp-endpoint.js +204 -180
  462. package/dist/internal/mcp-host.js +165 -168
  463. package/dist/internal/mcp-oauth-on-demand.js +170 -207
  464. package/dist/internal/mcp-oauth-persist.js +15 -29
  465. package/dist/internal/mcp-oauth.js +209 -266
  466. package/dist/internal/named-webhook-secret.d.ts +39 -0
  467. package/dist/internal/named-webhook-secret.d.ts.map +1 -0
  468. package/dist/internal/named-webhook-secret.js +47 -0
  469. package/dist/internal/open-browser.js +2 -3
  470. package/dist/internal/otel/collector.js +104 -68
  471. package/dist/internal/otel/config.js +24 -37
  472. package/dist/internal/otel/http.js +5 -7
  473. package/dist/internal/otel/mcp.js +3 -12
  474. package/dist/internal/otel/runtime.js +69 -83
  475. package/dist/internal/package-inline-stdio.js +57 -65
  476. package/dist/internal/peer-connections.js +9 -5
  477. package/dist/internal/platform-schedule-sync.js +39 -54
  478. package/dist/internal/platform-timers.js +176 -210
  479. package/dist/internal/playground/static.js +1 -2
  480. package/dist/internal/playground/toolchain.js +37 -53
  481. package/dist/internal/playground-proxy.js +230 -270
  482. package/dist/internal/process-memory-telemetry.js +33 -51
  483. package/dist/internal/prompt-context.js +3 -6
  484. package/dist/internal/reminder-control-plane-protocol.js +46 -13
  485. package/dist/internal/reminder-runner.js +770 -785
  486. package/dist/internal/reminder-schedule.js +1 -1
  487. package/dist/internal/reminder-store.js +57 -78
  488. package/dist/internal/request-error-status.js +1 -3
  489. package/dist/internal/request-headers.js +2 -2
  490. package/dist/internal/resolve-prod-target.js +119 -135
  491. package/dist/internal/resolved-connections.js +16 -6
  492. package/dist/internal/run-client.js +221 -229
  493. package/dist/internal/runtime-dispatch-runner.js +18 -43
  494. package/dist/internal/schedule-runner.js +49 -58
  495. package/dist/internal/scm/pr-url.js +7 -6
  496. package/dist/internal/sdk-runner.js +388 -363
  497. package/dist/internal/serve-restart.js +26 -39
  498. package/dist/internal/server.d.ts.map +1 -1
  499. package/dist/internal/server.js +1283 -1244
  500. package/dist/internal/session-cost.js +7 -9
  501. package/dist/internal/session-engine.d.ts +3 -1
  502. package/dist/internal/session-engine.d.ts.map +1 -1
  503. package/dist/internal/session-engine.js +2801 -2777
  504. package/dist/internal/session-links.js +12 -16
  505. package/dist/internal/session-run-log.js +134 -82
  506. package/dist/internal/session-store.js +133 -164
  507. package/dist/internal/sessions-client.js +97 -118
  508. package/dist/internal/skill-catalog.js +18 -23
  509. package/dist/internal/skills-sync.js +16 -30
  510. package/dist/internal/slack-provision-client.js +90 -116
  511. package/dist/internal/start-log-store.js +48 -67
  512. package/dist/internal/steering.js +1 -2
  513. package/dist/internal/storage-coordinator.js +160 -196
  514. package/dist/internal/store-mirror.js +16 -30
  515. package/dist/internal/stream-progress.js +6 -8
  516. package/dist/internal/terminal-style.js +3 -4
  517. package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
  518. package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
  519. package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
  520. package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
  521. package/dist/internal/tool-catalog.js +11 -5
  522. package/dist/internal/tool-result.js +1 -1
  523. package/dist/internal/trajectory.js +19 -22
  524. package/dist/internal/turn-cost.js +52 -62
  525. package/dist/internal/turn-governor.js +5 -8
  526. package/dist/internal/turn-lease-store.js +85 -105
  527. package/dist/internal/turn-outbox.js +28 -43
  528. package/dist/internal/update-check.js +231 -259
  529. package/dist/internal/v2-hosting.js +1 -2
  530. package/dist/internal/workspace-sync.js +25 -41
  531. package/dist/internal/workspace.js +111 -139
  532. package/dist/kv/memory-kv.js +27 -51
  533. package/dist/memory.js +106 -148
  534. package/dist/otel.js +5 -8
  535. package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
  536. package/dist/playground/assets/{index-Co4CUVTQ.js → index-JekUQERK.js} +45 -45
  537. package/dist/playground/index.html +2 -2
  538. package/dist/prompt.js +2 -4
  539. package/dist/storage-backends/cursor-hosted-v2.js +53 -83
  540. package/dist/storage-backends/cursor-hosted.js +105 -145
  541. package/dist/storage-backends/file-kv.js +100 -128
  542. package/dist/storage-protocol.js +3 -5
  543. package/dist/storage.js +17 -26
  544. package/dist/types.d.ts +68 -0
  545. package/dist/types.d.ts.map +1 -1
  546. package/dist/types.js +20 -18
  547. package/docs/building-with-agents.md +2 -0
  548. package/docs/deployment.md +7 -0
  549. package/docs/guides/bitbucket.md +9 -1
  550. package/docs/guides/github.md +20 -4
  551. package/docs/guides/gitlab.md +9 -1
  552. package/docs/guides/migrate.md +127 -0
  553. package/docs/reference/cli.md +39 -0
  554. package/docs/troubleshooting.md +1 -0
  555. package/package.json +1 -1
  556. package/skills/debug/SKILL.md +1 -0
  557. package/skills/github/SKILL.md +23 -0
  558. package/skills/migrate-v2/SKILL.md +51 -10
  559. package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
  560. package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
  561. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
  562. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
  563. package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
  564. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
  565. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
  566. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
  567. package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
  568. /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
  569. /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
  570. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -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
  }