@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
  * same wire protocol the playground and curl use. Renders streamed
6
6
  * assistant text live, tool calls inline, and a per-turn usage footer.
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 { createInterface } from "node:readline";
18
9
  import { mergeRequestHeaders } from "./request-headers.js";
19
10
  import { fetchSessionEvents, listSessions } from "./sessions-client.js";
@@ -42,198 +33,188 @@ function makePalette(enabled) {
42
33
  };
43
34
  }
44
35
  /** Run the terminal chat client. Resolves when the session/REPL ends. */
45
- export function runChat(options) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- var _a;
48
- const baseUrl = options.baseUrl.replace(/\/$/, "");
49
- const auth = {
50
- bearerToken: options.bearerToken,
51
- headers: options.headers,
52
- };
53
- const colorEnabled = !options.noColor && process.stdout.isTTY === true && !process.env.NO_COLOR;
54
- const c = makePalette(colorEnabled);
55
- const write = (s) => {
56
- process.stdout.write(s);
57
- };
58
- const health = yield getJson(baseUrl, "/v1/health", auth);
59
- const agentName = typeof (health === null || health === void 0 ? void 0 : health.name) === "string" ? health.name : "agent-serve";
60
- write(`${c.bold(agentName)} ${c.dim(`· ${baseUrl}`)}\n`);
61
- const info = yield getJson(baseUrl, "/v1/info", auth);
62
- if (info && typeof info === "object") {
63
- const model = info.model;
64
- const tools = (_a = info.tools) !== null && _a !== void 0 ? _a : [];
65
- const modelText = typeof model === "string" ? model : JSON.stringify(model !== null && model !== void 0 ? model : "");
66
- write(c.dim(`model ${modelText} · ${tools.length} tool${tools.length === 1 ? "" : "s"}\n`));
67
- }
68
- write("\n");
69
- let sessionId = options.sessionId;
70
- let continuationToken = options.continuationToken;
71
- // Highest event index rendered so far; a follow-up streams from here so it
72
- // shows only the new turn, not the replayed transcript.
73
- let nextEventIndex = 0;
74
- if (options.sessionId !== undefined) {
75
- const attached = yield attachSession({
76
- baseUrl,
77
- auth,
78
- sessionId: options.sessionId,
79
- continuationToken: options.continuationToken,
80
- agentName,
81
- palette: c,
82
- write,
83
- });
84
- sessionId = attached.sessionId;
85
- continuationToken = attached.continuationToken;
86
- nextEventIndex = attached.nextEventIndex;
36
+ export async function runChat(options) {
37
+ const baseUrl = options.baseUrl.replace(/\/$/, "");
38
+ const auth = {
39
+ bearerToken: options.bearerToken,
40
+ headers: options.headers,
41
+ };
42
+ const colorEnabled = !options.noColor && process.stdout.isTTY === true && !process.env.NO_COLOR;
43
+ const c = makePalette(colorEnabled);
44
+ const write = (s) => {
45
+ process.stdout.write(s);
46
+ };
47
+ const health = await getJson(baseUrl, "/v1/health", auth);
48
+ const agentName = typeof health?.name === "string" ? health.name : "agent-serve";
49
+ write(`${c.bold(agentName)} ${c.dim(`· ${baseUrl}`)}\n`);
50
+ const info = await getJson(baseUrl, "/v1/info", auth);
51
+ if (info && typeof info === "object") {
52
+ const model = info.model;
53
+ const tools = info.tools ?? [];
54
+ const modelText = typeof model === "string" ? model : JSON.stringify(model ?? "");
55
+ write(c.dim(`model ${modelText} · ${tools.length} tool${tools.length === 1 ? "" : "s"}\n`));
56
+ }
57
+ write("\n");
58
+ let sessionId = options.sessionId;
59
+ let continuationToken = options.continuationToken;
60
+ // Highest event index rendered so far; a follow-up streams from here so it
61
+ // shows only the new turn, not the replayed transcript.
62
+ let nextEventIndex = 0;
63
+ if (options.sessionId !== undefined) {
64
+ const attached = await attachSession({
65
+ baseUrl,
66
+ auth,
67
+ sessionId: options.sessionId,
68
+ continuationToken: options.continuationToken,
69
+ agentName,
70
+ palette: c,
71
+ write,
72
+ });
73
+ sessionId = attached.sessionId;
74
+ continuationToken = attached.continuationToken;
75
+ nextEventIndex = attached.nextEventIndex;
76
+ }
77
+ else if (options.continuationToken !== undefined) {
78
+ throw new Error("--continuation-token requires --session (session id to reattach to)");
79
+ }
80
+ const runTurn = async (message, opts = {}) => {
81
+ // REPL lines are already echoed by readline; only reprint for seeded
82
+ // `--message` / one-shot so the transcript still shows the user turn.
83
+ if (opts.echoUser !== false) {
84
+ write(`${c.cyan("› you")} ${message}\n`);
87
85
  }
88
- else if (options.continuationToken !== undefined) {
89
- throw new Error("--continuation-token requires --session (session id to reattach to)");
86
+ const startIndex = sessionId === undefined ? 0 : nextEventIndex;
87
+ if (sessionId === undefined) {
88
+ const created = await postJson(baseUrl, "/v1/session", { message }, auth);
89
+ sessionId = str(created?.sessionId);
90
+ continuationToken = str(created?.continuationToken);
90
91
  }
91
- const runTurn = (message_1, ...args_1) => __awaiter(this, [message_1, ...args_1], void 0, function* (message, opts = {}) {
92
- var _a;
93
- // REPL lines are already echoed by readline; only reprint for seeded
94
- // `--message` / one-shot so the transcript still shows the user turn.
95
- if (opts.echoUser !== false) {
96
- write(`${c.cyan("› you")} ${message}\n`);
97
- }
98
- const startIndex = sessionId === undefined ? 0 : nextEventIndex;
99
- if (sessionId === undefined) {
100
- const created = yield postJson(baseUrl, "/v1/session", { message }, auth);
101
- sessionId = str(created === null || created === void 0 ? void 0 : created.sessionId);
102
- continuationToken = str(created === null || created === void 0 ? void 0 : created.continuationToken);
103
- }
104
- else {
105
- const resp = yield postJson(baseUrl, `/v1/session/${sessionId}`, { message, continuationToken }, auth);
106
- if ((resp === null || resp === void 0 ? void 0 : resp.ok) === false) {
107
- write(`${c.red("error")} ${str(resp.error)}: ${str(resp.message)}\n\n`);
108
- return;
109
- }
110
- continuationToken = (_a = str(resp === null || resp === void 0 ? void 0 : resp.continuationToken)) !== null && _a !== void 0 ? _a : continuationToken;
111
- }
112
- if (sessionId === undefined) {
113
- write(`${c.red("error")} server did not return a session id\n\n`);
92
+ else {
93
+ const resp = await postJson(baseUrl, `/v1/session/${sessionId}`, { message, continuationToken }, auth);
94
+ if (resp?.ok === false) {
95
+ write(`${c.red("error")} ${str(resp.error)}: ${str(resp.message)}\n\n`);
114
96
  return;
115
97
  }
116
- nextEventIndex = yield streamTurn({
117
- baseUrl,
118
- sessionId,
119
- startIndex,
120
- auth,
121
- agentName,
122
- palette: c,
123
- write,
124
- });
125
- write("\n");
98
+ continuationToken = str(resp?.continuationToken) ?? continuationToken;
99
+ }
100
+ if (sessionId === undefined) {
101
+ write(`${c.red("error")} server did not return a session id\n\n`);
102
+ return;
103
+ }
104
+ nextEventIndex = await streamTurn({
105
+ baseUrl,
106
+ sessionId,
107
+ startIndex,
108
+ auth,
109
+ agentName,
110
+ palette: c,
111
+ write,
126
112
  });
127
- const oneShot = options.oneShot === true || process.stdin.isTTY !== true;
128
- if (options.message !== undefined) {
129
- yield runTurn(options.message);
130
- if (oneShot) {
113
+ write("\n");
114
+ };
115
+ const oneShot = options.oneShot === true || process.stdin.isTTY !== true;
116
+ if (options.message !== undefined) {
117
+ await runTurn(options.message);
118
+ if (oneShot) {
119
+ return;
120
+ }
121
+ }
122
+ write(c.dim("Type a message and press Enter. Ctrl-D or /quit to exit.\n\n"));
123
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
124
+ await new Promise(resolve => {
125
+ const prompt = () => {
126
+ rl.setPrompt(c.cyan("› "));
127
+ rl.prompt();
128
+ };
129
+ prompt();
130
+ rl.on("line", line => {
131
+ const text = line.trim();
132
+ if (text === "") {
133
+ prompt();
131
134
  return;
132
135
  }
133
- }
134
- write(c.dim("Type a message and press Enter. Ctrl-D or /quit to exit.\n\n"));
135
- const rl = createInterface({ input: process.stdin, output: process.stdout });
136
- yield new Promise(resolve => {
137
- const prompt = () => {
138
- rl.setPrompt(c.cyan("› "));
139
- rl.prompt();
140
- };
141
- prompt();
142
- rl.on("line", line => {
143
- const text = line.trim();
144
- if (text === "") {
145
- prompt();
146
- return;
147
- }
148
- if (text === "/quit" || text === "/exit") {
149
- rl.close();
150
- return;
151
- }
152
- rl.pause();
153
- runTurn(text, { echoUser: false })
154
- .catch(err => {
155
- write(`${c.red("error")} ${describe(err)}\n\n`);
156
- })
157
- .finally(() => {
158
- rl.resume();
159
- prompt();
160
- });
161
- });
162
- rl.on("close", () => {
163
- write(c.dim("\nbye\n"));
164
- resolve();
136
+ if (text === "/quit" || text === "/exit") {
137
+ rl.close();
138
+ return;
139
+ }
140
+ rl.pause();
141
+ runTurn(text, { echoUser: false })
142
+ .catch(err => {
143
+ write(`${c.red("error")} ${describe(err)}\n\n`);
144
+ })
145
+ .finally(() => {
146
+ rl.resume();
147
+ prompt();
165
148
  });
166
149
  });
150
+ rl.on("close", () => {
151
+ write(c.dim("\nbye\n"));
152
+ resolve();
153
+ });
167
154
  });
168
155
  }
169
156
  /**
170
157
  * Resolve the current continuation token for a session via `GET /v1/sessions`.
171
158
  * Throws when the session is missing or not followable.
172
159
  */
173
- export function lookupSessionContinuation(args) {
174
- return __awaiter(this, void 0, void 0, function* () {
175
- const sessions = yield listSessions({
176
- baseUrl: args.baseUrl,
177
- auth: args.auth,
178
- });
179
- const match = sessions.find(s => s.sessionId === args.sessionId);
180
- if (match === undefined) {
181
- throw new Error(`Session ${args.sessionId} not found in /v1/sessions (wrong id, or not owned by this caller). ` +
182
- `Pass --continuation-token if you have it.`);
183
- }
184
- const token = str(match.continuationToken);
185
- if (token === undefined) {
186
- throw new Error(`Session ${args.sessionId} has no continuation token` +
187
- (match.mode === "task" ? " (task sessions are not followable)." : "."));
188
- }
189
- return token;
160
+ export async function lookupSessionContinuation(args) {
161
+ const sessions = await listSessions({
162
+ baseUrl: args.baseUrl,
163
+ auth: args.auth,
190
164
  });
165
+ const match = sessions.find(s => s.sessionId === args.sessionId);
166
+ if (match === undefined) {
167
+ throw new Error(`Session ${args.sessionId} not found in /v1/sessions (wrong id, or not owned by this caller). ` +
168
+ `Pass --continuation-token if you have it.`);
169
+ }
170
+ const token = str(match.continuationToken);
171
+ if (token === undefined) {
172
+ throw new Error(`Session ${args.sessionId} has no continuation token` +
173
+ (match.mode === "task" ? " (task sessions are not followable)." : "."));
174
+ }
175
+ return token;
191
176
  }
192
- function attachSession(args) {
193
- return __awaiter(this, void 0, void 0, function* () {
194
- const { palette: c, write } = args;
195
- let continuationToken = args.continuationToken;
196
- if (continuationToken === undefined || continuationToken === "") {
197
- continuationToken = yield lookupSessionContinuation({
198
- baseUrl: args.baseUrl,
199
- sessionId: args.sessionId,
200
- auth: args.auth,
201
- });
202
- }
203
- const events = yield fetchSessionEvents({
177
+ async function attachSession(args) {
178
+ const { palette: c, write } = args;
179
+ let continuationToken = args.continuationToken;
180
+ if (continuationToken === undefined || continuationToken === "") {
181
+ continuationToken = await lookupSessionContinuation({
204
182
  baseUrl: args.baseUrl,
205
183
  sessionId: args.sessionId,
206
184
  auth: args.auth,
207
185
  });
208
- if (events.length > 0) {
209
- write(c.dim(`reattached ${args.sessionId} · replaying ${events.length} events\n\n`));
210
- renderTranscript(events, args.agentName, c, write);
211
- write("\n");
212
- }
213
- else {
214
- write(c.dim(`reattached ${args.sessionId}\n\n`));
215
- }
216
- const lastIndex = events.length === 0
217
- ? -1
218
- : Math.max(...events.map(e => (typeof e.index === "number" ? e.index : -1)));
219
- return {
220
- sessionId: args.sessionId,
221
- continuationToken,
222
- nextEventIndex: lastIndex + 1,
223
- };
186
+ }
187
+ const events = await fetchSessionEvents({
188
+ baseUrl: args.baseUrl,
189
+ sessionId: args.sessionId,
190
+ auth: args.auth,
224
191
  });
192
+ if (events.length > 0) {
193
+ write(c.dim(`reattached ${args.sessionId} · replaying ${events.length} events\n\n`));
194
+ renderTranscript(events, args.agentName, c, write);
195
+ write("\n");
196
+ }
197
+ else {
198
+ write(c.dim(`reattached ${args.sessionId}\n\n`));
199
+ }
200
+ const lastIndex = events.length === 0
201
+ ? -1
202
+ : Math.max(...events.map(e => (typeof e.index === "number" ? e.index : -1)));
203
+ return {
204
+ sessionId: args.sessionId,
205
+ continuationToken,
206
+ nextEventIndex: lastIndex + 1,
207
+ };
225
208
  }
226
209
  /** Compact historical transcript for reattach (final messages + tool calls). */
227
210
  function renderTranscript(events, agentName, c, write) {
228
- var _a;
229
- var _b;
230
211
  for (const event of events) {
231
212
  if (event.type === "message.received") {
232
213
  write(`${c.cyan("› you")} ${event.data.text}\n`);
233
214
  continue;
234
215
  }
235
216
  if (event.type === "message.completed") {
236
- const text = (_b = (_a = event.data.text) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : "";
217
+ const text = event.data.text?.trim() ?? "";
237
218
  if (text !== "" && event.data.finishReason !== "tool_call") {
238
219
  write(`${c.green(`‹ ${agentName}`)} ${text}\n`);
239
220
  }
@@ -257,201 +238,199 @@ function renderTranscript(events, agentName, c, write) {
257
238
  }
258
239
  const TERMINAL_TYPES = new Set(["session.waiting", "session.completed", "session.failed"]);
259
240
  /** Streams a turn to the terminal; returns the next event index to resume at. */
260
- function streamTurn(args) {
261
- return __awaiter(this, void 0, void 0, function* () {
262
- var _a, _b;
263
- const { palette: c, write } = args;
264
- const url = `${args.baseUrl}/v1/session/${args.sessionId}/stream?startIndex=${args.startIndex}`;
265
- const resp = yield fetch(url, { headers: mergeRequestHeaders(args.auth) });
266
- if (!resp.ok || resp.body === null) {
267
- write(`${c.red("error")} stream failed (${resp.status})\n`);
268
- return args.startIndex;
241
+ async function streamTurn(args) {
242
+ const { palette: c, write } = args;
243
+ const url = `${args.baseUrl}/v1/session/${args.sessionId}/stream?startIndex=${args.startIndex}`;
244
+ const resp = await fetch(url, { headers: mergeRequestHeaders(args.auth) });
245
+ if (!resp.ok || resp.body === null) {
246
+ write(`${c.red("error")} stream failed (${resp.status})\n`);
247
+ return args.startIndex;
248
+ }
249
+ const reader = resp.body.getReader();
250
+ const decoder = new TextDecoder();
251
+ let buffer = "";
252
+ let assistantOpen = false;
253
+ let thinkingShown = false;
254
+ let lastIndex = args.startIndex - 1;
255
+ const closeAssistant = () => {
256
+ if (assistantOpen) {
257
+ write("\n");
258
+ assistantOpen = false;
259
+ }
260
+ };
261
+ for (;;) {
262
+ const chunk = await reader.read();
263
+ if (chunk.done) {
264
+ break;
269
265
  }
270
- const reader = resp.body.getReader();
271
- const decoder = new TextDecoder();
272
- let buffer = "";
273
- let assistantOpen = false;
274
- let thinkingShown = false;
275
- let lastIndex = args.startIndex - 1;
276
- const closeAssistant = () => {
277
- if (assistantOpen) {
278
- write("\n");
279
- assistantOpen = false;
266
+ buffer += decoder.decode(chunk.value, { stream: true });
267
+ const lines = buffer.split("\n");
268
+ buffer = lines.pop() ?? "";
269
+ let stop = false;
270
+ for (const line of lines) {
271
+ if (line.trim() === "") {
272
+ continue;
280
273
  }
281
- };
282
- for (;;) {
283
- const chunk = yield reader.read();
284
- if (chunk.done) {
285
- break;
274
+ let event;
275
+ try {
276
+ event = JSON.parse(line);
286
277
  }
287
- buffer += decoder.decode(chunk.value, { stream: true });
288
- const lines = buffer.split("\n");
289
- buffer = (_a = lines.pop()) !== null && _a !== void 0 ? _a : "";
290
- let stop = false;
291
- for (const line of lines) {
292
- if (line.trim() === "") {
293
- continue;
294
- }
295
- let event;
296
- try {
297
- event = JSON.parse(line);
298
- }
299
- catch (_c) {
300
- continue;
301
- }
302
- if (typeof event.index === "number") {
303
- lastIndex = event.index;
304
- }
305
- if (event.type === "agent.bound") {
306
- closeAssistant();
307
- const { sdkAgentId, url } = event.data;
308
- write(` ${c.cyan("agent")} ${c.bold(sdkAgentId)}\n`);
309
- if (url !== undefined) {
310
- write(` ${c.dim(url)}\n`);
311
- }
312
- continue;
313
- }
314
- if (event.type === "reasoning.appended" &&
315
- event.data.parentCallId === undefined &&
316
- !thinkingShown) {
317
- thinkingShown = true;
318
- write(c.dim(" · thinking…\n"));
319
- continue;
320
- }
321
- if (event.type === "message.appended") {
322
- if (event.data.parentCallId !== undefined) {
323
- continue;
324
- }
325
- if (!assistantOpen) {
326
- write(`${c.green(`‹ ${args.agentName}`)} `);
327
- assistantOpen = true;
328
- }
329
- write(event.data.delta);
330
- continue;
331
- }
332
- if (event.type === "message.completed") {
333
- if (event.data.parentCallId !== undefined) {
334
- continue;
335
- }
336
- closeAssistant();
337
- continue;
338
- }
339
- if (event.type === "actions.requested") {
340
- closeAssistant();
341
- for (const call of event.data.calls) {
342
- if (call.toolName === "task" && call.parentCallId === undefined) {
343
- continue;
344
- }
345
- const indent = call.parentCallId !== undefined || event.data.parentCallId !== undefined
346
- ? " "
347
- : " ";
348
- write(`${indent}${c.magenta("⚙")} ${c.bold(call.toolName)}${c.dim(formatArgs(call.args))}\n`);
349
- }
350
- continue;
351
- }
352
- if (event.type === "action.approval_requested") {
353
- closeAssistant();
354
- write(` ${c.yellow("⏸")} ${c.bold(event.data.toolName)} ${c.dim("awaiting human approval")}\n`);
355
- continue;
278
+ catch {
279
+ continue;
280
+ }
281
+ if (typeof event.index === "number") {
282
+ lastIndex = event.index;
283
+ }
284
+ if (event.type === "agent.bound") {
285
+ closeAssistant();
286
+ const { sdkAgentId, url } = event.data;
287
+ write(` ${c.cyan("agent")} ${c.bold(sdkAgentId)}\n`);
288
+ if (url !== undefined) {
289
+ write(` ${c.dim(url)}\n`);
356
290
  }
357
- if (event.type === "action.approval_resolved") {
358
- const mark = event.data.decision === "approve" ? c.green("✓") : c.red("✗");
359
- write(` ${mark} ${c.bold(event.data.toolName)} ${c.dim(event.data.decision === "approve" ? "approved" : "denied")}\n`);
291
+ continue;
292
+ }
293
+ if (event.type === "reasoning.appended" &&
294
+ event.data.parentCallId === undefined &&
295
+ !thinkingShown) {
296
+ thinkingShown = true;
297
+ write(c.dim(" · thinking…\n"));
298
+ continue;
299
+ }
300
+ if (event.type === "message.appended") {
301
+ if (event.data.parentCallId !== undefined) {
360
302
  continue;
361
303
  }
362
- if (event.type === "action.auth_requested") {
363
- closeAssistant();
364
- write(` ${c.yellow("⏸")} ${c.bold(event.data.connection)} ${c.dim("awaiting MCP authorization")}\n`);
365
- continue;
304
+ if (!assistantOpen) {
305
+ write(`${c.green(`‹ ${args.agentName}`)} `);
306
+ assistantOpen = true;
366
307
  }
367
- if (event.type === "action.auth_resolved") {
368
- const mark = event.data.decision === "approve" ? c.green("✓") : c.red("✗");
369
- write(` ${mark} ${c.bold(event.data.connection)} ${c.dim(event.data.decision === "approve" ? "connected" : "denied")}\n`);
308
+ write(event.data.delta);
309
+ continue;
310
+ }
311
+ if (event.type === "message.completed") {
312
+ if (event.data.parentCallId !== undefined) {
370
313
  continue;
371
314
  }
372
- if (event.type === "action.result") {
373
- if (event.data.toolName === "task" && event.data.parentCallId === undefined) {
315
+ closeAssistant();
316
+ continue;
317
+ }
318
+ if (event.type === "actions.requested") {
319
+ closeAssistant();
320
+ for (const call of event.data.calls) {
321
+ if (call.toolName === "task" && call.parentCallId === undefined) {
374
322
  continue;
375
323
  }
376
- const label = event.data.isError ? c.red("✗") : c.magenta("→");
377
- const indent = event.data.parentCallId !== undefined ? " " : " ";
378
- write(`${indent}${label} ${c.dim(truncate(stringify(event.data.output), 100))}\n`);
379
- continue;
380
- }
381
- if (event.type === "subagent.called") {
382
- closeAssistant();
383
- const detail = event.data.description ? ` — ${truncate(event.data.description, 60)}` : "";
384
- write(` ${c.magenta("task")} ${c.bold((_b = event.data.name) !== null && _b !== void 0 ? _b : "subagent")}${c.dim(detail)}\n`);
385
- continue;
324
+ const indent = call.parentCallId !== undefined || event.data.parentCallId !== undefined
325
+ ? " "
326
+ : " ";
327
+ write(`${indent}${c.magenta("⚙")} ${c.bold(call.toolName)}${c.dim(formatArgs(call.args))}\n`);
386
328
  }
387
- if (event.type === "turn.completed") {
388
- closeAssistant();
389
- const usage = event.data.usage;
390
- const tokens = usage ? ` · in ${usage.inputTokens} out ${usage.outputTokens} tok` : "";
391
- write(c.dim(` ─ turn done${tokens}\n`));
392
- continue;
393
- }
394
- if (event.type === "turn.failed") {
395
- closeAssistant();
396
- write(`${c.red(" ✗ turn failed")} ${event.data.message}\n`);
329
+ continue;
330
+ }
331
+ if (event.type === "action.approval_requested") {
332
+ closeAssistant();
333
+ write(` ${c.yellow("⏸")} ${c.bold(event.data.toolName)} ${c.dim("awaiting human approval")}\n`);
334
+ continue;
335
+ }
336
+ if (event.type === "action.approval_resolved") {
337
+ const mark = event.data.decision === "approve" ? c.green("✓") : c.red("✗");
338
+ write(` ${mark} ${c.bold(event.data.toolName)} ${c.dim(event.data.decision === "approve" ? "approved" : "denied")}\n`);
339
+ continue;
340
+ }
341
+ if (event.type === "action.auth_requested") {
342
+ closeAssistant();
343
+ write(` ${c.yellow("⏸")} ${c.bold(event.data.connection)} ${c.dim("awaiting MCP authorization")}\n`);
344
+ continue;
345
+ }
346
+ if (event.type === "action.auth_resolved") {
347
+ const mark = event.data.decision === "approve" ? c.green("✓") : c.red("✗");
348
+ write(` ${mark} ${c.bold(event.data.connection)} ${c.dim(event.data.decision === "approve" ? "connected" : "denied")}\n`);
349
+ continue;
350
+ }
351
+ if (event.type === "action.result") {
352
+ if (event.data.toolName === "task" && event.data.parentCallId === undefined) {
397
353
  continue;
398
354
  }
399
- if (TERMINAL_TYPES.has(event.type)) {
400
- closeAssistant();
401
- stop = true;
402
- break;
403
- }
355
+ const label = event.data.isError ? c.red("✗") : c.magenta("→");
356
+ const indent = event.data.parentCallId !== undefined ? " " : " ";
357
+ write(`${indent}${label} ${c.dim(truncate(stringify(event.data.output), 100))}\n`);
358
+ continue;
404
359
  }
405
- if (stop) {
360
+ if (event.type === "subagent.called") {
361
+ closeAssistant();
362
+ const detail = event.data.description ? ` — ${truncate(event.data.description, 60)}` : "";
363
+ write(` ${c.magenta("task")} ${c.bold(event.data.name ?? "subagent")}${c.dim(detail)}\n`);
364
+ continue;
365
+ }
366
+ if (event.type === "turn.completed") {
367
+ closeAssistant();
368
+ const usage = event.data.usage;
369
+ const tokens = usage ? ` · in ${usage.inputTokens} out ${usage.outputTokens} tok` : "";
370
+ write(c.dim(` ─ turn done${tokens}\n`));
371
+ continue;
372
+ }
373
+ if (event.type === "turn.failed") {
374
+ closeAssistant();
375
+ write(`${c.red(" ✗ turn failed")} ${event.data.message}\n`);
376
+ continue;
377
+ }
378
+ if (TERMINAL_TYPES.has(event.type)) {
379
+ closeAssistant();
380
+ stop = true;
406
381
  break;
407
382
  }
408
383
  }
409
- yield reader.cancel().catch(() => { });
410
- return lastIndex + 1;
411
- });
384
+ if (stop) {
385
+ break;
386
+ }
387
+ }
388
+ await reader.cancel().catch(() => { });
389
+ return lastIndex + 1;
412
390
  }
413
391
  // ---------------------------------------------------------------------------
414
392
  // HTTP helpers (built-in fetch; node 22+)
415
393
  // ---------------------------------------------------------------------------
416
- function getJson(baseUrl, path, auth) {
417
- return __awaiter(this, void 0, void 0, function* () {
418
- try {
419
- const resp = yield fetch(`${baseUrl}${path}`, {
420
- headers: mergeRequestHeaders(auth),
421
- });
422
- const text = yield resp.text();
423
- return text ? JSON.parse(text) : undefined;
424
- }
425
- catch (_a) {
426
- return undefined;
427
- }
428
- });
429
- }
430
- function postJson(baseUrl, path, body, auth) {
431
- return __awaiter(this, void 0, void 0, function* () {
432
- var _a, _b, _c;
433
- const resp = yield fetch(`${baseUrl}${path}`, {
434
- method: "POST",
435
- headers: Object.assign({ "content-type": "application/json" }, mergeRequestHeaders(auth)),
436
- body: JSON.stringify(body),
394
+ async function getJson(baseUrl, path, auth) {
395
+ try {
396
+ const resp = await fetch(`${baseUrl}${path}`, {
397
+ headers: mergeRequestHeaders(auth),
437
398
  });
438
- const text = yield resp.text();
439
- let parsed;
440
- if (text) {
441
- try {
442
- parsed = JSON.parse(text);
443
- }
444
- catch (_d) {
445
- parsed = { message: text };
446
- }
399
+ const text = await resp.text();
400
+ return text ? JSON.parse(text) : undefined;
401
+ }
402
+ catch {
403
+ return undefined;
404
+ }
405
+ }
406
+ async function postJson(baseUrl, path, body, auth) {
407
+ const resp = await fetch(`${baseUrl}${path}`, {
408
+ method: "POST",
409
+ headers: {
410
+ "content-type": "application/json",
411
+ ...mergeRequestHeaders(auth),
412
+ },
413
+ body: JSON.stringify(body),
414
+ });
415
+ const text = await resp.text();
416
+ let parsed;
417
+ if (text) {
418
+ try {
419
+ parsed = JSON.parse(text);
447
420
  }
448
- if (!resp.ok) {
449
- const anyrunReason = resp.headers.get("x-anyrun-failure-reason");
450
- const message = (_c = (_b = (_a = (typeof (parsed === null || parsed === void 0 ? void 0 : parsed.message) === "string" && parsed.message !== "" ? parsed.message : undefined)) !== null && _a !== void 0 ? _a : (typeof (parsed === null || parsed === void 0 ? void 0 : parsed.error) === "string" ? parsed.error : undefined)) !== null && _b !== void 0 ? _b : anyrunReason) !== null && _c !== void 0 ? _c : `HTTP ${resp.status}`;
451
- return { ok: false, error: "http_error", message, status: resp.status };
421
+ catch {
422
+ parsed = { message: text };
452
423
  }
453
- return parsed;
454
- });
424
+ }
425
+ if (!resp.ok) {
426
+ const anyrunReason = resp.headers.get("x-anyrun-failure-reason");
427
+ const message = (typeof parsed?.message === "string" && parsed.message !== "" ? parsed.message : undefined) ??
428
+ (typeof parsed?.error === "string" ? parsed.error : undefined) ??
429
+ anyrunReason ??
430
+ `HTTP ${resp.status}`;
431
+ return { ok: false, error: "http_error", message, status: resp.status };
432
+ }
433
+ return parsed;
455
434
  }
456
435
  function str(value) {
457
436
  return typeof value === "string" ? value : undefined;