@cursor/bdk 0.2.11 → 0.2.12

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 (432) hide show
  1. package/dist/bin/agent-serve.js +28 -26
  2. package/dist/channels/bitbucket/api.js +8 -8
  3. package/dist/channels/bitbucket/binding.js +4 -4
  4. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  5. package/dist/channels/bitbucket/bitbucket-webhook.js +1 -1
  6. package/dist/channels/bitbucket/checks.js +1 -1
  7. package/dist/channels/bitbucket/cursor-account.js +1 -1
  8. package/dist/channels/bitbucket/events.js +1 -1
  9. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  10. package/dist/channels/checks.js +2 -2
  11. package/dist/channels/deployments/deployments-channel.js +1 -1
  12. package/dist/channels/github/cursor-account.js +3 -3
  13. package/dist/channels/github/defaults.js +3 -3
  14. package/dist/channels/github/events.js +1 -1
  15. package/dist/channels/github/forward.js +8 -8
  16. package/dist/channels/github/github-channel.js +2 -2
  17. package/dist/channels/gitlab/binding.js +4 -4
  18. package/dist/channels/gitlab/checks.js +1 -1
  19. package/dist/channels/gitlab/cursor-account.js +1 -1
  20. package/dist/channels/gitlab/events.js +1 -1
  21. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  22. package/dist/channels/gitlab/gitlab-webhook.js +1 -1
  23. package/dist/channels/gitlab/replay.js +2 -2
  24. package/dist/channels/origin/binding.js +3 -3
  25. package/dist/channels/origin/checks.js +1 -1
  26. package/dist/channels/origin/cursor-account.js +1 -1
  27. package/dist/channels/origin/events.js +1 -1
  28. package/dist/channels/origin/origin-channel.js +1 -1
  29. package/dist/channels/origin/origin-webhook.js +2 -2
  30. package/dist/channels/slack/agentic-delivery.js +3 -3
  31. package/dist/channels/slack/agentic-signals.js +1 -1
  32. package/dist/channels/slack/api.js +5 -5
  33. package/dist/channels/slack/approvals.js +1 -1
  34. package/dist/channels/slack/attachments.js +3 -3
  35. package/dist/channels/slack/blocks.js +3 -3
  36. package/dist/channels/slack/bot-mentions.js +4 -4
  37. package/dist/channels/slack/channel-watch.js +4 -4
  38. package/dist/channels/slack/cli-project.js +3 -3
  39. package/dist/channels/slack/dispatch.js +1 -1
  40. package/dist/channels/slack/doctor.js +1 -1
  41. package/dist/channels/slack/eval-directive.js +1 -1
  42. package/dist/channels/slack/footer.js +1 -1
  43. package/dist/channels/slack/interactive.js +2 -2
  44. package/dist/channels/slack/log.d.ts.map +1 -1
  45. package/dist/channels/slack/log.js +1 -1
  46. package/dist/channels/slack/manifest.js +1 -1
  47. package/dist/channels/slack/nudge-carrier.js +1 -1
  48. package/dist/channels/slack/nudge-store.js +2 -2
  49. package/dist/channels/slack/recording-sink.js +6 -6
  50. package/dist/channels/slack/reply-options.js +6 -6
  51. package/dist/channels/slack/self-identity.d.ts +7 -4
  52. package/dist/channels/slack/self-identity.d.ts.map +1 -1
  53. package/dist/channels/slack/self-identity.js +17 -8
  54. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  55. package/dist/channels/slack/sender-name.js +2 -6
  56. package/dist/channels/slack/setup.d.ts.map +1 -1
  57. package/dist/channels/slack/setup.js +1 -1
  58. package/dist/channels/slack/slack-channel.js +2 -2
  59. package/dist/channels/slack/socket-mode.js +2 -2
  60. package/dist/channels/slack/thread-context.js +8 -8
  61. package/dist/channels/slack/tool-cards.js +1 -1
  62. package/dist/channels/slack/user-info.d.ts +2 -1
  63. package/dist/channels/slack/user-info.d.ts.map +1 -1
  64. package/dist/channels/slack/user-info.js +16 -1
  65. package/dist/channels.js +1 -1
  66. package/dist/docs/404.html +3 -3
  67. package/dist/docs/assets/{app.DXI7bwox.js → app.CKta5zX1.js} +4 -4
  68. package/dist/docs/assets/chunks/@localSearchIndexroot.DtlCe4t6.js +1 -0
  69. package/dist/docs/assets/chunks/{VPLocalSearchBox.BrbO5mEe.js → VPLocalSearchBox.4vRM3EDG.js} +2 -2
  70. package/dist/docs/assets/chunks/{arc.BOG1yms8.js → arc.CofbA8tA.js} +1 -1
  71. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.C0hsMZnZ.js → architectureDiagram-Q4EWVU46.Mt2UV5M-.js} +1 -1
  72. package/dist/docs/assets/chunks/{baseUniq.H044KjKs.js → baseUniq.C_W0Aqp4.js} +1 -1
  73. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BsRW6GoB.js → blockDiagram-DXYQGD6D.dAc4goE-.js} +1 -1
  74. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.B9HV5PFR.js → c4Diagram-AHTNJAMY.dnbRC3Dm.js} +1 -1
  75. package/dist/docs/assets/chunks/channel.DpljPUVU.js +1 -0
  76. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CPoT_ajl.js → chunk-4BX2VUAB.B42ltSTd.js} +1 -1
  77. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DZBwWuCL.js → chunk-4TB4RGXK.2GbAul_E.js} +1 -1
  78. package/dist/docs/assets/chunks/{chunk-55IACEB6.CZ3yTiyq.js → chunk-55IACEB6.pjzY-v-B.js} +1 -1
  79. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.6DfvHSd8.js → chunk-EDXVE4YY.BB1GXLj2.js} +1 -1
  80. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CpBj8HfK.js → chunk-FMBD7UC4.B2WxZkoA.js} +1 -1
  81. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.BdKo8YqS.js → chunk-OYMX7WX6.BMvb2w73.js} +1 -1
  82. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnXNyxJx.js → chunk-QZHKN3VN.Bmu_2lNr.js} +1 -1
  83. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.Cg1OcF8G.js → chunk-YZCP3GAM.Cth65EaC.js} +1 -1
  84. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.DFNHq2OM.js +1 -0
  85. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DFNHq2OM.js +1 -0
  86. package/dist/docs/assets/chunks/clone.DssygCzX.js +1 -0
  87. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.1SP8al9c.js → cose-bilkent-S5V4N54A.CrfA7Iw_.js} +1 -1
  88. package/dist/docs/assets/chunks/{dagre-KV5264BT.DS1L6hJt.js → dagre-KV5264BT.PCD6KQDb.js} +1 -1
  89. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.ChsausbG.js → diagram-5BDNPKRD.CGNlYlP1.js} +1 -1
  90. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.3XsptNWj.js → diagram-G4DWMVQ6.C0cvryPD.js} +1 -1
  91. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DPA9Dk_P.js → diagram-MMDJMWI5.DHlkZHNV.js} +1 -1
  92. package/dist/docs/assets/chunks/{diagram-TYMM5635.BVswXWrB.js → diagram-TYMM5635.DDGqH_4B.js} +1 -1
  93. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BSak5OSP.js → erDiagram-SMLLAGMA.4gOY_C3v.js} +1 -1
  94. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CQgN4TTz.js → flowDiagram-DWJPFMVM.8i7zsxuh.js} +1 -1
  95. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.GrT0kA4a.js → ganttDiagram-T4ZO3ILL.BEKHYdM-.js} +1 -1
  96. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CdS7Ucll.js → gitGraphDiagram-UUTBAWPF.ACzeLGiB.js} +1 -1
  97. package/dist/docs/assets/chunks/{graph.BVqKRmRo.js → graph.08C3hS6m.js} +1 -1
  98. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.C3C9FRto.js → infoDiagram-42DDH7IO.D8R9obOH.js} +1 -1
  99. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js → ishikawaDiagram-UXIWVN3A.CmgYpCWL.js} +1 -1
  100. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CaHMfK4b.js → journeyDiagram-VCZTEJTY.DUzjGfoZ.js} +1 -1
  101. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CjhIUwcA.js → kanban-definition-6JOO6SKY.DbcW2iZ0.js} +1 -1
  102. package/dist/docs/assets/chunks/{layout.CGU3gfSf.js → layout.BaDEpJzu.js} +1 -1
  103. package/dist/docs/assets/chunks/{linear.DaihpW_n.js → linear.B_zRQgCU.js} +1 -1
  104. package/dist/docs/assets/chunks/{min.BS-j8kHQ.js → min.BYscCdSu.js} +1 -1
  105. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BVJ1Bbnk.js → mindmap-definition-QFDTVHPH.Ggu0jg86.js} +1 -1
  106. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.Cz1WIv9r.js → pieDiagram-DEJITSTG.D_q4SVDT.js} +1 -1
  107. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DKLFxcjy.js → quadrantDiagram-34T5L4WZ.D3zGj5ok.js} +1 -1
  108. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.BHegiK7x.js → requirementDiagram-MS252O5E.DVTg7zr2.js} +1 -1
  109. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DYkY6yPc.js → sankeyDiagram-XADWPNL6.D3X8jm57.js} +1 -1
  110. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DYQ1QUrI.js → sequenceDiagram-FGHM5R23.Dpjai9YP.js} +1 -1
  111. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.Iru8BsFo.js → stateDiagram-FHFEXIEX.D_AbQBuP.js} +1 -1
  112. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CWKWRxRx.js +1 -0
  113. package/dist/docs/assets/chunks/{theme.DaplWQhQ.js → theme.BcgOnbZ6.js} +2 -2
  114. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BwFA8hiX.js → timeline-definition-GMOUNBTQ.Cp3DKBe2.js} +1 -1
  115. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CZ60W1C_.js → vennDiagram-DHZGUBPP.Bcvg-Aqu.js} +1 -1
  116. package/dist/docs/assets/chunks/wardley-RL74JXVD.CCpdcUSq.js +162 -0
  117. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.B69D2r8-.js → wardleyDiagram-NUSXRM2D.L0yehCc5.js} +1 -1
  118. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CLPZEIU9.js → xychartDiagram-5P7HB3ND.Cw8-tJmw.js} +1 -1
  119. package/dist/docs/assets/{reference_connections.md.Bljpve-y.js → reference_connections.md.DLrgAd5f.js} +1 -1
  120. package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.js → reference_hooks.md.B-eGa2km.js} +3 -3
  121. package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.lean.js → reference_hooks.md.B-eGa2km.lean.js} +1 -1
  122. package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.js → reference_sessions.md.CyM7ARz1.js} +1 -1
  123. package/dist/docs/assets/{reference_tools.md.v3SXVSs_.js → reference_tools.md.DzIY9JzY.js} +3 -3
  124. package/dist/docs/assets/{reference_tools.md.v3SXVSs_.lean.js → reference_tools.md.DzIY9JzY.lean.js} +1 -1
  125. package/dist/docs/assets/{style.C130MVnH.css → style.Dwls12uf.css} +1 -1
  126. package/dist/docs/building-with-agents.html +37 -37
  127. package/dist/docs/deployment.html +37 -37
  128. package/dist/docs/evals.html +37 -37
  129. package/dist/docs/guides/agent-to-agent.html +37 -37
  130. package/dist/docs/guides/bitbucket.html +37 -37
  131. package/dist/docs/guides/cloud-agents.html +37 -37
  132. package/dist/docs/guides/convert-automation.html +37 -37
  133. package/dist/docs/guides/github.html +37 -37
  134. package/dist/docs/guides/gitlab.html +37 -37
  135. package/dist/docs/guides/grokbot-agents.html +37 -37
  136. package/dist/docs/guides/hooks.html +37 -37
  137. package/dist/docs/guides/improve.html +37 -37
  138. package/dist/docs/guides/jev.html +37 -37
  139. package/dist/docs/guides/mcp-oauth.html +37 -37
  140. package/dist/docs/guides/migrate.html +37 -37
  141. package/dist/docs/guides/opentelemetry.html +37 -37
  142. package/dist/docs/guides/slack.html +37 -37
  143. package/dist/docs/guides/webhooks.html +37 -37
  144. package/dist/docs/hashmap.json +1 -1
  145. package/dist/docs/hillclimbing.html +37 -37
  146. package/dist/docs/index.html +37 -37
  147. package/dist/docs/llms-full.txt +15 -2
  148. package/dist/docs/quickstart.html +37 -37
  149. package/dist/docs/reference/agent-config.html +37 -37
  150. package/dist/docs/reference/artifacts.html +37 -37
  151. package/dist/docs/reference/channels.html +37 -37
  152. package/dist/docs/reference/cli.html +37 -37
  153. package/dist/docs/reference/connections.html +39 -39
  154. package/dist/docs/reference/connections.md +2 -1
  155. package/dist/docs/reference/evals.html +37 -37
  156. package/dist/docs/reference/extensions.html +37 -37
  157. package/dist/docs/reference/hooks.html +39 -39
  158. package/dist/docs/reference/hooks.md +1 -0
  159. package/dist/docs/reference/http-api.html +37 -37
  160. package/dist/docs/reference/instructions.html +37 -37
  161. package/dist/docs/reference/playground.html +36 -36
  162. package/dist/docs/reference/project-layout.html +37 -37
  163. package/dist/docs/reference/prompt.html +37 -37
  164. package/dist/docs/reference/schedules.html +37 -37
  165. package/dist/docs/reference/sessions.html +37 -37
  166. package/dist/docs/reference/sessions.md +1 -1
  167. package/dist/docs/reference/skills.html +37 -37
  168. package/dist/docs/reference/subagents.html +37 -37
  169. package/dist/docs/reference/tools.html +39 -39
  170. package/dist/docs/reference/tools.md +11 -0
  171. package/dist/docs/templates/agentic-owners.html +37 -37
  172. package/dist/docs/templates/grokbot-agents.html +37 -37
  173. package/dist/docs/templates/security-reviewer.html +37 -37
  174. package/dist/docs/templates/thermo-quality-review.html +37 -37
  175. package/dist/docs/templates/thermo-review.html +37 -37
  176. package/dist/docs/templates/triage.html +37 -37
  177. package/dist/docs/troubleshooting.html +36 -36
  178. package/dist/evals/assertions.d.ts.map +1 -1
  179. package/dist/evals/assertions.js +21 -19
  180. package/dist/evals/expect.js +1 -1
  181. package/dist/evals/judge.js +1 -1
  182. package/dist/evals/reporters.js +8 -8
  183. package/dist/evals/run-facts.js +2 -2
  184. package/dist/evals.js +6 -6
  185. package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
  186. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  187. package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
  188. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +16 -0
  189. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  190. package/dist/extensions/cursor-cloud-agents/lib/backend.js +44 -3
  191. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  192. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts +23 -0
  193. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts.map +1 -0
  194. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.js +32 -0
  195. package/dist/extensions/cursor-cloud-agents/lib/repos.js +2 -2
  196. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -2
  197. package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts.map +1 -1
  198. package/dist/extensions/cursor-cloud-agents/lib/watch.js +1 -1
  199. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
  200. package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -8
  201. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  202. package/dist/extensions/cursor-grokbot-agents/extension.js +3 -3
  203. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  204. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +3 -3
  205. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +4 -4
  206. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  207. package/dist/extensions/improve/skills/yourself.js +1 -1
  208. package/dist/extensions/jev/extension.js +2 -2
  209. package/dist/extensions/jev/tools/evaluate.js +1 -1
  210. package/dist/extensions/slack-communication/tools/react.js +1 -1
  211. package/dist/files-backends/cursor-hosted.js +8 -8
  212. package/dist/files-backends/local-fs.js +1 -1
  213. package/dist/filesystem.d.ts.map +1 -1
  214. package/dist/filesystem.js +15 -15
  215. package/dist/internal/advertise-tools.d.ts +3 -2
  216. package/dist/internal/advertise-tools.d.ts.map +1 -1
  217. package/dist/internal/advertise-tools.js +11 -9
  218. package/dist/internal/approval-gate.js +1 -1
  219. package/dist/internal/artifacts-store.js +13 -13
  220. package/dist/internal/as-of.js +2 -2
  221. package/dist/internal/authored-alias-hooks.js +1 -1
  222. package/dist/internal/builtin-tools/reminders.js +2 -2
  223. package/dist/internal/chat-client.js +5 -5
  224. package/dist/internal/cli-ax.js +14 -14
  225. package/dist/internal/cli-bitbucket.js +10 -10
  226. package/dist/internal/cli-convert-automation.js +2 -2
  227. package/dist/internal/cli-cursor.js +2 -2
  228. package/dist/internal/cli-deploy.d.ts.map +1 -1
  229. package/dist/internal/cli-deploy.js +40 -40
  230. package/dist/internal/cli-docs.js +5 -5
  231. package/dist/internal/cli-github.js +15 -15
  232. package/dist/internal/cli-gitlab.js +10 -10
  233. package/dist/internal/cli-images.js +16 -16
  234. package/dist/internal/cli-manifest.js +1 -1
  235. package/dist/internal/cli-mcp-oauth.js +5 -5
  236. package/dist/internal/cli-mcp.js +3 -3
  237. package/dist/internal/cli-migrate.js +1 -1
  238. package/dist/internal/cli-skills.js +2 -2
  239. package/dist/internal/cli-slack.js +5 -5
  240. package/dist/internal/cloud-turn-cost.js +1 -1
  241. package/dist/internal/continuation-identity.js +6 -6
  242. package/dist/internal/conversation-mirror.js +5 -5
  243. package/dist/internal/convert-automation/convert-workflow.js +24 -24
  244. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  245. package/dist/internal/cursor/account-mcp.js +20 -20
  246. package/dist/internal/cursor/backend-client.js +6 -6
  247. package/dist/internal/cursor/credentials.js +1 -1
  248. package/dist/internal/cursor/store-api-client.js +1 -1
  249. package/dist/internal/cursor-account-mcp-auth.js +9 -9
  250. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  251. package/dist/internal/cursor-deployment-relay.js +9 -9
  252. package/dist/internal/cursor-event-relay.js +10 -10
  253. package/dist/internal/cursor-relay-core.js +2 -2
  254. package/dist/internal/deploy-manifest.js +10 -10
  255. package/dist/internal/discovery/agent-config.js +2 -2
  256. package/dist/internal/discovery/agent.js +6 -6
  257. package/dist/internal/discovery/connections.js +5 -5
  258. package/dist/internal/discovery/cursor-plugin.js +12 -12
  259. package/dist/internal/discovery/extension-overlay.js +3 -3
  260. package/dist/internal/discovery/extensions.js +6 -6
  261. package/dist/internal/discovery/info.js +9 -9
  262. package/dist/internal/discovery/instructions.js +1 -1
  263. package/dist/internal/discovery/project.js +3 -3
  264. package/dist/internal/discovery/services.js +1 -1
  265. package/dist/internal/discovery/tools.js +1 -1
  266. package/dist/internal/docs-site.js +2 -2
  267. package/dist/internal/env-file.js +1 -1
  268. package/dist/internal/eval-run-store.js +7 -7
  269. package/dist/internal/eval-runner.d.ts.map +1 -1
  270. package/dist/internal/eval-runner.js +14 -14
  271. package/dist/internal/eval-transport.js +1 -1
  272. package/dist/internal/evals-client.js +4 -4
  273. package/dist/internal/event-log.js +8 -8
  274. package/dist/internal/event-mapper.js +13 -13
  275. package/dist/internal/expected-delivery-failure.js +2 -2
  276. package/dist/internal/filesystem/format.js +2 -2
  277. package/dist/internal/filesystem/nearest.js +3 -3
  278. package/dist/internal/filesystem/scratch.js +3 -3
  279. package/dist/internal/filesystem/tools.js +6 -6
  280. package/dist/internal/filesystem/walk.d.ts.map +1 -1
  281. package/dist/internal/filesystem/walk.js +2 -2
  282. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  283. package/dist/internal/framework-file-storage.js +6 -5
  284. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  285. package/dist/internal/framework-storage-selection.js +4 -2
  286. package/dist/internal/github-fanout.d.ts.map +1 -1
  287. package/dist/internal/github-fanout.js +3 -3
  288. package/dist/internal/guest-network.js +4 -4
  289. package/dist/internal/host-files.js +1 -1
  290. package/dist/internal/host-kv.js +2 -2
  291. package/dist/internal/hosted-catch-protocol.js +1 -1
  292. package/dist/internal/hosted-catch.js +1 -1
  293. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  294. package/dist/internal/hosted-delivery-protocol.js +14 -14
  295. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  296. package/dist/internal/hosted-delivery.js +23 -9
  297. package/dist/internal/hosted-eval-cases.js +4 -4
  298. package/dist/internal/hosted-execution-diag.js +3 -3
  299. package/dist/internal/hosting.js +1 -1
  300. package/dist/internal/http-channel.js +1 -1
  301. package/dist/internal/http-control-plane-session.js +2 -2
  302. package/dist/internal/init-interview.js +7 -7
  303. package/dist/internal/init-project.d.ts.map +1 -1
  304. package/dist/internal/init-project.js +12 -12
  305. package/dist/internal/inline-stdio-mcp.js +2 -2
  306. package/dist/internal/install-cursor-skills.js +11 -11
  307. package/dist/internal/json-schema.js +1 -1
  308. package/dist/internal/local-control-plane.js +3 -3
  309. package/dist/internal/local-env.js +3 -3
  310. package/dist/internal/log-ring.js +1 -1
  311. package/dist/internal/logs-client.js +1 -1
  312. package/dist/internal/mcp-endpoint.js +8 -8
  313. package/dist/internal/mcp-host.d.ts.map +1 -1
  314. package/dist/internal/mcp-host.js +5 -5
  315. package/dist/internal/mcp-oauth-on-demand.js +3 -3
  316. package/dist/internal/mcp-oauth.js +5 -5
  317. package/dist/internal/net.js +2 -2
  318. package/dist/internal/otel/config.js +3 -3
  319. package/dist/internal/otel/runtime.js +13 -13
  320. package/dist/internal/peer-connections.js +2 -2
  321. package/dist/internal/persistent-stage-log-mirror.d.ts +57 -0
  322. package/dist/internal/persistent-stage-log-mirror.d.ts.map +1 -0
  323. package/dist/internal/persistent-stage-log-mirror.js +231 -0
  324. package/dist/internal/platform-schedule-sync.js +1 -1
  325. package/dist/internal/platform-timers.js +1 -1
  326. package/dist/internal/playground/static.js +2 -2
  327. package/dist/internal/playground/toolchain.js +2 -2
  328. package/dist/internal/playground-proxy.js +3 -3
  329. package/dist/internal/process-memory-telemetry.js +1 -1
  330. package/dist/internal/reminder-runner.d.ts +1 -1
  331. package/dist/internal/reminder-runner.d.ts.map +1 -1
  332. package/dist/internal/reminder-runner.js +14 -16
  333. package/dist/internal/reminder-store.js +1 -1
  334. package/dist/internal/resolved-connections.js +8 -8
  335. package/dist/internal/router.js +4 -4
  336. package/dist/internal/run-client.js +2 -2
  337. package/dist/internal/schedule-runner.js +6 -6
  338. package/dist/internal/sdk-runner.d.ts.map +1 -1
  339. package/dist/internal/sdk-runner.js +6 -6
  340. package/dist/internal/serve-restart.js +1 -1
  341. package/dist/internal/server.d.ts.map +1 -1
  342. package/dist/internal/server.js +93 -72
  343. package/dist/internal/session-cost.js +3 -3
  344. package/dist/internal/session-engine.d.ts +8 -0
  345. package/dist/internal/session-engine.d.ts.map +1 -1
  346. package/dist/internal/session-engine.js +183 -118
  347. package/dist/internal/session-live-publisher.d.ts +46 -0
  348. package/dist/internal/session-live-publisher.d.ts.map +1 -0
  349. package/dist/internal/session-live-publisher.js +352 -0
  350. package/dist/internal/session-run-log.js +6 -6
  351. package/dist/internal/sessions-client.js +3 -3
  352. package/dist/internal/skill-catalog.js +2 -2
  353. package/dist/internal/sleep.js +1 -1
  354. package/dist/internal/start-log-store.d.ts +5 -1
  355. package/dist/internal/start-log-store.d.ts.map +1 -1
  356. package/dist/internal/start-log-store.js +5 -3
  357. package/dist/internal/storage-coordinator.js +12 -12
  358. package/dist/internal/store-api-protocol.d.ts +51 -0
  359. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  360. package/dist/internal/store-api-protocol.js +39 -2
  361. package/dist/internal/store-mirror.js +4 -4
  362. package/dist/internal/stream-progress.d.ts.map +1 -1
  363. package/dist/internal/stream-progress.js +4 -0
  364. package/dist/internal/terminal-style.js +2 -2
  365. package/dist/internal/tool-call-retry.d.ts +87 -0
  366. package/dist/internal/tool-call-retry.d.ts.map +1 -0
  367. package/dist/internal/tool-call-retry.js +387 -0
  368. package/dist/internal/tool-result.js +3 -3
  369. package/dist/internal/trajectory.js +7 -7
  370. package/dist/internal/turn-governor.js +2 -2
  371. package/dist/internal/turn-outbox.js +1 -1
  372. package/dist/internal/update-check.d.ts.map +1 -1
  373. package/dist/internal/update-check.js +4 -2
  374. package/dist/internal/v2-hosting.d.ts +6 -0
  375. package/dist/internal/v2-hosting.d.ts.map +1 -1
  376. package/dist/internal/v2-hosting.js +7 -1
  377. package/dist/internal/workspace.js +4 -4
  378. package/dist/kv/memory-kv.js +3 -3
  379. package/dist/playground/assets/{index-Be0-1hw2.js → index-HN5lOuAX.js} +42 -42
  380. package/dist/playground/assets/index-JY1wKCMg.css +1 -0
  381. package/dist/playground/index.html +2 -2
  382. package/dist/prompt.js +1 -1
  383. package/dist/storage-backends/cursor-hosted-v2.js +2 -2
  384. package/dist/storage-backends/file-kv.js +7 -7
  385. package/dist/storage-protocol.d.ts +7 -0
  386. package/dist/storage-protocol.d.ts.map +1 -1
  387. package/dist/storage-protocol.js +7 -0
  388. package/dist/storage.js +3 -3
  389. package/dist/types.d.ts +15 -0
  390. package/dist/types.d.ts.map +1 -1
  391. package/dist/types.js +4 -4
  392. package/docs/reference/connections.md +2 -1
  393. package/docs/reference/hooks.md +1 -0
  394. package/docs/reference/sessions.md +1 -1
  395. package/docs/reference/tools.md +11 -0
  396. package/package.json +6 -6
  397. package/templates/agentic-owners/bot/channels/github.ts +2 -2
  398. package/templates/agentic-owners/bot/lib/github.ts +7 -5
  399. package/templates/agentic-owners/bot/lib/owners/decision.ts +9 -9
  400. package/templates/agentic-owners/bot/lib/owners/handles.ts +2 -2
  401. package/templates/agentic-owners/bot/lib/owners/match.ts +5 -3
  402. package/templates/agentic-owners/bot/lib/owners/matching.ts +1 -1
  403. package/templates/agentic-owners/bot/lib/owners/parse.ts +4 -4
  404. package/templates/agentic-owners/bot/lib/owners/prompt.ts +1 -1
  405. package/templates/agentic-owners/bot/lib/review.ts +18 -17
  406. package/templates/agentic-owners/evals/owners.eval.ts +2 -2
  407. package/templates/agents-md/bot/lib/collect.ts +6 -6
  408. package/templates/agents-md/bot/lib/config.ts +1 -1
  409. package/templates/agents-md/bot/tools/apply_agents.ts +4 -4
  410. package/templates/code-wiki/bot/channels/github.ts +3 -3
  411. package/templates/code-wiki/bot/lib/repos.ts +1 -1
  412. package/templates/code-wiki/bot/tools/apply_wiki.ts +2 -2
  413. package/templates/demo/bot/lib/collect.ts +1 -1
  414. package/templates/demo/bot/lib/repos.ts +1 -1
  415. package/templates/demo/bot/tools/record_demo.ts +1 -1
  416. package/templates/pr-autofixer/bot/channels/github.ts +2 -2
  417. package/templates/pr-autofixer/bot/lib/merge-watch.ts +2 -2
  418. package/templates/pr-autofixer/bot/lib/repos.ts +2 -2
  419. package/templates/pr-autofixer/bot/lib/webhook-routing.ts +1 -1
  420. package/templates/security-help/bot/lib/repos.ts +1 -1
  421. package/templates/security-reviewer/bot/lib/repos.ts +1 -1
  422. package/templates/triage/bot/lib/actuate.ts +15 -15
  423. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +0 -1
  424. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +0 -1
  425. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +0 -1
  426. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +0 -1
  427. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +0 -1
  428. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +0 -1
  429. package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +0 -162
  430. package/dist/playground/assets/index-Clz6uHj9.css +0 -1
  431. /package/dist/docs/assets/{reference_connections.md.Bljpve-y.lean.js → reference_connections.md.DLrgAd5f.lean.js} +0 -0
  432. /package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.lean.js → reference_sessions.md.CyM7ARz1.lean.js} +0 -0
