@cursor/bdk 0.2.11 → 0.2.13

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 (457) 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/github/index.d.ts +22 -12
  18. package/dist/channels/github/index.d.ts.map +1 -1
  19. package/dist/channels/github/index.js +11 -12
  20. package/dist/channels/gitlab/binding.js +4 -4
  21. package/dist/channels/gitlab/checks.js +1 -1
  22. package/dist/channels/gitlab/cursor-account.js +1 -1
  23. package/dist/channels/gitlab/events.js +1 -1
  24. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  25. package/dist/channels/gitlab/gitlab-webhook.js +1 -1
  26. package/dist/channels/gitlab/replay.js +2 -2
  27. package/dist/channels/origin/binding.js +3 -3
  28. package/dist/channels/origin/checks.js +1 -1
  29. package/dist/channels/origin/cursor-account.js +1 -1
  30. package/dist/channels/origin/events.js +1 -1
  31. package/dist/channels/origin/index.d.ts +21 -11
  32. package/dist/channels/origin/index.d.ts.map +1 -1
  33. package/dist/channels/origin/index.js +10 -11
  34. package/dist/channels/origin/origin-channel.js +1 -1
  35. package/dist/channels/origin/origin-webhook.js +2 -2
  36. package/dist/channels/slack/agentic-delivery.js +3 -3
  37. package/dist/channels/slack/agentic-signals.js +1 -1
  38. package/dist/channels/slack/api.js +5 -5
  39. package/dist/channels/slack/approvals.js +1 -1
  40. package/dist/channels/slack/attachments.js +3 -3
  41. package/dist/channels/slack/blocks.js +3 -3
  42. package/dist/channels/slack/bot-mentions.js +4 -4
  43. package/dist/channels/slack/channel-watch.js +4 -4
  44. package/dist/channels/slack/cli-project.js +3 -3
  45. package/dist/channels/slack/dispatch.js +1 -1
  46. package/dist/channels/slack/doctor.js +1 -1
  47. package/dist/channels/slack/eval-directive.js +1 -1
  48. package/dist/channels/slack/footer.js +1 -1
  49. package/dist/channels/slack/interactive.js +2 -2
  50. package/dist/channels/slack/log.d.ts.map +1 -1
  51. package/dist/channels/slack/log.js +1 -1
  52. package/dist/channels/slack/manifest.js +1 -1
  53. package/dist/channels/slack/nudge-carrier.js +1 -1
  54. package/dist/channels/slack/nudge-store.js +2 -2
  55. package/dist/channels/slack/recording-sink.js +6 -6
  56. package/dist/channels/slack/reply-options.js +6 -6
  57. package/dist/channels/slack/self-identity.d.ts +7 -4
  58. package/dist/channels/slack/self-identity.d.ts.map +1 -1
  59. package/dist/channels/slack/self-identity.js +17 -8
  60. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  61. package/dist/channels/slack/sender-name.js +2 -6
  62. package/dist/channels/slack/setup.d.ts.map +1 -1
  63. package/dist/channels/slack/setup.js +1 -1
  64. package/dist/channels/slack/slack-channel.js +2 -2
  65. package/dist/channels/slack/socket-mode.js +2 -2
  66. package/dist/channels/slack/thread-context.js +8 -8
  67. package/dist/channels/slack/tool-cards.js +1 -1
  68. package/dist/channels/slack/user-info.d.ts +2 -1
  69. package/dist/channels/slack/user-info.d.ts.map +1 -1
  70. package/dist/channels/slack/user-info.js +16 -1
  71. package/dist/channels.js +1 -1
  72. package/dist/docs/404.html +3 -3
  73. package/dist/docs/assets/{app.DXI7bwox.js → app.CaLG1pPt.js} +4 -4
  74. package/dist/docs/assets/chunks/@localSearchIndexroot.DvlKuIO-.js +1 -0
  75. package/dist/docs/assets/chunks/{VPLocalSearchBox.BrbO5mEe.js → VPLocalSearchBox.YsP_2wqD.js} +2 -2
  76. package/dist/docs/assets/chunks/{arc.BOG1yms8.js → arc.C2j9hR7c.js} +1 -1
  77. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.C0hsMZnZ.js → architectureDiagram-Q4EWVU46.C5qkGp7y.js} +1 -1
  78. package/dist/docs/assets/chunks/{baseUniq.H044KjKs.js → baseUniq.U6GgTHOD.js} +1 -1
  79. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BsRW6GoB.js → blockDiagram-DXYQGD6D.D51mJop2.js} +1 -1
  80. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.B9HV5PFR.js → c4Diagram-AHTNJAMY.w1d6QxV7.js} +1 -1
  81. package/dist/docs/assets/chunks/channel.BRSFxCcD.js +1 -0
  82. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CPoT_ajl.js → chunk-4BX2VUAB.B_A815un.js} +1 -1
  83. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DZBwWuCL.js → chunk-4TB4RGXK.DMrm-ZCb.js} +1 -1
  84. package/dist/docs/assets/chunks/{chunk-55IACEB6.CZ3yTiyq.js → chunk-55IACEB6.8qw6Xdal.js} +1 -1
  85. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.6DfvHSd8.js → chunk-EDXVE4YY.Cq_nHODn.js} +1 -1
  86. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CpBj8HfK.js → chunk-FMBD7UC4.B67ohCYn.js} +1 -1
  87. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.BdKo8YqS.js → chunk-OYMX7WX6.Bo8rQI8F.js} +1 -1
  88. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnXNyxJx.js → chunk-QZHKN3VN.BERUMfE9.js} +1 -1
  89. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.Cg1OcF8G.js → chunk-YZCP3GAM.DWG2tXIX.js} +1 -1
  90. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Cmtm6WkN.js +1 -0
  91. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Cmtm6WkN.js +1 -0
  92. package/dist/docs/assets/chunks/clone.JMC96Eo6.js +1 -0
  93. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.1SP8al9c.js → cose-bilkent-S5V4N54A.tezXBs9b.js} +1 -1
  94. package/dist/docs/assets/chunks/{dagre-KV5264BT.DS1L6hJt.js → dagre-KV5264BT.aSbEUwT7.js} +1 -1
  95. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.ChsausbG.js → diagram-5BDNPKRD.vnT6aJ57.js} +1 -1
  96. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.3XsptNWj.js → diagram-G4DWMVQ6.hGYdrDa2.js} +1 -1
  97. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DPA9Dk_P.js → diagram-MMDJMWI5.CmdSUP6L.js} +1 -1
  98. package/dist/docs/assets/chunks/{diagram-TYMM5635.BVswXWrB.js → diagram-TYMM5635.BbAnLEBB.js} +1 -1
  99. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BSak5OSP.js → erDiagram-SMLLAGMA.H40W4HWE.js} +1 -1
  100. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CQgN4TTz.js → flowDiagram-DWJPFMVM.BFMtUSv-.js} +1 -1
  101. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.GrT0kA4a.js → ganttDiagram-T4ZO3ILL.CbYiu7Dt.js} +1 -1
  102. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CdS7Ucll.js → gitGraphDiagram-UUTBAWPF.Cyc5mzZD.js} +1 -1
  103. package/dist/docs/assets/chunks/{graph.BVqKRmRo.js → graph.BRptDG1H.js} +1 -1
  104. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.C3C9FRto.js → infoDiagram-42DDH7IO.Bz6KCA3a.js} +1 -1
  105. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js → ishikawaDiagram-UXIWVN3A.DDJ_7_Fq.js} +1 -1
  106. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CaHMfK4b.js → journeyDiagram-VCZTEJTY.D0t_ltlb.js} +1 -1
  107. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CjhIUwcA.js → kanban-definition-6JOO6SKY.DyyNsMfi.js} +1 -1
  108. package/dist/docs/assets/chunks/{layout.CGU3gfSf.js → layout.Cbxq-Rhp.js} +1 -1
  109. package/dist/docs/assets/chunks/{linear.DaihpW_n.js → linear.DxGYL0MP.js} +1 -1
  110. package/dist/docs/assets/chunks/{min.BS-j8kHQ.js → min.DA5KL8wu.js} +1 -1
  111. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BVJ1Bbnk.js → mindmap-definition-QFDTVHPH.Bc72Utls.js} +1 -1
  112. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.Cz1WIv9r.js → pieDiagram-DEJITSTG.BtpHnIB_.js} +1 -1
  113. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DKLFxcjy.js → quadrantDiagram-34T5L4WZ.Cx4oCSRR.js} +1 -1
  114. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.BHegiK7x.js → requirementDiagram-MS252O5E.BC0hXWlW.js} +1 -1
  115. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DYkY6yPc.js → sankeyDiagram-XADWPNL6.Dg8T1SEp.js} +1 -1
  116. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DYQ1QUrI.js → sequenceDiagram-FGHM5R23.CWSdHYAF.js} +1 -1
  117. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.Iru8BsFo.js → stateDiagram-FHFEXIEX.0MVPRI28.js} +1 -1
  118. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.N4Am6sXd.js +1 -0
  119. package/dist/docs/assets/chunks/{theme.DaplWQhQ.js → theme.DO1avLBn.js} +2 -2
  120. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BwFA8hiX.js → timeline-definition-GMOUNBTQ.BuRinAVi.js} +1 -1
  121. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CZ60W1C_.js → vennDiagram-DHZGUBPP.DXf0PCoJ.js} +1 -1
  122. package/dist/docs/assets/chunks/wardley-RL74JXVD._eATmGtu.js +162 -0
  123. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.B69D2r8-.js → wardleyDiagram-NUSXRM2D.T4ThngYV.js} +1 -1
  124. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CLPZEIU9.js → xychartDiagram-5P7HB3ND.b4pZF3D5.js} +1 -1
  125. package/dist/docs/assets/{reference_connections.md.Bljpve-y.js → reference_connections.md.DLrgAd5f.js} +1 -1
  126. package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.js → reference_hooks.md.B-eGa2km.js} +3 -3
  127. package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.lean.js → reference_hooks.md.B-eGa2km.lean.js} +1 -1
  128. package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.js → reference_sessions.md.CyM7ARz1.js} +1 -1
  129. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  130. package/dist/docs/assets/{reference_tools.md.v3SXVSs_.js → reference_tools.md.DzIY9JzY.js} +3 -3
  131. package/dist/docs/assets/{reference_tools.md.v3SXVSs_.lean.js → reference_tools.md.DzIY9JzY.lean.js} +1 -1
  132. package/dist/docs/assets/{style.C130MVnH.css → style.Dwls12uf.css} +1 -1
  133. package/dist/docs/building-with-agents.html +37 -37
  134. package/dist/docs/deployment.html +37 -37
  135. package/dist/docs/evals.html +37 -37
  136. package/dist/docs/guides/agent-to-agent.html +37 -37
  137. package/dist/docs/guides/bitbucket.html +37 -37
  138. package/dist/docs/guides/cloud-agents.html +37 -37
  139. package/dist/docs/guides/convert-automation.html +37 -37
  140. package/dist/docs/guides/github.html +37 -37
  141. package/dist/docs/guides/gitlab.html +37 -37
  142. package/dist/docs/guides/grokbot-agents.html +37 -37
  143. package/dist/docs/guides/hooks.html +37 -37
  144. package/dist/docs/guides/improve.html +37 -37
  145. package/dist/docs/guides/jev.html +37 -37
  146. package/dist/docs/guides/mcp-oauth.html +37 -37
  147. package/dist/docs/guides/migrate.html +37 -37
  148. package/dist/docs/guides/opentelemetry.html +37 -37
  149. package/dist/docs/guides/slack.html +37 -37
  150. package/dist/docs/guides/webhooks.html +37 -37
  151. package/dist/docs/hashmap.json +1 -1
  152. package/dist/docs/hillclimbing.html +37 -37
  153. package/dist/docs/index.html +37 -37
  154. package/dist/docs/llms-full.txt +15 -2
  155. package/dist/docs/quickstart.html +37 -37
  156. package/dist/docs/reference/agent-config.html +37 -37
  157. package/dist/docs/reference/artifacts.html +37 -37
  158. package/dist/docs/reference/channels.html +37 -37
  159. package/dist/docs/reference/cli.html +37 -37
  160. package/dist/docs/reference/connections.html +39 -39
  161. package/dist/docs/reference/connections.md +2 -1
  162. package/dist/docs/reference/evals.html +37 -37
  163. package/dist/docs/reference/extensions.html +37 -37
  164. package/dist/docs/reference/hooks.html +39 -39
  165. package/dist/docs/reference/hooks.md +1 -0
  166. package/dist/docs/reference/http-api.html +37 -37
  167. package/dist/docs/reference/instructions.html +37 -37
  168. package/dist/docs/reference/playground.html +36 -36
  169. package/dist/docs/reference/project-layout.html +37 -37
  170. package/dist/docs/reference/prompt.html +37 -37
  171. package/dist/docs/reference/schedules.html +37 -37
  172. package/dist/docs/reference/sessions.html +37 -37
  173. package/dist/docs/reference/sessions.md +1 -1
  174. package/dist/docs/reference/skills.html +40 -40
  175. package/dist/docs/reference/subagents.html +37 -37
  176. package/dist/docs/reference/tools.html +39 -39
  177. package/dist/docs/reference/tools.md +11 -0
  178. package/dist/docs/templates/agentic-owners.html +37 -37
  179. package/dist/docs/templates/grokbot-agents.html +37 -37
  180. package/dist/docs/templates/security-reviewer.html +37 -37
  181. package/dist/docs/templates/thermo-quality-review.html +37 -37
  182. package/dist/docs/templates/thermo-review.html +37 -37
  183. package/dist/docs/templates/triage.html +37 -37
  184. package/dist/docs/troubleshooting.html +36 -36
  185. package/dist/evals/assertions.d.ts.map +1 -1
  186. package/dist/evals/assertions.js +21 -19
  187. package/dist/evals/expect.js +1 -1
  188. package/dist/evals/judge.js +1 -1
  189. package/dist/evals/reporters.js +8 -8
  190. package/dist/evals/run-facts.js +2 -2
  191. package/dist/evals.js +6 -6
  192. package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
  193. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  194. package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
  195. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +16 -0
  196. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  197. package/dist/extensions/cursor-cloud-agents/lib/backend.js +44 -3
  198. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  199. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts +23 -0
  200. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts.map +1 -0
  201. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.js +32 -0
  202. package/dist/extensions/cursor-cloud-agents/lib/repos.js +2 -2
  203. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -2
  204. package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts.map +1 -1
  205. package/dist/extensions/cursor-cloud-agents/lib/watch.js +1 -1
  206. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
  207. package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -8
  208. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  209. package/dist/extensions/cursor-grokbot-agents/extension.js +3 -3
  210. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  211. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +3 -3
  212. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +4 -4
  213. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  214. package/dist/extensions/improve/skills/yourself.js +1 -1
  215. package/dist/extensions/jev/extension.js +2 -2
  216. package/dist/extensions/jev/tools/evaluate.js +1 -1
  217. package/dist/extensions/slack-communication/tools/react.js +1 -1
  218. package/dist/files-backends/cursor-hosted.js +8 -8
  219. package/dist/files-backends/local-fs.js +1 -1
  220. package/dist/filesystem.d.ts.map +1 -1
  221. package/dist/filesystem.js +15 -15
  222. package/dist/internal/advertise-tools.d.ts +3 -2
  223. package/dist/internal/advertise-tools.d.ts.map +1 -1
  224. package/dist/internal/advertise-tools.js +11 -9
  225. package/dist/internal/approval-gate.js +1 -1
  226. package/dist/internal/artifacts-store.js +13 -13
  227. package/dist/internal/as-of.js +2 -2
  228. package/dist/internal/authored-alias-hooks.d.ts +4 -3
  229. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  230. package/dist/internal/authored-alias-hooks.js +16 -7
  231. package/dist/internal/authored-loaders.d.ts.map +1 -1
  232. package/dist/internal/authored-loaders.js +21 -5
  233. package/dist/internal/builtin-tools/reminders.js +2 -2
  234. package/dist/internal/chat-client.js +5 -5
  235. package/dist/internal/cli-ax.js +14 -14
  236. package/dist/internal/cli-bitbucket.js +10 -10
  237. package/dist/internal/cli-convert-automation.js +2 -2
  238. package/dist/internal/cli-cursor.js +2 -2
  239. package/dist/internal/cli-deploy.d.ts.map +1 -1
  240. package/dist/internal/cli-deploy.js +40 -40
  241. package/dist/internal/cli-docs.js +5 -5
  242. package/dist/internal/cli-github.js +15 -15
  243. package/dist/internal/cli-gitlab.js +10 -10
  244. package/dist/internal/cli-images.js +16 -16
  245. package/dist/internal/cli-manifest.js +1 -1
  246. package/dist/internal/cli-mcp-oauth.js +5 -5
  247. package/dist/internal/cli-mcp.js +3 -3
  248. package/dist/internal/cli-migrate.js +1 -1
  249. package/dist/internal/cli-skills.js +2 -2
  250. package/dist/internal/cli-slack.js +5 -5
  251. package/dist/internal/cloud-turn-cost.js +1 -1
  252. package/dist/internal/continuation-identity.js +6 -6
  253. package/dist/internal/conversation-mirror.js +5 -5
  254. package/dist/internal/convert-automation/convert-workflow.js +24 -24
  255. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  256. package/dist/internal/cursor/account-mcp.js +20 -20
  257. package/dist/internal/cursor/backend-client.js +6 -6
  258. package/dist/internal/cursor/credentials.js +1 -1
  259. package/dist/internal/cursor/store-api-client.js +1 -1
  260. package/dist/internal/cursor-account-mcp-auth.js +9 -9
  261. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  262. package/dist/internal/cursor-deployment-relay.js +9 -9
  263. package/dist/internal/cursor-event-relay.js +10 -10
  264. package/dist/internal/cursor-relay-core.js +2 -2
  265. package/dist/internal/deploy-manifest.d.ts +14 -0
  266. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  267. package/dist/internal/deploy-manifest.js +33 -10
  268. package/dist/internal/discovery/agent-config.js +2 -2
  269. package/dist/internal/discovery/agent.js +6 -6
  270. package/dist/internal/discovery/connections.js +5 -5
  271. package/dist/internal/discovery/cursor-plugin.js +12 -12
  272. package/dist/internal/discovery/extension-overlay.js +3 -3
  273. package/dist/internal/discovery/extensions.js +6 -6
  274. package/dist/internal/discovery/info.js +9 -9
  275. package/dist/internal/discovery/instructions.js +1 -1
  276. package/dist/internal/discovery/project.js +3 -3
  277. package/dist/internal/discovery/services.js +1 -1
  278. package/dist/internal/discovery/tools.js +1 -1
  279. package/dist/internal/docs-site.js +2 -2
  280. package/dist/internal/env-file.js +1 -1
  281. package/dist/internal/eval-run-store.js +7 -7
  282. package/dist/internal/eval-runner.d.ts.map +1 -1
  283. package/dist/internal/eval-runner.js +14 -14
  284. package/dist/internal/eval-transport.js +1 -1
  285. package/dist/internal/evals-client.d.ts.map +1 -1
  286. package/dist/internal/evals-client.js +4 -4
  287. package/dist/internal/event-log.js +8 -8
  288. package/dist/internal/event-mapper.js +13 -13
  289. package/dist/internal/expected-delivery-failure.js +2 -2
  290. package/dist/internal/filesystem/format.js +2 -2
  291. package/dist/internal/filesystem/nearest.js +3 -3
  292. package/dist/internal/filesystem/scratch.js +3 -3
  293. package/dist/internal/filesystem/tools.js +6 -6
  294. package/dist/internal/filesystem/walk.d.ts.map +1 -1
  295. package/dist/internal/filesystem/walk.js +2 -2
  296. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  297. package/dist/internal/framework-file-storage.js +6 -5
  298. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  299. package/dist/internal/framework-storage-selection.js +4 -2
  300. package/dist/internal/github-fanout.d.ts.map +1 -1
  301. package/dist/internal/github-fanout.js +3 -3
  302. package/dist/internal/guest-network.js +4 -4
  303. package/dist/internal/host-files.js +1 -1
  304. package/dist/internal/host-kv.js +2 -2
  305. package/dist/internal/hosted-catch-protocol.js +1 -1
  306. package/dist/internal/hosted-catch.js +1 -1
  307. package/dist/internal/hosted-delivery-protocol.d.ts +24 -0
  308. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  309. package/dist/internal/hosted-delivery-protocol.js +58 -14
  310. package/dist/internal/hosted-delivery.d.ts +6 -0
  311. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  312. package/dist/internal/hosted-delivery.js +64 -13
  313. package/dist/internal/hosted-eval-cases.js +4 -4
  314. package/dist/internal/hosted-execution-diag.js +3 -3
  315. package/dist/internal/hosted-managed-automation.d.ts +3 -3
  316. package/dist/internal/hosted-managed-automation.js +3 -3
  317. package/dist/internal/hosting.js +1 -1
  318. package/dist/internal/http-channel.js +1 -1
  319. package/dist/internal/http-control-plane-session.js +2 -2
  320. package/dist/internal/init-interview.js +7 -7
  321. package/dist/internal/init-project.d.ts.map +1 -1
  322. package/dist/internal/init-project.js +12 -12
  323. package/dist/internal/inline-stdio-mcp.js +2 -2
  324. package/dist/internal/install-cursor-skills.js +11 -11
  325. package/dist/internal/json-schema.js +1 -1
  326. package/dist/internal/local-control-plane.js +3 -3
  327. package/dist/internal/local-env.js +3 -3
  328. package/dist/internal/log-ring.js +1 -1
  329. package/dist/internal/logs-client.js +1 -1
  330. package/dist/internal/mcp-endpoint.js +8 -8
  331. package/dist/internal/mcp-host.d.ts.map +1 -1
  332. package/dist/internal/mcp-host.js +5 -5
  333. package/dist/internal/mcp-oauth-on-demand.js +3 -3
  334. package/dist/internal/mcp-oauth.js +5 -5
  335. package/dist/internal/net.js +2 -2
  336. package/dist/internal/otel/config.js +3 -3
  337. package/dist/internal/otel/runtime.js +13 -13
  338. package/dist/internal/peer-connections.js +2 -2
  339. package/dist/internal/persistent-stage-log-mirror.d.ts +57 -0
  340. package/dist/internal/persistent-stage-log-mirror.d.ts.map +1 -0
  341. package/dist/internal/persistent-stage-log-mirror.js +231 -0
  342. package/dist/internal/platform-schedule-sync.js +1 -1
  343. package/dist/internal/platform-timers.js +1 -1
  344. package/dist/internal/playground/static.js +2 -2
  345. package/dist/internal/playground/toolchain.js +2 -2
  346. package/dist/internal/playground-proxy.js +3 -3
  347. package/dist/internal/process-memory-telemetry.js +1 -1
  348. package/dist/internal/reminder-runner.d.ts +1 -1
  349. package/dist/internal/reminder-runner.d.ts.map +1 -1
  350. package/dist/internal/reminder-runner.js +14 -16
  351. package/dist/internal/reminder-store.js +1 -1
  352. package/dist/internal/resolved-connections.js +8 -8
  353. package/dist/internal/router.js +4 -4
  354. package/dist/internal/run-client.js +2 -2
  355. package/dist/internal/schedule-runner.d.ts +13 -2
  356. package/dist/internal/schedule-runner.d.ts.map +1 -1
  357. package/dist/internal/schedule-runner.js +48 -9
  358. package/dist/internal/sdk-runner.d.ts +2 -1
  359. package/dist/internal/sdk-runner.d.ts.map +1 -1
  360. package/dist/internal/sdk-runner.js +13 -8
  361. package/dist/internal/serve-restart.js +1 -1
  362. package/dist/internal/server.d.ts.map +1 -1
  363. package/dist/internal/server.js +101 -76
  364. package/dist/internal/session-cost.js +3 -3
  365. package/dist/internal/session-engine.d.ts +8 -0
  366. package/dist/internal/session-engine.d.ts.map +1 -1
  367. package/dist/internal/session-engine.js +183 -118
  368. package/dist/internal/session-live-publisher.d.ts +48 -0
  369. package/dist/internal/session-live-publisher.d.ts.map +1 -0
  370. package/dist/internal/session-live-publisher.js +415 -0
  371. package/dist/internal/session-run-log.js +6 -6
  372. package/dist/internal/sessions-client.js +3 -3
  373. package/dist/internal/skill-catalog.js +2 -2
  374. package/dist/internal/sleep.js +1 -1
  375. package/dist/internal/start-log-store.d.ts +5 -1
  376. package/dist/internal/start-log-store.d.ts.map +1 -1
  377. package/dist/internal/start-log-store.js +5 -3
  378. package/dist/internal/storage-coordinator.js +12 -12
  379. package/dist/internal/store-api-protocol.d.ts +51 -0
  380. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  381. package/dist/internal/store-api-protocol.js +39 -2
  382. package/dist/internal/store-mirror.js +4 -4
  383. package/dist/internal/stream-progress.d.ts.map +1 -1
  384. package/dist/internal/stream-progress.js +4 -0
  385. package/dist/internal/terminal-style.js +2 -2
  386. package/dist/internal/testing/conversation-identity-vectors.d.ts +48 -0
  387. package/dist/internal/testing/conversation-identity-vectors.d.ts.map +1 -0
  388. package/dist/internal/testing/conversation-identity-vectors.js +136 -0
  389. package/dist/internal/tool-call-retry.d.ts +87 -0
  390. package/dist/internal/tool-call-retry.d.ts.map +1 -0
  391. package/dist/internal/tool-call-retry.js +387 -0
  392. package/dist/internal/tool-result.js +3 -3
  393. package/dist/internal/trajectory.js +7 -7
  394. package/dist/internal/turn-governor.js +2 -2
  395. package/dist/internal/turn-outbox.js +1 -1
  396. package/dist/internal/update-check.d.ts.map +1 -1
  397. package/dist/internal/update-check.js +4 -2
  398. package/dist/internal/v2-hosting.d.ts +6 -0
  399. package/dist/internal/v2-hosting.d.ts.map +1 -1
  400. package/dist/internal/v2-hosting.js +7 -1
  401. package/dist/internal/workspace.js +4 -4
  402. package/dist/kv/memory-kv.js +3 -3
  403. package/dist/playground/assets/index-CzttDc-d.css +1 -0
  404. package/dist/playground/assets/{index-Be0-1hw2.js → index-DIiKbZ25.js} +42 -42
  405. package/dist/playground/index.html +2 -2
  406. package/dist/prompt.js +1 -1
  407. package/dist/storage-backends/cursor-hosted-v2.js +2 -2
  408. package/dist/storage-backends/file-kv.js +7 -7
  409. package/dist/storage-protocol.d.ts +7 -0
  410. package/dist/storage-protocol.d.ts.map +1 -1
  411. package/dist/storage-protocol.js +7 -0
  412. package/dist/storage.js +3 -3
  413. package/dist/types.d.ts +21 -4
  414. package/dist/types.d.ts.map +1 -1
  415. package/dist/types.js +4 -4
  416. package/docs/reference/connections.md +2 -1
  417. package/docs/reference/hooks.md +1 -0
  418. package/docs/reference/sessions.md +1 -1
  419. package/docs/reference/tools.md +11 -0
  420. package/package.json +6 -6
  421. package/templates/agentic-owners/bot/channels/github.ts +2 -2
  422. package/templates/agentic-owners/bot/lib/github.ts +7 -5
  423. package/templates/agentic-owners/bot/lib/owners/decision.ts +9 -9
  424. package/templates/agentic-owners/bot/lib/owners/handles.ts +2 -2
  425. package/templates/agentic-owners/bot/lib/owners/match.ts +5 -3
  426. package/templates/agentic-owners/bot/lib/owners/matching.ts +1 -1
  427. package/templates/agentic-owners/bot/lib/owners/parse.ts +4 -4
  428. package/templates/agentic-owners/bot/lib/owners/prompt.ts +1 -1
  429. package/templates/agentic-owners/bot/lib/review.ts +18 -17
  430. package/templates/agentic-owners/evals/owners.eval.ts +2 -2
  431. package/templates/agents-md/bot/lib/collect.ts +6 -6
  432. package/templates/agents-md/bot/lib/config.ts +1 -1
  433. package/templates/agents-md/bot/tools/apply_agents.ts +4 -4
  434. package/templates/code-wiki/bot/channels/github.ts +3 -3
  435. package/templates/code-wiki/bot/lib/repos.ts +1 -1
  436. package/templates/code-wiki/bot/tools/apply_wiki.ts +2 -2
  437. package/templates/demo/bot/lib/collect.ts +1 -1
  438. package/templates/demo/bot/lib/repos.ts +1 -1
  439. package/templates/demo/bot/tools/record_demo.ts +1 -1
  440. package/templates/pr-autofixer/bot/channels/github.ts +2 -2
  441. package/templates/pr-autofixer/bot/lib/merge-watch.ts +2 -2
  442. package/templates/pr-autofixer/bot/lib/repos.ts +2 -2
  443. package/templates/pr-autofixer/bot/lib/webhook-routing.ts +1 -1
  444. package/templates/security-help/bot/lib/repos.ts +1 -1
  445. package/templates/security-reviewer/bot/lib/repos.ts +1 -1
  446. package/templates/triage/bot/lib/actuate.ts +15 -15
  447. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +0 -1
  448. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +0 -1
  449. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +0 -1
  450. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +0 -1
  451. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +0 -1
  452. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +0 -1
  453. package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +0 -162
  454. package/dist/playground/assets/index-Clz6uHj9.css +0 -1
  455. /package/dist/docs/assets/{reference_connections.md.Bljpve-y.lean.js → reference_connections.md.DLrgAd5f.lean.js} +0 -0
  456. /package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.lean.js → reference_sessions.md.CyM7ARz1.lean.js} +0 -0
  457. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -59,7 +59,7 @@ export async function replayCatchRequest(input) {
59
59
  });
