@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
@@ -8,35 +8,6 @@
8
8
  * presigned URLs the backend handed back, and finalizes. Bytes never pass
9
9
  * through the Cursor backend.
10
10
  */
11
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
- return new (P || (P = Promise))(function (resolve, reject) {
14
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
- step((generator = generator.apply(thisArg, _arguments || [])).next());
18
- });
19
- };
20
- var __asyncValues = (this && this.__asyncValues) || function (o) {
21
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
22
- var m = o[Symbol.asyncIterator], i;
23
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
24
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
25
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
26
- };
27
- var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
28
- var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
29
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
30
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
31
- return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
32
- function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
33
- function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
34
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
35
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
36
- function fulfill(value) { resume("next", value); }
37
- function reject(value) { resume("throw", value); }
38
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
39
- };
40
11
  import { spawn } from "node:child_process";
41
12
  import { createHash } from "node:crypto";
42
13
  import { createWriteStream } from "node:fs";
@@ -109,7 +80,6 @@ function nodeMeetsFloor(version) {
109
80
  * `probe`. Failures stop the push; warnings print and continue.
110
81
  */
111
82
  export function checkImage(inspected, probe) {
112
- var _a, _b, _c, _d, _e, _f;
113
83
  const checks = [];
114
84
  if (inspected.platform === REQUIRED_PLATFORM) {
115
85
  checks.push({ label: "platform", value: inspected.platform, status: "ok" });
@@ -132,7 +102,7 @@ export function checkImage(inspected, probe) {
132
102
  return checks;
133
103
  }
134
104
  for (const tool of ["bash", "git"]) {
135
- const path = (_a = probe[tool]) !== null && _a !== void 0 ? _a : "";
105
+ const path = probe[tool] ?? "";
136
106
  checks.push(path === ""
137
107
  ? {
138
108
  label: tool,
@@ -142,7 +112,7 @@ export function checkImage(inspected, probe) {
142
112
  }
143
113
  : { label: tool, value: path, status: "ok" });
144
114
  }
145
- const nodeRaw = (_b = probe.node) !== null && _b !== void 0 ? _b : "";
115
+ const nodeRaw = probe.node ?? "";
146
116
  const nodeVersion = parseNodeVersion(nodeRaw);
147
117
  const floor = `${MIN_NODE_VERSION[0]}.${MIN_NODE_VERSION[1]}`;
148
118
  if (nodeVersion === undefined) {
@@ -164,7 +134,7 @@ export function checkImage(inspected, probe) {
164
134
  else {
165
135
  checks.push({ label: "node", value: nodeRaw, status: "ok" });
166
136
  }
167
- const npm = (_c = probe.npm) !== null && _c !== void 0 ? _c : "";
137
+ const npm = probe.npm ?? "";
168
138
  checks.push(npm === ""
169
139
  ? {
170
140
  label: "npm",
@@ -173,7 +143,7 @@ export function checkImage(inspected, probe) {
173
143
  detail: "npm must be on PATH; the hosted install runs it.",
174
144
  }
175
145
  : { label: "npm", value: npm, status: "ok" });
176
- const user = (_d = probe.user) !== null && _d !== void 0 ? _d : "";
146
+ const user = probe.user ?? "";
177
147
  checks.push(user === "" || user === "root" || user === "0"
178
148
  ? { label: "user", value: user === "" ? "root" : user, status: "ok" }
179
149
  : {
@@ -182,7 +152,7 @@ export function checkImage(inspected, probe) {
182
152
  status: "warning",
183
153
  detail: "The image runs as a non-root user. The hosted state directory is mounted root-owned, so installs may fail to write it; prefer no USER instruction or USER root.",
184
154
  });
185
- const osIds = [(_e = probe.os) !== null && _e !== void 0 ? _e : "", ...((_f = probe.osLike) !== null && _f !== void 0 ? _f : "").split(/\s+/)]
155
+ const osIds = [probe.os ?? "", ...(probe.osLike ?? "").split(/\s+/)]
186
156
  .map(id => id.trim().toLowerCase())
187
157
  .filter(id => id !== "");
188
158
  const osValue = probe.os === undefined || probe.os === "" ? "unknown" : probe.os;
@@ -251,48 +221,44 @@ function shellDocker() {
251
221
  return { id, platform, sizeBytes: Number(size) };
252
222
  };
253
223
  return {
254
- inspect(image) {
255
- return __awaiter(this, void 0, void 0, function* () {
256
- const scoped = yield runDocker([
257
- "image",
258
- "inspect",
259
- "--platform",
260
- REQUIRED_PLATFORM,
261
- image,
262
- "--format",
263
- format,
264
- ]);
265
- const variant = scoped.code === 0 ? parse(scoped.stdout) : undefined;
266
- // An image with no linux/amd64 variant answers the scoped inspect
267
- // with the manifest list itself: no os/arch. Fall through so the
268
- // plain inspect names the platform it does have.
269
- if (variant !== undefined && variant.platform !== "/") {
270
- savePlatform = true;
271
- return variant;
272
- }
273
- // Older daemon, a missing image, or one with no linux/amd64 variant:
274
- // the plain inspect tells those apart (absent vs. the wrong platform).
275
- const plain = yield runDocker(["image", "inspect", image, "--format", format]);
276
- return plain.code === 0 ? parse(plain.stdout) : undefined;
277
- });
224
+ async inspect(image) {
225
+ const scoped = await runDocker([
226
+ "image",
227
+ "inspect",
228
+ "--platform",
229
+ REQUIRED_PLATFORM,
230
+ image,
231
+ "--format",
232
+ format,
233
+ ]);
234
+ const variant = scoped.code === 0 ? parse(scoped.stdout) : undefined;
235
+ // An image with no linux/amd64 variant answers the scoped inspect
236
+ // with the manifest list itself: no os/arch. Fall through so the
237
+ // plain inspect names the platform it does have.
238
+ if (variant !== undefined && variant.platform !== "/") {
239
+ savePlatform = true;
240
+ return variant;
241
+ }
242
+ // Older daemon, a missing image, or one with no linux/amd64 variant:
243
+ // the plain inspect tells those apart (absent vs. the wrong platform).
244
+ const plain = await runDocker(["image", "inspect", image, "--format", format]);
245
+ return plain.code === 0 ? parse(plain.stdout) : undefined;
278
246
  },
279
- probe(image) {
280
- return __awaiter(this, void 0, void 0, function* () {
281
- // Same platform selection as save: on an arm64 host Docker runs the
282
- // amd64 variant under emulation, which is enough for `command -v`.
283
- const run = yield runDocker([
284
- "run",
285
- "--rm",
286
- "--pull=never",
287
- ...(savePlatform ? ["--platform", REQUIRED_PLATFORM] : []),
288
- "--entrypoint",
289
- "sh",
290
- image,
291
- "-c",
292
- PROBE_SCRIPT,
293
- ]);
294
- return run.code === 0 ? parseProbe(run.stdout) : undefined;
295
- });
247
+ async probe(image) {
248
+ // Same platform selection as save: on an arm64 host Docker runs the
249
+ // amd64 variant under emulation, which is enough for `command -v`.
250
+ const run = await runDocker([
251
+ "run",
252
+ "--rm",
253
+ "--pull=never",
254
+ ...(savePlatform ? ["--platform", REQUIRED_PLATFORM] : []),
255
+ "--entrypoint",
256
+ "sh",
257
+ image,
258
+ "-c",
259
+ PROBE_SCRIPT,
260
+ ]);
261
+ return run.code === 0 ? parseProbe(run.stdout) : undefined;
296
262
  },
297
263
  save(image) {
298
264
  const child = spawn("docker", savePlatform ? ["save", "--platform", REQUIRED_PLATFORM, image] : ["save", image], { stdio: ["ignore", "pipe", "inherit"] });
@@ -307,294 +273,260 @@ function shellDocker() {
307
273
  };
308
274
  }
309
275
  function formatBytes(bytes) {
310
- if (bytes >= Math.pow(1024, 3)) {
311
- return `${(bytes / Math.pow(1024, 3)).toFixed(2)} GiB`;
276
+ if (bytes >= 1024 ** 3) {
277
+ return `${(bytes / 1024 ** 3).toFixed(2)} GiB`;
312
278
  }
313
- if (bytes >= Math.pow(1024, 2)) {
314
- return `${(bytes / Math.pow(1024, 2)).toFixed(1)} MiB`;
279
+ if (bytes >= 1024 ** 2) {
280
+ return `${(bytes / 1024 ** 2).toFixed(1)} MiB`;
315
281
  }
316
282
  return `${Math.ceil(bytes / 1024)} KiB`;
317
283
  }
318
- function saveCompressed(docker, image, path) {
319
- return __awaiter(this, void 0, void 0, function* () {
320
- const hash = createHash("sha256");
321
- yield pipeline(docker.save(image), createGzip(), function (source) {
322
- return __asyncGenerator(this, arguments, function* () {
323
- var _a, e_1, _b, _c;
324
- try {
325
- for (var _d = true, source_1 = __asyncValues(source), source_1_1; source_1_1 = yield __await(source_1.next()), _a = source_1_1.done, !_a; _d = true) {
326
- _c = source_1_1.value;
327
- _d = false;
328
- const chunk = _c;
329
- hash.update(chunk);
330
- yield yield __await(chunk);
331
- }
332
- }
333
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
334
- finally {
335
- try {
336
- if (!_d && !_a && (_b = source_1.return)) yield __await(_b.call(source_1));
337
- }
338
- finally { if (e_1) throw e_1.error; }
339
- }
340
- });
341
- }, createWriteStream(path));
342
- return {
343
- sha256: hash.digest("hex"),
344
- sizeBytes: (yield stat(path)).size,
345
- };
346
- });
284
+ async function saveCompressed(docker, image, path) {
285
+ const hash = createHash("sha256");
286
+ await pipeline(docker.save(image), createGzip(), async function* (source) {
287
+ for await (const chunk of source) {
288
+ hash.update(chunk);
289
+ yield chunk;
290
+ }
291
+ }, createWriteStream(path));
292
+ return {
293
+ sha256: hash.digest("hex"),
294
+ sizeBytes: (await stat(path)).size,
295
+ };
347
296
  }
348
- function uploadPart(fetchImpl, path, part, range) {
349
- return __awaiter(this, void 0, void 0, function* () {
350
- const handle = yield open(path, "r");
351
- try {
352
- const length = range.end - range.start;
353
- const buffer = Buffer.alloc(length);
354
- yield handle.read(buffer, 0, length, range.start);
355
- let lastError;
356
- for (let attempt = 1; attempt <= UPLOAD_ATTEMPTS; attempt++) {
357
- try {
358
- const response = yield fetchImpl(part.url, {
359
- method: "PUT",
360
- body: buffer,
361
- headers: { "content-length": String(length) },
362
- });
363
- if (!response.ok) {
364
- throw new Error(`part ${part.partNumber}: HTTP ${response.status} ${yield response.text()}`);
365
- }
366
- const etag = response.headers.get("etag");
367
- if (etag === null || etag === "") {
368
- throw new Error(`part ${part.partNumber}: S3 returned no ETag`);
369
- }
370
- return etag;
297
+ async function uploadPart(fetchImpl, path, part, range) {
298
+ const handle = await open(path, "r");
299
+ try {
300
+ const length = range.end - range.start;
301
+ const buffer = Buffer.alloc(length);
302
+ await handle.read(buffer, 0, length, range.start);
303
+ let lastError;
304
+ for (let attempt = 1; attempt <= UPLOAD_ATTEMPTS; attempt++) {
305
+ try {
306
+ const response = await fetchImpl(part.url, {
307
+ method: "PUT",
308
+ body: buffer,
309
+ headers: { "content-length": String(length) },
310
+ });
311
+ if (!response.ok) {
312
+ throw new Error(`part ${part.partNumber}: HTTP ${response.status} ${await response.text()}`);
371
313
  }
372
- catch (error) {
373
- lastError = error;
314
+ const etag = response.headers.get("etag");
315
+ if (etag === null || etag === "") {
316
+ throw new Error(`part ${part.partNumber}: S3 returned no ETag`);
374
317
  }
318
+ return etag;
319
+ }
320
+ catch (error) {
321
+ lastError = error;
375
322
  }
376
- throw lastError;
377
- }
378
- finally {
379
- yield handle.close();
380
323
  }
381
- });
324
+ throw lastError;
325
+ }
326
+ finally {
327
+ await handle.close();
328
+ }
382
329
  }
383
- function uploadParts(fetchImpl, path, sizeBytes, upload, onPart) {
384
- return __awaiter(this, void 0, void 0, function* () {
385
- const queue = [...upload.parts];
386
- const results = [];
387
- let done = 0;
388
- const worker = () => __awaiter(this, void 0, void 0, function* () {
389
- for (;;) {
390
- const part = queue.shift();
391
- if (part === undefined) {
392
- return;
393
- }
394
- const start = (part.partNumber - 1) * upload.partSizeBytes;
395
- const end = Math.min(start + upload.partSizeBytes, sizeBytes);
396
- const etag = yield uploadPart(fetchImpl, path, part, { start, end });
397
- results.push({ partNumber: part.partNumber, etag });
398
- done++;
399
- onPart(done, upload.parts.length);
330
+ async function uploadParts(fetchImpl, path, sizeBytes, upload, onPart) {
331
+ const queue = [...upload.parts];
332
+ const results = [];
333
+ let done = 0;
334
+ const worker = async () => {
335
+ for (;;) {
336
+ const part = queue.shift();
337
+ if (part === undefined) {
338
+ return;
400
339
  }
401
- });
402
- yield Promise.all(Array.from({ length: Math.min(UPLOAD_CONCURRENCY, queue.length) }, worker));
403
- return results.sort((a, b) => a.partNumber - b.partNumber);
404
- });
405
- }
406
- export function cmdImagesPush(args, options) {
407
- return __awaiter(this, void 0, void 0, function* () {
408
- var _a, _b, _c, _d;
409
- const err = (_a = options.err) !== null && _a !== void 0 ? _a : ((text) => void process.stderr.write(text));
410
- if (args.image === undefined || args.image === "") {
411
- err(`Usage: ${CLI} images push <local-image> --name <name> [--team <id>]\n`);
412
- return 1;
413
- }
414
- if (args.name === undefined || args.name === "") {
415
- err(`--name is required: ${CLI} images push ${args.image} --name <name>\n`);
416
- return 1;
417
- }
418
- const nameError = validateContainerImageName(args.name);
419
- if (nameError !== undefined) {
420
- err(`${nameError}\n`);
421
- return 1;
340
+ const start = (part.partNumber - 1) * upload.partSizeBytes;
341
+ const end = Math.min(start + upload.partSizeBytes, sizeBytes);
342
+ const etag = await uploadPart(fetchImpl, path, part, { start, end });
343
+ results.push({ partNumber: part.partNumber, etag });
344
+ done++;
345
+ onPart(done, upload.parts.length);
422
346
  }
423
- const out = (_b = options.out) !== null && _b !== void 0 ? _b : ((text) => void process.stdout.write(text));
424
- const docker = (_c = options.docker) !== null && _c !== void 0 ? _c : shellDocker();
425
- const inspected = yield docker.inspect(args.image);
426
- if (inspected === undefined) {
427
- err(`No local image named ${args.image}. Build or pull it first (\`docker image ls\` shows what is available).\n`);
428
- return 1;
429
- }
430
- // Everything the hosted install needs is knowable locally; decide it
431
- // before signing in or moving any bytes. The platform check gates the
432
- // probe: a wrong-arch container cannot run here to be probed.
433
- const checks = checkImage(inspected, inspected.platform === REQUIRED_PLATFORM ? yield docker.probe(args.image) : undefined).filter(check => inspected.platform === REQUIRED_PLATFORM || check.label === "platform");
434
- if (options.json !== true) {
435
- out(renderChecks(args.image, checks));
436
- }
437
- const failed = checks.filter(check => check.status === "failed");
438
- if (failed.length > 0) {
439
- err(`${args.image} cannot run as a hosted agent image:\n${failed
440
- .map(check => { var _a; return ` ${check.label}: ${check.value}. ${(_a = check.detail) !== null && _a !== void 0 ? _a : ""}`; })
441
- .join("\n")}\n`);
442
- return 1;
443
- }
444
- const ctx = yield prepare(options);
445
- if (typeof ctx === "number") {
446
- return ctx;
447
- }
448
- const fetchImpl = (_d = options.fetchImpl) !== null && _d !== void 0 ? _d : fetch;
449
- // `docker save` of a real image takes minutes; learn about a full team
450
- // before paying for it. The backend re-checks at begin.
451
- let listed;
452
- try {
453
- listed = yield ctx.client.listContainerImages({ teamId: ctx.teamId });
454
- }
455
- catch (error) {
456
- return renderApiError(error, ctx.err);
347
+ };
348
+ await Promise.all(Array.from({ length: Math.min(UPLOAD_CONCURRENCY, queue.length) }, worker));
349
+ return results.sort((a, b) => a.partNumber - b.partNumber);
350
+ }
351
+ export async function cmdImagesPush(args, options) {
352
+ const err = options.err ?? ((text) => void process.stderr.write(text));
353
+ if (args.image === undefined || args.image === "") {
354
+ err(`Usage: ${CLI} images push <local-image> --name <name> [--team <id>]\n`);
355
+ return 1;
356
+ }
357
+ if (args.name === undefined || args.name === "") {
358
+ err(`--name is required: ${CLI} images push ${args.image} --name <name>\n`);
359
+ return 1;
360
+ }
361
+ const nameError = validateContainerImageName(args.name);
362
+ if (nameError !== undefined) {
363
+ err(`${nameError}\n`);
364
+ return 1;
365
+ }
366
+ const out = options.out ?? ((text) => void process.stdout.write(text));
367
+ const docker = options.docker ?? shellDocker();
368
+ const inspected = await docker.inspect(args.image);
369
+ if (inspected === undefined) {
370
+ err(`No local image named ${args.image}. Build or pull it first (\`docker image ls\` shows what is available).\n`);
371
+ return 1;
372
+ }
373
+ // Everything the hosted install needs is knowable locally; decide it
374
+ // before signing in or moving any bytes. The platform check gates the
375
+ // probe: a wrong-arch container cannot run here to be probed.
376
+ const checks = checkImage(inspected, inspected.platform === REQUIRED_PLATFORM ? await docker.probe(args.image) : undefined).filter(check => inspected.platform === REQUIRED_PLATFORM || check.label === "platform");
377
+ if (options.json !== true) {
378
+ out(renderChecks(args.image, checks));
379
+ }
380
+ const failed = checks.filter(check => check.status === "failed");
381
+ if (failed.length > 0) {
382
+ err(`${args.image} cannot run as a hosted agent image:\n${failed
383
+ .map(check => ` ${check.label}: ${check.value}. ${check.detail ?? ""}`)
384
+ .join("\n")}\n`);
385
+ return 1;
386
+ }
387
+ const ctx = await prepare(options);
388
+ if (typeof ctx === "number") {
389
+ return ctx;
390
+ }
391
+ const fetchImpl = options.fetchImpl ?? fetch;
392
+ // `docker save` of a real image takes minutes; learn about a full team
393
+ // before paying for it. The backend re-checks at begin.
394
+ let listed;
395
+ try {
396
+ listed = await ctx.client.listContainerImages({ teamId: ctx.teamId });
397
+ }
398
+ catch (error) {
399
+ return renderApiError(error, ctx.err);
400
+ }
401
+ if (listed.images.length >= listed.limit &&
402
+ !listed.images.some(image => image.name === args.name)) {
403
+ ctx.err(`${listed.images.length} of ${listed.limit} images used; delete some at ${IMAGES_DASHBOARD_URL} or with \`${CLI} images rm <name>\`.\n`);
404
+ return 1;
405
+ }
406
+ const dir = await mkdtemp(join(tmpdir(), "agent-sdk-image-"));
407
+ const tarball = join(dir, "image.tar.gz");
408
+ try {
409
+ if (!ctx.json) {
410
+ ctx.out(`Saving ${args.image} (${formatBytes(inspected.sizeBytes)} uncompressed)…\n`);
457
411
  }
458
- if (listed.images.length >= listed.limit &&
459
- !listed.images.some(image => image.name === args.name)) {
460
- ctx.err(`${listed.images.length} of ${listed.limit} images used; delete some at ${IMAGES_DASHBOARD_URL} or with \`${CLI} images rm <name>\`.\n`);
412
+ const saved = await saveCompressed(docker, args.image, tarball);
413
+ if (saved.sizeBytes > MAX_CONTAINER_IMAGE_BYTES) {
414
+ err(`Compressed image is ${formatBytes(saved.sizeBytes)}; the limit is ${formatBytes(MAX_CONTAINER_IMAGE_BYTES)}.\n`);
461
415
  return 1;
462
416
  }
463
- const dir = yield mkdtemp(join(tmpdir(), "agent-sdk-image-"));
464
- const tarball = join(dir, "image.tar.gz");
465
- try {
466
- if (!ctx.json) {
467
- ctx.out(`Saving ${args.image} (${formatBytes(inspected.sizeBytes)} uncompressed)…\n`);
468
- }
469
- const saved = yield saveCompressed(docker, args.image, tarball);
470
- if (saved.sizeBytes > MAX_CONTAINER_IMAGE_BYTES) {
471
- err(`Compressed image is ${formatBytes(saved.sizeBytes)}; the limit is ${formatBytes(MAX_CONTAINER_IMAGE_BYTES)}.\n`);
472
- return 1;
473
- }
474
- const upload = yield ctx.client.beginContainerImageUpload({
475
- teamId: ctx.teamId,
476
- name: args.name,
477
- sizeBytes: saved.sizeBytes,
478
- sha256: saved.sha256,
479
- dockerImageId: inspected.id,
480
- platform: inspected.platform,
481
- });
482
- if (!ctx.json) {
483
- ctx.out(`Uploading ${formatBytes(saved.sizeBytes)} in ${upload.parts.length} part${upload.parts.length === 1 ? "" : "s"}…\n`);
484
- }
485
- const parts = yield uploadParts(fetchImpl, tarball, saved.sizeBytes, upload, (done, total) => {
486
- if (!ctx.json && total > 1) {
487
- ctx.out(` ${done}/${total}\n`);
488
- }
489
- });
490
- const image = yield ctx.client.finalizeContainerImage({
491
- teamId: ctx.teamId,
492
- name: args.name,
493
- uploadId: upload.uploadId,
494
- parts,
495
- });
496
- if (ctx.json) {
497
- ctx.out(`${JSON.stringify({ image }, null, 2)}\n`);
498
- }
499
- else {
500
- ctx.out(`Pushed ${image.name} (${formatBytes(image.sizeBytes)}, sha256 ${saved.sha256.slice(0, 12)}).\n` +
501
- `Use it from a persistent agent: defineAgent({ persistent: true, hosting: { image: "${image.name}" } }).\n`);
502
- }
503
- return 0;
417
+ const upload = await ctx.client.beginContainerImageUpload({
418
+ teamId: ctx.teamId,
419
+ name: args.name,
420
+ sizeBytes: saved.sizeBytes,
421
+ sha256: saved.sha256,
422
+ dockerImageId: inspected.id,
423
+ platform: inspected.platform,
424
+ });
425
+ if (!ctx.json) {
426
+ ctx.out(`Uploading ${formatBytes(saved.sizeBytes)} in ${upload.parts.length} part${upload.parts.length === 1 ? "" : "s"}…\n`);
504
427
  }
505
- catch (error) {
506
- if (error instanceof DeployApiError) {
507
- return renderApiError(error, ctx.err);
428
+ const parts = await uploadParts(fetchImpl, tarball, saved.sizeBytes, upload, (done, total) => {
429
+ if (!ctx.json && total > 1) {
430
+ ctx.out(` ${done}/${total}\n`);
508
431
  }
509
- ctx.err(`Push failed: ${error instanceof Error ? error.message : String(error)}\nRun the same command again to retry.\n`);
510
- return 1;
511
- }
512
- finally {
513
- yield rm(dir, { recursive: true, force: true });
514
- }
515
- });
516
- }
517
- export function cmdImagesList(options) {
518
- return __awaiter(this, void 0, void 0, function* () {
519
- const ctx = yield prepare(options);
520
- if (typeof ctx === "number") {
521
- return ctx;
432
+ });
433
+ const image = await ctx.client.finalizeContainerImage({
434
+ teamId: ctx.teamId,
435
+ name: args.name,
436
+ uploadId: upload.uploadId,
437
+ parts,
438
+ });
439
+ if (ctx.json) {
440
+ ctx.out(`${JSON.stringify({ image }, null, 2)}\n`);
522
441
  }
523
- let listed;
524
- try {
525
- listed = yield ctx.client.listContainerImages({ teamId: ctx.teamId });
442
+ else {
443
+ ctx.out(`Pushed ${image.name} (${formatBytes(image.sizeBytes)}, sha256 ${saved.sha256.slice(0, 12)}).\n` +
444
+ `Use it from a persistent agent: defineAgent({ persistent: true, hosting: { image: "${image.name}" } }).\n`);
526
445
  }
527
- catch (error) {
446
+ return 0;
447
+ }
448
+ catch (error) {
449
+ if (error instanceof DeployApiError) {
528
450
  return renderApiError(error, ctx.err);
529
451
  }
530
- if (ctx.json) {
531
- ctx.out(`${JSON.stringify(listed, null, 2)}\n`);
532
- return 0;
533
- }
534
- if (listed.images.length === 0) {
535
- ctx.out(`No images pushed yet. Push one with \`${CLI} images push <local-image> --name <name>\`.\n`);
536
- return 0;
537
- }
538
- ctx.out(`${renderTable(["NAME", "SIZE", "PLATFORM", "SHA256", "PUSHED"], listed.images.map(image => { var _a; var _b, _c; return [
539
- image.name,
540
- formatBytes(image.sizeBytes),
541
- (_b = image.platform) !== null && _b !== void 0 ? _b : "",
542
- (_c = (_a = image.sha256) === null || _a === void 0 ? void 0 : _a.slice(0, 12)) !== null && _c !== void 0 ? _c : "",
543
- image.pushedAt,
544
- ]; }))}\n${listed.images.length} of ${listed.limit} images.\n`);
452
+ ctx.err(`Push failed: ${error instanceof Error ? error.message : String(error)}\nRun the same command again to retry.\n`);
453
+ return 1;
454
+ }
455
+ finally {
456
+ await rm(dir, { recursive: true, force: true });
457
+ }
458
+ }
459
+ export async function cmdImagesList(options) {
460
+ const ctx = await prepare(options);
461
+ if (typeof ctx === "number") {
462
+ return ctx;
463
+ }
464
+ let listed;
465
+ try {
466
+ listed = await ctx.client.listContainerImages({ teamId: ctx.teamId });
467
+ }
468
+ catch (error) {
469
+ return renderApiError(error, ctx.err);
470
+ }
471
+ if (ctx.json) {
472
+ ctx.out(`${JSON.stringify(listed, null, 2)}\n`);
545
473
  return 0;
546
- });
474
+ }
475
+ if (listed.images.length === 0) {
476
+ ctx.out(`No images pushed yet. Push one with \`${CLI} images push <local-image> --name <name>\`.\n`);
477
+ return 0;
478
+ }
479
+ ctx.out(`${renderTable(["NAME", "SIZE", "PLATFORM", "SHA256", "PUSHED"], listed.images.map(image => [
480
+ image.name,
481
+ formatBytes(image.sizeBytes),
482
+ image.platform ?? "",
483
+ image.sha256?.slice(0, 12) ?? "",
484
+ image.pushedAt,
485
+ ]))}\n${listed.images.length} of ${listed.limit} images.\n`);
486
+ return 0;
547
487
  }
548
- export function cmdImagesRm(name, options) {
549
- return __awaiter(this, void 0, void 0, function* () {
550
- var _a;
551
- if (name === undefined || name === "") {
552
- ((_a = options.err) !== null && _a !== void 0 ? _a : ((t) => void process.stderr.write(t)))(`Usage: ${CLI} images rm <name> [--team <id>]\n`);
488
+ export async function cmdImagesRm(name, options) {
489
+ if (name === undefined || name === "") {
490
+ (options.err ?? ((t) => void process.stderr.write(t)))(`Usage: ${CLI} images rm <name> [--team <id>]\n`);
491
+ return 1;
492
+ }
493
+ const ctx = await prepare(options);
494
+ if (typeof ctx === "number") {
495
+ return ctx;
496
+ }
497
+ try {
498
+ await ctx.client.deleteContainerImage({ teamId: ctx.teamId, name });
499
+ }
500
+ catch (error) {
501
+ if (error instanceof DeployApiError && error.status === 404) {
502
+ ctx.err(`No image named ${name} — check \`${CLI} images list\`.\n`);
553
503
  return 1;
554
504
  }
555
- const ctx = yield prepare(options);
556
- if (typeof ctx === "number") {
557
- return ctx;
558
- }
559
- try {
560
- yield ctx.client.deleteContainerImage({ teamId: ctx.teamId, name });
561
- }
562
- catch (error) {
563
- if (error instanceof DeployApiError && error.status === 404) {
564
- ctx.err(`No image named ${name} — check \`${CLI} images list\`.\n`);
565
- return 1;
566
- }
567
- return renderApiError(error, ctx.err);
568
- }
569
- if (ctx.json) {
570
- ctx.out(`${JSON.stringify({ removed: name }, null, 2)}\n`);
571
- }
572
- else {
573
- ctx.out(`Removed image ${name}.\n`);
574
- }
575
- return 0;
576
- });
505
+ return renderApiError(error, ctx.err);
506
+ }
507
+ if (ctx.json) {
508
+ ctx.out(`${JSON.stringify({ removed: name }, null, 2)}\n`);
509
+ }
510
+ else {
511
+ ctx.out(`Removed image ${name}.\n`);
512
+ }
513
+ return 0;
577
514
  }
578
515
  /** Test seam: a `DockerImageSource` over in-memory bytes. */
579
516
  export function memoryDockerImageSource(images) {
580
517
  return {
581
- inspect(image) {
582
- return __awaiter(this, void 0, void 0, function* () {
583
- const found = images[image];
584
- return found === undefined
585
- ? undefined
586
- : {
587
- id: found.id,
588
- platform: found.platform,
589
- sizeBytes: found.tar.length,
590
- };
591
- });
518
+ async inspect(image) {
519
+ const found = images[image];
520
+ return found === undefined
521
+ ? undefined
522
+ : {
523
+ id: found.id,
524
+ platform: found.platform,
525
+ sizeBytes: found.tar.length,
526
+ };
592
527
  },
593
- probe(image) {
594
- return __awaiter(this, void 0, void 0, function* () {
595
- var _a;
596
- return (_a = images[image]) === null || _a === void 0 ? void 0 : _a.probe;
597
- });
528
+ async probe(image) {
529
+ return images[image]?.probe;
598
530
  },
599
531
  save(image) {
600
532
  const found = images[image];