@@ -79,7 +79,7 @@ export function resolveCursorAccountConnections(args) {
79
79
  const serverBase = trimTrailingSlash(args.serverUrl);
80
80
  const publicBase = args.publicUrl === undefined ? undefined : trimTrailingSlash(args.publicUrl);
81
81
  const headers = { authorization: `Bearer ${args.bridgeSecret}` };
82
- return args.refs.map(ref => ({
82
+ return args.refs.map((ref) => ({
83
83
  name: ref.name,
84
84
  localUrl: `${serverBase}${args.basePath}${cursorAccountMcpPath(ref.name)}`,
85
85
  ...(publicBase === undefined
@@ -148,7 +148,7 @@ export class CursorAccountMcpBridge {
148
148
  async probeAuthUrl(ref) {
149
149
  const identifiers = ref.servers !== undefined && ref.servers.length > 0
150
150
  ? [...ref.servers]
151
- : (await this.client.getAvailableMcpServers()).map(server => server.serverIdentifier ?? server.name);
151
+ : (await this.client.getAvailableMcpServers()).map((server) => server.serverIdentifier ?? server.name);
152
152
  const urls = await probeConnectorAuthUrls({
153
153
  client: this.client,
154
154
  identifiers,
@@ -161,22 +161,22 @@ export class CursorAccountMcpBridge {
161
161
  return undefined;
162
162
  }
163
163
  logPreflight(refs) {
164
- return Promise.all(refs.map(ref => this.runPreflight(ref))).then(() => undefined);
164
+ return Promise.all(refs.map((ref) => this.runPreflight(ref))).then(() => undefined);
165
165
  }
166
166
  async runPreflight(ref) {
167
167
  try {
168
168
  const catalog = await this.getCatalog(ref);
169
169
  const errorDetails = new Map();
170
170
  const needsAuthNames = catalog.servers
171
- .filter(server => server.status === "needsAuth")
172
- .map(server => server.serverIdentifier);
171
+ .filter((server) => server.status === "needsAuth")
172
+ .map((server) => server.serverIdentifier);
173
173
  const [authUrls] = await Promise.all([
174
174
  probeConnectorAuthUrls({
175
175
  client: this.client,
176
176
  identifiers: needsAuthNames,
177
177
  }),
178
178
  Promise.all(catalog.servers
179
- .filter(server => server.status === "error")
179
+ .filter((server) => server.status === "error")
180
180
  .map(async (server) => {
181
181
  const detail = await diagnoseConnectorError(this.client, server.serverIdentifier);
182
182
  if (detail !== undefined) {
@@ -184,11 +184,11 @@ export class CursorAccountMcpBridge {
184
184
  }
185
185
  })),
186
186
  ]);
187
- const unhealthy = catalog.servers.some(server => server.status === "needsAuth" || server.status === "error");
187
+ const unhealthy = catalog.servers.some((server) => server.status === "needsAuth" || server.status === "error");
188
188
  if (catalog.servers.length === 0 || unhealthy) {
189
189
  this.logger(formatCursorAccountMcpWarningBox({
190
190
  connectionName: ref.name,
191
- servers: catalog.servers.map(server => ({
191
+ servers: catalog.servers.map((server) => ({
192
192
  serverIdentifier: server.serverIdentifier,
193
193
  status: server.status,
194
194
  toolCount: server.tools.length,
@@ -200,7 +200,7 @@ export class CursorAccountMcpBridge {
200
200
  return;
201
201
  }
202
202
  const summary = catalog.servers
203
- .map(server => formatServerStatusSummary(server, errorDetails.get(server.serverIdentifier)))
203
+ .map((server) => formatServerStatusSummary(server, errorDetails.get(server.serverIdentifier)))
204
204
  .join(", ");
205
205
  this.logger(`${LOG_PREFIX} Cursor account MCP connection "${ref.name}": ${summary}`);
206
206
  }
@@ -216,7 +216,7 @@ export class CursorAccountMcpBridge {
216
216
  server.setRequestHandler(ListToolsRequestSchema, async () => {
217
217
  const catalog = await this.getCatalog(ref);
218
218
  return {
219
- tools: catalog.tools.map(tool => ({
219
+ tools: catalog.tools.map((tool) => ({
220
220
  name: tool.exposedName,
221
221
  description: tool.description,
222
222
  inputSchema: tool.inputSchema,
@@ -231,17 +231,17 @@ export class CursorAccountMcpBridge {
231
231
  const tool = await this.findTool(ref, request.params.name);
232
232
  if (tool === undefined) {
233
233
  const catalog = await this.getCatalog(ref);
234
- const unhealthy = catalog.servers.filter(server => server.status !== "connected");
234
+ const unhealthy = catalog.servers.filter((server) => server.status !== "connected");
235
235
  const statusHint = unhealthy.length === 0
236
236
  ? ""
237
237
  : ` Unhealthy connectors: ${unhealthy
238
- .map(server => `${server.serverIdentifier}=${server.status}`)
238
+ .map((server) => `${server.serverIdentifier}=${server.status}`)
239
239
  .join(", ")}.`;
240
240
  return {
241
241
  content: [
242
242
  {
243
243
  type: "text",
244
- text: `Unknown tool "${request.params.name}". Available: ${catalog.tools.map(t => t.exposedName).join(", ") || "(none)"}.${statusHint}`,
244
+ text: `Unknown tool "${request.params.name}". Available: ${catalog.tools.map((t) => t.exposedName).join(", ") || "(none)"}.${statusHint}`,
245
245
  },
246
246
  ],
247
247
  isError: true,
@@ -305,7 +305,7 @@ export class CursorAccountMcpBridge {
305
305
  const fresh = {
306
306
  promise: this.client
307
307
  .listAccountMcpTools(ref.servers ?? [])
308
- .then(servers => {
308
+ .then((servers) => {
309
309
  const catalog = buildCatalog(servers);
310
310
  fresh.freshAtMs = Date.now();
311
311
  return catalog;
@@ -430,10 +430,10 @@ export function formatCursorAccountMcpWarningBox(args) {
430
430
  }
431
431
  function warningCopy(args) {
432
432
  const empty = args.servers.length === 0;
433
- const hasAuth = args.servers.some(server => server.status === "needsAuth");
434
- const hasError = args.servers.some(server => server.status === "error");
435
- const nameWidth = Math.max(0, ...args.servers.map(server => server.serverIdentifier.length));
436
- const statusRows = args.servers.map(server => formatWarningStatusRow(server, nameWidth, args.hyperlinks));
433
+ const hasAuth = args.servers.some((server) => server.status === "needsAuth");
434
+ const hasError = args.servers.some((server) => server.status === "error");
435
+ const nameWidth = Math.max(0, ...args.servers.map((server) => server.serverIdentifier.length));
436
+ const statusRows = args.servers.map((server) => formatWarningStatusRow(server, nameWidth, args.hyperlinks));
437
437
  const links = [
438
438
  ` ${CURSOR_ACCOUNT_MCP_SETTINGS_DEEPLINK}`,
439
439
  ` ${CURSOR_ACCOUNT_MCP_DASHBOARD_URL}`,
@@ -494,8 +494,8 @@ export async function diagnoseConnectorError(client, serverIdentifier) {
494
494
  });
495
495
  const text = result.content
496
496
  .filter((part) => part.type === "text")
497
- .map(part => part.text.trim())
498
- .filter(part => part.length > 0)
497
+ .map((part) => part.text.trim())
498
+ .filter((part) => part.length > 0)
499
499
  .join(" ");
500
500
  if (result.isError) {
501
501
  return text.length > 0 ? text : "backend reported an error with no detail";
@@ -209,10 +209,10 @@ export class CursorBackendClient {
209
209
  async listAccountMcpTools(serverIdentifiers) {
210
210
  const raw = await this.rpc("ListSandMcpTools", { serverIdentifiers: [...serverIdentifiers] }, LIST_TIMEOUT_MS);
211
211
  const parsed = listSandMcpToolsResponseSchema.parse(raw);
212
- return (parsed.servers ?? []).map(server => ({
212
+ return (parsed.servers ?? []).map((server) => ({
213
213
  serverIdentifier: server.serverIdentifier,
214
214
  status: server.status,
215
- tools: (server.tools ?? []).map(tool => {
215
+ tools: (server.tools ?? []).map((tool) => {
216
216
  const outputSchema = parseOutputSchemaJson(tool.outputSchemaJson);
217
217
  const annotations = parseAnnotationsJson(tool.annotationsJson);
218
218
  return {
@@ -251,8 +251,8 @@ export class CursorBackendClient {
251
251
  });
252
252
  const parsed = getAvailableMcpServersResponseSchema.parse(raw);
253
253
  return (parsed.servers ?? [])
254
- .filter(server => server.id !== undefined && server.id > 0)
255
- .map(server => ({
254
+ .filter((server) => server.id !== undefined && server.id > 0)
255
+ .map((server) => ({
256
256
  id: server.id,
257
257
  name: server.name ?? "",
258
258
  isTeamServer: server.isTeamServer === true,
@@ -272,7 +272,7 @@ export class CursorBackendClient {
272
272
  serviceAccountId: args.serviceAccountId,
273
273
  }, LIST_TIMEOUT_MS);
274
274
  const parsed = checkHttpMcpStatusResponseSchema.parse(raw);
275
- return (parsed.statuses ?? []).map(status => ({
275
+ return (parsed.statuses ?? []).map((status) => ({
276
276
  id: status.id ?? 0,
277
277
  requiresAuth: status.requiresAuth === true,
278
278
  authUrl: status.authUrl,
@@ -511,7 +511,7 @@ export async function revokeMintedUserApiKey(args) {
511
511
  });
512
512
  const listed = listUserApiKeysResponseSchema.parse(await parseRpcResponse("ListUserApiKeys", listResponse));
513
513
  const masked = maskApiKey(args.apiKey);
514
- const match = (listed.apiKeys ?? []).find(key => key.name === args.keyName && key.maskedKey === masked);
514
+ const match = (listed.apiKeys ?? []).find((key) => key.name === args.keyName && key.maskedKey === masked);
515
515
  if (match === undefined) {
516
516
  // CreateUserApiKey writes the primary while ListUserApiKeys may read a
517
517
  // lagging replica — skip rather than touch any other key.
@@ -445,7 +445,7 @@ function isAborted(signal) {
445
445
  return signal?.aborted === true;
446
446
  }
447
447
  function sleep(ms, signal) {
448
- return new Promise(resolve => {
448
+ return new Promise((resolve) => {
449
449
  if (signal?.aborted === true) {
450
450
  resolve();
451
451
  return;
@@ -45,7 +45,7 @@ export function isStoreApiLaneEnabled(options = {}) {
45
45
  return sourceId !== undefined && sourceId !== "";
46
46
  }
47
47
  export function createStoreApiClient(options = {}) {
48
- const sleep = options.sleep ?? ((ms) => new Promise(resolve => setTimeout(resolve, ms)));
48
+ const sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
49
49
  const random = options.random ?? Math.random;
50
50
  /** One POST of a versioned envelope; returns the parsed 2xx body. */
51
51
  const postOnce = async (call, envelope) => {
@@ -39,7 +39,7 @@ export async function authorizeCursorAccountConnectors(args) {
39
39
  const redirectUri = mcpOauthRedirectUri();
40
40
  // Team-scoped connectors only: the hosted bridge resolves the SA's team
41
41
  // servers, so personal connectors can never apply to a deployment.
42
- const available = (await backendClient.getAvailableMcpServers({ teamId })).filter(server => server.isTeamServer);
42
+ const available = (await backendClient.getAvailableMcpServers({ teamId })).filter((server) => server.isTeamServer);
43
43
  const selected = selectConnectors(available, args.servers);
44
44
  for (const missing of selected.unmatched) {
45
45
  err(`${LOG_PREFIX} Connection "${connectionName}" lists connector ${JSON.stringify(missing)}, but the team has no such connector (dashboard → MCP).\n`);
@@ -48,9 +48,9 @@ export async function authorizeCursorAccountConnectors(args) {
48
48
  err(`${LOG_PREFIX} No matching team connectors for connection "${connectionName}".\n`);
49
49
  return { authorized: [], pending: [], errored: [] };
50
50
  }
51
- const nameById = new Map(selected.servers.map(server => [server.id, server.name]));
51
+ const nameById = new Map(selected.servers.map((server) => [server.id, server.name]));
52
52
  const statuses = await backendClient.checkHttpMcpStatus({
53
- serverIds: selected.servers.map(server => server.id),
53
+ serverIds: selected.servers.map((server) => server.id),
54
54
  oauthRedirectUri: redirectUri,
55
55
  serviceAccountId,
56
56
  });
@@ -114,7 +114,7 @@ function selectConnectors(available, filter) {
114
114
  const unmatched = [];
115
115
  for (const name of filter) {
116
116
  const wanted = name.trim().toLowerCase();
117
- const matches = available.filter(server => server.name.toLowerCase() === wanted || server.serverIdentifier?.toLowerCase() === wanted);
117
+ const matches = available.filter((server) => server.name.toLowerCase() === wanted || server.serverIdentifier?.toLowerCase() === wanted);
118
118
  if (matches.length === 0) {
119
119
  unmatched.push(name);
120
120
  continue;
@@ -133,14 +133,14 @@ function uniqueConnectorMatch(available, identifier) {
133
133
  if (wanted === "") {
134
134
  return undefined;
135
135
  }
136
- const byIdentifier = available.filter(server => server.serverIdentifier?.toLowerCase() === wanted);
136
+ const byIdentifier = available.filter((server) => server.serverIdentifier?.toLowerCase() === wanted);
137
137
  if (byIdentifier.length === 1) {
138
138
  return byIdentifier[0];
139
139
  }
140
140
  if (byIdentifier.length > 1) {
141
141
  return undefined;
142
142
  }
143
- const byName = available.filter(server => server.name.toLowerCase() === wanted);
143
+ const byName = available.filter((server) => server.name.toLowerCase() === wanted);
144
144
  if (byName.length === 1) {
145
145
  return byName[0];
146
146
  }
@@ -173,11 +173,11 @@ export async function probeConnectorAuthUrls(args) {
173
173
  return urls;
174
174
  }
175
175
  const statuses = await args.client.checkHttpMcpStatus({
176
- serverIds: matched.map(server => server.id),
176
+ serverIds: matched.map((server) => server.id),
177
177
  oauthRedirectUri: mcpOauthRedirectUri(),
178
178
  serviceAccountId: args.serviceAccountId,
179
179
  });
180
- const statusById = new Map(statuses.map(status => [status.id, status]));
180
+ const statusById = new Map(statuses.map((status) => [status.id, status]));
181
181
  for (const identifier of args.identifiers) {
182
182
  const match = uniqueConnectorMatch(available, identifier);
183
183
  if (match === undefined) {
@@ -215,7 +215,7 @@ async function pollUntilAuthorized(args) {
215
215
  // Transient probe errors; keep polling until the deadline.
216
216
  continue;
217
217
  }
218
- const status = statuses.find(entry => entry.id === args.serverId);
218
+ const status = statuses.find((entry) => entry.id === args.serverId);
219
219
  if (status !== undefined && !status.requiresAuth) {
220
220
  return true;
221
221
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-deployment-relay.d.ts","sourceRoot":"","sources":["../../src/internal/cursor-deployment-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,kCAAkC,CAAC;AAK1C;yBACyB;AACzB,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;CAClC;AAQD,MAAM,MAAM,4BAA4B,GACpC,SAAS,oBAAoB,EAAE,GAC/B,CAAC,MAAM,SAAS,oBAAoB,EAAE,CAAC,CAAC;AAE5C,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,aAAa,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,oEAAoE;AACpE,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,4BAA4B,GAC1C,SAAS,oBAAoB,EAAE,CAEjC;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE;IACtD,gBAAgB,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,sBAAsB,CAAC,EAAE,CAAC;IAChE,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACzC,GAAG,oBAAoB,EAAE,CA4CzB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,CAAC,SAAS,oBAAoB,EAAE,CAAC,EAAE,GACnD,oBAAoB,EAAE,CAqBxB;AAED,2DAA2D;AAC3D,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,oBAAoB,EAClC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAQT;AAED,8DAA8D;AAC9D,MAAM,WAAW,wBAAwB;IACvC,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC7C,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED,qBAAa,oBAAoB;IAKnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwC;IAC7D,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAE1D,YAA6B,OAAO,EAAE,2BAA2B,EAyDhE;IAED;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAsBtB,KAAK,IAAI,IAAI,CAEZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;CACF"}
1
+ {"version":3,"file":"cursor-deployment-relay.d.ts","sourceRoot":"","sources":["../../src/internal/cursor-deployment-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,kCAAkC,CAAC;AAK1C;yBACyB;AACzB,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;CAClC;AAQD,MAAM,MAAM,4BAA4B,GACpC,SAAS,oBAAoB,EAAE,GAC/B,CAAC,MAAM,SAAS,oBAAoB,EAAE,CAAC,CAAC;AAE5C,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,aAAa,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,oEAAoE;AACpE,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,4BAA4B,GAC1C,SAAS,oBAAoB,EAAE,CAEjC;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE;IACtD,gBAAgB,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,sBAAsB,CAAC,EAAE,CAAC;IAChE,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACzC,GAAG,oBAAoB,EAAE,CA4CzB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,CAAC,SAAS,oBAAoB,EAAE,CAAC,EAAE,GACnD,oBAAoB,EAAE,CAqBxB;AAED,2DAA2D;AAC3D,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,oBAAoB,EAClC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAQT;AAED,8DAA8D;AAC9D,MAAM,WAAW,wBAAwB;IACvC,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC7C,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED,qBAAa,oBAAoB;IAKnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwC;IAC7D,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAE1D,YAA6B,OAAO,EAAE,2BAA2B,EA2DhE;IAED;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAsBtB,KAAK,IAAI,IAAI,CAEZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;CACF"}
@@ -30,7 +30,7 @@ export function resolveDeploymentSubscriptions(options) {
30
30
  }
31
31
  const environments = [
32
32
  ...new Set((subscription.environments ?? options.environments ?? [])
33
- .map(value => value.trim())
33
+ .map((value) => value.trim())
34
34
  .filter(Boolean)),
35
35
  ];
36
36
  const events = new Set(subscription.events ?? options.events ?? DEFAULT_EVENTS);
@@ -104,7 +104,7 @@ export function deploymentEventMatches(subscription, envelope) {
104
104
  */
105
105
  export async function fanOutDeploymentEvent(input) {
106
106
  const { event, logger } = input;
107
- const matched = input.targets.filter(target => target.subscriptions.some(subscription => subscription.deploySourceUri === event.deploySourceUri &&
107
+ const matched = input.targets.filter((target) => target.subscriptions.some((subscription) => subscription.deploySourceUri === event.deploySourceUri &&
108
108
  deploymentEventMatches(subscription, event)));
109
109
  const failures = [];
110
110
  for (const target of matched) {
@@ -130,9 +130,9 @@ export class DeploymentEventRelay {
130
130
  logPrefix: "deployment-events",
131
131
  subscribePath: "/v0/deployment-events/subscriptions",
132
132
  pollPath: "/v0/deployment-events",
133
- buildRegistrationBody: consumerId => ({
133
+ buildRegistrationBody: (consumerId) => ({
134
134
  consumerId,
135
- subscriptions: currentDeploymentSubscriptions(options.subscriptions).map(subscription => ({
135
+ subscriptions: currentDeploymentSubscriptions(options.subscriptions).map((subscription) => ({
136
136
  deploySourceUri: subscription.deploySourceUri,
137
137
  environments: subscription.environments,
138
138
  events: [...subscription.events],
@@ -140,11 +140,11 @@ export class DeploymentEventRelay {
140
140
  }),
141
141
  // Empty subscriptions drop this consumer's registration on clean stop
142
142
  // instead of leaving it to lapse by TTL.
143
- buildDeregistrationBody: consumerId => ({
143
+ buildDeregistrationBody: (consumerId) => ({
144
144
  consumerId,
145
145
  subscriptions: [],
146
146
  }),
147
- applyRegistrationResponse: json => {
147
+ applyRegistrationResponse: (json) => {
148
148
  const result = json;
149
149
  const wantedSubscriptions = currentDeploymentSubscriptions(options.subscriptions);
150
150
  this.subscribed = new Map();
@@ -152,7 +152,7 @@ export class DeploymentEventRelay {
152
152
  const lines = [];
153
153
  const confirmed = [];
154
154
  for (const status of result.deploySourceUris ?? []) {
155
- const wanted = wantedSubscriptions.find(subscription => subscription.deploySourceUri === status.deploySourceUri);
155
+ const wanted = wantedSubscriptions.find((subscription) => subscription.deploySourceUri === status.deploySourceUri);
156
156
  if (!status.isSubscribed || wanted === undefined) {
157
157
  lines.push(`not subscribed to ${status.deploySourceUri}: ${status.detail ?? "unknown reason"}`);
158
158
  continue;
@@ -161,12 +161,12 @@ export class DeploymentEventRelay {
161
161
  confirmed.push(status.deploySourceUri);
162
162
  }
163
163
  if (confirmed.length > 0) {
164
- const kinds = [...new Set(wantedSubscriptions.flatMap(s => [...s.events]))];
164
+ const kinds = [...new Set(wantedSubscriptions.flatMap((s) => [...s.events]))];
165
165
  lines.push(`subscribed to ${confirmed.join(", ")} for events: ${kinds.join(", ")}`);
166
166
  }
167
167
  return lines;
168
168
  },
169
- shouldDispatch: event => this.shouldDispatch(event),
169
+ shouldDispatch: (event) => this.shouldDispatch(event),
170
170
  dispatch: ({ offset: _offset, ...envelope }) => options.dispatch(envelope),
171
171
  };
172
172
  this.core = new CursorRelayCore({
@@ -175,7 +175,7 @@ export function scmMetadataToGitHubPayload(event) {
175
175
  }
176
176
  function stubGitHubCiPullRequests(input) {
177
177
  if (input.snapshot !== undefined && input.snapshot.length > 0) {
178
- return input.snapshot.map(pr => ({
178
+ return input.snapshot.map((pr) => ({
179
179
  number: pr.number,
180
180
  ...(pr.url === undefined ? {} : { html_url: pr.url }),
181
181
  }));
@@ -319,14 +319,14 @@ function subscriptionLabel(provider, repo) {
319
319
  }
320
320
  export function resolveCursorScmSubscriptions(options) {
321
321
  if (options.subscriptions !== undefined) {
322
- return options.subscriptions.map(subscription => ({
322
+ return options.subscriptions.map((subscription) => ({
323
323
  provider: subscription.provider,
324
324
  repo: subscription.repo.trim().toLowerCase(),
325
325
  events: [...subscription.events],
326
326
  }));
327
327
  }
328
328
  const events = [...(options.events ?? [])];
329
- return (options.repos ?? []).map(repo => ({
329
+ return (options.repos ?? []).map((repo) => ({
330
330
  provider: "github",
331
331
  repo: repo.trim().toLowerCase(),
332
332
  events,
@@ -347,7 +347,7 @@ export class CursorEventRelay {
347
347
  this.subscribedEvents = new Map();
348
348
  this.loggedSkippedKeys = new Set();
349
349
  this.subscriptions = resolveCursorScmSubscriptions(options);
350
- const requestedEvents = new Map(this.subscriptions.map(subscription => [
350
+ const requestedEvents = new Map(this.subscriptions.map((subscription) => [
351
351
  subscriptionKey(subscription.provider, subscription.repo),
352
352
  new Set(subscription.events),
353
353
  ]));
@@ -355,9 +355,9 @@ export class CursorEventRelay {
355
355
  logPrefix: "cursor-events",
356
356
  subscribePath: "/v0/scm-events/subscriptions",
357
357
  pollPath: "/v0/scm-events",
358
- buildRegistrationBody: consumerId => ({
358
+ buildRegistrationBody: (consumerId) => ({
359
359
  consumerId,
360
- subscriptions: this.subscriptions.map(subscription => ({
360
+ subscriptions: this.subscriptions.map((subscription) => ({
361
361
  provider: subscription.provider,
362
362
  repo: subscription.repo,
363
363
  events: [...subscription.events],
@@ -368,7 +368,7 @@ export class CursorEventRelay {
368
368
  // registration leaves a hole in the log until the next process
369
369
  // registers, and the durable offset cannot replay what was never
370
370
  // written. A consumer that does not come back lapses by TTL.
371
- applyRegistrationResponse: json => {
371
+ applyRegistrationResponse: (json) => {
372
372
  const result = json;
373
373
  const statuses = result.repos ?? [];
374
374
  this.subscribedEvents = new Map();
@@ -385,13 +385,13 @@ export class CursorEventRelay {
385
385
  confirmed.push(subscriptionLabel(provider, status.repo));
386
386
  }
387
387
  if (confirmed.length > 0) {
388
- const eventKinds = [...new Set(this.subscriptions.flatMap(s => [...s.events]))];
388
+ const eventKinds = [...new Set(this.subscriptions.flatMap((s) => [...s.events]))];
389
389
  lines.push(`subscribed to ${confirmed.join(", ")} for events: ${eventKinds.join(", ")}`);
390
390
  }
391
391
  return lines;
392
392
  },
393
- shouldDispatch: event => this.shouldDispatch(event),
394
- dispatch: event => this.options.dispatch(event),
393
+ shouldDispatch: (event) => this.shouldDispatch(event),
394
+ dispatch: (event) => this.options.dispatch(event),
395
395
  };
396
396
  this.core = new CursorRelayCore({
397
397
  baseUrl: options.baseUrl,
@@ -181,7 +181,7 @@ export class CursorRelayCore {
181
181
  // loose loses nothing).
182
182
  await Promise.race([
183
183
  this.consumePromise?.catch(() => { }),
184
- new Promise(resolve => {
184
+ new Promise((resolve) => {
185
185
  const timer = setTimeout(resolve, 2_000);
186
186
  timer.unref?.();
187
187
  }),
@@ -420,7 +420,7 @@ export class CursorRelayCore {
420
420
  return isAuthOrFenceFailure ? AUTH_FAILURE_BACKOFF_MS : Math.min(backoffMs * 2, MAX_BACKOFF_MS);
421
421
  }
422
422
  sleep(ms) {
423
- return new Promise(resolve => {
423
+ return new Promise((resolve) => {
424
424
  const signal = this.abort?.signal;
425
425
  if (signal?.aborted === true) {
426
426
  resolve();
@@ -120,7 +120,7 @@ export function buildAgentDeployManifest(project, options) {
120
120
  throw new Error(runtimeArchitectureError);
121
121
  }
122
122
  applyAgentContinuationDefaults(project);
123
- const channels = project.channels.map(channel => {
123
+ const channels = project.channels.map((channel) => {
124
124
  const architectureError = channelArchitectureError(project.agent.architecture, channel.definition);
125
125
  if (architectureError !== undefined) {
126
126
  throw new Error(`channels/${channel.id}: ${architectureError}`);
@@ -150,8 +150,8 @@ export function buildAgentDeployManifest(project, options) {
150
150
  // Same mapping as `july deploy` (cli-deploy.ts): channels declared public
151
151
  // via `publicEndpoint()` become alias-token-free route prefixes.
152
152
  const publicRoutePaths = project.channels
153
- .filter(channel => (channel.definition.auth ?? []).some(isPublicEndpointPolicy))
154
- .map(channel => `/v1/channels/${channel.id}`);
153
+ .filter((channel) => (channel.definition.auth ?? []).some(isPublicEndpointPolicy))
154
+ .map((channel) => `/v1/channels/${channel.id}`);
155
155
  const manifest = {
156
156
  manifestVersion: DEPLOY_MANIFEST_VERSION,
157
157
  generatedAtMs: options?.nowMs ?? Date.now(),
@@ -180,7 +180,7 @@ export function buildAgentDeployManifest(project, options) {
180
180
  const validation = agentDeployManifestV1Schema.safeParse(manifest);
181
181
  if (!validation.success) {
182
182
  const issues = validation.error.issues
183
- .map(issue => `${issue.path.join(".")}: ${issue.message}`)
183
+ .map((issue) => `${issue.path.join(".")}: ${issue.message}`)
184
184
  .join("; ");
185
185
  throw new Error(`Invalid Agent SDK deploy manifest: ${issues}`);
186
186
  }
@@ -207,7 +207,7 @@ export function channelCatchDeclaration(definition) {
207
207
  }
208
208
  const declared = (definition.auth ?? [])
209
209
  .map(catchAuthDeclaration)
210
- .filter(declaration => declaration !== undefined);
210
+ .filter((declaration) => declaration !== undefined);
211
211
  if (declared.length === 0) {
212
212
  return undefined;
213
213
  }
@@ -219,9 +219,9 @@ export function channelCatchDeclaration(definition) {
219
219
  // claim-checked, and senders keep sending the secret regardless of
220
220
  // whether anything still checks it. HMAC policies carry body digests,
221
221
  // not secrets, so nothing is lost by dropping them.
222
- const isPublic = declared.some(policy => policy.kind === "public");
222
+ const isPublic = declared.some((policy) => policy.kind === "public");
223
223
  const auth = isPublic
224
- ? [{ kind: "public" }, ...declared.filter(policy => policy.kind === "header")]
224
+ ? [{ kind: "public" }, ...declared.filter((policy) => policy.kind === "header")]
225
225
  : declared;
226
226
  if (routes.length > CATCH_MAX_ROUTES) {
227
227
  if (isPublic) {
@@ -238,7 +238,7 @@ export function channelCatchDeclaration(definition) {
238
238
  : `Catch channels may declare at most ${CATCH_MAX_AUTH_POLICIES} secret policies (got ${auth.length}).`);
239
239
  }
240
240
  return {
241
- routes: routes.map(route => ({ method: route.method, path: route.path })),
241
+ routes: routes.map((route) => ({ method: route.method, path: route.path })),
242
242
  auth,
243
243
  };
244
244
  }
@@ -252,11 +252,11 @@ export function channelCatchDeclaration(definition) {
252
252
  */
253
253
  export function channelCatchSecretNames(definition) {
254
254
  const declaration = channelCatchDeclaration(definition);
255
- if (declaration === undefined || declaration.auth.some(policy => policy.kind === "public")) {
255
+ if (declaration === undefined || declaration.auth.some((policy) => policy.kind === "public")) {
256
256
  return [];
257
257
  }
258
258
  return [
259
- ...new Set(declaration.auth.flatMap(policy => (policy.kind === "public" ? [] : [policy.secret]))),
259
+ ...new Set(declaration.auth.flatMap((policy) => (policy.kind === "public" ? [] : [policy.secret]))),
260
260
  ];
261
261
  }
262
262
  /**
@@ -107,7 +107,7 @@ export function resolveHosting(ctx, agentDir, hosting, extensions) {
107
107
  warn(`hosting.image: ${imageError}`);
108
108
  }
109
109
  }
110
- const mountedEgress = extensions.flatMap(extension => extension.hosting?.egressDomains ?? []);
110
+ const mountedEgress = extensions.flatMap((extension) => extension.hosting?.egressDomains ?? []);
111
111
  const egressDomains = [...new Set([...(hosting?.egressDomains ?? []), ...mountedEgress])];
112
112
  if (egressDomains.length > MAX_EGRESS_DOMAINS) {
113
113
  const withMounts = mountedEgress.length > 0 ? " with mounted extensions" : "";
@@ -116,7 +116,7 @@ export function resolveHosting(ctx, agentDir, hosting, extensions) {
116
116
  const secretNames = [
117
117
  ...new Set([
118
118
  ...(hosting?.secretNames ?? []),
119
- ...extensions.flatMap(extension => extension.hosting?.secretNames ?? []),
119
+ ...extensions.flatMap((extension) => extension.hosting?.secretNames ?? []),
120
120
  ]),
121
121
  ];
122
122
  if (egressDomains.length === 0 && secretNames.length === 0 && hosting?.image === undefined) {
@@ -115,7 +115,7 @@ export async function loadAgent(ctx, agentDir, options) {
115
115
  hasRoot,
116
116
  tools: authoredAllowlist,
117
117
  }));
118
- const clash = tools.find(tool => {
118
+ const clash = tools.find((tool) => {
119
119
  if (reservedNames.has(tool.name)) {
120
120
  return true;
121
121
  }
@@ -176,7 +176,7 @@ export async function loadAgent(ctx, agentDir, options) {
176
176
  // non-local agent that declares them must fail at serve start — never
177
177
  // run without the connection's tools or identity. (Hybrid per-send
178
178
  // cloud sessions fail closed in the session engine.)
179
- const perSessionConnection = connections.find(connection => connection.advertiseTools === true || connection.auth !== undefined);
179
+ const perSessionConnection = connections.find((connection) => connection.advertiseTools === true || connection.auth !== undefined);
180
180
  if (perSessionConnection !== undefined && runtime !== "local") {
181
181
  ctx.diagnostics.push({
182
182
  severity: "error",
@@ -189,7 +189,7 @@ export async function loadAgent(ctx, agentDir, options) {
189
189
  // strands authored scripts deserves a loud diagnostic, not silence.
190
190
  if (allowedTools !== undefined &&
191
191
  !allowedTools.includes("shell") &&
192
- tools.some(tool => tool.execution === "agent")) {
192
+ tools.some((tool) => tool.execution === "agent")) {
193
193
  ctx.diagnostics.push({
194
194
  severity: "warning",
195
195
  path: displayPath(ctx, join(agentDir, "agent.ts")),
@@ -227,7 +227,7 @@ export async function loadAgent(ctx, agentDir, options) {
227
227
  }
228
228
  if (runtime === "cloud") {
229
229
  warnCloudRuntimeLimitations(ctx, agentDir, {
230
- agentTools: tools.filter(tool => tool.execution === "agent").length,
230
+ agentTools: tools.filter((tool) => tool.execution === "agent").length,
231
231
  skills: skills.length,
232
232
  seedFiles: seedFiles.length,
233
233
  hasCloudOptions: cloud !== undefined,
@@ -237,8 +237,8 @@ export async function loadAgent(ctx, agentDir, options) {
237
237
  // After appendBuiltinTools so opted-in built-ins (server-executed) count.
238
238
  if (runtime === "grokbot") {
239
239
  checkGrokBotRuntimeLimitations(ctx, agentDir, {
240
- serverTools: tools.filter(tool => tool.execution === "server").length,
241
- agentTools: tools.filter(tool => tool.execution === "agent").length,
240
+ serverTools: tools.filter((tool) => tool.execution === "server").length,
241
+ agentTools: tools.filter((tool) => tool.execution === "agent").length,
242
242
  skills: skills.length,
243
243
  seedFiles: seedFiles.length,
244
244
  connections: connections.length + hostConnections.length,
@@ -27,7 +27,7 @@ function hasAuthorizationHeader(headers) {
27
27
  if (headers === undefined) {
28
28
  return false;
29
29
  }
30
- return Object.keys(headers).some(key => key.toLowerCase() === "authorization");
30
+ return Object.keys(headers).some((key) => key.toLowerCase() === "authorization");
31
31
  }
32
32
  function parseConnectionEffects(effects) {
33
33
  if (effects === undefined) {
@@ -53,7 +53,7 @@ function parseConnectionTools(tools) {
53
53
  if (!Array.isArray(tools) || tools.length === 0) {
54
54
  return { ok: false };
55
55
  }
56
- if (tools.some(name => typeof name !== "string")) {
56
+ if (tools.some((name) => typeof name !== "string")) {
57
57
  return { ok: false };
58
58
  }
59
59
  const normalized = normalizeConnectionTools(tools);
@@ -107,7 +107,7 @@ function connectionTransport(connection) {
107
107
  export async function loadHostConnections(ctx, agentDir, modelConnections) {
108
108
  const hostDir = join(agentDir, "host-connections");
109
109
  const loaded = await loadConnections(ctx, hostDir, "host");
110
- const modelNames = new Set(modelConnections.map(connection => connection.name));
110
+ const modelNames = new Set(modelConnections.map((connection) => connection.name));
111
111
  const hostConnections = [];
112
112
  for (const connection of loaded) {
113
113
  if (modelNames.has(connection.name)) {
@@ -330,7 +330,7 @@ export async function compileConnection(ctx, entryPath, name, connection, role)
330
330
  }
331
331
  if ("cursorAccount" in transport &&
332
332
  transport.servers !== undefined &&
333
- (transport.servers.length === 0 || transport.servers.some(server => isBlank(server)))) {
333
+ (transport.servers.length === 0 || transport.servers.some((server) => isBlank(server)))) {
334
334
  ctx.diagnostics.push({
335
335
  severity: "error",
336
336
  path: displayPath(ctx, entryPath),
@@ -353,7 +353,7 @@ export async function compileConnection(ctx, entryPath, name, connection, role)
353
353
  ctx.diagnostics.push({
354
354
  severity: "warning",
355
355
  path: displayPath(ctx, entryPath),
356
- message: `MCP connection "${name}" templates ${unresolved.map(variable => `\${${variable}}`).join(", ")}, which the environment does not set. The value resolves when the connection opens, so hosted deployments are fine; locally, set it before the turn or the credential is empty.`,
356
+ message: `MCP connection "${name}" templates ${unresolved.map((variable) => `\${${variable}}`).join(", ")}, which the environment does not set. The value resolves when the connection opens, so hosted deployments are fine; locally, set it before the turn or the credential is empty.`,
357
357
  });
358
358
  }
359
359
  return {