@cursor/bdk 0.2.9 → 0.2.11

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 (569) hide show
  1. package/dist/artifacts.js +3 -5
  2. package/dist/bin/agent-serve.js +803 -812
  3. package/dist/channels/bitbucket/api.js +305 -321
  4. package/dist/channels/bitbucket/binding.js +97 -61
  5. package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
  6. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
  7. package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
  8. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
  9. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  10. package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
  11. package/dist/channels/bitbucket/checks.js +9 -21
  12. package/dist/channels/bitbucket/cursor-account.js +1 -1
  13. package/dist/channels/bitbucket/defaults.js +14 -4
  14. package/dist/channels/bitbucket/events.js +1 -2
  15. package/dist/channels/bitbucket/index.d.ts +6 -2
  16. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  17. package/dist/channels/bitbucket/index.js +6 -2
  18. package/dist/channels/bitbucket/replay.js +80 -56
  19. package/dist/channels/bitbucket/state.js +16 -7
  20. package/dist/channels/bitbucket/types.d.ts +11 -2
  21. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  22. package/dist/channels/checks.js +18 -28
  23. package/dist/channels/deployments/deployments-channel.js +26 -34
  24. package/dist/channels/github/api.js +216 -210
  25. package/dist/channels/github/auth.d.ts +5 -1
  26. package/dist/channels/github/auth.d.ts.map +1 -1
  27. package/dist/channels/github/auth.js +157 -174
  28. package/dist/channels/github/binding.js +48 -39
  29. package/dist/channels/github/checks.js +9 -14
  30. package/dist/channels/github/cursor-account.js +6 -11
  31. package/dist/channels/github/defaults.js +105 -130
  32. package/dist/channels/github/forward.js +13 -17
  33. package/dist/channels/github/github-channel.d.ts +43 -2
  34. package/dist/channels/github/github-channel.d.ts.map +1 -1
  35. package/dist/channels/github/github-channel.js +1228 -958
  36. package/dist/channels/github/progress.js +145 -146
  37. package/dist/channels/github/replay.js +30 -39
  38. package/dist/channels/github/state.js +40 -16
  39. package/dist/channels/github/types.d.ts +30 -6
  40. package/dist/channels/github/types.d.ts.map +1 -1
  41. package/dist/channels/gitlab/api.js +100 -114
  42. package/dist/channels/gitlab/binding.js +52 -33
  43. package/dist/channels/gitlab/checks.js +28 -29
  44. package/dist/channels/gitlab/cursor-account.js +1 -1
  45. package/dist/channels/gitlab/defaults.js +9 -3
  46. package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
  47. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
  48. package/dist/channels/gitlab/gitlab-channel.js +95 -42
  49. package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
  50. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
  51. package/dist/channels/gitlab/gitlab-webhook.js +282 -249
  52. package/dist/channels/gitlab/index.d.ts +6 -2
  53. package/dist/channels/gitlab/index.d.ts.map +1 -1
  54. package/dist/channels/gitlab/index.js +6 -2
  55. package/dist/channels/gitlab/replay.js +50 -27
  56. package/dist/channels/gitlab/state.js +14 -6
  57. package/dist/channels/gitlab/types.d.ts +13 -2
  58. package/dist/channels/gitlab/types.d.ts.map +1 -1
  59. package/dist/channels/origin/api.js +100 -116
  60. package/dist/channels/origin/binding.js +15 -16
  61. package/dist/channels/origin/checks.js +30 -28
  62. package/dist/channels/origin/defaults.js +50 -65
  63. package/dist/channels/origin/origin-channel.js +266 -272
  64. package/dist/channels/origin/origin-webhook.js +70 -88
  65. package/dist/channels/origin/reactions.js +9 -21
  66. package/dist/channels/origin/state.js +13 -5
  67. package/dist/channels/slack/agentic-delivery.js +426 -478
  68. package/dist/channels/slack/agentic-posted.js +9 -10
  69. package/dist/channels/slack/agentic-signals.js +2 -3
  70. package/dist/channels/slack/api.js +417 -427
  71. package/dist/channels/slack/approvals.js +1 -1
  72. package/dist/channels/slack/assistant.js +37 -47
  73. package/dist/channels/slack/attachments.js +188 -206
  74. package/dist/channels/slack/auth.js +8 -6
  75. package/dist/channels/slack/bot-mentions.js +31 -45
  76. package/dist/channels/slack/channel-watch.js +42 -48
  77. package/dist/channels/slack/cli-project.js +112 -137
  78. package/dist/channels/slack/code-fences.js +3 -5
  79. package/dist/channels/slack/constants.js +2 -2
  80. package/dist/channels/slack/credentials.js +23 -38
  81. package/dist/channels/slack/defaults.js +292 -331
  82. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  83. package/dist/channels/slack/dispatch.js +533 -460
  84. package/dist/channels/slack/doctor.js +200 -214
  85. package/dist/channels/slack/eval-directive.js +79 -96
  86. package/dist/channels/slack/event-id-dedupe.js +1 -1
  87. package/dist/channels/slack/external-policy.js +26 -39
  88. package/dist/channels/slack/footer.js +28 -41
  89. package/dist/channels/slack/inbound.d.ts +1 -0
  90. package/dist/channels/slack/inbound.d.ts.map +1 -1
  91. package/dist/channels/slack/inbound.js +50 -31
  92. package/dist/channels/slack/init.d.ts +1 -5
  93. package/dist/channels/slack/init.d.ts.map +1 -1
  94. package/dist/channels/slack/init.js +42 -59
  95. package/dist/channels/slack/interactive.d.ts +9 -3
  96. package/dist/channels/slack/interactive.d.ts.map +1 -1
  97. package/dist/channels/slack/interactive.js +160 -162
  98. package/dist/channels/slack/links.js +1 -2
  99. package/dist/channels/slack/live-delivery.js +172 -190
  100. package/dist/channels/slack/manifest.d.ts.map +1 -1
  101. package/dist/channels/slack/manifest.js +44 -23
  102. package/dist/channels/slack/message-body.js +2 -2
  103. package/dist/channels/slack/nudge-carrier.js +30 -42
  104. package/dist/channels/slack/nudge-store.js +164 -191
  105. package/dist/channels/slack/paint-start.js +66 -81
  106. package/dist/channels/slack/placeholder.js +123 -152
  107. package/dist/channels/slack/pr-ref.js +1 -1
  108. package/dist/channels/slack/progress-delivery.js +65 -78
  109. package/dist/channels/slack/reasoning-card.js +36 -49
  110. package/dist/channels/slack/recording-sink.js +12 -24
  111. package/dist/channels/slack/reply-options.js +7 -12
  112. package/dist/channels/slack/self-identity.js +27 -35
  113. package/dist/channels/slack/sender-name.d.ts +12 -3
  114. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  115. package/dist/channels/slack/sender-name.js +57 -61
  116. package/dist/channels/slack/setup.js +2 -4
  117. package/dist/channels/slack/slack-channel.d.ts +6 -4
  118. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  119. package/dist/channels/slack/slack-channel.js +441 -308
  120. package/dist/channels/slack/socket-mode.js +38 -52
  121. package/dist/channels/slack/thread-context.js +143 -160
  122. package/dist/channels/slack/tool-approval-events.js +149 -166
  123. package/dist/channels/slack/tool-cards.js +6 -11
  124. package/dist/channels/slack/tool-chip.js +1 -2
  125. package/dist/channels/slack/types.d.ts +15 -17
  126. package/dist/channels/slack/types.d.ts.map +1 -1
  127. package/dist/channels/slack/upload.js +84 -97
  128. package/dist/channels/slack/user-info.js +27 -41
  129. package/dist/channels.js +9 -20
  130. package/dist/dashboard-session-url.js +3 -4
  131. package/dist/docs/404.html +2 -2
  132. package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
  133. package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
  134. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
  135. package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
  136. package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
  137. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
  138. package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
  139. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
  140. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
  141. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
  142. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
  143. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
  144. package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
  145. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
  146. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
  147. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
  148. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
  149. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
  150. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
  151. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
  152. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
  153. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
  154. package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
  155. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
  156. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
  157. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
  158. package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
  159. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
  160. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
  161. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
  162. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
  163. package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
  164. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
  165. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
  166. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
  167. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
  168. package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
  169. package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
  170. package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
  171. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
  172. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
  173. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
  174. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
  175. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
  176. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
  177. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
  178. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
  179. package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
  180. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
  181. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
  182. package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
  183. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
  184. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
  185. package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
  186. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
  187. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
  188. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
  189. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
  190. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
  191. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
  192. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
  193. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
  194. package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
  195. package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
  196. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  197. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  198. package/dist/docs/building-with-agents.html +37 -37
  199. package/dist/docs/building-with-agents.md +2 -0
  200. package/dist/docs/deployment.html +38 -38
  201. package/dist/docs/deployment.md +7 -0
  202. package/dist/docs/evals.html +36 -36
  203. package/dist/docs/guides/agent-to-agent.html +35 -35
  204. package/dist/docs/guides/bitbucket.html +38 -38
  205. package/dist/docs/guides/bitbucket.md +9 -1
  206. package/dist/docs/guides/cloud-agents.html +35 -35
  207. package/dist/docs/guides/convert-automation.html +35 -35
  208. package/dist/docs/guides/github.html +39 -39
  209. package/dist/docs/guides/github.md +20 -4
  210. package/dist/docs/guides/gitlab.html +38 -38
  211. package/dist/docs/guides/gitlab.md +9 -1
  212. package/dist/docs/guides/grokbot-agents.html +35 -35
  213. package/dist/docs/guides/hooks.html +35 -35
  214. package/dist/docs/guides/improve.html +35 -35
  215. package/dist/docs/guides/jev.html +35 -35
  216. package/dist/docs/guides/mcp-oauth.html +35 -35
  217. package/dist/docs/guides/migrate.html +66 -0
  218. package/dist/docs/guides/migrate.md +122 -0
  219. package/dist/docs/guides/opentelemetry.html +35 -35
  220. package/dist/docs/guides/slack.html +35 -35
  221. package/dist/docs/guides/webhooks.html +35 -35
  222. package/dist/docs/hashmap.json +1 -1
  223. package/dist/docs/hillclimbing.html +35 -35
  224. package/dist/docs/index.html +35 -35
  225. package/dist/docs/llms-full.txt +214 -6
  226. package/dist/docs/llms.txt +1 -0
  227. package/dist/docs/quickstart.html +35 -35
  228. package/dist/docs/reference/agent-config.html +35 -35
  229. package/dist/docs/reference/artifacts.html +35 -35
  230. package/dist/docs/reference/channels.html +35 -35
  231. package/dist/docs/reference/cli.html +39 -38
  232. package/dist/docs/reference/cli.md +39 -0
  233. package/dist/docs/reference/connections.html +35 -35
  234. package/dist/docs/reference/evals.html +35 -35
  235. package/dist/docs/reference/extensions.html +35 -35
  236. package/dist/docs/reference/hooks.html +35 -35
  237. package/dist/docs/reference/http-api.html +35 -35
  238. package/dist/docs/reference/instructions.html +35 -35
  239. package/dist/docs/reference/playground.html +35 -35
  240. package/dist/docs/reference/project-layout.html +35 -35
  241. package/dist/docs/reference/prompt.html +35 -35
  242. package/dist/docs/reference/schedules.html +35 -35
  243. package/dist/docs/reference/sessions.html +35 -35
  244. package/dist/docs/reference/skills.html +35 -35
  245. package/dist/docs/reference/subagents.html +35 -35
  246. package/dist/docs/reference/tools.html +35 -35
  247. package/dist/docs/templates/agentic-owners.html +35 -35
  248. package/dist/docs/templates/grokbot-agents.html +35 -35
  249. package/dist/docs/templates/security-reviewer.html +35 -35
  250. package/dist/docs/templates/thermo-quality-review.html +35 -35
  251. package/dist/docs/templates/thermo-review.html +35 -35
  252. package/dist/docs/templates/triage.html +35 -35
  253. package/dist/docs/troubleshooting.html +36 -36
  254. package/dist/docs/troubleshooting.md +1 -0
  255. package/dist/evals/assertions.js +20 -34
  256. package/dist/evals/expect.js +3 -6
  257. package/dist/evals/judge.js +5 -8
  258. package/dist/evals/loaders.js +45 -62
  259. package/dist/evals/matchers.js +2 -3
  260. package/dist/evals/reporters.js +43 -67
  261. package/dist/evals/results.js +1 -1
  262. package/dist/evals/run-facts.js +5 -6
  263. package/dist/evals.js +27 -15
  264. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  265. package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
  266. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  267. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  268. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  269. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  270. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  271. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  272. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  273. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  274. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  275. package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
  276. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  277. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  278. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  279. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  280. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  281. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  282. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  283. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  284. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  285. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  286. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  287. package/dist/extensions/jev/extension.js +3 -3
  288. package/dist/extensions/jev/lib/evaluate.js +43 -60
  289. package/dist/extensions/jev/tools/evaluate.js +6 -17
  290. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  291. package/dist/extensions.js +3 -5
  292. package/dist/files-backends/cursor-hosted.js +504 -523
  293. package/dist/files-backends/local-fs.js +72 -134
  294. package/dist/files.js +3 -3
  295. package/dist/filesystem.js +562 -861
  296. package/dist/index.js +16 -35
  297. package/dist/internal/advertise-tools.js +74 -86
  298. package/dist/internal/artifacts-store.js +298 -361
  299. package/dist/internal/as-of.js +2 -4
  300. package/dist/internal/authored-alias-hooks.js +6 -4
  301. package/dist/internal/authored-loaders.js +37 -52
  302. package/dist/internal/bounded-int.js +1 -2
  303. package/dist/internal/bounded.js +13 -24
  304. package/dist/internal/brand.js +1 -1
  305. package/dist/internal/browser-origin-guard.js +4 -4
  306. package/dist/internal/builtin-tools/artifacts.js +15 -27
  307. package/dist/internal/builtin-tools/index.js +2 -3
  308. package/dist/internal/builtin-tools/reminders.js +33 -52
  309. package/dist/internal/channel-architecture.d.ts +21 -0
  310. package/dist/internal/channel-architecture.d.ts.map +1 -0
  311. package/dist/internal/channel-architecture.js +41 -0
  312. package/dist/internal/channel-dispatch.js +3 -4
  313. package/dist/internal/channel-route-dispatch.js +40 -51
  314. package/dist/internal/channel-state.js +1 -1
  315. package/dist/internal/chat-client.js +319 -340
  316. package/dist/internal/cli-ax.js +1262 -1294
  317. package/dist/internal/cli-bitbucket.js +244 -272
  318. package/dist/internal/cli-convert-automation.js +137 -151
  319. package/dist/internal/cli-cursor.js +126 -147
  320. package/dist/internal/cli-deploy.d.ts.map +1 -1
  321. package/dist/internal/cli-deploy.js +1457 -1507
  322. package/dist/internal/cli-docs.js +130 -147
  323. package/dist/internal/cli-github.js +437 -476
  324. package/dist/internal/cli-gitlab.js +259 -288
  325. package/dist/internal/cli-images.js +266 -334
  326. package/dist/internal/cli-manifest.js +25 -37
  327. package/dist/internal/cli-mcp-oauth.js +228 -247
  328. package/dist/internal/cli-mcp.js +358 -383
  329. package/dist/internal/cli-migrate.js +73 -90
  330. package/dist/internal/cli-skills.js +35 -47
  331. package/dist/internal/cli-slack-manual.d.ts +0 -1
  332. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  333. package/dist/internal/cli-slack-manual.js +175 -204
  334. package/dist/internal/cli-slack.d.ts +1 -1
  335. package/dist/internal/cli-slack.d.ts.map +1 -1
  336. package/dist/internal/cli-slack.js +416 -456
  337. package/dist/internal/cloud-merge.js +7 -3
  338. package/dist/internal/cloud-turn-cost.js +8 -1
  339. package/dist/internal/connection-env.js +5 -6
  340. package/dist/internal/continuation-channel.js +10 -7
  341. package/dist/internal/continuation-identity.js +85 -67
  342. package/dist/internal/conversation-mirror.js +112 -131
  343. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  344. package/dist/internal/cron.js +3 -3
  345. package/dist/internal/cursor/account-mcp.js +147 -146
  346. package/dist/internal/cursor/backend-client.js +290 -320
  347. package/dist/internal/cursor/bound-secret-file.js +3 -3
  348. package/dist/internal/cursor/credentials.js +127 -142
  349. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  350. package/dist/internal/cursor/github-credentials.js +91 -108
  351. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  352. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  353. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  354. package/dist/internal/cursor/session-token.js +36 -48
  355. package/dist/internal/cursor/store-api-client.js +77 -92
  356. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  357. package/dist/internal/cursor-agent-template.js +1 -1
  358. package/dist/internal/cursor-deployment-relay.js +33 -54
  359. package/dist/internal/cursor-event-relay.js +65 -59
  360. package/dist/internal/cursor-relay-core.js +258 -286
  361. package/dist/internal/deferred-channel-session.js +3 -12
  362. package/dist/internal/deploy-client.d.ts.map +1 -1
  363. package/dist/internal/deploy-client.js +413 -475
  364. package/dist/internal/deploy-manifest.d.ts +17 -0
  365. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  366. package/dist/internal/deploy-manifest.js +71 -21
  367. package/dist/internal/deploy-source.js +31 -43
  368. package/dist/internal/discovery/agent-config.js +45 -59
  369. package/dist/internal/discovery/agent.js +276 -280
  370. package/dist/internal/discovery/channels.js +67 -80
  371. package/dist/internal/discovery/connections.js +286 -296
  372. package/dist/internal/discovery/context.js +2 -13
  373. package/dist/internal/discovery/cursor-plugin.js +223 -259
  374. package/dist/internal/discovery/extension-overlay.js +104 -131
  375. package/dist/internal/discovery/extensions.js +276 -281
  376. package/dist/internal/discovery/fs.js +56 -79
  377. package/dist/internal/discovery/hooks.js +39 -50
  378. package/dist/internal/discovery/info.js +17 -19
  379. package/dist/internal/discovery/instructions.js +58 -71
  380. package/dist/internal/discovery/modules.js +45 -58
  381. package/dist/internal/discovery/project.d.ts.map +1 -1
  382. package/dist/internal/discovery/project.js +192 -215
  383. package/dist/internal/discovery/reminders.js +41 -52
  384. package/dist/internal/discovery/runtime.js +1 -1
  385. package/dist/internal/discovery/schedules.js +71 -82
  386. package/dist/internal/discovery/seed-files.js +21 -32
  387. package/dist/internal/discovery/services.js +74 -96
  388. package/dist/internal/discovery/skills.js +77 -94
  389. package/dist/internal/discovery/subagent.js +79 -95
  390. package/dist/internal/discovery/tools.js +12 -23
  391. package/dist/internal/distribution.js +2 -2
  392. package/dist/internal/docs-site.js +30 -45
  393. package/dist/internal/duration.js +1 -1
  394. package/dist/internal/env-file.js +48 -64
  395. package/dist/internal/eval-judge-model.js +17 -28
  396. package/dist/internal/eval-run-store.js +265 -254
  397. package/dist/internal/eval-runner.d.ts +8 -0
  398. package/dist/internal/eval-runner.d.ts.map +1 -1
  399. package/dist/internal/eval-runner.js +406 -408
  400. package/dist/internal/eval-transport.d.ts +24 -0
  401. package/dist/internal/eval-transport.d.ts.map +1 -0
  402. package/dist/internal/eval-transport.js +22 -0
  403. package/dist/internal/evals-client.js +242 -246
  404. package/dist/internal/event-log.js +72 -120
  405. package/dist/internal/event-mapper.js +30 -31
  406. package/dist/internal/factory-resource-channel.js +16 -30
  407. package/dist/internal/filesystem/errors.js +6 -6
  408. package/dist/internal/filesystem/format.js +10 -13
  409. package/dist/internal/filesystem/merge.js +52 -94
  410. package/dist/internal/filesystem/nearest.js +15 -27
  411. package/dist/internal/filesystem/scratch.js +65 -85
  412. package/dist/internal/filesystem/tools.js +221 -241
  413. package/dist/internal/filesystem/walk.js +76 -143
  414. package/dist/internal/framework-file-storage.js +118 -139
  415. package/dist/internal/framework-storage-selection.js +21 -13
  416. package/dist/internal/frontmatter.js +4 -6
  417. package/dist/internal/github-fanout.js +50 -64
  418. package/dist/internal/guest-network.js +96 -109
  419. package/dist/internal/handleAgentServeTrigger.js +121 -126
  420. package/dist/internal/host-files.js +73 -88
  421. package/dist/internal/host-kv.js +21 -36
  422. package/dist/internal/host-otel.js +22 -19
  423. package/dist/internal/host-platforms.js +49 -63
  424. package/dist/internal/hosted-catch-protocol.d.ts +1 -0
  425. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  426. package/dist/internal/hosted-catch-protocol.js +1 -0
  427. package/dist/internal/hosted-catch.d.ts +5 -3
  428. package/dist/internal/hosted-catch.d.ts.map +1 -1
  429. package/dist/internal/hosted-catch.js +84 -93
  430. package/dist/internal/hosted-delivery-protocol.js +32 -8
  431. package/dist/internal/hosted-delivery.d.ts +13 -1
  432. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  433. package/dist/internal/hosted-delivery.js +614 -584
  434. package/dist/internal/hosted-eval-cases.d.ts +21 -0
  435. package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
  436. package/dist/internal/hosted-eval-cases.js +162 -0
  437. package/dist/internal/hosted-execution-diag.js +38 -30
  438. package/dist/internal/hosted-execution-flush.js +75 -66
  439. package/dist/internal/hosted-execution-latency.js +16 -8
  440. package/dist/internal/hosted-managed-automation.js +2 -2
  441. package/dist/internal/hosting.js +2 -3
  442. package/dist/internal/http-channel-define.js +4 -1
  443. package/dist/internal/http-channel.js +101 -112
  444. package/dist/internal/http-control-plane-session.d.ts +18 -1
  445. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  446. package/dist/internal/http-control-plane-session.js +66 -32
  447. package/dist/internal/incoming-headers-to-fetch.js +1 -2
  448. package/dist/internal/init-interview.js +73 -93
  449. package/dist/internal/init-project.js +182 -214
  450. package/dist/internal/init-scaffold.js +10 -21
  451. package/dist/internal/inline-stdio-mcp.js +80 -86
  452. package/dist/internal/install-cursor-skills.js +231 -273
  453. package/dist/internal/legacy-command-guard.js +18 -31
  454. package/dist/internal/listen-port.js +34 -45
  455. package/dist/internal/local-control-plane.js +293 -307
  456. package/dist/internal/local-env.js +1 -1
  457. package/dist/internal/local-ingress.js +15 -9
  458. package/dist/internal/log-ring.js +1 -2
  459. package/dist/internal/logs-client.js +207 -227
  460. package/dist/internal/map-pool.js +24 -38
  461. package/dist/internal/mcp-endpoint.js +204 -180
  462. package/dist/internal/mcp-host.js +165 -168
  463. package/dist/internal/mcp-oauth-on-demand.js +170 -207
  464. package/dist/internal/mcp-oauth-persist.js +15 -29
  465. package/dist/internal/mcp-oauth.js +209 -266
  466. package/dist/internal/named-webhook-secret.d.ts +39 -0
  467. package/dist/internal/named-webhook-secret.d.ts.map +1 -0
  468. package/dist/internal/named-webhook-secret.js +47 -0
  469. package/dist/internal/open-browser.js +2 -3
  470. package/dist/internal/otel/collector.js +104 -68
  471. package/dist/internal/otel/config.js +24 -37
  472. package/dist/internal/otel/http.js +5 -7
  473. package/dist/internal/otel/mcp.js +3 -12
  474. package/dist/internal/otel/runtime.js +69 -83
  475. package/dist/internal/package-inline-stdio.js +57 -65
  476. package/dist/internal/peer-connections.js +9 -5
  477. package/dist/internal/platform-schedule-sync.js +39 -54
  478. package/dist/internal/platform-timers.js +176 -210
  479. package/dist/internal/playground/static.js +1 -2
  480. package/dist/internal/playground/toolchain.js +37 -53
  481. package/dist/internal/playground-proxy.js +230 -270
  482. package/dist/internal/process-memory-telemetry.js +33 -51
  483. package/dist/internal/prompt-context.js +3 -6
  484. package/dist/internal/reminder-control-plane-protocol.js +46 -13
  485. package/dist/internal/reminder-runner.js +770 -785
  486. package/dist/internal/reminder-schedule.js +1 -1
  487. package/dist/internal/reminder-store.js +57 -78
  488. package/dist/internal/request-error-status.js +1 -3
  489. package/dist/internal/request-headers.js +2 -2
  490. package/dist/internal/resolve-prod-target.js +119 -135
  491. package/dist/internal/resolved-connections.js +16 -6
  492. package/dist/internal/run-client.js +221 -229
  493. package/dist/internal/runtime-dispatch-runner.js +18 -43
  494. package/dist/internal/schedule-runner.js +49 -58
  495. package/dist/internal/scm/pr-url.js +7 -6
  496. package/dist/internal/sdk-runner.js +388 -363
  497. package/dist/internal/serve-restart.js +26 -39
  498. package/dist/internal/server.d.ts.map +1 -1
  499. package/dist/internal/server.js +1283 -1244
  500. package/dist/internal/session-cost.js +7 -9
  501. package/dist/internal/session-engine.d.ts +3 -1
  502. package/dist/internal/session-engine.d.ts.map +1 -1
  503. package/dist/internal/session-engine.js +2801 -2777
  504. package/dist/internal/session-links.js +12 -16
  505. package/dist/internal/session-run-log.js +134 -82
  506. package/dist/internal/session-store.js +133 -164
  507. package/dist/internal/sessions-client.js +97 -118
  508. package/dist/internal/skill-catalog.js +18 -23
  509. package/dist/internal/skills-sync.js +16 -30
  510. package/dist/internal/slack-provision-client.js +90 -116
  511. package/dist/internal/start-log-store.js +48 -67
  512. package/dist/internal/steering.js +1 -2
  513. package/dist/internal/storage-coordinator.js +160 -196
  514. package/dist/internal/store-mirror.js +16 -30
  515. package/dist/internal/stream-progress.js +6 -8
  516. package/dist/internal/terminal-style.js +3 -4
  517. package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
  518. package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
  519. package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
  520. package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
  521. package/dist/internal/tool-catalog.js +11 -5
  522. package/dist/internal/tool-result.js +1 -1
  523. package/dist/internal/trajectory.js +19 -22
  524. package/dist/internal/turn-cost.js +52 -62
  525. package/dist/internal/turn-governor.js +5 -8
  526. package/dist/internal/turn-lease-store.js +85 -105
  527. package/dist/internal/turn-outbox.js +28 -43
  528. package/dist/internal/update-check.js +231 -259
  529. package/dist/internal/v2-hosting.js +1 -2
  530. package/dist/internal/workspace-sync.js +25 -41
  531. package/dist/internal/workspace.js +111 -139
  532. package/dist/kv/memory-kv.js +27 -51
  533. package/dist/memory.js +106 -148
  534. package/dist/otel.js +5 -8
  535. package/dist/playground/assets/{index-Co4CUVTQ.js → index-Be0-1hw2.js} +45 -45
  536. package/dist/playground/assets/index-Clz6uHj9.css +1 -0
  537. package/dist/playground/index.html +2 -2
  538. package/dist/prompt.js +2 -4
  539. package/dist/storage-backends/cursor-hosted-v2.js +53 -83
  540. package/dist/storage-backends/cursor-hosted.js +105 -145
  541. package/dist/storage-backends/file-kv.js +100 -128
  542. package/dist/storage-protocol.js +3 -5
  543. package/dist/storage.js +17 -26
  544. package/dist/types.d.ts +68 -0
  545. package/dist/types.d.ts.map +1 -1
  546. package/dist/types.js +20 -18
  547. package/docs/building-with-agents.md +2 -0
  548. package/docs/deployment.md +7 -0
  549. package/docs/guides/bitbucket.md +9 -1
  550. package/docs/guides/github.md +20 -4
  551. package/docs/guides/gitlab.md +9 -1
  552. package/docs/guides/migrate.md +127 -0
  553. package/docs/reference/cli.md +39 -0
  554. package/docs/troubleshooting.md +1 -0
  555. package/package.json +1 -1
  556. package/skills/debug/SKILL.md +1 -0
  557. package/skills/github/SKILL.md +23 -0
  558. package/skills/migrate-v2/SKILL.md +51 -10
  559. package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
  560. package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
  561. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
  562. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
  563. package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
  564. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
  565. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
  566. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
  567. package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
  568. /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
  569. /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
