@cursor/bdk 0.2.24 → 0.2.26

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 (553) hide show
  1. package/AGENTS.md +4 -18
  2. package/CHANGELOG.md +3 -0
  3. package/dist/artifacts.d.ts +1 -1
  4. package/dist/artifacts.js +1 -1
  5. package/dist/bin/agent-serve.d.ts +1 -1
  6. package/dist/bin/agent-serve.js +71 -31
  7. package/dist/channels/bitbucket/api.d.ts +2 -2
  8. package/dist/channels/bitbucket/api.d.ts.map +1 -1
  9. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  10. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +5 -4
  11. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  12. package/dist/channels/bitbucket/bitbucket-webhook.js +14 -9
  13. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  14. package/dist/channels/deployments/deployments-channel.js +1 -1
  15. package/dist/channels/github/cursor-account.d.ts +7 -0
  16. package/dist/channels/github/cursor-account.d.ts.map +1 -1
  17. package/dist/channels/github/cursor-account.js +22 -5
  18. package/dist/channels/github/github-channel.d.ts.map +1 -1
  19. package/dist/channels/github/github-channel.js +10 -19
  20. package/dist/channels/github/replay.d.ts +1 -1
  21. package/dist/channels/github/replay.d.ts.map +1 -1
  22. package/dist/channels/gitlab/api.d.ts +2 -2
  23. package/dist/channels/gitlab/api.d.ts.map +1 -1
  24. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  25. package/dist/channels/issues/issues-channel.js +1 -1
  26. package/dist/channels/origin/api.d.ts +4 -4
  27. package/dist/channels/origin/api.d.ts.map +1 -1
  28. package/dist/channels/origin/origin-channel.js +1 -1
  29. package/dist/channels/origin/origin-webhook.d.ts +3 -3
  30. package/dist/channels/origin/origin-webhook.d.ts.map +1 -1
  31. package/dist/channels/pagerduty/api.d.ts +74 -0
  32. package/dist/channels/pagerduty/api.d.ts.map +1 -0
  33. package/dist/channels/pagerduty/api.js +101 -0
  34. package/dist/channels/pagerduty/defaults.d.ts +42 -0
  35. package/dist/channels/pagerduty/defaults.d.ts.map +1 -0
  36. package/dist/channels/pagerduty/defaults.js +132 -0
  37. package/dist/channels/pagerduty/events.d.ts +24 -0
  38. package/dist/channels/pagerduty/events.d.ts.map +1 -0
  39. package/dist/channels/pagerduty/events.js +38 -0
  40. package/dist/channels/pagerduty/index.d.ts +31 -0
  41. package/dist/channels/pagerduty/index.d.ts.map +1 -0
  42. package/dist/channels/pagerduty/index.js +30 -0
  43. package/dist/channels/pagerduty/pagerduty-channel.d.ts +64 -0
  44. package/dist/channels/pagerduty/pagerduty-channel.d.ts.map +1 -0
  45. package/dist/channels/pagerduty/pagerduty-channel.js +195 -0
  46. package/dist/channels/pagerduty/pagerduty-webhook.d.ts +70 -0
  47. package/dist/channels/pagerduty/pagerduty-webhook.d.ts.map +1 -0
  48. package/dist/channels/pagerduty/pagerduty-webhook.js +280 -0
  49. package/dist/channels/pagerduty/payload.d.ts +33 -0
  50. package/dist/channels/pagerduty/payload.d.ts.map +1 -0
  51. package/dist/channels/pagerduty/payload.js +150 -0
  52. package/dist/channels/pagerduty/replay.d.ts +35 -0
  53. package/dist/channels/pagerduty/replay.d.ts.map +1 -0
  54. package/dist/channels/pagerduty/replay.js +115 -0
  55. package/dist/channels/pagerduty/secrets.d.ts +16 -0
  56. package/dist/channels/pagerduty/secrets.d.ts.map +1 -0
  57. package/dist/channels/pagerduty/secrets.js +23 -0
  58. package/dist/channels/pagerduty/self-user.d.ts +51 -0
  59. package/dist/channels/pagerduty/self-user.d.ts.map +1 -0
  60. package/dist/channels/pagerduty/self-user.js +157 -0
  61. package/dist/channels/pagerduty/state.d.ts +31 -0
  62. package/dist/channels/pagerduty/state.d.ts.map +1 -0
  63. package/dist/channels/pagerduty/state.js +30 -0
  64. package/dist/channels/pagerduty/types.d.ts +217 -0
  65. package/dist/channels/pagerduty/types.d.ts.map +1 -0
  66. package/dist/channels/pagerduty/types.js +1 -0
  67. package/dist/channels/runs/runs-channel.js +1 -1
  68. package/dist/channels/slack/agentic-delivery.d.ts +2 -1
  69. package/dist/channels/slack/agentic-delivery.d.ts.map +1 -1
  70. package/dist/channels/slack/agentic-delivery.js +6 -10
  71. package/dist/channels/slack/agentic-signals.d.ts +2 -7
  72. package/dist/channels/slack/agentic-signals.d.ts.map +1 -1
  73. package/dist/channels/slack/agentic-signals.js +4 -3
  74. package/dist/channels/slack/api.d.ts +1 -0
  75. package/dist/channels/slack/api.d.ts.map +1 -1
  76. package/dist/channels/slack/api.js +3 -0
  77. package/dist/channels/slack/constants.d.ts +2 -0
  78. package/dist/channels/slack/constants.d.ts.map +1 -1
  79. package/dist/channels/slack/constants.js +2 -0
  80. package/dist/channels/slack/defaults.d.ts.map +1 -1
  81. package/dist/channels/slack/defaults.js +3 -2
  82. package/dist/channels/slack/dispatch.d.ts +9 -0
  83. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  84. package/dist/channels/slack/dispatch.js +3 -0
  85. package/dist/channels/slack/inbound.d.ts.map +1 -1
  86. package/dist/channels/slack/inbound.js +24 -20
  87. package/dist/channels/slack/interactive.d.ts +2 -0
  88. package/dist/channels/slack/interactive.d.ts.map +1 -1
  89. package/dist/channels/slack/interactive.js +1 -0
  90. package/dist/channels/slack/live-delivery.d.ts +3 -0
  91. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  92. package/dist/channels/slack/live-delivery.js +5 -0
  93. package/dist/channels/slack/reply-options.d.ts +9 -0
  94. package/dist/channels/slack/reply-options.d.ts.map +1 -1
  95. package/dist/channels/slack/reply-options.js +31 -1
  96. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  97. package/dist/channels/slack/slack-channel.js +7 -0
  98. package/dist/channels/slack/stream.d.ts +5 -1
  99. package/dist/channels/slack/stream.d.ts.map +1 -1
  100. package/dist/channels/slack/types.d.ts +29 -0
  101. package/dist/channels/slack/types.d.ts.map +1 -1
  102. package/dist/channels.d.ts +7 -1
  103. package/dist/channels.d.ts.map +1 -1
  104. package/dist/channels.js +12 -24
  105. package/dist/docs/404.html +3 -3
  106. package/dist/docs/assets/{app.DTIg0uKK.js → app.BITbgXMP.js} +4 -4
  107. package/dist/docs/assets/changelog.md.sdD6ctqK.js +1 -0
  108. package/dist/docs/assets/changelog.md.sdD6ctqK.lean.js +1 -0
  109. package/dist/docs/assets/chunks/@localSearchIndexroot.B45uCZp9.js +1 -0
  110. package/dist/docs/assets/chunks/{VPLocalSearchBox.BpJoSaxi.js → VPLocalSearchBox.3qo4-bX9.js} +2 -2
  111. package/dist/docs/assets/chunks/{arc.ylgNvRNq.js → arc.CTrZocKU.js} +1 -1
  112. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.BMrNJqYk.js → architectureDiagram-Q4EWVU46.BkgIqxrv.js} +1 -1
  113. package/dist/docs/assets/chunks/{baseUniq.BBWUEqf9.js → baseUniq.5w0JfVgo.js} +1 -1
  114. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DFMu-Vza.js → blockDiagram-DXYQGD6D.BVLtPjQc.js} +1 -1
  115. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.8nkAAxWv.js → c4Diagram-AHTNJAMY.CQ7neZTW.js} +1 -1
  116. package/dist/docs/assets/chunks/channel.Cv2w64wj.js +1 -0
  117. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.sO-z2Bag.js → chunk-4BX2VUAB.D-hJ7uKM.js} +1 -1
  118. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.BMROzTMq.js → chunk-4TB4RGXK.RBYX5ywX.js} +1 -1
  119. package/dist/docs/assets/chunks/{chunk-55IACEB6.X81urwg7.js → chunk-55IACEB6.Br05HoEb.js} +1 -1
  120. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.eaZVFLZM.js → chunk-EDXVE4YY.BD_7QS60.js} +1 -1
  121. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CmZhzstR.js → chunk-FMBD7UC4.BOPnMabX.js} +1 -1
  122. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CTezt9Lc.js → chunk-OYMX7WX6.DmGIdP8i.js} +1 -1
  123. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.s-T8zukB.js → chunk-QZHKN3VN.CGHmolCB.js} +1 -1
  124. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.DN4Nhy-D.js → chunk-YZCP3GAM.C_Uhs25v.js} +1 -1
  125. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CtO2atCr.js +1 -0
  126. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CtO2atCr.js +1 -0
  127. package/dist/docs/assets/chunks/clone.hfsCtgP4.js +1 -0
  128. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Cqyp4BUH.js → cose-bilkent-S5V4N54A.DsU6xpcZ.js} +1 -1
  129. package/dist/docs/assets/chunks/{dagre-KV5264BT.BIECOiqR.js → dagre-KV5264BT.BqQLDcoU.js} +1 -1
  130. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.1tLyWoTg.js → diagram-5BDNPKRD.Cgv8uUNF.js} +1 -1
  131. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.BVY_6VMO.js → diagram-G4DWMVQ6.BXHPSXh_.js} +1 -1
  132. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BSZ7xiBB.js → diagram-MMDJMWI5.CgJzo8f_.js} +1 -1
  133. package/dist/docs/assets/chunks/{diagram-TYMM5635.Bho6GmLh.js → diagram-TYMM5635.CfiN6lgT.js} +1 -1
  134. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.A0yVIANn.js → erDiagram-SMLLAGMA.8n_hHzAd.js} +1 -1
  135. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.ZMgbllH6.js → flowDiagram-DWJPFMVM.B2pb1Dv_.js} +1 -1
  136. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.BCCPBhXo.js → ganttDiagram-T4ZO3ILL.BFih4ucI.js} +1 -1
  137. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.BOkL0BbA.js → gitGraphDiagram-UUTBAWPF.CqZ8PTl8.js} +1 -1
  138. package/dist/docs/assets/chunks/{graph.DMyZPu86.js → graph.0ufsI9gu.js} +1 -1
  139. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.CjG1IiEw.js → infoDiagram-42DDH7IO.BkPRFww4.js} +1 -1
  140. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.UCe-kq9g.js → ishikawaDiagram-UXIWVN3A.DCRK-cVX.js} +1 -1
  141. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.3WyOK_eY.js → journeyDiagram-VCZTEJTY.BFyAJo33.js} +1 -1
  142. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.WoRG2qY1.js → kanban-definition-6JOO6SKY.CmA2SoGc.js} +1 -1
  143. package/dist/docs/assets/chunks/{layout.DV07xDd5.js → layout.CYY-CbMr.js} +1 -1
  144. package/dist/docs/assets/chunks/{linear.CTO8mN6o.js → linear.DeeDV4Oq.js} +1 -1
  145. package/dist/docs/assets/chunks/{min.SvTtcKuZ.js → min.BL3XTBN2.js} +1 -1
  146. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.DMGgQ-HB.js → mindmap-definition-QFDTVHPH.BcbY-G6H.js} +1 -1
  147. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.B7851apI.js → pieDiagram-DEJITSTG.dzDcQnPE.js} +1 -1
  148. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CEqyypIX.js → quadrantDiagram-34T5L4WZ.RxR0m5iK.js} +1 -1
  149. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.C3Mwsw-H.js → requirementDiagram-MS252O5E.DflaXb6Q.js} +1 -1
  150. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DyYK0XxY.js → sankeyDiagram-XADWPNL6.BteLKQAe.js} +1 -1
  151. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.SiQPH-XM.js → sequenceDiagram-FGHM5R23.BD8jM8oz.js} +1 -1
  152. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CTJMsP4p.js → stateDiagram-FHFEXIEX.C8SBkbPH.js} +1 -1
  153. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BLz7Qyo3.js +1 -0
  154. package/dist/docs/assets/chunks/{theme.DJo4my9R.js → theme.DiViIOLe.js} +2 -2
  155. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.CxSNRlQ6.js → timeline-definition-GMOUNBTQ.D64XF5dV.js} +1 -1
  156. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BdoJskyD.js → vennDiagram-DHZGUBPP.CwmeYan-.js} +1 -1
  157. package/dist/docs/assets/chunks/wardley-RL74JXVD.DmAlXlpu.js +162 -0
  158. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.IjIbFn_F.js → wardleyDiagram-NUSXRM2D.5VJ2-5K0.js} +1 -1
  159. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CPUxDZLH.js → xychartDiagram-5P7HB3ND.Cl6_fZVC.js} +1 -1
  160. package/dist/docs/assets/{guides_hooks.md.Bfj0pK91.js → guides_hooks.md.B2XfGX50.js} +7 -3
  161. package/dist/docs/assets/{guides_mcp-oauth.md.BM_eFC0L.js → guides_mcp-oauth.md.Cxq2TxBB.js} +3 -3
  162. package/dist/docs/assets/{guides_mcp-oauth.md.BM_eFC0L.lean.js → guides_mcp-oauth.md.Cxq2TxBB.lean.js} +1 -1
  163. package/dist/docs/assets/guides_opentelemetry.md.D4wO7_8v.js +37 -0
  164. package/dist/docs/assets/guides_opentelemetry.md.D4wO7_8v.lean.js +1 -0
  165. package/dist/docs/assets/guides_pagerduty.md.BHXMcMtx.js +60 -0
  166. package/dist/docs/assets/guides_pagerduty.md.BHXMcMtx.lean.js +1 -0
  167. package/dist/docs/assets/{guides_slack.md.Bn-WupSE.js → guides_slack.md.ClIyi7FI.js} +8 -3
  168. package/dist/docs/assets/{guides_slack.md.Bn-WupSE.lean.js → guides_slack.md.ClIyi7FI.lean.js} +1 -1
  169. package/dist/docs/assets/{reference_agent-config.md.IplwL25I.js → reference_agent-config.md.CGSx8COP.js} +6 -2
  170. package/dist/docs/assets/{reference_agent-config.md.IplwL25I.lean.js → reference_agent-config.md.CGSx8COP.lean.js} +1 -1
  171. package/dist/docs/assets/{reference_channels.md.DYg0CLud.js → reference_channels.md.CNNIS6K7.js} +1 -1
  172. package/dist/docs/assets/{reference_cli.md.DB7Llw3T.js → reference_cli.md.1o_TqKdt.js} +7 -2
  173. package/dist/docs/assets/{reference_cli.md.DB7Llw3T.lean.js → reference_cli.md.1o_TqKdt.lean.js} +1 -1
  174. package/dist/docs/assets/{reference_hooks.md.B1jq3oGl.js → reference_hooks.md.CROr0QgC.js} +13 -7
  175. package/dist/docs/assets/{reference_hooks.md.B1jq3oGl.lean.js → reference_hooks.md.CROr0QgC.lean.js} +1 -1
  176. package/dist/docs/assets/{reference_schedules.md.03Ryy9ca.js → reference_schedules.md.BqWnJES4.js} +3 -3
  177. package/dist/docs/assets/reference_sessions.md.Bi6lHttM.js +22 -0
  178. package/dist/docs/assets/reference_sessions.md.Bi6lHttM.lean.js +1 -0
  179. package/dist/docs/assets/{reference_skills.md.C2GWh7g8.js → reference_skills.md.Ckddg6KX.js} +3 -3
  180. package/dist/docs/assets/{reference_tools.md.08XR7lIl.js → reference_tools.md.Bo0UfT0a.js} +1 -1
  181. package/dist/docs/assets/{style.nMsabY-V.css → style.B9o0luvp.css} +1 -1
  182. package/dist/docs/building-with-agents.html +37 -37
  183. package/dist/docs/changelog.html +60 -0
  184. package/dist/docs/changelog.md +86 -0
  185. package/dist/docs/deployment.html +37 -37
  186. package/dist/docs/evals.html +37 -37
  187. package/dist/docs/guides/agent-to-agent.html +37 -37
  188. package/dist/docs/guides/bitbucket.html +37 -37
  189. package/dist/docs/guides/cloud-agents.html +37 -37
  190. package/dist/docs/guides/convert-automation.html +37 -37
  191. package/dist/docs/guides/export-grokbot.html +37 -37
  192. package/dist/docs/guides/github.html +37 -37
  193. package/dist/docs/guides/gitlab.html +37 -37
  194. package/dist/docs/guides/grokbot-agents.html +37 -37
  195. package/dist/docs/guides/hooks.html +45 -41
  196. package/dist/docs/guides/hooks.md +7 -3
  197. package/dist/docs/guides/improve.html +37 -37
  198. package/dist/docs/guides/jev.html +37 -37
  199. package/dist/docs/guides/mcp-oauth.html +39 -39
  200. package/dist/docs/guides/mcp-oauth.md +12 -0
  201. package/dist/docs/guides/migrate.html +37 -37
  202. package/dist/docs/guides/opentelemetry.html +62 -70
  203. package/dist/docs/guides/opentelemetry.md +150 -175
  204. package/dist/docs/guides/pagerduty.html +119 -0
  205. package/dist/docs/guides/pagerduty.md +336 -0
  206. package/dist/docs/guides/slack.html +44 -39
  207. package/dist/docs/guides/slack.md +41 -0
  208. package/dist/docs/guides/webhooks.html +37 -37
  209. package/dist/docs/hashmap.json +1 -1
  210. package/dist/docs/hillclimbing.html +37 -37
  211. package/dist/docs/index.html +37 -37
  212. package/dist/docs/llms-full.txt +730 -163
  213. package/dist/docs/llms.txt +3 -1
  214. package/dist/docs/quickstart.html +37 -37
  215. package/dist/docs/reference/agent-config.html +42 -38
  216. package/dist/docs/reference/agent-config.md +21 -1
  217. package/dist/docs/reference/artifacts.html +37 -37
  218. package/dist/docs/reference/channels.html +38 -38
  219. package/dist/docs/reference/channels.md +7 -2
  220. package/dist/docs/reference/cli.html +43 -38
  221. package/dist/docs/reference/cli.md +27 -0
  222. package/dist/docs/reference/connections.html +37 -37
  223. package/dist/docs/reference/evals.html +37 -37
  224. package/dist/docs/reference/extensions.html +37 -37
  225. package/dist/docs/reference/hooks.html +49 -43
  226. package/dist/docs/reference/hooks.md +10 -5
  227. package/dist/docs/reference/http-api.html +37 -37
  228. package/dist/docs/reference/instructions.html +37 -37
  229. package/dist/docs/reference/memory.html +37 -37
  230. package/dist/docs/reference/playground.html +36 -36
  231. package/dist/docs/reference/project-layout.html +37 -37
  232. package/dist/docs/reference/prompt.html +37 -37
  233. package/dist/docs/reference/schedules.html +40 -40
  234. package/dist/docs/reference/sessions.html +58 -37
  235. package/dist/docs/reference/sessions.md +46 -1
  236. package/dist/docs/reference/skills.html +40 -40
  237. package/dist/docs/reference/subagents.html +37 -37
  238. package/dist/docs/reference/tools.html +39 -39
  239. package/dist/docs/reference/tools.md +4 -3
  240. package/dist/docs/templates/agentic-owners.html +37 -37
  241. package/dist/docs/templates/grokbot-agents.html +37 -37
  242. package/dist/docs/templates/security-reviewer.html +37 -37
  243. package/dist/docs/templates/thermo-quality-review.html +37 -37
  244. package/dist/docs/templates/thermo-review.html +37 -37
  245. package/dist/docs/templates/triage.html +37 -37
  246. package/dist/docs/troubleshooting.html +36 -36
  247. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  248. package/dist/extensions/cursor-cloud-agents/extension.js +15 -15
  249. package/dist/extensions/cursor-cloud-agents/lib/backend.js +1 -1
  250. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  251. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +1 -1
  252. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -1
  253. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +1 -1
  254. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +1 -1
  255. package/dist/extensions/cursor-cloud-agents/tools/launch.js +1 -1
  256. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  257. package/dist/extensions/cursor-cloud-agents/tools/reply.js +1 -1
  258. package/dist/extensions/cursor-grokbot-agents/extension.d.ts.map +1 -1
  259. package/dist/extensions/cursor-grokbot-agents/extension.js +7 -3
  260. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +1 -1
  261. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +1 -1
  262. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +1 -1
  263. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -1
  264. package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +1 -1
  265. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +1 -1
  266. package/dist/extensions/cursor-grokbot-agents/tools/check.js +1 -1
  267. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +1 -1
  268. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  269. package/dist/extensions/improve/extension.js +1 -1
  270. package/dist/extensions/jev/extension.js +2 -2
  271. package/dist/extensions/jev/tools/evaluate.js +3 -3
  272. package/dist/extensions/slack-communication/extension.js +1 -1
  273. package/dist/extensions/slack-communication/tools/delete-message.js +1 -1
  274. package/dist/extensions/slack-communication/tools/edit-message.d.ts.map +1 -1
  275. package/dist/extensions/slack-communication/tools/edit-message.js +3 -6
  276. package/dist/extensions/slack-communication/tools/post-card.js +1 -1
  277. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  278. package/dist/extensions/slack-communication/tools/post-update.d.ts.map +1 -1
  279. package/dist/extensions/slack-communication/tools/post-update.js +3 -6
  280. package/dist/extensions/slack-communication/tools/react.js +1 -1
  281. package/dist/extensions/slack-communication/tools/set-status.js +1 -1
  282. package/dist/extensions.d.ts +1 -1
  283. package/dist/extensions.js +1 -1
  284. package/dist/index.d.ts +14 -11
  285. package/dist/index.d.ts.map +1 -1
  286. package/dist/index.js +8 -4
  287. package/dist/internal/approval-gate.d.ts +4 -2
  288. package/dist/internal/approval-gate.d.ts.map +1 -1
  289. package/dist/internal/approval-gate.js +2 -1
  290. package/dist/internal/as-of.d.ts +2 -0
  291. package/dist/internal/as-of.d.ts.map +1 -1
  292. package/dist/internal/as-of.js +2 -0
  293. package/dist/internal/builtin-tools/artifacts.d.ts.map +1 -1
  294. package/dist/internal/builtin-tools/artifacts.js +45 -12
  295. package/dist/internal/builtin-tools/reminders.js +1 -1
  296. package/dist/internal/channel-architecture.d.ts +1 -1
  297. package/dist/internal/channel-architecture.d.ts.map +1 -1
  298. package/dist/internal/channel-architecture.js +4 -2
  299. package/dist/internal/cli-deploy.d.ts.map +1 -1
  300. package/dist/internal/cli-deploy.js +39 -22
  301. package/dist/internal/cli-pagerduty.d.ts +32 -0
  302. package/dist/internal/cli-pagerduty.d.ts.map +1 -0
  303. package/dist/internal/cli-pagerduty.js +242 -0
  304. package/dist/internal/continuation-channel.d.ts.map +1 -1
  305. package/dist/internal/continuation-channel.js +7 -0
  306. package/dist/internal/continuation-identity.d.ts +11 -3
  307. package/dist/internal/continuation-identity.d.ts.map +1 -1
  308. package/dist/internal/continuation-identity.js +83 -0
  309. package/dist/internal/continuation.d.ts +3 -0
  310. package/dist/internal/continuation.d.ts.map +1 -0
  311. package/dist/internal/continuation.js +1 -0
  312. package/dist/internal/conversation-mirror.d.ts +5 -0
  313. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  314. package/dist/internal/conversation-mirror.js +12 -1
  315. package/dist/internal/convert-automation/convert-workflow.js +1 -1
  316. package/dist/internal/convert-grokbot/answers.d.ts.map +1 -1
  317. package/dist/internal/convert-grokbot/answers.js +10 -8
  318. package/dist/internal/convert-grokbot/recipe.d.ts +1 -1
  319. package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -1
  320. package/dist/internal/convert-grokbot/recipe.js +1 -1
  321. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  322. package/dist/internal/cursor/account-mcp.js +2 -0
  323. package/dist/internal/cursor/backend-client.d.ts +8 -3
  324. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  325. package/dist/internal/cursor/backend-client.js +8 -3
  326. package/dist/internal/cursor/credentials.d.ts +2 -2
  327. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  328. package/dist/internal/cursor/credentials.js +1 -1
  329. package/dist/internal/cursor-account-mcp-auth.d.ts +6 -2
  330. package/dist/internal/cursor-account-mcp-auth.d.ts.map +1 -1
  331. package/dist/internal/cursor-account-mcp-auth.js +15 -6
  332. package/dist/internal/deferred-channel-session.d.ts +5 -4
  333. package/dist/internal/deferred-channel-session.d.ts.map +1 -1
  334. package/dist/internal/deferred-channel-session.js +6 -4
  335. package/dist/internal/deploy-client.d.ts +5 -0
  336. package/dist/internal/deploy-client.d.ts.map +1 -1
  337. package/dist/internal/deploy-client.js +3 -3
  338. package/dist/internal/deploy-manifest.d.ts +11 -4
  339. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  340. package/dist/internal/deploy-manifest.js +19 -7
  341. package/dist/internal/describe-error.d.ts +2 -0
  342. package/dist/internal/describe-error.d.ts.map +1 -1
  343. package/dist/internal/describe-error.js +2 -0
  344. package/dist/internal/discovery/agent-config.d.ts.map +1 -1
  345. package/dist/internal/discovery/agent-config.js +10 -10
  346. package/dist/internal/discovery/agent.d.ts.map +1 -1
  347. package/dist/internal/discovery/agent.js +10 -10
  348. package/dist/internal/discovery/channels.d.ts.map +1 -1
  349. package/dist/internal/discovery/channels.js +20 -16
  350. package/dist/internal/discovery/context.d.ts +16 -0
  351. package/dist/internal/discovery/context.d.ts.map +1 -1
  352. package/dist/internal/discovery/context.js +67 -2
  353. package/dist/internal/discovery/cursor-plugin.js +8 -8
  354. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -1
  355. package/dist/internal/discovery/extension-overlay.js +2 -6
  356. package/dist/internal/discovery/extensions.js +15 -8
  357. package/dist/internal/discovery/info.d.ts +2 -2
  358. package/dist/internal/discovery/info.d.ts.map +1 -1
  359. package/dist/internal/discovery/info.js +9 -9
  360. package/dist/internal/discovery/instructions.d.ts.map +1 -1
  361. package/dist/internal/discovery/instructions.js +3 -6
  362. package/dist/internal/discovery/instrumentation.d.ts +10 -0
  363. package/dist/internal/discovery/instrumentation.d.ts.map +1 -0
  364. package/dist/internal/discovery/instrumentation.js +29 -0
  365. package/dist/internal/discovery/modules.d.ts.map +1 -1
  366. package/dist/internal/discovery/modules.js +7 -10
  367. package/dist/internal/discovery/project-public.d.ts +16 -0
  368. package/dist/internal/discovery/project-public.d.ts.map +1 -0
  369. package/dist/internal/discovery/project-public.js +54 -0
  370. package/dist/internal/discovery/project.d.ts +6 -0
  371. package/dist/internal/discovery/project.d.ts.map +1 -1
  372. package/dist/internal/discovery/project.js +40 -8
  373. package/dist/internal/discovery/runtime.d.ts.map +1 -1
  374. package/dist/internal/discovery/runtime.js +8 -8
  375. package/dist/internal/discovery/services.d.ts +5 -4
  376. package/dist/internal/discovery/services.d.ts.map +1 -1
  377. package/dist/internal/discovery/services.js +12 -6
  378. package/dist/internal/discovery.d.ts +1 -1
  379. package/dist/internal/discovery.d.ts.map +1 -1
  380. package/dist/internal/discovery.js +1 -1
  381. package/dist/internal/event-mapper.d.ts.map +1 -1
  382. package/dist/internal/event-mapper.js +1 -0
  383. package/dist/internal/expected-delivery-failure.d.ts.map +1 -1
  384. package/dist/internal/expected-delivery-failure.js +6 -0
  385. package/dist/internal/factory-resource-channel.d.ts +1 -1
  386. package/dist/internal/factory-resource-channel.d.ts.map +1 -1
  387. package/dist/internal/filesystem/nearest.d.ts +1 -0
  388. package/dist/internal/filesystem/nearest.d.ts.map +1 -1
  389. package/dist/internal/filesystem/nearest.js +1 -0
  390. package/dist/internal/filesystem/sdk-schemas.d.ts.map +1 -1
  391. package/dist/internal/filesystem/sdk-schemas.js +4 -3
  392. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  393. package/dist/internal/filesystem/tools.js +1 -1
  394. package/dist/internal/handleAgentServeTrigger.d.ts +10 -0
  395. package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
  396. package/dist/internal/handleAgentServeTrigger.js +3 -0
  397. package/dist/internal/hmac-secret-values.d.ts +48 -0
  398. package/dist/internal/hmac-secret-values.d.ts.map +1 -0
  399. package/dist/internal/hmac-secret-values.js +68 -0
  400. package/dist/internal/host-otel.d.ts +1 -1
  401. package/dist/internal/host-otel.d.ts.map +1 -1
  402. package/dist/internal/host-otel.js +5 -0
  403. package/dist/internal/host-platforms.d.ts.map +1 -1
  404. package/dist/internal/host-platforms.js +8 -2
  405. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  406. package/dist/internal/hosted-delivery.js +6 -2
  407. package/dist/internal/http-channel.d.ts.map +1 -1
  408. package/dist/internal/http-channel.js +1 -0
  409. package/dist/internal/ids.d.ts +8 -0
  410. package/dist/internal/ids.d.ts.map +1 -1
  411. package/dist/internal/ids.js +20 -0
  412. package/dist/internal/init-scaffold.js +1 -1
  413. package/dist/internal/interview/agent-questions.d.ts +1 -1
  414. package/dist/internal/interview/agent-questions.d.ts.map +1 -1
  415. package/dist/internal/interview/agent-questions.js +1 -1
  416. package/dist/internal/interview/question.d.ts +2 -2
  417. package/dist/internal/interview/question.d.ts.map +1 -1
  418. package/dist/internal/interview/question.js +2 -2
  419. package/dist/internal/json-schema.d.ts +7 -7
  420. package/dist/internal/json-schema.d.ts.map +1 -1
  421. package/dist/internal/json-schema.js +16 -23
  422. package/dist/internal/mcp-endpoint.d.ts +16 -4
  423. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  424. package/dist/internal/mcp-endpoint.js +18 -6
  425. package/dist/internal/mcp-host.d.ts +9 -0
  426. package/dist/internal/mcp-host.d.ts.map +1 -1
  427. package/dist/internal/mcp-host.js +15 -0
  428. package/dist/internal/otel/collector.d.ts +5 -0
  429. package/dist/internal/otel/collector.d.ts.map +1 -1
  430. package/dist/internal/otel/collector.js +27 -6
  431. package/dist/internal/otel/config.d.ts +37 -22
  432. package/dist/internal/otel/config.d.ts.map +1 -1
  433. package/dist/internal/otel/config.js +132 -125
  434. package/dist/internal/otel/conversation-span-processor.d.ts +9 -0
  435. package/dist/internal/otel/conversation-span-processor.d.ts.map +1 -0
  436. package/dist/internal/otel/conversation-span-processor.js +34 -0
  437. package/dist/internal/otel/customer.d.ts +52 -0
  438. package/dist/internal/otel/customer.d.ts.map +1 -0
  439. package/dist/internal/otel/customer.js +727 -0
  440. package/dist/internal/otel/runtime.d.ts +12 -16
  441. package/dist/internal/otel/runtime.d.ts.map +1 -1
  442. package/dist/internal/otel/runtime.js +37 -218
  443. package/dist/internal/otel-env.d.ts +6 -0
  444. package/dist/internal/otel-env.d.ts.map +1 -0
  445. package/dist/internal/otel-env.js +5 -0
  446. package/dist/internal/package-inline-stdio.d.ts.map +1 -1
  447. package/dist/internal/package-inline-stdio.js +21 -6
  448. package/dist/internal/reminder-runner.d.ts +9 -4
  449. package/dist/internal/reminder-runner.d.ts.map +1 -1
  450. package/dist/internal/reminder-runner.js +12 -10
  451. package/dist/internal/reminder-schedule.d.ts +1 -0
  452. package/dist/internal/reminder-schedule.d.ts.map +1 -1
  453. package/dist/internal/reminder-schedule.js +1 -0
  454. package/dist/internal/sdk-runner.d.ts +4 -3
  455. package/dist/internal/sdk-runner.d.ts.map +1 -1
  456. package/dist/internal/sdk-runner.js +157 -17
  457. package/dist/internal/secret-alternatives.d.ts +11 -0
  458. package/dist/internal/secret-alternatives.d.ts.map +1 -0
  459. package/dist/internal/secret-alternatives.js +13 -0
  460. package/dist/internal/server.d.ts +4 -1
  461. package/dist/internal/server.d.ts.map +1 -1
  462. package/dist/internal/server.js +27 -26
  463. package/dist/internal/session-engine.d.ts +27 -0
  464. package/dist/internal/session-engine.d.ts.map +1 -1
  465. package/dist/internal/session-engine.js +154 -25
  466. package/dist/internal/slack-provision-client.js +1 -1
  467. package/dist/internal/sqlite-experimental-warning.d.ts +2 -0
  468. package/dist/internal/sqlite-experimental-warning.d.ts.map +1 -0
  469. package/dist/internal/sqlite-experimental-warning.js +22 -0
  470. package/dist/internal/store-api-protocol.d.ts +1 -1
  471. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  472. package/dist/internal/store-api-protocol.js +1 -1
  473. package/dist/internal/testing/conversation-identity-vectors.d.ts +6 -1
  474. package/dist/internal/testing/conversation-identity-vectors.d.ts.map +1 -1
  475. package/dist/internal/testing/conversation-identity-vectors.js +34 -0
  476. package/dist/internal/testing/hmac-secret-vectors.d.ts +38 -0
  477. package/dist/internal/testing/hmac-secret-vectors.d.ts.map +1 -0
  478. package/dist/internal/testing/hmac-secret-vectors.js +89 -0
  479. package/dist/internal/testing/pagerduty-continuation-fixtures.d.ts +42 -0
  480. package/dist/internal/testing/pagerduty-continuation-fixtures.d.ts.map +1 -0
  481. package/dist/internal/testing/pagerduty-continuation-fixtures.js +175 -0
  482. package/dist/internal/update-check.d.ts +2 -2
  483. package/dist/internal/update-check.d.ts.map +1 -1
  484. package/dist/internal/update-check.js +3 -3
  485. package/dist/internal/zod-schema.d.ts +14 -0
  486. package/dist/internal/zod-schema.d.ts.map +1 -0
  487. package/dist/internal/zod-schema.js +22 -0
  488. package/dist/internal/zod3-datetime.d.ts +12 -0
  489. package/dist/internal/zod3-datetime.d.ts.map +1 -0
  490. package/dist/internal/zod3-datetime.js +17 -0
  491. package/dist/otel-public.d.ts +2 -3
  492. package/dist/otel-public.d.ts.map +1 -1
  493. package/dist/otel-public.js +2 -2
  494. package/dist/otel.d.ts +3 -102
  495. package/dist/otel.d.ts.map +1 -1
  496. package/dist/otel.js +61 -97
  497. package/dist/playground/assets/cursor-icons-16-DmHBTm1-.woff2 +0 -0
  498. package/dist/playground/assets/index-CyPkf2y7.css +1 -0
  499. package/dist/playground/assets/index-DpbzbqFY.js +62 -0
  500. package/dist/playground/index.html +2 -2
  501. package/dist/public-deprecated.d.ts +36 -0
  502. package/dist/public-deprecated.d.ts.map +1 -0
  503. package/dist/public-deprecated.js +39 -0
  504. package/dist/tools.d.ts +16 -13
  505. package/dist/tools.d.ts.map +1 -1
  506. package/dist/tools.js +4 -3
  507. package/dist/types.d.ts +286 -104
  508. package/dist/types.d.ts.map +1 -1
  509. package/docs/changelog.md +91 -0
  510. package/docs/guides/hooks.md +7 -3
  511. package/docs/guides/mcp-oauth.md +12 -0
  512. package/docs/guides/opentelemetry.md +150 -180
  513. package/docs/guides/pagerduty.md +341 -0
  514. package/docs/guides/slack.md +41 -0
  515. package/docs/reference/agent-config.md +21 -1
  516. package/docs/reference/channels.md +7 -2
  517. package/docs/reference/cli.md +27 -0
  518. package/docs/reference/hooks.md +10 -5
  519. package/docs/reference/sessions.md +46 -1
  520. package/docs/reference/tools.md +4 -3
  521. package/package.json +39 -8
  522. package/schemas/grokbot-answers.schema.json +11 -0
  523. package/skills/framework-map/SKILL.md +2 -1
  524. package/skills/migrate-v2/SKILL.md +1 -1
  525. package/skills/otel/SKILL.md +30 -46
  526. package/templates/agentic-owners/README.md +6 -1
  527. package/templates/agentic-owners/bot/lib/owners/decision.ts +31 -5
  528. package/templates/agentic-owners/bot/lib/owners/globalOverride.ts +60 -0
  529. package/templates/agentic-owners/bot/lib/owners/match.ts +85 -19
  530. package/templates/agentic-owners/bot/lib/owners/parse.ts +133 -2
  531. package/templates/agentic-owners/bot/lib/owners/types.ts +23 -0
  532. package/templates/code-wiki/evals/wiki.eval.ts +2 -2
  533. package/dist/docs/assets/chunks/@localSearchIndexroot.3ebvCWKy.js +0 -1
  534. package/dist/docs/assets/chunks/channel.BOebySCN.js +0 -1
  535. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C55IaN-T.js +0 -1
  536. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C55IaN-T.js +0 -1
  537. package/dist/docs/assets/chunks/clone.D06pA7ML.js +0 -1
  538. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DddRVjeq.js +0 -1
  539. package/dist/docs/assets/chunks/wardley-RL74JXVD.CVCRSuQK.js +0 -162
  540. package/dist/docs/assets/guides_opentelemetry.md.Ck1o2frw.js +0 -45
  541. package/dist/docs/assets/guides_opentelemetry.md.Ck1o2frw.lean.js +0 -1
  542. package/dist/docs/assets/reference_sessions.md.C8FXuGwk.js +0 -1
  543. package/dist/docs/assets/reference_sessions.md.C8FXuGwk.lean.js +0 -1
  544. package/dist/playground/assets/cursor-icons-16-gwXtdAvu.woff2 +0 -0
  545. package/dist/playground/assets/index-DKKdkF29.js +0 -62
  546. package/dist/playground/assets/index-DpKinTMs.css +0 -1
  547. package/templates/grokbot-agents/.gitignore +0 -4
  548. package/templates/security-help/.gitignore +0 -4
  549. /package/dist/docs/assets/{guides_hooks.md.Bfj0pK91.lean.js → guides_hooks.md.B2XfGX50.lean.js} +0 -0
  550. /package/dist/docs/assets/{reference_channels.md.DYg0CLud.lean.js → reference_channels.md.CNNIS6K7.lean.js} +0 -0
  551. /package/dist/docs/assets/{reference_schedules.md.03Ryy9ca.lean.js → reference_schedules.md.BqWnJES4.lean.js} +0 -0
  552. /package/dist/docs/assets/{reference_skills.md.C2GWh7g8.lean.js → reference_skills.md.Ckddg6KX.lean.js} +0 -0
  553. /package/dist/docs/assets/{reference_tools.md.08XR7lIl.lean.js → reference_tools.md.Bo0UfT0a.lean.js} +0 -0