60
60
  }
61
61
  const matched = router.match(envelope.method, envelope.path);
62
- const route = input.routes.find(candidate => candidate.method === matched?.route.method && candidate.path === matched.route.pattern);
62
+ const route = input.routes.find((candidate) => candidate.method === matched?.route.method && candidate.path === matched.route.pattern);
63
63
  if (matched === undefined || route === undefined) {
64
64
  // The control plane routes from the same pinned manifest this VM was
65
65
  // frozen from; a miss here is drift, not a caller error.
@@ -60,6 +60,23 @@ export declare const HOSTED_REMINDER_CHANNEL_KIND = "agent-sdk:reminder";
60
60
  * Payload is {@link HostedReminderFirePayload}.
61
61
  */
62
62
  export declare const HOSTED_REMINDER_EVENT_TYPE = "agent-sdk.reminder/fire";
63
+ /**
64
+ * Reserved hosted-admission `channelKind` for authored schedule fires.
65
+ * Bypasses authored channel admission and invokes ScheduleRunner.dispatch.
66
+ * Backend builds envelopes with this constant + {@link HOSTED_SCHEDULE_EVENT_TYPE}.
67
+ */
68
+ export declare const HOSTED_SCHEDULE_CHANNEL_KIND = "agent-sdk:schedule";
69
+ /**
70
+ * Reserved hosted-admission `eventType` for authored schedule fires.
71
+ * Payload is {@link HostedScheduleFirePayload}.
72
+ */
73
+ export declare const HOSTED_SCHEDULE_EVENT_TYPE = "agent-sdk.schedule/fire";
74
+ /** One fire of an authored `agent/schedules/*` declaration. */
75
+ export type HostedScheduleFirePayload = {
76
+ protocolVersion: 1;
77
+ scheduleId: string;
78
+ scheduledAtMs: number;
79
+ };
63
80
  /** Compact reminder-fire payload on the reserved hosted-admission path. */
64
81
  export type HostedReminderFirePayload = {
65
82
  reminderId: string;
@@ -233,6 +250,13 @@ export declare function parseHostedExecutionOutcome(value: unknown): HostedExecu
233
250
  * path (not an authored channel event).
234
251
  */
235
252
  export declare function isHostedReminderAdmission(delivery: HostedAdmissionInput): boolean;
253
+ /**
254
+ * True when the admission envelope is the reserved internal schedule fire
255
+ * path (not an authored channel event).
256
+ */
257
+ export declare function isHostedScheduleAdmission(delivery: HostedAdmissionInput): boolean;
258
+ /** Parse a reserved schedule admission payload. Rejects unknown keys. */
259
+ export declare function parseHostedScheduleFirePayload(value: unknown): HostedScheduleFirePayload | undefined;
236
260
  /**
237
261
  * Parse `{ reminderId, fireCount }` from a reserved reminder admission
238
262
  * payload. Rejects unknown keys and non-integer fireCount.
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-delivery-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosted-delivery-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery-protocol.ts"],"names":[],"mappings":"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"}
@@ -118,6 +118,17 @@ export const HOSTED_REMINDER_CHANNEL_KIND = "agent-sdk:reminder";
118
118
  * Payload is {@link HostedReminderFirePayload}.
119
119
  */
120
120
  export const HOSTED_REMINDER_EVENT_TYPE = "agent-sdk.reminder/fire";
121
+ /**
122
+ * Reserved hosted-admission `channelKind` for authored schedule fires.
123
+ * Bypasses authored channel admission and invokes ScheduleRunner.dispatch.
124
+ * Backend builds envelopes with this constant + {@link HOSTED_SCHEDULE_EVENT_TYPE}.
125
+ */
126
+ export const HOSTED_SCHEDULE_CHANNEL_KIND = "agent-sdk:schedule";
127
+ /**
128
+ * Reserved hosted-admission `eventType` for authored schedule fires.
129
+ * Payload is {@link HostedScheduleFirePayload}.
130
+ */
131
+ export const HOSTED_SCHEDULE_EVENT_TYPE = "agent-sdk.schedule/fire";
121
132
  /**
122
133
  * Handler 4xx reasons an admission skip can carry. Benign skips (nothing to
123
134
  * do) omit `rejection`. Engine HTTP failures use the hosted failure codes
@@ -183,7 +194,7 @@ export function parseHostedAdmissionHandlerRejection(value) {
183
194
  return undefined;
184
195
  }
185
196
  const body = value;
186
- if (Object.keys(body).some(key => !HOSTED_ADMISSION_REJECTION_KEYS.has(key))) {
197
+ if (Object.keys(body).some((key) => !HOSTED_ADMISSION_REJECTION_KEYS.has(key))) {
187
198
  return undefined;
188
199
  }
189
200
  if (typeof body.reason !== "string" ||
@@ -244,18 +255,18 @@ function parseManagedAutomation(value) {
244
255
  return undefined;
245
256
  }
246
257
  const body = value;
247
- if (Object.keys(body).some(key => !MANAGED_AUTOMATION_KEYS.has(key)) ||
258
+ if (Object.keys(body).some((key) => !MANAGED_AUTOMATION_KEYS.has(key)) ||
248
259
  !boundedString(body.automationUuid, 128) ||
249
260
  !Array.isArray(body.mcpServerNames) ||
250
261
  body.mcpServerNames.length > MANAGED_AUTOMATION_MAX_SERVERS ||
251
- !body.mcpServerNames.every(name => boundedString(name, 256))) {
262
+ !body.mcpServerNames.every((name) => boundedString(name, 256))) {
252
263
  return undefined;
253
264
  }
254
265
  if (body.slackChannels !== undefined) {
255
266
  if (!Array.isArray(body.slackChannels) ||
256
267
  body.slackChannels.length === 0 ||
257
268
  body.slackChannels.length > MANAGED_AUTOMATION_MAX_SLACK_CHANNELS ||
258
- !body.slackChannels.every(channel => boundedString(channel, 64))) {
269
+ !body.slackChannels.every((channel) => boundedString(channel, 64))) {
259
270
  return undefined;
260
271
  }
261
272
  }
@@ -281,7 +292,7 @@ function parsePlatformHandoff(value) {
281
292
  return undefined;
282
293
  }
283
294
  const body = value;
284
- if (Object.keys(body).some(key => !HOSTED_PLATFORM_HANDOFF_KEYS.has(key)) || body.v !== 1) {
295
+ if (Object.keys(body).some((key) => !HOSTED_PLATFORM_HANDOFF_KEYS.has(key)) || body.v !== 1) {
285
296
  return undefined;
286
297
  }
287
298
  const placeholder = body.slackPlaceholder;
@@ -289,7 +300,7 @@ function parsePlatformHandoff(value) {
289
300
  return undefined;
290
301
  }
291
302
  const slot = placeholder;
292
- if (Object.keys(slot).some(key => !HOSTED_SLACK_PLACEHOLDER_HANDOFF_KEYS.has(key)) ||
303
+ if (Object.keys(slot).some((key) => !HOSTED_SLACK_PLACEHOLDER_HANDOFF_KEYS.has(key)) ||
293
304
  !boundedString(slot.messageTs, 64) ||
294
305
  !boundedString(slot.channelId, 64) ||
295
306
  !boundedString(slot.threadTs, 64) ||
@@ -314,13 +325,13 @@ export function parseHostedAdmission(value) {
314
325
  }
315
326
  const body = value;
316
327
  if (body.mode === "status") {
317
- return Object.keys(body).every(key => key === "v" || key === "mode" || key === "deliveryId") &&
328
+ return Object.keys(body).every((key) => key === "v" || key === "mode" || key === "deliveryId") &&
318
329
  body.v === HOSTED_DELIVERY_PROTOCOL_VERSION &&
319
330
  boundedString(body.deliveryId, 256)
320
331
  ? body
321
332
  : undefined;
322
333
  }
323
- if (Object.keys(body).some(key => !DELIVERY_KEYS.has(key)) ||
334
+ if (Object.keys(body).some((key) => !DELIVERY_KEYS.has(key)) ||
324
335
  !Object.hasOwn(body, "payload") ||
325
336
  body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
326
337
  body.mode !== "start" ||
@@ -342,7 +353,7 @@ export function parseHostedExecution(value) {
342
353
  return undefined;
343
354
  }
344
355
  const body = value;
345
- if (Object.keys(body).some(key => !EXECUTION_KEYS.has(key)) ||
356
+ if (Object.keys(body).some((key) => !EXECUTION_KEYS.has(key)) ||
346
357
  body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
347
358
  !boundedString(body.admissionToken, 128) ||
348
359
  typeof body.sessionPublicId !== "string" ||
@@ -362,7 +373,7 @@ function parseConsumedDeliveryIds(value) {
362
373
  if (value.length > HOSTED_MAX_CONSUMED_DELIVERY_IDS) {
363
374
  return undefined;
364
375
  }
365
- if (!value.every(id => boundedString(id, 256))) {
376
+ if (!value.every((id) => boundedString(id, 256))) {
366
377
  return undefined;
367
378
  }
368
379
  return value;
@@ -372,7 +383,7 @@ export function parseHostedExecutionOutcome(value) {
372
383
  return undefined;
373
384
  }
374
385
  const body = value;
375
- if (Object.keys(body).some(key => !HOSTED_EXECUTION_OUTCOME_KEYS.has(key)) ||
386
+ if (Object.keys(body).some((key) => !HOSTED_EXECUTION_OUTCOME_KEYS.has(key)) ||
376
387
  body.ok !== true ||
377
388
  body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION) {
378
389
  return undefined;
@@ -408,6 +419,39 @@ export function isHostedReminderAdmission(delivery) {
408
419
  return (delivery.channelKind === HOSTED_REMINDER_CHANNEL_KIND &&
409
420
  delivery.eventType === HOSTED_REMINDER_EVENT_TYPE);
410
421
  }
422
+ /**
423
+ * True when the admission envelope is the reserved internal schedule fire
424
+ * path (not an authored channel event).
425
+ */
426
+ export function isHostedScheduleAdmission(delivery) {
427
+ return (delivery.channelKind === HOSTED_SCHEDULE_CHANNEL_KIND &&
428
+ delivery.eventType === HOSTED_SCHEDULE_EVENT_TYPE);
429
+ }
430
+ const HOSTED_SCHEDULE_FIRE_PAYLOAD_KEYS = new Set([
431
+ "protocolVersion",
432
+ "scheduleId",
433
+ "scheduledAtMs",
434
+ ]);
435
+ /** Parse a reserved schedule admission payload. Rejects unknown keys. */
436
+ export function parseHostedScheduleFirePayload(value) {
437
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
438
+ return undefined;
439
+ }
440
+ const body = value;
441
+ if (Object.keys(body).some((key) => !HOSTED_SCHEDULE_FIRE_PAYLOAD_KEYS.has(key)) ||
442
+ body.protocolVersion !== 1 ||
443
+ !boundedString(body.scheduleId, 128) ||
444
+ typeof body.scheduledAtMs !== "number" ||
445
+ !Number.isSafeInteger(body.scheduledAtMs) ||
446
+ body.scheduledAtMs < 0) {
447
+ return undefined;
448
+ }
449
+ return {
450
+ protocolVersion: 1,
451
+ scheduleId: body.scheduleId,
452
+ scheduledAtMs: body.scheduledAtMs,
453
+ };
454
+ }
411
455
  /**
412
456
  * Parse `{ reminderId, fireCount }` from a reserved reminder admission
413
457
  * payload. Rejects unknown keys and non-integer fireCount.
@@ -476,7 +520,7 @@ function isJsonSafeValue(value, depth) {
476
520
  return false;
477
521
  }
478
522
  if (Array.isArray(value)) {
479
- return value.every(entry => isJsonSafeValue(entry, depth + 1));
523
+ return value.every((entry) => isJsonSafeValue(entry, depth + 1));
480
524
  }
481
525
  const proto = Object.getPrototypeOf(value);
482
526
  if (proto !== Object.prototype && proto !== null) {
@@ -523,7 +567,7 @@ export function parseHostedReminderFireDescriptorPayload(value) {
523
567
  return undefined;
524
568
  }
525
569
  const body = value;
526
- if (Object.keys(body).some(key => !HOSTED_REMINDER_FIRE_DESCRIPTOR_KEYS.has(key))) {
570
+ if (Object.keys(body).some((key) => !HOSTED_REMINDER_FIRE_DESCRIPTOR_KEYS.has(key))) {
527
571
  return undefined;
528
572
  }
529
573
  if (body.protocolVersion !== 1 ||
@@ -631,7 +675,7 @@ export function parseHostedAdmissionOutcome(value) {
631
675
  return undefined;
632
676
  }
633
677
  const body = value;
634
- if (Object.keys(body).some(key => !HOSTED_ADMISSION_OUTCOME_KEYS.has(key)) ||
678
+ if (Object.keys(body).some((key) => !HOSTED_ADMISSION_OUTCOME_KEYS.has(key)) ||
635
679
  body.ok !== true ||
636
680
  body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
637
681
  (body.outcome !== "skip" &&
@@ -65,6 +65,12 @@ export declare function registerHostedDeliveryRoute(input: {
65
65
  outcome: "fired" | "noop";
66
66
  reason?: string;
67
67
  }>;
68
+ /**
69
+ * Reserved schedule admission: run the named authored schedule and resolve
70
+ * only after every turn and `waitUntil` it started has settled. Throws
71
+ * {@link UnknownScheduleError} for a name this release does not declare.
72
+ */
73
+ fireSchedule?(scheduleId: string): Promise<unknown>;
68
74
  /**
69
75
  * Await the session's durable mirror (dispatch chain + storage queue)
70
76
  * before the execution reply: the control plane may park the pod the
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { randomBytes } from "node:crypto";
2
+ import { metrics } from "@opentelemetry/api";
2
3
  import { packageVersion } from "./distribution.js";
3
4
  import { dispatchOutcome } from "./channel-dispatch.js";
4
5
  import { consumeHostedBoundSecrets, } from "./cursor/hosted-bound-secrets.js";
@@ -8,7 +9,7 @@ import { classifyExpectedDeliveryFailure } from "./expected-delivery-failure.js"
8
9
  import { formatGuestNetworkServerTiming, GUEST_CONNECT_STALLED, GUEST_NETWORK_UNAVAILABLE, GuestNetworkUnavailableError, waitForGuestNetworkReady, } from "./guest-network.js";
9
10
  import { getHostedAdmissionAdapter, } from "./hosted-admission-adapter.js";
10
11
  import { HostedAdmissionLocalSendError, runDuringHostedAdmission, } from "./hosted-admission-context.js";
11
- import { HOSTED_ADMISSION_PATH, HOSTED_DELIVERY_HEADER, HOSTED_DELIVERY_PROTOCOL_VERSION, HOSTED_EXECUTION_PATH, HOSTED_GUEST_RETRY_TERMINAL, HOSTED_GUEST_RETRY_TRANSIENT, HOSTED_MAX_CONSUMED_DELIVERY_IDS, hostedFailureClassification, hostedGuestErrorResponse, isHostedReminderAdmission, parseHostedAdmissionHandlerRejection, parseHostedAdmission, parseHostedExecution, parseHostedReminderFireDescriptorPayload, parseHostedReminderFirePayload, } from "./hosted-delivery-protocol.js";
12
+ import { HOSTED_ADMISSION_PATH, HOSTED_DELIVERY_HEADER, HOSTED_DELIVERY_PROTOCOL_VERSION, HOSTED_EXECUTION_PATH, HOSTED_GUEST_RETRY_TERMINAL, HOSTED_GUEST_RETRY_TRANSIENT, HOSTED_MAX_CONSUMED_DELIVERY_IDS, hostedFailureClassification, hostedGuestErrorResponse, isHostedReminderAdmission, isHostedScheduleAdmission, parseHostedAdmissionHandlerRejection, parseHostedAdmission, parseHostedExecution, parseHostedReminderFireDescriptorPayload, parseHostedReminderFirePayload, parseHostedScheduleFirePayload, } from "./hosted-delivery-protocol.js";
12
13
  import { abortReasonFromTurnStatus, HOSTED_EXECUTION_DIAG_RUNNING_STATUS, hostedExecutionDiagId, } from "./hosted-execution-diag.js";
13
14
  import { flushHostedExecutionRecord, refreshStartLogWhile, } from "./hosted-execution-flush.js";
14
15
  import { finalizeHostedExecutionLatency, formatHostedExecutionLatencyServerTiming, hostedExecutionNow, runWithHostedExecutionLatency, } from "./hosted-execution-latency.js";
@@ -17,6 +18,7 @@ import { readJsonObject } from "./http-channel.js";
17
18
  import { endActiveHttpSpan } from "./otel/http.js";
18
19
  import { ReminderValidationError, UnknownReminderError } from "./reminder-runner.js";
19
20
  import { mapThrownRequestError, statusForThrownRequestError } from "./request-error-status.js";
21
+ import { UnknownScheduleError } from "./schedule-runner.js";
20
22
  import { HostedEnqueueNotActiveError } from "./session-engine.js";
21
23
  async function responseToReply(response) {
22
24
  const value = (await response.json());
@@ -215,6 +217,39 @@ async function dispatchHostedReminderAdmission(input, delivery) {
215
217
  throw error;
216
218
  }
217
219
  }
220
+ /**
221
+ * Reserved schedule admission: run the authored schedule by name and wait
222
+ * for everything it started before replying, because the control plane may
223
+ * park the VM as soon as this reply lands. Returns `task` (work ran) and
224
+ * never opens the send-capture / model-session path.
225
+ */
226
+ async function dispatchHostedScheduleAdmission(input, delivery) {
227
+ if (input.fireSchedule === undefined) {
228
+ return transientHostedError(503, "schedule_dispatch_unavailable", "This guest has no schedule runner wired for hosted admission.");
229
+ }
230
+ const payload = parseHostedScheduleFirePayload(delivery.payload);
231
+ if (payload === undefined) {
232
+ return terminalHostedError(400, "invalid_schedule_payload", "Expected { protocolVersion: 1, scheduleId, scheduledAtMs }.");
233
+ }
234
+ try {
235
+ await input.fireSchedule(payload.scheduleId);
236
+ }
237
+ catch (error) {
238
+ if (error instanceof UnknownScheduleError) {
239
+ return terminalHostedError(404, "unknown_schedule", boundedMessage(error.message));
240
+ }
241
+ const mapped = mappedAdmissionFailure(error);
242
+ if (mapped !== undefined) {
243
+ return mapped.response;
244
+ }
245
+ return terminalHostedError(500, "agent_admission_threw", boundedMessage(error instanceof Error ? error.message : String(error)));
246
+ }
247
+ return Response.json({
248
+ ok: true,
249
+ v: HOSTED_DELIVERY_PROTOCOL_VERSION,
250
+ outcome: "task",
251
+ });
252
+ }
218
253
  async function runAdmission(input, adapter) {
219
254
  const background = [];
220
255
  let captured;
@@ -227,7 +262,7 @@ async function runAdmission(input, adapter) {
227
262
  captured = { message, options };
228
263
  return createDeferredChannelSession();
229
264
  },
230
- waitUntil: promise => {
265
+ waitUntil: (promise) => {
231
266
  background.push(promise);
232
267
  },
233
268
  };
@@ -441,6 +476,9 @@ export function registerHostedDeliveryRoute(input) {
441
476
  if (isHostedReminderAdmission(delivery)) {
442
477
  return await responseToReply(finish(await dispatchHostedReminderAdmission(input, delivery)));
443
478
  }
479
+ if (isHostedScheduleAdmission(delivery)) {
480
+ return await responseToReply(finish(await dispatchHostedScheduleAdmission(input, delivery)));
481
+ }
444
482
  if (definition === undefined) {
445
483
  return await responseToReply(finish(terminalHostedError(404, "channel_not_found", `No channel named "${delivery.channelId}" is mounted.`)));
446
484
  }
@@ -473,7 +511,7 @@ export function registerHostedDeliveryRoute(input) {
473
511
  });
474
512
  // Hosted callers reach this only through Anyrun's signed pod-port URL.
475
513
  // The marker is a second, route-specific fence distinct from channel auth.
476
- const auth = request => {
514
+ const auth = (request) => {
477
515
  if (request.headers.get(HOSTED_DELIVERY_HEADER) !== "1") {
478
516
  return null;
479
517
  }
@@ -535,15 +573,15 @@ export function registerHostedDeliveryRoute(input) {
535
573
  }
536
574
  console.info(`[bdk] hosted admission received deliveryId=${delivery.deliveryId} channelId=${delivery.channelId} channelKind=${delivery.channelKind} eventType=${delivery.eventType} sessionMode=${delivery.sessionMode} managedAutomation=${delivery.managedAutomation === undefined ? "<absent>" : `automationUuid=${delivery.managedAutomation.automationUuid} mcpServerNames=${String(delivery.managedAutomation.mcpServerNames.length)} slackChannels=${delivery.managedAutomation.slackChannels === undefined ? "<absent>" : JSON.stringify(delivery.managedAutomation.slackChannels)}`}`);
537
575
  recordHostedManagedAutomation(delivery);
538
- const reminder = isHostedReminderAdmission(delivery);
539
- const definition = reminder
576
+ const reserved = isHostedReminderAdmission(delivery) || isHostedScheduleAdmission(delivery);
577
+ const definition = reserved
540
578
  ? undefined
541
- : input.channels.find(candidate => candidate.id === delivery.channelId)?.definition;
542
- if (!reminder && definition === undefined) {
579
+ : input.channels.find((candidate) => candidate.id === delivery.channelId)?.definition;
580
+ if (!reserved && definition === undefined) {
543
581
  return finish(terminalHostedError(404, "channel_not_found", `No channel named "${delivery.channelId}" is mounted.`));
544
582
  }
545
583
  let operation;
546
- const execution = runAdmissionOperation(delivery, definition).then(reply => {
584
+ const execution = runAdmissionOperation(delivery, definition).then((reply) => {
547
585
  operation.settledReply = reply;
548
586
  operation.expiresAt = Date.now() + pendingTtlMs;
549
587
  return reply;
@@ -555,7 +593,7 @@ export function registerHostedDeliveryRoute(input) {
555
593
  admissions.set(delivery.deliveryId, operation);
556
594
  const quickReply = await Promise.race([
557
595
  execution,
558
- new Promise(resolve => setImmediate(() => resolve(undefined))),
596
+ new Promise((resolve) => setImmediate(() => resolve(undefined))),
559
597
  ]);
560
598
  if (quickReply !== undefined) {
561
599
  return responseFromReply(quickReply);
@@ -824,11 +862,11 @@ export function registerHostedDeliveryRoute(input) {
824
862
  }
825
863
  }
826
864
  });
827
- }).then(reply => {
865
+ }).then((reply) => {
828
866
  admitted.settledReply = reply;
829
867
  admitted.expiresAt = Date.now() + pendingTtlMs;
830
868
  return reply;
831
- }, error => {
869
+ }, (error) => {
832
870
  admitted.settledReply = {
833
871
  status: 503,
834
872
  body: {
@@ -845,7 +883,7 @@ export function registerHostedDeliveryRoute(input) {
845
883
  if (execution.mode === "start") {
846
884
  const quickReply = await Promise.race([
847
885
  admitted.execution,
848
- new Promise(resolve => setImmediate(() => resolve(undefined))),
886
+ new Promise((resolve) => setImmediate(() => resolve(undefined))),
849
887
  ]);
850
888
  if (quickReply !== undefined) {
851
889
  return responseFromReply(quickReply);
@@ -874,7 +912,7 @@ async function enqueueIntoActiveOwner(input) {
874
912
  return { outcome: "not_active" };
875
913
  }
876
914
  let resolveResult;
877
- const resultPromise = new Promise(resolve => {
915
+ const resultPromise = new Promise((resolve) => {
878
916
  resolveResult = resolve;
879
917
  });
880
918
  owner.enqueueResults.set(input.deliveryId, resultPromise);
@@ -937,12 +975,22 @@ function evictHostedSdkSessions(evict, ...ids) {
937
975
  }
938
976
  const TRANSIENT_TURN_ERROR_CODES = new Set([
939
977
  "ABORT_ERR",
978
+ "connection_stalled",
940
979
  "UND_ERR_BODY_TIMEOUT",
941
980
  "UND_ERR_HEADERS_TIMEOUT",
942
981
  "canceled",
943
982
  "unavailable",
944
983
  "unknown",
945
984
  ]);
985
+ let stallRetriedCounter;
986
+ function recordStallRetried() {
987
+ if (stallRetriedCounter === undefined) {
988
+ stallRetriedCounter = metrics.getMeter("agent_sdk").createCounter("hosted.turn.stall_retried", {
989
+ description: "Hosted turns classified for transient retry after connection_stalled",
990
+ });
991
+ }
992
+ stallRetriedCounter.add(1, { failure_kind: "connection_stalled" });
993
+ }
946
994
  function hostedFailureForUnfinishedTurn(outcome) {
947
995
  if (outcome.errorCode === "agent_dependency_failed") {
948
996
  return {
@@ -965,6 +1013,9 @@ function hostedFailureForUnfinishedTurn(outcome) {
965
1013
  if (outcome.status === "error" &&
966
1014
  outcome.errorCode !== undefined &&
967
1015
  TRANSIENT_TURN_ERROR_CODES.has(outcome.errorCode)) {
1016
+ if (outcome.errorCode === "connection_stalled") {
1017
+ recordStallRetried();
1018
+ }
968
1019
  return {
969
1020
  error: GUEST_CONNECT_STALLED,
970
1021
  retry: HOSTED_GUEST_RETRY_TRANSIENT,
@@ -19,7 +19,7 @@ export async function hostedEvalCatalog(projectRoot) {
19
19
  const { evals, config } = await discoverEvals(projectRoot);
20
20
  return {
21
21
  protocol: 1,
22
- cases: evals.map(e => ({
22
+ cases: evals.map((e) => ({
23
23
  id: e.id,
24
24
  fileId: e.fileId,
25
25
  description: e.definition.description,
@@ -55,7 +55,7 @@ async function runHostedEvalCase(input) {
55
55
  const deadline = new AbortController();
56
56
  const cancel = new AbortController();
57
57
  const result = await Promise.race([
58
- runCase({ ...input, signal: cancel.signal }).catch(error => failedResult(input.evalCase, describeError(error), startedAt)),
58
+ runCase({ ...input, signal: cancel.signal }).catch((error) => failedResult(input.evalCase, describeError(error), startedAt)),
59
59
  sleep(deadlineMs, undefined, { signal: deadline.signal }).then(async () => {
60
60
  // The losing case body keeps running; it must not start turns after this verdict.
61
61
  cancel.abort();
@@ -70,7 +70,7 @@ async function runHostedEvalCase(input) {
70
70
  async function runCase(input) {
71
71
  const startedAt = Date.now();
72
72
  const { evals, config } = await discoverEvals(input.projectRoot);
73
- const discovered = evals.find(e => e.id === input.evalCase.caseId);
73
+ const discovered = evals.find((e) => e.id === input.evalCase.caseId);
74
74
  if (discovered === undefined) {
75
75
  return failedResult(input.evalCase, `No eval case ${JSON.stringify(input.evalCase.caseId)} in this release`, startedAt);
76
76
  }
@@ -152,7 +152,7 @@ function resultEventData(ref, result) {
152
152
  inputs: result.inputs,
153
153
  finalText: result.finalText,
154
154
  tools: result.tools,
155
- toolCalls: result.toolCalls?.map(call => ({
155
+ toolCalls: result.toolCalls?.map((call) => ({
156
156
  toolName: call.toolName,
157
157
  args: boundedIo(call.args),
158
158
  output: boundedIo(call.output),
@@ -65,8 +65,8 @@ export function hostedErrorStackSnippet(error) {
65
65
  if (stack !== undefined && stack.length > 0) {
66
66
  const lines = stack
67
67
  .split("\n")
68
- .map(line => line.trimEnd())
69
- .filter(line => line.trim().length > 0)
68
+ .map((line) => line.trimEnd())
69
+ .filter((line) => line.trim().length > 0)
70
70
  .slice(0, HOSTED_ERROR_STACK_LINE_COUNT);
71
71
  const text = lines.join("\n");
72
72
  return text.length > HOSTED_ERROR_SNIPPET_MAX_CHARS
@@ -129,7 +129,7 @@ export function parseHostedExecutionDiag(raw) {
129
129
  return undefined;
130
130
  }
131
131
  const body = parsed;
132
- if (Object.keys(body).some(key => !DIAG_KEYS.has(key))) {
132
+ if (Object.keys(body).some((key) => !DIAG_KEYS.has(key))) {
133
133
  return undefined;
134
134
  }
135
135
  if (body.v !== HOSTED_EXECUTION_DIAG_VERSION ||
@@ -10,9 +10,9 @@
10
10
  * it without pulling the hosted-delivery route — and its session-engine
11
11
  * dependency graph — into their bundles.
12
12
  *
13
- * INTERNAL: first-party multi-tenant deployment plumbing. Deliberately
14
- * excluded from the published `@cursor/bdk` npm package (see the `files`
15
- * whitelist); consumed by internal deployments via relative source imports.
13
+ * INTERNAL: first-party multi-tenant deployment plumbing. It ships because
14
+ * the published hosted-delivery runtime imports it; it is not an exported
15
+ * package subpath.
16
16
  */
17
17
  import type { HostedAdmissionManagedAutomation } from "./hosted-delivery-protocol.js";
18
18
  export declare function recordHostedManagedAutomation(delivery: {
@@ -10,9 +10,9 @@
10
10
  * it without pulling the hosted-delivery route — and its session-engine
11
11
  * dependency graph — into their bundles.
12
12
  *
13
- * INTERNAL: first-party multi-tenant deployment plumbing. Deliberately
14
- * excluded from the published `@cursor/bdk` npm package (see the `files`
15
- * whitelist); consumed by internal deployments via relative source imports.
13
+ * INTERNAL: first-party multi-tenant deployment plumbing. It ships because
14
+ * the published hosted-delivery runtime imports it; it is not an exported
15
+ * package subpath.
16
16
  */
17
17
  /**
18
18
  * Process-wide slot for the table. Hosted engines run the compiled CLI
@@ -71,7 +71,7 @@ export function isReservedSecretName(name) {
71
71
  return true;
72
72
  }
73
73
  const upper = name.toUpperCase();
74
- return PLATFORM_HOSTED_STORAGE_SECRET_NAMES.some(managed => managed === upper);
74
+ return PLATFORM_HOSTED_STORAGE_SECRET_NAMES.some((managed) => managed === upper);
75
75
  }
76
76
  /**
77
77
  * Grammar and platform-managed-name errors in declared egress domains and
@@ -181,7 +181,7 @@ export function buildHttpChannelRoutes(args) {
181
181
  playgroundUrl: playgroundUrlForSession(request, base, sessionId),
182
182
  });
183
183
  }
184
- const ndjson = `${snapshot.map(e => JSON.stringify(e)).join("\n")}${snapshot.length > 0 ? "\n" : ""}`;
184
+ const ndjson = `${snapshot.map((e) => JSON.stringify(e)).join("\n")}${snapshot.length > 0 ? "\n" : ""}`;
185
185
  return new Response(ndjson, {
186
186
  status: 200,
187
187
  headers: {
@@ -31,7 +31,7 @@ export function parseControlPlaneSessionPayload(payload) {
31
31
  if (!isRecord(payload)) {
32
32
  return { ok: false, error: "payload must be an object" };
33
33
  }
34
- if (Object.keys(payload).some(key => !PAYLOAD_KEYS.has(key))) {
34
+ if (Object.keys(payload).some((key) => !PAYLOAD_KEYS.has(key))) {
35
35
  return { ok: false, error: "payload carries an unsupported field" };
36
36
  }
37
37
  const message = typeof payload.message === "string" ? payload.message.trim() : "";
@@ -58,7 +58,7 @@ export function parseControlPlaneEvalCasePayload(payload) {
58
58
  if (!isRecord(payload)) {
59
59
  return { ok: false, error: "payload must be an object" };
60
60
  }
61
- if (Object.keys(payload).some(key => !EVAL_CASE_PAYLOAD_KEYS.has(key))) {
61
+ if (Object.keys(payload).some((key) => !EVAL_CASE_PAYLOAD_KEYS.has(key))) {
62
62
  return { ok: false, error: "payload carries an unsupported field" };
63
63
  }
64
64
  for (const key of ["runId", "caseId"]) {
@@ -22,7 +22,7 @@ export function isTemplateMetaPath(rel) {
22
22
  }
23
23
  export function templateFileHasReplacements(spec, rel) {
24
24
  const file = posixRel(rel);
25
- return spec.replace.some(rule => posixRel(rule.file) === file);
25
+ return spec.replace.some((rule) => posixRel(rule.file) === file);
26
26
  }
27
27
  export async function loadTemplateInitSpec(templateDir) {
28
28
  try {
@@ -85,7 +85,7 @@ export async function collectTemplateAnswers(input) {
85
85
  const vars = input.vars ?? {};
86
86
  const answers = {};
87
87
  const ask = input.ask ?? promptTemplateQuestion;
88
- const out = input.out ?? (text => process.stdout.write(text));
88
+ const out = input.out ?? ((text) => process.stdout.write(text));
89
89
  for (const question of input.spec.questions) {
90
90
  if (question.id in vars || !input.interactive) {
91
91
  const raw = vars[question.id]?.trim() || question.default;
@@ -143,7 +143,7 @@ export async function promptTemplateQuestion(question, options = {}) {
143
143
  if (question.hint !== undefined) {
144
144
  output.write(` ${question.hint}\n`);
145
145
  }
146
- return await new Promise(resolve => {
146
+ return await new Promise((resolve) => {
147
147
  rl.question(`${question.prompt}${suffix} `, resolve);
148
148
  });
149
149
  }
@@ -182,7 +182,7 @@ function parseQuestionValue(question, raw) {
182
182
  }
183
183
  if (question.parse === "owner-repo-list") {
184
184
  try {
185
- const scope = parseCursorGithubRepoScope(trimmed.split(",").map(repo => repo.trim()));
185
+ const scope = parseCursorGithubRepoScope(trimmed.split(",").map((repo) => repo.trim()));
186
186
  return { ok: true, value: scope.repos.join(", ") };
187
187
  }
188
188
  catch (error) {
@@ -196,10 +196,10 @@ function formatReplaceValue(rule, answers) {
196
196
  if (raw === undefined || raw === "") {
197
197
  return undefined;
198
198
  }
199
- const parts = raw.split(",").map(part => part.trim());
199
+ const parts = raw.split(",").map((part) => part.trim());
200
200
  let value = raw;
201
201
  if (rule.as === "json-array") {
202
- value = `[${parts.map(part => JSON.stringify(part)).join(", ")}]`;
202
+ value = `[${parts.map((part) => JSON.stringify(part)).join(", ")}]`;
203
203
  }
204
204
  else if (rule.as === "first") {
205
205
  const first = parts[0];
@@ -234,7 +234,7 @@ function parseQuestion(value, index) {
234
234
  question.default = value.default;
235
235
  }
236
236
  if (Array.isArray(value.choices)) {
237
- question.choices = value.choices.map(choice => String(choice));
237
+ question.choices = value.choices.map((choice) => String(choice));
238
238
  }
239
239
  if (value.parse === "owner-repo-list") {
240
240
  question.parse = "owner-repo-list";