@@ -11,201 +11,187 @@
11
11
  * Production should set App credentials and omit ambient PATs. Local testing
12
12
  * can keep using a PAT or `gh auth login` when App creds are unset.
13
13
  */
14
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
- return new (P || (P = Promise))(function (resolve, reject) {
17
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
- step((generator = generator.apply(thisArg, _arguments || [])).next());
21
- });
22
- };
23
14
  import { execFile } from "node:child_process";
24
15
  import { promisify } from "node:util";
25
16
  import { createAppAuth } from "@octokit/auth-app";
17
+ import { isSecretRef } from "../../types.js";
26
18
  const execFileAsync = promisify(execFile);
27
19
  let ghAuthTokenCache = null;
28
- const GH_AUTH_CACHE_MS = 5 * 60000;
20
+ const GH_AUTH_CACHE_MS = 5 * 60_000;
29
21
  /** Refresh exported `GH_TOKEN` before installation tokens expire (~60m). */
30
- const GH_CLI_TOKEN_REFRESH_MS = 50 * 60000;
22
+ const GH_CLI_TOKEN_REFRESH_MS = 50 * 60_000;
31
23
  let ghCliTokenRefreshTimer = null;
32
- /** Resolve a credential value (literal or lazy). */
33
- export function resolveCredentialValue(value) {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- if (value === undefined) {
36
- return undefined;
37
- }
38
- const resolved = typeof value === "function" ? yield value() : value;
39
- if (typeof resolved !== "string") {
40
- return undefined;
41
- }
42
- const trimmed = resolved.trim();
43
- return trimmed === "" ? undefined : trimmed;
44
- });
24
+ /**
25
+ * Resolve a credential value: a literal, a lazy getter, or a named secret
26
+ * read from `process.env` (locally the shell; hosted, the bound deployment
27
+ * secrets the runtime loads into the environment per request).
28
+ */
29
+ export async function resolveCredentialValue(value) {
30
+ if (value === undefined) {
31
+ return undefined;
32
+ }
33
+ const resolved = typeof value === "function"
34
+ ? await value()
35
+ : isSecretRef(value)
36
+ ? process.env[value.secretName]
37
+ : value;
38
+ if (typeof resolved !== "string") {
39
+ return undefined;
40
+ }
41
+ const trimmed = resolved.trim();
42
+ return trimmed === "" ? undefined : trimmed;
45
43
  }