@@ -44,9 +44,9 @@ import { createHostOtelApi } from "./host-otel.js";
44
44
  import { createHostPlatforms, createHostSlackClient, } from "./host-platforms.js";
45
45
  import { HostedAdmissionLocalSendError, isDuringHostedAdmission, } from "./hosted-admission-context.js";
46
46
  import { hostedSessionResumeKey } from "./hosted-catch-protocol.js";
47
- import { formatContinuationToken, newContinuationKey, newSessionId, newToolCallId, parseContinuationToken, } from "./ids.js";
47
+ import { formatContinuationToken, newContinuationKey, newSessionId, newToolCallId, parseContinuationToken, resolveDeliveryId, } from "./ids.js";
48
48
  import { validateToolInput } from "./json-schema.js";
49
- import { isMcpNeedsAuthError, McpHost } from "./mcp-host.js";
49
+ import { isMcpNeedsAuthError, McpHost, McpReconnectError } from "./mcp-host.js";
50
50
  import { McpOauthOnDemandHub } from "./mcp-oauth-on-demand.js";
51
51
  import { shouldStartProcessMemoryTelemetry, startProcessMemoryTelemetry, } from "./process-memory-telemetry.js";
52
52
  import { buildSessionContextBlock, SCHEDULE_CHANNEL_PREFIX } from "./prompt-context.js";