46
44
  /** True when App id + private key are configured (credentials or env). */
47
- export function hasGitHubAppCredentials(credentials) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- try {
50
- yield resolveGitHubAppId(credentials === null || credentials === void 0 ? void 0 : credentials.appId);
51
- yield resolveGitHubPrivateKey(credentials === null || credentials === void 0 ? void 0 : credentials.privateKey);
52
- return true;
53
- }
54
- catch (_a) {
55
- return false;
56
- }
57
- });
45
+ export async function hasGitHubAppCredentials(credentials) {
46
+ try {
47
+ await resolveGitHubAppId(credentials?.appId);
48
+ await resolveGitHubPrivateKey(credentials?.privateKey);
49
+ return true;
50
+ }
51
+ catch {
52
+ return false;
53
+ }
58
54
  }
59
55
  /**
60
56
  * Resolve an installation id from the call site, then
61
57
  * `GITHUB_APP_INSTALLATION_ID` (host / non-webhook GitHub calls).
62
58
  */
63
- export function resolveGitHubInstallationId(installationId) {
64
- return __awaiter(this, void 0, void 0, function* () {
65
- if (installationId !== undefined && Number.isInteger(installationId) && installationId > 0) {
66
- return installationId;
67
- }
68
- const fromEnv = yield resolveCredentialValue(process.env.GITHUB_APP_INSTALLATION_ID);
69
- if (fromEnv === undefined) {
70
- return undefined;
71
- }
72
- if (!/^[1-9][0-9]*$/u.test(fromEnv)) {
73
- return undefined;
74
- }
75
- return Number(fromEnv);
76
- });
59
+ export async function resolveGitHubInstallationId(installationId) {
60
+ if (installationId !== undefined && Number.isInteger(installationId) && installationId > 0) {
61
+ return installationId;
62
+ }
63
+ const fromEnv = await resolveCredentialValue(process.env.GITHUB_APP_INSTALLATION_ID);
64
+ if (fromEnv === undefined) {
65
+ return undefined;
66
+ }
67
+ if (!/^[1-9][0-9]*$/u.test(fromEnv)) {
68
+ return undefined;
69
+ }
70
+ return Number(fromEnv);
77
71
  }
78
72
  /**
79
73
  * Resolve a bearer token for GitHub REST calls. Prefer explicit credentials,
80
74
  * then App installation tokens when configured, then local PAT / `gh auth`.
81
75
  */
82
- export function resolveGitHubAccessToken(input) {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- var _a, _b, _c, _d;
85
- var _e, _f;
86
- const explicit = (_e = (yield resolveCredentialValue((_a = input.credentials) === null || _a === void 0 ? void 0 : _a.token))) !== null && _e !== void 0 ? _e : (yield resolveCredentialValue((_b = input.credentials) === null || _b === void 0 ? void 0 : _b.installationToken));
87
- if (explicit !== undefined) {
88
- return explicit;
89
- }
90
- const installationId = yield resolveGitHubInstallationId(input.installationId);
91
- if (installationId !== undefined && (yield hasGitHubAppCredentials(input.credentials))) {
92
- return createGitHubInstallationToken({
93
- api: input.api,
94
- appId: (_c = input.credentials) === null || _c === void 0 ? void 0 : _c.appId,
95
- installationId,
96
- privateKey: (_d = input.credentials) === null || _d === void 0 ? void 0 : _d.privateKey,
97
- });
98
- }
99
- const fromEnv = (_f = (yield resolveCredentialValue(process.env.GITHUB_TOKEN))) !== null && _f !== void 0 ? _f : (yield resolveCredentialValue(process.env.GH_TOKEN));
100
- if (fromEnv !== undefined) {
101
- return fromEnv;
102
- }
103
- const fromGh = yield tryResolveGhAuthToken();
104
- if (fromGh !== undefined) {
105
- return fromGh;
106
- }
107
- throw new Error("githubChannel: no GitHub token available (set GITHUB_APP_ID + GITHUB_APP_PRIVATE_KEY + installation id, or GITHUB_TOKEN / GH_TOKEN, or run `gh auth login`).");
108
- });
76
+ export async function resolveGitHubAccessToken(input) {
77
+ const explicit = (await resolveCredentialValue(input.credentials?.token)) ??
78
+ (await resolveCredentialValue(input.credentials?.installationToken));
79
+ if (explicit !== undefined) {
80
+ return explicit;
81
+ }
82
+ const installationId = await resolveGitHubInstallationId(input.installationId);
83
+ if (installationId !== undefined && (await hasGitHubAppCredentials(input.credentials))) {
84
+ return createGitHubInstallationToken({
85
+ api: input.api,
86
+ appId: input.credentials?.appId,
87
+ installationId,
88
+ privateKey: input.credentials?.privateKey,
89
+ });
90
+ }
91
+ const fromEnv = (await resolveCredentialValue(process.env.GITHUB_TOKEN)) ??
92
+ (await resolveCredentialValue(process.env.GH_TOKEN));
93
+ if (fromEnv !== undefined) {
94
+ return fromEnv;
95
+ }
96
+ const fromGh = await tryResolveGhAuthToken();
97
+ if (fromGh !== undefined) {
98
+ return fromGh;
99
+ }
100
+ throw new Error("githubChannel: no GitHub token available (set GITHUB_APP_ID + GITHUB_APP_PRIVATE_KEY + installation id, or GITHUB_TOKEN / GH_TOKEN, or run `gh auth login`).");
109
101
  }
110
102
  /** Soft resolve — returns undefined instead of throwing. */
111
- export function tryResolveGitHubAccessToken(input) {
112
- return __awaiter(this, void 0, void 0, function* () {
113
- try {
114
- return yield resolveGitHubAccessToken(input);
115
- }
116
- catch (_a) {
117
- return undefined;
118
- }
119
- });
103
+ export async function tryResolveGitHubAccessToken(input) {
104
+ try {
105
+ return await resolveGitHubAccessToken(input);
106
+ }
107
+ catch {
108
+ return undefined;
109
+ }
120
110
  }
121
111
  /** Read `gh auth token` when the CLI is logged in. Cached briefly. */
122
- export function tryResolveGhAuthToken() {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- if (ghAuthTokenCache !== null && Date.now() < ghAuthTokenCache.expiresAtMs) {
125
- return ghAuthTokenCache.token;
126
- }
127
- try {
128
- const { stdout } = yield execFileAsync("gh", ["auth", "token"], {
129
- timeout: 5000,
130
- env: process.env,
131
- });
132
- const token = stdout.trim();
133
- if (token === "") {
134
- return undefined;
135
- }
136
- ghAuthTokenCache = {
137
- token,
138
- expiresAtMs: Date.now() + GH_AUTH_CACHE_MS,
139
- };
140
- return token;
141
- }
142
- catch (_a) {
112
+ export async function tryResolveGhAuthToken() {
113
+ if (ghAuthTokenCache !== null && Date.now() < ghAuthTokenCache.expiresAtMs) {
114
+ return ghAuthTokenCache.token;
115
+ }
116
+ try {
117
+ const { stdout } = await execFileAsync("gh", ["auth", "token"], {
118
+ timeout: 5_000,
119
+ env: process.env,
120
+ });
121
+ const token = stdout.trim();
122
+ if (token === "") {
143
123
  return undefined;
144
124
  }
145
- });
125
+ ghAuthTokenCache = {
126
+ token,
127
+ expiresAtMs: Date.now() + GH_AUTH_CACHE_MS,
128
+ };
129
+ return token;
130
+ }
131
+ catch {
132
+ return undefined;
133
+ }
146
134
  }
147
- export function resolveGitHubAppId(appId) {
148
- return __awaiter(this, void 0, void 0, function* () {
149
- const source = appId !== null && appId !== void 0 ? appId : (process.env.GITHUB_APP_ID !== undefined && process.env.GITHUB_APP_ID !== ""
135
+ export async function resolveGitHubAppId(appId) {
136
+ const source = appId ??
137
+ (process.env.GITHUB_APP_ID !== undefined && process.env.GITHUB_APP_ID !== ""
150
138
  ? process.env.GITHUB_APP_ID
151
139
  : undefined);
152
- if (source === undefined) {
153
- throw new Error("githubChannel: GITHUB_APP_ID is required.");
154
- }
155
- if (typeof source === "number") {
156
- return String(source);
157
- }
158
- const value = yield resolveCredentialValue(source);
159
- if (value === undefined) {
160
- throw new Error("githubChannel: GITHUB_APP_ID is required.");
161
- }
162
- return value;
163
- });
140
+ if (source === undefined) {
141
+ throw new Error("githubChannel: GITHUB_APP_ID is required.");
142
+ }
143
+ if (typeof source === "number") {
144
+ return String(source);
145
+ }
146
+ const value = await resolveCredentialValue(source);
147
+ if (value === undefined) {
148
+ throw new Error("githubChannel: GITHUB_APP_ID is required.");
149
+ }
150
+ return value;
164
151
  }
165
- export function resolveGitHubPrivateKey(privateKey) {
166
- return __awaiter(this, void 0, void 0, function* () {
167
- const source = privateKey !== null && privateKey !== void 0 ? privateKey : (process.env.GITHUB_APP_PRIVATE_KEY !== undefined && process.env.GITHUB_APP_PRIVATE_KEY !== ""
152
+ export async function resolveGitHubPrivateKey(privateKey) {
153
+ const source = privateKey ??
154
+ (process.env.GITHUB_APP_PRIVATE_KEY !== undefined && process.env.GITHUB_APP_PRIVATE_KEY !== ""
168
155
  ? process.env.GITHUB_APP_PRIVATE_KEY
169
156
  : undefined);
170
- if (source === undefined) {
171
- throw new Error("githubChannel: GITHUB_APP_PRIVATE_KEY is required.");
172
- }
173
- const value = yield resolveCredentialValue(source);
174
- if (value === undefined) {
175
- throw new Error("githubChannel: GITHUB_APP_PRIVATE_KEY is required.");
176
- }
177
- return value.replace(/\\n/gu, "\n");
178
- });
157
+ if (source === undefined) {
158
+ throw new Error("githubChannel: GITHUB_APP_PRIVATE_KEY is required.");
159
+ }
160
+ const value = await resolveCredentialValue(source);
161
+ if (value === undefined) {
162
+ throw new Error("githubChannel: GITHUB_APP_PRIVATE_KEY is required.");
163
+ }
164
+ return value.replace(/\\n/gu, "\n");
179
165
  }
180
166
  /**
181
167
  * Mint an installation access token via `@octokit/auth-app`.
182
168
  * Prefer {@link createGitHubOctokit} for normal API work — this is for
183
169
  * callers that only need the raw token string.
184
170
  */
185
- export function createGitHubInstallationToken(input) {
186
- return __awaiter(this, void 0, void 0, function* () {
187
- var _a;
188
- const appId = yield resolveGitHubAppId(input.appId);
189
- const privateKey = yield resolveGitHubPrivateKey(input.privateKey);
190
- // Prefer createGitHubOctokit for API work — this path only mints a raw
191
- // token. Custom fetch belongs on the Octokit client, not createAppAuth
192
- // (StrategyOptions.request expects a full RequestInterface).
193
- const auth = createAppAuth(Object.assign({ appId,
194
- privateKey }, (((_a = input.api) === null || _a === void 0 ? void 0 : _a.apiBaseUrl) === undefined ? {} : { baseUrl: input.api.apiBaseUrl })));
195
- try {
196
- const result = yield auth({
197
- type: "installation",
198
- installationId: input.installationId,
199
- });
200
- return result.token;
201
- }
202
- catch (error) {
203
- throw installationTokenMintError(error, {
204
- appId,
205
- installationId: input.installationId,
206
- });
207
- }
171
+ export async function createGitHubInstallationToken(input) {
172
+ const appId = await resolveGitHubAppId(input.appId);
173
+ const privateKey = await resolveGitHubPrivateKey(input.privateKey);
174
+ // Prefer createGitHubOctokit for API work — this path only mints a raw
175
+ // token. Custom fetch belongs on the Octokit client, not createAppAuth
176
+ // (StrategyOptions.request expects a full RequestInterface).
177
+ const auth = createAppAuth({
178
+ appId,
179
+ privateKey,
180
+ ...(input.api?.apiBaseUrl === undefined ? {} : { baseUrl: input.api.apiBaseUrl }),
208
181
  });
182
+ try {
183
+ const result = await auth({
184
+ type: "installation",
185
+ installationId: input.installationId,
186
+ });
187
+ return result.token;
188
+ }
189
+ catch (error) {
190
+ throw installationTokenMintError(error, {
191
+ appId,
192
+ installationId: input.installationId,
193
+ });
194
+ }
209
195
  }
210
196
  /**
211
197
  * Octokit's bare mint failure ("Not Found - <docs url>") names neither the
@@ -236,23 +222,20 @@ function installationTokenMintError(error, context) {
236
222
  * agent-serve). Intended for serve warmup when auth source is `app`.
237
223
  * Returns whether `GH_TOKEN` was written; refreshes on an interval.
238
224
  */
239
- export function ensureGhCliTokenEnv() {
240
- return __awaiter(this, void 0, void 0, function* () {
241
- var _a;
242
- const token = yield tryResolveGitHubAccessToken({});
243
- if (token === undefined) {
244
- return false;
245
- }
246
- process.env.GH_TOKEN = token;
247
- if (ghCliTokenRefreshTimer === null) {
248
- const timer = setInterval(() => {
249
- void ensureGhCliTokenEnv();
250
- }, GH_CLI_TOKEN_REFRESH_MS);
251
- (_a = timer.unref) === null || _a === void 0 ? void 0 : _a.call(timer);
252
- ghCliTokenRefreshTimer = timer;
253
- }
254
- return true;
255
- });
225
+ export async function ensureGhCliTokenEnv() {
226
+ const token = await tryResolveGitHubAccessToken({});
227
+ if (token === undefined) {
228
+ return false;
229
+ }
230
+ process.env.GH_TOKEN = token;
231
+ if (ghCliTokenRefreshTimer === null) {
232
+ const timer = setInterval(() => {
233
+ void ensureGhCliTokenEnv();
234
+ }, GH_CLI_TOKEN_REFRESH_MS);
235
+ timer.unref?.();
236
+ ghCliTokenRefreshTimer = timer;
237
+ }
238
+ return true;
256
239
  }
257
240
  /** Clears in-memory caches. Intended for tests. */
258
241
  export function clearGitHubAuthCaches() {
@@ -1,15 +1,6 @@
1
1
  /**
2
2
  * Rebuild GitHub API + thread handles for inbound hooks and stream events.
3
3
  */
4
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
- return new (P || (P = Promise))(function (resolve, reject) {
7
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
- step((generator = generator.apply(thisArg, _arguments || [])).next());
11
- });
12
- };
13
4
  import { callGitHubApi, createGitHubCommitStatus, createGitHubIssueComment, createGitHubOctokit, createGitHubReaction, createGitHubReviewCommentReply, } from "./api.js";
14
5
  import { createGitHubCheck } from "./checks.js";
15
6
  /** Hidden marker on outbound GitHub comments so inbound dispatch ignores them. */
@@ -21,17 +12,22 @@ export function formatGitHubOutboundComment(body) {
21
12
  return `${body.trimEnd()}\n\n${GITHUB_OUTBOUND_MARKER}`;
22
13
  }
23
14
  export function buildGitHubBinding(input) {
24
- var _a, _b;
25
15
  const { config, state } = input;
26
- const repository = Object.assign({ fullName: `${state.owner}/${state.repo}`, url: (_a = state.repositoryUrl) !== null && _a !== void 0 ? _a : `https://github.com/${state.owner}/${state.repo}`, owner: state.owner, name: state.repo }, (state.repositoryId === null ? {} : { id: state.repositoryId }));
27
- const installationId = (_b = state.installationId) !== null && _b !== void 0 ? _b : undefined;
16
+ const repository = {
17
+ fullName: `${state.owner}/${state.repo}`,
18
+ url: state.repositoryUrl ?? `https://github.com/${state.owner}/${state.repo}`,
19
+ owner: state.owner,
20
+ name: state.repo,
21
+ ...(state.repositoryId === null ? {} : { id: state.repositoryId }),
22
+ };
23
+ const installationId = state.installationId ?? undefined;
28
24
  let octokitPromise;
29
25
  const getOctokit = () => {
30
- octokitPromise !== null && octokitPromise !== void 0 ? octokitPromise : (octokitPromise = createGitHubOctokit({
26
+ octokitPromise ??= createGitHubOctokit({
31
27
  api: config.api,
32
28
  credentials: config.credentials,
33
29
  installationId,
34
- }));
30
+ });
35
31
  return octokitPromise;
36
32
  };
37
33
  const github = {
@@ -49,21 +45,36 @@ export function buildGitHubBinding(input) {
49
45
  });
50
46
  },
51
47
  createStatus(status) {
52
- return createGitHubCommitStatus(Object.assign(Object.assign(Object.assign({ api: config.api, credentials: config.credentials, installationId, owner: state.owner, repo: state.repo, sha: status.sha, state: status.state }, (status.context === undefined ? {} : { context: status.context })), (status.description === undefined ? {} : { description: status.description })), (status.targetUrl === undefined ? {} : { targetUrl: status.targetUrl })));
48
+ return createGitHubCommitStatus({
49
+ api: config.api,
50
+ credentials: config.credentials,
51
+ installationId,
52
+ owner: state.owner,
53
+ repo: state.repo,
54
+ sha: status.sha,
55
+ state: status.state,
56
+ ...(status.context === undefined ? {} : { context: status.context }),
57
+ ...(status.description === undefined ? {} : { description: status.description }),
58
+ ...(status.targetUrl === undefined ? {} : { targetUrl: status.targetUrl }),
59
+ });
53
60
  },
54
61
  createCheck(check) {
55
- return createGitHubCheck(Object.assign(Object.assign({}, check), { github: { getOctokit }, owner: state.owner, repo: state.repo }));
62
+ return createGitHubCheck({
63
+ ...check,
64
+ github: { getOctokit },
65
+ owner: state.owner,
66
+ repo: state.repo,
67
+ });
56
68
  },
57
69
  };
58
70
  const thread = {
59
71
  kind: state.conversationKind,
60
72
  post(message) {
61
- var _a, _b;
62
73
  if (state.conversationKind === "review_thread") {
63
74
  return createGitHubReviewCommentReply({
64
75
  api: config.api,
65
76
  body: message,
66
- commentId: requiredNumber((_a = state.reviewThreadRootCommentId) !== null && _a !== void 0 ? _a : state.reviewCommentId, "reviewThreadRootCommentId"),
77
+ commentId: requiredNumber(state.reviewThreadRootCommentId ?? state.reviewCommentId, "reviewThreadRootCommentId"),
67
78
  credentials: config.credentials,
68
79
  installationId,
69
80
  owner: state.owner,
@@ -76,31 +87,29 @@ export function buildGitHubBinding(input) {
76
87
  body: message,
77
88
  credentials: config.credentials,
78
89
  installationId,
79
- issueNumber: requiredNumber((_b = state.issueNumber) !== null && _b !== void 0 ? _b : state.pullRequestNumber, "issueNumber"),
90
+ issueNumber: requiredNumber(state.issueNumber ?? state.pullRequestNumber, "issueNumber"),
80
91
  owner: state.owner,
81
92
  repo: state.repo,
82
93
  });
83
94
  },
84
- react(content) {
85
- return __awaiter(this, void 0, void 0, function* () {
86
- const commentId = state.conversationKind === "review_thread"
87
- ? state.reviewCommentId
88
- : state.triggeringCommentId;
89
- if (commentId === null) {
90
- return;
91
- }
92
- yield createGitHubReaction({
93
- api: config.api,
94
- commentId,
95
- content,
96
- credentials: config.credentials,
97
- installationId,
98
- owner: state.owner,
99
- repo: state.repo,
100
- subject: state.conversationKind === "review_thread"
101
- ? "pull_request_review_comment"
102
- : "issue_comment",
103
- });
95
+ async react(content) {
96
+ const commentId = state.conversationKind === "review_thread"
97
+ ? state.reviewCommentId
98
+ : state.triggeringCommentId;
99
+ if (commentId === null) {
100
+ return;
101
+ }
102
+ await createGitHubReaction({
103
+ api: config.api,
104
+ commentId,
105
+ content,
106
+ credentials: config.credentials,
107
+ installationId,
108
+ owner: state.owner,
109
+ repo: state.repo,
110
+ subject: state.conversationKind === "review_thread"
111
+ ? "pull_request_review_comment"
112
+ : "issue_comment",
104
113
  });
105
114
  },
106
115
  };
@@ -12,15 +12,6 @@
12
12
  * `contents-write` tier; GitHub App / PAT credentials need the equivalent
13
13
  * permission. API failures are normalized into `GitHubApiError`.
14
14
  */
15
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
16
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17
- return new (P || (P = Promise))(function (resolve, reject) {
18
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
19
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
20
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
21
- step((generator = generator.apply(thisArg, _arguments || [])).next());
22
- });
23
- };
24
15
  import { openCiCheck, resumeCiCheck, } from "../checks.js";
25
16
  import { wrapOctokitError } from "./api.js";
26
17
  /**
@@ -29,8 +20,8 @@ import { wrapOctokitError } from "./api.js";
29
20
  */
30
21
  function githubCheckWriter(input) {
31
22
  let checkRunId = input.checkRunId;
32
- return (write) => __awaiter(this, void 0, void 0, function* () {
33
- const octokit = yield input.github.getOctokit();
23
+ return async (write) => {
24
+ const octokit = await input.github.getOctokit();
34
25
  const base = {
35
26
  owner: input.owner,
36
27
  repo: input.repo,
@@ -46,7 +37,11 @@ function githubCheckWriter(input) {
46
37
  throw new Error("githubChannel: cannot create a check without a sha.");
47
38
  }
48
39
  try {
49
- const response = yield octokit.rest.checks.create(Object.assign(Object.assign({}, base), { head_sha: input.sha, started_at: write.startedAt }));
40
+ const response = await octokit.rest.checks.create({
41
+ ...base,
42
+ head_sha: input.sha,
43
+ started_at: write.startedAt,
44
+ });
50
45
  checkRunId = response.data.id;
51
46
  return {
52
47
  id: response.data.id,
@@ -58,13 +53,13 @@ function githubCheckWriter(input) {
58
53
  }
59
54
  }
60
55
  try {
61
- yield octokit.rest.checks.update(Object.assign(Object.assign({}, base), { check_run_id: checkRunId }));
56
+ await octokit.rest.checks.update({ ...base, check_run_id: checkRunId });
62
57
  return undefined;
63
58
  }
64
59
  catch (error) {
65
60
  throw wrapOctokitError(error, "PATCH", `/repos/${input.owner}/${input.repo}/check-runs/${checkRunId}`);
66
61
  }
67
- });
62
+ };
68
63
  }
69
64
  /**
70
65
  * Create a CI check run on a commit and return a handle for later updates.
@@ -27,8 +27,6 @@ export function parseCursorGithubPermissions(value, fallback = "pr-write") {
27
27
  * `--repo` / channel `{ repos }`).
28
28
  */
29
29
  export function githubRepoFromOctokitRequest(request) {
30
- var _a, _b;
31
- var _c, _d;
32
30
  if (typeof request.owner === "string" && typeof request.repo === "string") {
33
31
  const slug = `${request.owner.trim()}/${request.repo.trim()}`.toLowerCase();
34
32
  if (CURSOR_GITHUB_REPO_PATTERN.test(slug) && !slug.includes("..")) {
@@ -39,8 +37,8 @@ export function githubRepoFromOctokitRequest(request) {
39
37
  return undefined;
40
38
  }
41
39
  const match = request.url.match(/\/repos\/([^/?#]+)\/([^/?#]+)/);
42
- const owner = (_c = (_a = match === null || match === void 0 ? void 0 : match[1]) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _c !== void 0 ? _c : "";
43
- const repo = (_d = (_b = match === null || match === void 0 ? void 0 : match[2]) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _d !== void 0 ? _d : "";
40
+ const owner = match?.[1]?.trim() ?? "";
41
+ const repo = match?.[2]?.trim() ?? "";
44
42
  if (owner === "" || repo === "" || owner.includes("{") || repo.includes("{")) {
45
43
  return undefined;
46
44
  }
@@ -64,7 +62,6 @@ export function resolveCursorGithubCredentialScope(values, permissions = "pr-wri
64
62
  return parseCursorGithubRepoScope(repos, permissions);
65
63
  }
66
64
  export function parseCursorGithubRepoScope(values, permissions = "pr-write") {
67
- var _a;
68
65
  const repos = [...new Set(values.map(repo => repo.trim().toLowerCase()).filter(Boolean))];
69
66
  if (repos.length === 0) {
70
67
  throw new Error("Cursor account GitHub credentials require at least one repository.");
@@ -77,7 +74,7 @@ export function parseCursorGithubRepoScope(values, permissions = "pr-write") {
77
74
  throw new Error(`Invalid Cursor account GitHub repository "${repo}"; expected owner/repo.`);
78
75
  }
79
76
  }
80
- const owner = (_a = repos[0]) === null || _a === void 0 ? void 0 : _a.split("/", 1)[0];
77
+ const owner = repos[0]?.split("/", 1)[0];
81
78
  if (owner === undefined) {
82
79
  throw new Error("Cursor account GitHub repository owner is missing.");
83
80
  }
@@ -97,9 +94,8 @@ export function parseCursorGithubRepoScope(values, permissions = "pr-write") {
97
94
  * post Checks API runs. `"read"` cannot post merge-box checks.
98
95
  */
99
96
  export function cursorGithubPermissionsForChannel(options, authored = "pr-write") {
100
- var _a;
101
- const base = authored !== null && authored !== void 0 ? authored : "pr-write";
102
- const commitStatus = (_a = options.progress) === null || _a === void 0 ? void 0 : _a.commitStatus;
97
+ const base = authored ?? "pr-write";
98
+ const commitStatus = options.progress?.commitStatus;
103
99
  const wantsChecks = options.checks === true || (commitStatus !== undefined && commitStatus !== false);
104
100
  if (!wantsChecks) {
105
101
  return base;
@@ -142,8 +138,7 @@ export function createCursorGithubProxyHostResolver(input) {
142
138
  }
143
139
  /** Proxy transport for a resolver's credentials, when the host bound one. */
144
140
  export function getCursorAccountGithubProxyTransport(resolver) {
145
- var _a;
146
- return (_a = pendingByResolver.get(resolver)) === null || _a === void 0 ? void 0 : _a.getProxyTransport();
141
+ return pendingByResolver.get(resolver)?.getProxyTransport();
147
142
  }
148
143
  const pendingByResolver = new WeakMap();
149
144
  /**