@@ -56,6 +56,7 @@ import { SessionStore } from "./session-store.js";
56
56
  import { syncSkillsToStore } from "./skills-sync.js";
57
57
  import { steeringEnabled } from "./steering.js";
58
58
  import { resolveApiKeySync } from "./cursor/credentials.js";
59
+ import { CLI_COMMAND_NAME } from "./distribution.js";
59
60
  import { createSessionLivePublisher } from "./session-live-publisher.js";
60
61
  import { StorageCoordinator, isTurnBoundaryEvent } from "./storage-coordinator.js";
61
62
  import { decideToolCall, directCallEffect } from "./tool-policy.js";
@@ -71,6 +72,10 @@ import { syncSessionWorkspaceFiles, syncWorkspaceToStore, WorkspaceFileRefusal,
71
72
  export const HTTP_CHANNEL_ID = "http";
72
73
  export { mergeChannelStateSkipNull } from "./channel-state.js";
73
74
  export { SCHEDULE_CHANNEL_PREFIX } from "./prompt-context.js";
75
+ /**
76
+ * @deprecated Channel handlers may still catch this. It stays on the package
77
+ * root for those handlers.
78
+ */
74
79
  export class SessionBusyError extends Error {
75
80
  constructor(sessionId) {
76
81
  super(`Session ${sessionId} already has a running turn; wait for session.waiting before sending a follow-up`);
@@ -165,6 +170,8 @@ export class AuthInterruptedError extends Error {
165
170
  this.name = "AuthInterruptedError";
166
171
  }
167
172
  }
173
+ /** How long an interactive turn waits for a person to authorize a connection. */
174
+ export const MCP_AUTH_PARK_TIMEOUT_MS = 10 * 60_000;
168
175
  const mcpAuthAls = new AsyncLocalStorage();
169
176
  const RELEASED_CONTINUATIONS_CAP = 256;
170
177
  /** Marker that we `git init`'d this shared harness so scaffold is ours to write. */
@@ -230,6 +237,8 @@ export class SessionEngine {
230
237
  this.deliveredNudges = new Map();
231
238
  /** Aborts the in-flight turn per session so a follow-up can preempt it. */
232
239
  this.turnAborts = new Map();
240
+ /** Turn mode of the in-flight turn per session, owned with `turnAborts`. */
241
+ this.turnModes = new Map();
233
242
  /** Serializes turn admission per session (latest follow-up wins). */
234
243
  this.admissionChains = new Map();
235
244
  /** Live turn snapshot so a coalesced Slack wake can repaint on this process. */
@@ -268,12 +277,13 @@ export class SessionEngine {
268
277
  this.stateRoot = options.stateRoot;
269
278
  this.runner = options.runner;
270
279
  this.logger = options.logger ?? (() => { });
280
+ this.readFrameworkMeter = options.otelMeter ?? (() => undefined);
271
281
  this.getCloudUsage = options.getCloudUsage ?? defaultGetCloudUsage;
272
282
  this.estimateSessionCost = options.estimateSessionCost ?? estimateCostFromApi;
273
283
  this.otel = options.otel;
274
284
  this.otelHost = createHostOtelApi({
275
285
  agentName: options.project.name,
276
- meter: options.otelMeter,
286
+ meter: this.readFrameworkMeter,
277
287
  collector: options.otel,
278
288
  });
279
289
  this.turnGovernor = new TurnGovernor(options.project.agent.concurrency);
@@ -371,7 +381,7 @@ export class SessionEngine {
371
381
  agentName: options.project.name,
372
382
  getEventLogStats: () => this.logs.memoryStats(),
373
383
  logger: this.logger,
374
- meter: options.otelMeter,
384
+ meter: this.readFrameworkMeter,
375
385
  })
376
386
  : undefined;
377
387
  }
@@ -661,6 +671,7 @@ export class SessionEngine {
661
671
  if (options.clearCloudOverride === true && options.cloud !== undefined) {
662
672
  throw new Error("send options cloud and clearCloudOverride cannot be combined");
663
673
  }
674
+ const deliveryId = resolveDeliveryId(options.deliveryId);
664
675
  const identity = channelId === HTTP_CHANNEL_ID
665
676
  ? httpContinuationIdentity(this.project.httpChannel)
666
677
  : channelContinuationIdentity(this.channelsById.get(channelId));
@@ -760,11 +771,13 @@ export class SessionEngine {
760
771
  }
761
772
  const since = (await this.logs.get(record.sessionId)).count;
762
773
  const coalesced = await this.startTurn(record.sessionId, message, {
774
+ turnMode: sendOptions.turnMode ?? "non-interactive",
763
775
  admission: enqueueOnly ? "coalesce" : (sendOptions.admission ?? "preempt"),
764
776
  ...(sendOptions.coalesceSourceTs === undefined
765
777
  ? {}
766
778
  : { sourceTs: sendOptions.coalesceSourceTs }),
767
779
  ...(enqueueOnly ? { hostedEnqueueOnly: true } : {}),
780
+ deliveryIds: [deliveryId],
768
781
  });
769
782
  if (enqueueOnly && !coalesced) {
770
783
  throw new HostedEnqueueNotActiveError(record.sessionId);
@@ -772,7 +785,7 @@ export class SessionEngine {
772
785
  if (!enqueueOnly && coalesced && sendOptions.refreshState !== undefined) {
773
786
  await this.repaintOnCoalescedRefresh(record.sessionId, sendOptions.refreshState);
774
787
  }
775
- return this.channelSession(record.sessionId, record, false, coalesced, since);
788
+ return this.channelSession(record.sessionId, record, deliveryId, false, coalesced, since);
776
789
  }
777
790
  if (sendOptions.hostedEnqueueOnly === true) {
778
791
  throw new HostedEnqueueNotActiveError(sendOptions.hostedSessionId);
@@ -816,12 +829,14 @@ export class SessionEngine {
816
829
  });
817
830
  const since = (await this.logs.get(record.sessionId)).count;
818
831
  await this.startTurn(record.sessionId, message, {
832
+ turnMode: sendOptions.turnMode ?? "non-interactive",
819
833
  admission: sendOptions.admission ?? "preempt",
820
834
  ...(sendOptions.coalesceSourceTs === undefined
821
835
  ? {}
822
836
  : { sourceTs: sendOptions.coalesceSourceTs }),
837
+ deliveryIds: [deliveryId],
823
838
  });
824
- return this.channelSession(record.sessionId, record, true, false, since);
839
+ return this.channelSession(record.sessionId, record, deliveryId, true, false, since);
825
840
  }
826
841
  rejectMismatchedModelConfig(existing, modelConfig) {
827
842
  const next = modelConfigForDryRun(modelConfig, existing.dryRun);
@@ -861,7 +876,7 @@ export class SessionEngine {
861
876
  throw error;
862
877
  }
863
878
  try {
864
- await this.startTurn(sessionId, message);
879
+ await this.startTurn(sessionId, message, { turnMode: "interactive" });
865
880
  return next;
866
881
  }
867
882
  catch (error) {
@@ -883,7 +898,7 @@ export class SessionEngine {
883
898
  if (record === undefined || record.channelId !== channelId) {
884
899
  return null;
885
900
  }
886
- return this.channelSession(sessionId, record, false);
901
+ return this.channelSession(sessionId, record, undefined, false);
887
902
  }
888
903
  /** Cross-channel hand-off (schedules and channel route handlers). */
889
904
  async receive(channel, input) {
@@ -968,7 +983,7 @@ export class SessionEngine {
968
983
  * Resolves to `true` when the message was coalesced (enqueued), `false`
969
984
  * when a turn was started.
970
985
  */
971
- startTurn(sessionId, message, options = {}) {
986
+ startTurn(sessionId, message, options) {
972
987
  const prior = this.admissionChains.get(sessionId) ?? Promise.resolve();
973
988
  const admitted = prior
974
989
  .catch(() => { })
@@ -1001,7 +1016,18 @@ export class SessionEngine {
1001
1016
  }
1002
1017
  enqueueCoalesced(sessionId, item) {
1003
1018
  const queue = this.coalesceQueues.get(sessionId) ?? [];
1004
- if (item.sourceTs !== undefined && queue.some((entry) => entry.sourceTs === item.sourceTs)) {
1019
+ const duplicate = item.sourceTs === undefined
1020
+ ? undefined
1021
+ : queue.find((entry) => entry.sourceTs === item.sourceTs);
1022
+ if (duplicate !== undefined) {
1023
+ for (const id of item.deliveryIds) {
1024
+ if (!duplicate.deliveryIds.includes(id)) {
1025
+ duplicate.deliveryIds.push(id);
1026
+ }
1027
+ }
1028
+ if (item.turnMode === "interactive") {
1029
+ duplicate.turnMode = "interactive";
1030
+ }
1005
1031
  return;
1006
1032
  }
1007
1033
  queue.push(item);
@@ -1092,8 +1118,12 @@ export class SessionEngine {
1092
1118
  const message = this.formatCoalescedFollowups(pending);
1093
1119
  this.logger(`[session] coalesce drain starting follow-up (${pending.length}) ${sessionId}`);
1094
1120
  await this.startTurn(sessionId, message, {
1121
+ turnMode: pending.some((item) => item.turnMode === "interactive")
1122
+ ? "interactive"
1123
+ : "non-interactive",
1095
1124
  admission: "preempt",
1096
1125
  retainCoalesced: true,
1126
+ deliveryIds: pending.flatMap((item) => item.deliveryIds),
1097
1127
  });
1098
1128
  }
1099
1129
  async steerIntoRunningTurn(sessionId, message) {
@@ -1108,16 +1138,24 @@ export class SessionEngine {
1108
1138
  return "revert_to_followup";
1109
1139
  }
1110
1140
  }
1111
- async admitTurn(sessionId, message, options = {}) {
1141
+ async admitTurn(sessionId, message, options) {
1112
1142
  const admission = options.admission ?? "preempt";
1113
1143
  if (admission === "coalesce" && steeringEnabled() && this.isTurnRunning(sessionId)) {
1114
1144
  const toolCtx = this.activeToolContexts.get(sessionId);
1115
1145
  const steerOutcome = await this.steerIntoRunningTurn(sessionId, message);
1116
1146
  if (steerOutcome === "complete_delivered") {
1117
1147
  this.logger(`[session] steered into running turn ${sessionId}`);
1148
+ // The person who steered now waits on this turn and can connect.
1149
+ if (options.turnMode === "interactive" && this.turnModes.has(sessionId)) {
1150
+ this.turnModes.set(sessionId, "interactive");
1151
+ }
1118
1152
  if (toolCtx !== undefined) {
1119
- toolCtx.emit({ type: "message.received", data: { text: message } });
1120
- toolCtx.emit({ type: "nudge.delivered", data: {} });
1153
+ const deliveryIds = options.deliveryIds;
1154
+ toolCtx.emit({ type: "message.received", data: { text: message, deliveryIds } });
1155
+ // Outbox items from an older server carry no ids.
1156
+ for (const deliveryId of deliveryIds ?? [undefined]) {
1157
+ toolCtx.emit({ type: "nudge.delivered", data: { deliveryId } });
1158
+ }
1121
1159
  }
1122
1160
  return true;
1123
1161
  }
@@ -1129,6 +1167,8 @@ export class SessionEngine {
1129
1167
  this.enqueueCoalesced(sessionId, {
1130
1168
  message,
1131
1169
  sourceTs: options.sourceTs,
1170
+ turnMode: options.turnMode,
1171
+ deliveryIds: [...(options.deliveryIds ?? [])],
1132
1172
  });
1133
1173
  this.logger(`[session] coalesce enqueue ${sessionId}`);
1134
1174
  return true;
@@ -1186,12 +1226,13 @@ export class SessionEngine {
1186
1226
  await this.appendEvent(sessionId, {
1187
1227
  type: "message.received",
1188
1228
  turnId,
1189
- data: { text: message },
1229
+ data: { text: message, deliveryIds: options.deliveryIds },
1190
1230
  });
1191
1231
  // `turn.started` is appended by executeTurn once the turn holds a
1192
1232
  // governor slot; saturated engines emit `turn.queued` first.
1193
1233
  const abort = new AbortController();
1194
1234
  this.turnAborts.set(sessionId, abort);
1235
+ this.turnModes.set(sessionId, options.turnMode);
1195
1236
  // Lifecycle promise includes post-turn coalesce drain so waiters and
1196
1237
  // interrupt settle after follow-ups are admitted (not only executeTurn).
1197
1238
  // Assigned before the async body runs so self-identity checks typecheck.
@@ -1224,6 +1265,7 @@ export class SessionEngine {
1224
1265
  }
1225
1266
  if (this.turnAborts.get(sessionId) === abort) {
1226
1267
  this.turnAborts.delete(sessionId);
1268
+ this.turnModes.delete(sessionId);
1227
1269
  }
1228
1270
  // Failed or cancelled owners must not start a coalesced successor;
1229
1271
  // managed delivery retries the same follow-ups.
@@ -2569,6 +2611,7 @@ export class SessionEngine {
2569
2611
  turnId,
2570
2612
  callId: newToolCallId("mcp"),
2571
2613
  toolName: "mcp",
2614
+ turnMode: () => this.turnModeFor(record.sessionId),
2572
2615
  emit,
2573
2616
  }, () => resolveAdvertisedTools({
2574
2617
  agent: this.advertisingAgent(),
@@ -2683,7 +2726,7 @@ export class SessionEngine {
2683
2726
  }
2684
2727
  const needsGate = await evaluateNeedsApproval(args.tool.definition.needsApproval, validation.value);
2685
2728
  if (needsGate) {
2686
- const decision = await this.parkForApproval({
2729
+ const { decision, approver } = await this.parkForApproval({
2687
2730
  sessionId: args.record.sessionId,
2688
2731
  turnId: args.turnId,
2689
2732
  callId: toolCallId,
@@ -2694,6 +2737,7 @@ export class SessionEngine {
2694
2737
  if (decision === "deny") {
2695
2738
  return toolErrorResult(`Tool "${args.tool.name}" was denied by a human approver.`);
2696
2739
  }
2740
+ toolCtx.approvedBy = approver;
2697
2741
  }
2698
2742
  const started = Date.now();
2699
2743
  this.logger(`[session] tool ${args.tool.name} start`);
@@ -2707,6 +2751,7 @@ export class SessionEngine {
2707
2751
  turnId: args.turnId,
2708
2752
  callId: toolCallId,
2709
2753
  toolName: args.tool.name,
2754
+ turnMode: () => this.turnModeFor(args.record.sessionId),
2710
2755
  emit: args.emit,
2711
2756
  }, () => this.runExecutedTool({
2712
2757
  tool: args.tool,
@@ -2822,7 +2867,7 @@ export class SessionEngine {
2822
2867
  },
2823
2868
  });
2824
2869
  this.logger(`[session] tool ${args.toolName} awaiting approval (${args.callId})`);
2825
- const { decision, by } = await resolutionPromise;
2870
+ const { decision, by, approver } = await resolutionPromise;
2826
2871
  await this.updateRecord(args.sessionId, (current) => ({
2827
2872
  ...current,
2828
2873
  pendingApprovals: (current.pendingApprovals ?? []).filter((item) => item.callId !== args.callId),
@@ -2837,7 +2882,7 @@ export class SessionEngine {
2837
2882
  },
2838
2883
  });
2839
2884
  this.logger(`[session] tool ${args.toolName} approval ${decision} (${args.callId})`);
2840
- return decision;
2885
+ return { decision, by, approver };
2841
2886
  }
2842
2887
  async clearPendingApprovals(sessionId) {
2843
2888
  const current = await this.sessions.get(sessionId);
@@ -2886,7 +2931,7 @@ export class SessionEngine {
2886
2931
  throw new ApprovalNotFoundError(sessionId, callId);
2887
2932
  }
2888
2933
  const resolvedBy = approvalResolverLabel(auth);
2889
- if (!this.approvals.resolve(sessionId, callId, decision, resolvedBy)) {
2934
+ if (!this.approvals.resolve(sessionId, callId, decision, resolvedBy, auth ?? undefined)) {
2890
2935
  await this.removePendingApproval(sessionId, callId);
2891
2936
  throw new ApprovalInterruptedError(sessionId, callId);
2892
2937
  }
@@ -2946,9 +2991,28 @@ export class SessionEngine {
2946
2991
  if (ctx === undefined) {
2947
2992
  throw error;
2948
2993
  }
2994
+ const authored = this.authoredConnection(connection);
2995
+ const optional = authored?.optional === true;
2996
+ const canPark = () => ctx.turnMode() === "interactive" && !optional;
2997
+ const giveUp = () => {
2998
+ if (optional) {
2999
+ // The original error lets `resolveAdvertisedTools` skip the connection.
3000
+ this.logger(`[session] skipping optional MCP connection ${connection}: authorization required`);
3001
+ throw error;
3002
+ }
3003
+ if (authored !== undefined && !canPark()) {
3004
+ throw new McpReconnectError(authored.name, mcpAuthReconnectMessage(authored), error);
3005
+ }
3006
+ throw error;
3007
+ };
3008
+ // Only `oauth: true` can recover without a person, from a saved token.
3009
+ const canRefresh = authored !== undefined && isHostOauthConnectionTransport(authored.transport);
3010
+ if (!canPark() && !canRefresh) {
3011
+ return giveUp();
3012
+ }
2949
3013
  const minted = await this.mintAuthUrl(connection, ctx.sessionId);
2950
3014
  if (minted === undefined) {
2951
- throw error;
3015
+ return giveUp();
2952
3016
  }
2953
3017
  if ("authorized" in minted) {
2954
3018
  await this.persistHostedMcpOauth(connection);
@@ -2963,7 +3027,13 @@ export class SessionEngine {
2963
3027
  return await this.withMcpAuth(connection, run);
2964
3028
  }
2965
3029
  }
2966
- const decision = await this.parkForAuth({
3030
+ if (!canPark()) {
3031
+ if (minted.state !== "") {
3032
+ await this.oauthHub.abortCall(ctx.sessionId, ctx.callId);
3033
+ }
3034
+ return giveUp();
3035
+ }
3036
+ const outcome = await this.parkForAuth({
2967
3037
  sessionId: ctx.sessionId,
2968
3038
  turnId: ctx.turnId,
2969
3039
  callId: ctx.callId,
@@ -2972,7 +3042,10 @@ export class SessionEngine {
2972
3042
  authUrl: minted.authUrl,
2973
3043
  emit: ctx.emit,
2974
3044
  });
2975
- if (decision === "deny") {
3045
+ if (outcome === "timeout" && authored !== undefined) {
3046
+ throw new McpReconnectError(authored.name, mcpAuthReconnectMessage(authored), error);
3047
+ }
3048
+ if (outcome !== "approve") {
2976
3049
  throw new Error(`MCP connection "${connection}" authorization was denied.`);
2977
3050
  }
2978
3051
  await this.persistHostedMcpOauth(connection);
@@ -3042,7 +3115,34 @@ export class SessionEngine {
3042
3115
  },
3043
3116
  });
3044
3117
  this.logger(`[session] tool ${args.toolName} awaiting MCP auth ${args.connection} (${args.callId})`);
3045
- const { decision, by } = await resolutionPromise;
3118
+ const endWait = (by) => {
3119
+ void this.oauthHub.abortCall(args.sessionId, args.callId);
3120
+ return this.auths.resolve(args.sessionId, args.callId, "deny", by);
3121
+ };
3122
+ const signal = this.turnAborts.get(args.sessionId)?.signal;
3123
+ const endForAbort = () => {
3124
+ endWait("interrupt");
3125
+ };
3126
+ if (signal?.aborted) {
3127
+ endForAbort();
3128
+ }
3129
+ else {
3130
+ signal?.addEventListener("abort", endForAbort, { once: true });
3131
+ }
3132
+ let timedOut = false;
3133
+ const timer = setTimeout(() => {
3134
+ timedOut = endWait("timeout");
3135
+ }, MCP_AUTH_PARK_TIMEOUT_MS);
3136
+ timer.unref();
3137
+ let decision;
3138
+ let by;
3139
+ try {
3140
+ ({ decision, by } = await resolutionPromise);
3141
+ }
3142
+ finally {
3143
+ clearTimeout(timer);
3144
+ signal?.removeEventListener("abort", endForAbort);
3145
+ }
3046
3146
  await this.updateRecord(args.sessionId, (current) => ({
3047
3147
  ...current,
3048
3148
  pendingAuths: (current.pendingAuths ?? []).filter((item) => item.callId !== args.callId),
@@ -3057,8 +3157,9 @@ export class SessionEngine {
3057
3157
  by,
3058
3158
  },
3059
3159
  });
3060
- this.logger(`[session] tool ${args.toolName} MCP auth ${decision} (${args.callId})`);
3061
- return decision;
3160
+ const outcome = timedOut ? "timeout" : decision;
3161
+ this.logger(`[session] tool ${args.toolName} MCP auth ${outcome} (${args.callId})`);
3162
+ return outcome;
3062
3163
  }
3063
3164
  async clearPendingAuths(sessionId) {
3064
3165
  await this.oauthHub.abortSession(sessionId);
@@ -3124,9 +3225,14 @@ export class SessionEngine {
3124
3225
  turnId: active.turnId,
3125
3226
  callId: newToolCallId(toolName),
3126
3227
  toolName,
3228
+ turnMode: () => this.turnModeFor(sessionId),
3127
3229
  emit: active.emit,
3128
3230
  }, fn);
3129
3231
  }
3232
+ /** A session with no turn in flight has no person waiting on it. */
3233
+ turnModeFor(sessionId) {
3234
+ return this.turnModes.get(sessionId) ?? "non-interactive";
3235
+ }
3130
3236
  // ==========================================================================
3131
3237
  // Direct tool calls (deterministic invocation, no model turn)
3132
3238
  // ==========================================================================
@@ -3486,6 +3592,7 @@ export class SessionEngine {
3486
3592
  turnId: callId,
3487
3593
  callId,
3488
3594
  toolName,
3595
+ turnMode: () => "non-interactive",
3489
3596
  emit,
3490
3597
  }, run)
3491
3598
  : run;
@@ -3667,6 +3774,20 @@ export class SessionEngine {
3667
3774
  if (record === undefined) {
3668
3775
  return;
3669
3776
  }
3777
+ // Handlers see the turn span only while it is still open. `turn.completed`
3778
+ // and `turn.failed` close it before `session.waiting`, `session.completed`,
3779
+ // and `session.failed`. `onStart` is not an event.
3780
+ if (event.turnId === undefined || this.otel === undefined) {
3781
+ await this.dispatchEventHandlers(sessionId, event, context, record);
3782
+ return;
3783
+ }
3784
+ await this.otel.runInOpenTurn({
3785
+ sessionId: record.sessionId,
3786
+ session: this.sessionInfo(record),
3787
+ turnId: event.turnId,
3788
+ }, () => this.dispatchEventHandlers(sessionId, event, context, record));
3789
+ }
3790
+ async dispatchEventHandlers(sessionId, event, context, record) {
3670
3791
  const channelState = context === undefined ? (record.channelState ?? null) : context.channelState;
3671
3792
  const sessionCtx = {
3672
3793
  session: context?.session ?? this.sessionInfo(record),
@@ -4222,12 +4343,13 @@ export class SessionEngine {
4222
4343
  ...(record.sdkAgentId === undefined ? {} : { sdkAgentId: record.sdkAgentId }),
4223
4344
  };
4224
4345
  }
4225
- channelSession(sessionId, record, isNew, coalesced = false, since = 0) {
4346
+ channelSession(sessionId, record, deliveryId, isNew, coalesced = false, since = 0) {
4226
4347
  return {
4227
4348
  id: sessionId,
4228
4349
  continuationToken: record.continuationKey,
4229
4350
  isNew,
4230
4351
  ...(coalesced ? { coalesced: true } : {}),
4352
+ deliveryId,
4231
4353
  info: this.sessionInfo(record),
4232
4354
  getEventStream: (options) => this.eventStream(sessionId, options?.startIndex ?? since),
4233
4355
  waitForCompletion: () => this.waitForCompletion(sessionId),
@@ -4515,6 +4637,13 @@ export class SessionEngine {
4515
4637
  this.otel?.close();
4516
4638
  }
4517
4639
  }
4640
+ const DEPLOYED_AGENTS_DASHBOARD_URL = "https://cursor.com/dashboard/deployed-agents";
4641
+ function mcpAuthReconnectMessage(connection) {
4642
+ if (isCursorAccountTransport(connection.transport)) {
4643
+ return `Reconnect ${connection.name}: the MCP connection needs authorization. Ask the bot owner to reconnect ${connection.name} at ${DEPLOYED_AGENTS_DASHBOARD_URL}`;
4644
+ }
4645
+ return `Reconnect ${connection.name}: the MCP connection needs authorization. Run \`${CLI_COMMAND_NAME} mcp oauth ${connection.name}\`. Ask the bot owner if you cannot run it.`;
4646
+ }
4518
4647
  /** Parallel event-stream loads during the startup bulk restore. */
4519
4648
  const RESTORE_FETCH_CONCURRENCY = 8;
4520
4649
  /**
@@ -17,7 +17,7 @@
17
17
  * which flows through on {@link SlackProvisionApiError.code} so the CLI
18
18
  * can branch.
19
19
  */
20
- import { z } from "zod/v3";
20
+ import * as z from "zod/v4";
21
21
  /**
22
22
  * Backend mount of the Slack control plane for each hosted architecture.
23
23
  * The backend validates the pairing: the v2 routes reject a wizard mint or
@@ -0,0 +1,2 @@
1
+ export declare function installSqliteExperimentalWarningFilter(): void;
2
+ //# sourceMappingURL=sqlite-experimental-warning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-experimental-warning.d.ts","sourceRoot":"","sources":["../../src/internal/sqlite-experimental-warning.ts"],"names":[],"mappings":"AAQA,wBAAgB,sCAAsC,IAAI,IAAI,CAiB7D"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Drop Node's one-time `node:sqlite` ExperimentalWarning.
3
+ * Every other warning keeps the normal Node output.
4
+ */
5
+ const SQLITE_EXPERIMENTAL_WARNING_PREFIX = "SQLite is an experimental feature";
6
+ let installed = false;
7
+ export function installSqliteExperimentalWarningFilter() {
8
+ if (installed) {
9
+ return;
10
+ }
11
+ installed = true;
12
+ const emitWarning = process.emitWarning;
13
+ const filtered = function filteredEmitWarning(warning, ...args) {
14
+ if (typeof warning === "string" &&
15
+ args[0] === "ExperimentalWarning" &&
16
+ warning.startsWith(SQLITE_EXPERIMENTAL_WARNING_PREFIX)) {
17
+ return;
18
+ }
19
+ Reflect.apply(emitWarning, process, [warning, ...args]);
20
+ };
21
+ process.emitWarning = filtered;
22
+ }
@@ -7,7 +7,7 @@
7
7
  * forever. A breaking change means a new `v`, and the server keeps serving
8
8
  * every previous `v`.
9
9
  */
10
- import { z } from "zod/v3";
10
+ import * as z from "zod/v4";
11
11
  export declare const STORE_API_PROTOCOL_VERSION = 1;
12
12
  /** Managed storage endpoint, with one trailing segment per call. */
13
13
  export declare const STORE_API_PATH = "/internal/agentsdk/store/api";
@@ -1 +1 @@
1
- {"version":3,"file":"store-api-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/store-api-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store-api-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/store-api-protocol.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * forever. A breaking change means a new `v`, and the server keeps serving
8
8
  * every previous `v`.
9
9
  */
10
- import { z } from "zod/v3";
10
+ import * as z from "zod/v4";
11
11
  export const STORE_API_PROTOCOL_VERSION = 1;
12
12
  /** Managed storage endpoint, with one trailing segment per call. */
13
13
  export const STORE_API_PATH = "/internal/agentsdk/store/api";
@@ -34,10 +34,15 @@ type ConversationIdentityClaim = RepoNumberClaim | {
34
34
  resource: {
35
35
  issueName: string;
36
36
  };
37
+ } | {
38
+ type: "pagerduty-incident";
39
+ resource: {
40
+ incidentId: string;
41
+ };
37
42
  };
38
43
  export type ConversationIdentityVector = {
39
44
  name: string;
40
- kind: "github" | "slack" | "origin" | "gitlab" | "bitbucket" | "deployments" | "change_monitors" | "issues";
45
+ kind: "github" | "slack" | "origin" | "gitlab" | "bitbucket" | "deployments" | "change_monitors" | "issues" | "pagerduty";
41
46
  claim: ConversationIdentityClaim;
42
47
  eventName: string;
43
48
  payload: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-identity-vectors.d.ts","sourceRoot":"","sources":["../../../src/internal/testing/conversation-identity-vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,CAAC;IAClE,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,KAAK,yBAAyB,GAC1B,eAAe,GACf;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC,GACD;IACE,IAAI,EAAE,2BAA2B,CAAC;IAClC,QAAQ,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACA,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,aAAa,GACb,iBAAiB,GACjB,QAAQ,CAAC;IACb,KAAK,EAAE,yBAAyB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,SAAS,0BAA0B,EA+H9E,CAAC"}
1
+ {"version":3,"file":"conversation-identity-vectors.d.ts","sourceRoot":"","sources":["../../../src/internal/testing/conversation-identity-vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,CAAC;IAClE,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,KAAK,yBAAyB,GAC1B,eAAe,GACf;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC,GACD;IACE,IAAI,EAAE,2BAA2B,CAAC;IAClC,QAAQ,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACA,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,aAAa,GACb,iBAAiB,GACjB,QAAQ,GACR,WAAW,CAAC;IAChB,KAAK,EAAE,yBAAyB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,SAAS,0BAA0B,EAiK9E,CAAC"}
@@ -133,4 +133,38 @@ export const CONVERSATION_IDENTITY_VECTORS = [
133
133
  payload: { issue: { name: "issues/iss-3" } },
134
134
  expectedKey: "cont:issues:issues/iss-3",
135
135
  },
136
+ {
137
+ name: "PagerDuty incident on its id",
138
+ kind: "pagerduty",
139
+ claim: {
140
+ type: "pagerduty-incident",
141
+ resource: { incidentId: "PINC001" },
142
+ },
143
+ eventName: "incident.triggered",
144
+ payload: {
145
+ event: {
146
+ event_type: "incident.triggered",
147
+ resource_type: "incident",
148
+ data: { id: "PINC001", type: "incident", incident_key: "datadog-monitor-81234567" },
149
+ },
150
+ },
151
+ expectedKey: "cont:pagerduty:incident:PINC001",
152
+ },
153
+ {
154
+ name: "PagerDuty incident without a dedup key",
155
+ kind: "pagerduty",
156
+ claim: {
157
+ type: "pagerduty-incident",
158
+ resource: { incidentId: "PMAN001" },
159
+ },
160
+ eventName: "incident.acknowledged",
161
+ payload: {
162
+ event: {
163
+ event_type: "incident.acknowledged",
164
+ resource_type: "incident",
165
+ data: { id: "PMAN001", type: "incident", incident_key: null },
166
+ },
167
+ },
168
+ expectedKey: "cont:pagerduty:incident:PMAN001",
169
+ },
136
170
  ];
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Multi-value HMAC secret cases shared by the July and control-plane
3
+ * suites, so both sides split a named secret and admit a delivery the same
4
+ * way.
5
+ *
6
+ * Pure data: server-shared loads this module without importing July runtime
7
+ * code into the control plane.
8
+ */
9
+ export declare const HMAC_SECRET_VECTOR_BODY = "{\"event\":{\"id\":\"evt-1\"}}";
10
+ export type HmacSecretParseVector = {
11
+ name: string;
12
+ raw: string;
13
+ /**
14
+ * The signing secrets the value holds; `"unset"` when it holds none and
15
+ * `"too_many_values"` past the cap.
16
+ */
17
+ expected: readonly [string, ...string[]] | "unset" | "too_many_values";
18
+ };
19
+ export declare const HMAC_SECRET_PARSE_VECTORS: readonly HmacSecretParseVector[];
20
+ export type HmacSecretMatchVector = {
21
+ name: string;
22
+ secretValue: string;
23
+ /**
24
+ * Header entries joined by `separator`: `signWith` is the hex HMAC of
25
+ * {@link HMAC_SECRET_VECTOR_BODY} under that secret behind `prefix`;
26
+ * `literal` is sent verbatim.
27
+ */
28
+ entries: readonly ({
29
+ signWith: string;
30
+ } | {
31
+ literal: string;
32
+ })[];
33
+ prefix: string;
34
+ separator?: string;
35
+ admits: boolean;
36
+ };
37
+ export declare const HMAC_SECRET_MATCH_VECTORS: readonly HmacSecretMatchVector[];
38
+ //# sourceMappingURL=hmac-secret-vectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmac-secret-vectors.d.ts","sourceRoot":"","sources":["../../../src/internal/testing/hmac-secret-vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,uBAAuB,mCAA6B,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,GAAG,iBAAiB,CAAC;CACxE,CAAC;AAQF,eAAO,MAAM,yBAAyB,EAAE,SAAS,qBAAqB,EAcrE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,SAAS,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,SAAS,qBAAqB,EA2DrE,CAAC"}