@cursor/bdk 0.2.6 → 0.2.8

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 (333) hide show
  1. package/dist/bin/agent-serve.js +52 -57
  2. package/dist/channels/github/github-channel.d.ts.map +1 -1
  3. package/dist/channels/github/github-channel.js +32 -8
  4. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  5. package/dist/channels/slack/dispatch.js +37 -29
  6. package/dist/channels/slack/external-policy.d.ts.map +1 -1
  7. package/dist/channels/slack/external-policy.js +6 -6
  8. package/dist/channels/slack/inbound.d.ts +5 -0
  9. package/dist/channels/slack/inbound.d.ts.map +1 -1
  10. package/dist/channels/slack/inbound.js +13 -0
  11. package/dist/channels/slack/index.d.ts +3 -0
  12. package/dist/channels/slack/index.d.ts.map +1 -1
  13. package/dist/channels/slack/index.js +3 -0
  14. package/dist/channels/slack/log.d.ts +1 -1
  15. package/dist/channels/slack/log.js +1 -1
  16. package/dist/channels/slack/self-identity.d.ts +15 -0
  17. package/dist/channels/slack/self-identity.d.ts.map +1 -0
  18. package/dist/channels/slack/self-identity.js +48 -0
  19. package/dist/channels/slack/sender-name.d.ts +17 -0
  20. package/dist/channels/slack/sender-name.d.ts.map +1 -0
  21. package/dist/channels/slack/sender-name.js +87 -0
  22. package/dist/channels/slack/setup.js +1 -1
  23. package/dist/channels/slack/user-info.d.ts +15 -0
  24. package/dist/channels/slack/user-info.d.ts.map +1 -0
  25. package/dist/channels/slack/user-info.js +57 -0
  26. package/dist/docs/404.html +2 -2
  27. package/dist/docs/assets/{app.CJLKDVza.js → app.oyjtOr3W.js} +4 -4
  28. package/dist/docs/assets/chunks/@localSearchIndexroot.C25zYVuc.js +1 -0
  29. package/dist/docs/assets/chunks/{VPLocalSearchBox.BW9mrQmq.js → VPLocalSearchBox.D0P6J_UJ.js} +1 -1
  30. package/dist/docs/assets/chunks/{arc.D8ZOvM1m.js → arc.B0LY1J1h.js} +1 -1
  31. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CXEKhLW-.js → architectureDiagram-Q4EWVU46.dPduLUxY.js} +1 -1
  32. package/dist/docs/assets/chunks/{baseUniq.BJkVKblr.js → baseUniq.B_Ohm21h.js} +1 -1
  33. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DQDbHxor.js → blockDiagram-DXYQGD6D.B4zcanaJ.js} +1 -1
  34. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.ByMD6LYM.js → c4Diagram-AHTNJAMY.D9Iw21nx.js} +1 -1
  35. package/dist/docs/assets/chunks/channel.CRUyWDV-.js +1 -0
  36. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.Dtq1aVI9.js → chunk-4BX2VUAB.DDVwRShI.js} +1 -1
  37. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.BL_XrkoQ.js → chunk-4TB4RGXK.DsYcdn1i.js} +1 -1
  38. package/dist/docs/assets/chunks/{chunk-55IACEB6.BDPXu94_.js → chunk-55IACEB6.BzzQvcYp.js} +1 -1
  39. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DhGOQj4k.js → chunk-EDXVE4YY.BMiXZ7FX.js} +1 -1
  40. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DSF5nr8v.js → chunk-FMBD7UC4.D_mBcLoc.js} +1 -1
  41. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Day7wayw.js → chunk-OYMX7WX6.CMVjWVMx.js} +1 -1
  42. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.CpBEC0zA.js → chunk-QZHKN3VN.BG-FrPv9.js} +1 -1
  43. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.X_7rY1rx.js → chunk-YZCP3GAM.CkFE1ap3.js} +1 -1
  44. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CG_UObcQ.js +1 -0
  45. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CG_UObcQ.js +1 -0
  46. package/dist/docs/assets/chunks/clone.NYSZ9qZN.js +1 -0
  47. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BVRmi2ko.js → cose-bilkent-S5V4N54A.BVNnCTvY.js} +1 -1
  48. package/dist/docs/assets/chunks/{dagre-KV5264BT.Dei9oslB.js → dagre-KV5264BT.CDN5PR9l.js} +1 -1
  49. package/dist/docs/assets/chunks/{diagram-5BDNPKRD._M-efGt7.js → diagram-5BDNPKRD.DQRUlT-i.js} +1 -1
  50. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.D1Vmhfsj.js → diagram-G4DWMVQ6.CoeblYQT.js} +1 -1
  51. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.cE1bmvAC.js → diagram-MMDJMWI5.DW3ymjl0.js} +1 -1
  52. package/dist/docs/assets/chunks/{diagram-TYMM5635.DkXAfznP.js → diagram-TYMM5635.BP0uN4Jw.js} +1 -1
  53. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DH_pSwPg.js → erDiagram-SMLLAGMA.DVFUWEn4.js} +1 -1
  54. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.kAWVN9j1.js → flowDiagram-DWJPFMVM.HU-eHspv.js} +1 -1
  55. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.8r0w49-p.js → ganttDiagram-T4ZO3ILL.DHNhXijY.js} +1 -1
  56. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.BDa7Bi1i.js → gitGraphDiagram-UUTBAWPF.DkISXcO3.js} +1 -1
  57. package/dist/docs/assets/chunks/{graph.BMPXHz_B.js → graph.CCV0fuRR.js} +1 -1
  58. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.BmlcqewS.js → infoDiagram-42DDH7IO.bgILzOoc.js} +1 -1
  59. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.CVSEQSul.js → ishikawaDiagram-UXIWVN3A.CuryXC0F.js} +1 -1
  60. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BpeWJ5n-.js → journeyDiagram-VCZTEJTY.BL1Pr-wu.js} +1 -1
  61. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.DHbDXuxB.js → kanban-definition-6JOO6SKY.BbGjvk4l.js} +1 -1
  62. package/dist/docs/assets/chunks/{layout.CzrCDgkP.js → layout.C4PfdldS.js} +1 -1
  63. package/dist/docs/assets/chunks/{linear.HwBsflwN.js → linear.C3xD1T6X.js} +1 -1
  64. package/dist/docs/assets/chunks/{min.DqGHolT3.js → min.CzgRAQ9c.js} +1 -1
  65. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.ZYGlOawh.js → mindmap-definition-QFDTVHPH.CA9rSWum.js} +1 -1
  66. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.C2KRXlNR.js → pieDiagram-DEJITSTG.B8MprgJu.js} +1 -1
  67. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CHj3Qefp.js → quadrantDiagram-34T5L4WZ.DndDwbKT.js} +1 -1
  68. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.B1L4Tf7k.js → requirementDiagram-MS252O5E.Zhfgwlnn.js} +1 -1
  69. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.dNR2yi1B.js → sankeyDiagram-XADWPNL6.B6RRm6N5.js} +1 -1
  70. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.BrvQ3C6m.js → sequenceDiagram-FGHM5R23.Bfmz-1PN.js} +1 -1
  71. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BtehEykA.js → stateDiagram-FHFEXIEX.gbrdNqgj.js} +1 -1
  72. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DOOmulfQ.js +1 -0
  73. package/dist/docs/assets/chunks/{theme.BDHBZUkP.js → theme.gpWjytMh.js} +2 -2
  74. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Bn7nhqEN.js → timeline-definition-GMOUNBTQ.Bl1l7M1f.js} +1 -1
  75. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.DKhc38sz.js → vennDiagram-DHZGUBPP.Dfle4U0d.js} +1 -1
  76. package/dist/docs/assets/chunks/{wardley-RL74JXVD.DOXQ0w8J.js → wardley-RL74JXVD.BJrCW6xc.js} +1 -1
  77. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.Bbq5B2Ic.js → wardleyDiagram-NUSXRM2D.CM_4lmvZ.js} +1 -1
  78. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.B77HE1K8.js → xychartDiagram-5P7HB3ND.CHT5X28R.js} +1 -1
  79. package/dist/docs/assets/{reference_cli.md.BsgDqYPh.js → reference_cli.md.GwugN3n-.js} +5 -5
  80. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +1 -0
  81. package/dist/docs/building-with-agents.html +35 -35
  82. package/dist/docs/deployment.html +35 -35
  83. package/dist/docs/evals.html +35 -35
  84. package/dist/docs/guides/agent-to-agent.html +35 -35
  85. package/dist/docs/guides/bitbucket.html +35 -35
  86. package/dist/docs/guides/cloud-agents.html +35 -35
  87. package/dist/docs/guides/convert-automation.html +35 -35
  88. package/dist/docs/guides/github.html +35 -35
  89. package/dist/docs/guides/gitlab.html +35 -35
  90. package/dist/docs/guides/grokbot-agents.html +35 -35
  91. package/dist/docs/guides/hooks.html +35 -35
  92. package/dist/docs/guides/improve.html +35 -35
  93. package/dist/docs/guides/jev.html +35 -35
  94. package/dist/docs/guides/mcp-oauth.html +35 -35
  95. package/dist/docs/guides/opentelemetry.html +35 -35
  96. package/dist/docs/guides/slack.html +35 -35
  97. package/dist/docs/guides/webhooks.html +35 -35
  98. package/dist/docs/hashmap.json +1 -1
  99. package/dist/docs/hillclimbing.html +35 -35
  100. package/dist/docs/index.html +35 -35
  101. package/dist/docs/llms-full.txt +20 -9
  102. package/dist/docs/quickstart.html +35 -35
  103. package/dist/docs/reference/agent-config.html +35 -35
  104. package/dist/docs/reference/artifacts.html +35 -35
  105. package/dist/docs/reference/channels.html +35 -35
  106. package/dist/docs/reference/cli.html +39 -39
  107. package/dist/docs/reference/cli.md +20 -9
  108. package/dist/docs/reference/connections.html +35 -35
  109. package/dist/docs/reference/evals.html +35 -35
  110. package/dist/docs/reference/extensions.html +35 -35
  111. package/dist/docs/reference/hooks.html +35 -35
  112. package/dist/docs/reference/http-api.html +35 -35
  113. package/dist/docs/reference/instructions.html +35 -35
  114. package/dist/docs/reference/playground.html +35 -35
  115. package/dist/docs/reference/project-layout.html +35 -35
  116. package/dist/docs/reference/prompt.html +35 -35
  117. package/dist/docs/reference/schedules.html +35 -35
  118. package/dist/docs/reference/sessions.html +35 -35
  119. package/dist/docs/reference/skills.html +35 -35
  120. package/dist/docs/reference/subagents.html +35 -35
  121. package/dist/docs/reference/tools.html +35 -35
  122. package/dist/docs/templates/agentic-owners.html +35 -35
  123. package/dist/docs/templates/grokbot-agents.html +35 -35
  124. package/dist/docs/templates/security-reviewer.html +35 -35
  125. package/dist/docs/templates/thermo-quality-review.html +35 -35
  126. package/dist/docs/templates/thermo-review.html +35 -35
  127. package/dist/docs/templates/triage.html +35 -35
  128. package/dist/docs/troubleshooting.html +35 -35
  129. package/dist/extensions/cursor-cloud-agents/extension.d.ts +14 -0
  130. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  131. package/dist/extensions/cursor-cloud-agents/extension.js +5 -0
  132. package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts +17 -0
  133. package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts.map +1 -0
  134. package/dist/extensions/cursor-cloud-agents/lib/watch.js +99 -0
  135. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.d.ts +19 -0
  136. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.d.ts.map +1 -0
  137. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +71 -0
  138. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +9 -5
  139. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -1
  140. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +3 -1
  141. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
  142. package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -2
  143. package/dist/extensions.d.ts +1 -1
  144. package/dist/extensions.js +1 -1
  145. package/dist/files-backends/cursor-hosted.d.ts +22 -83
  146. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  147. package/dist/files-backends/cursor-hosted.js +46 -160
  148. package/dist/files.d.ts +9 -32
  149. package/dist/files.d.ts.map +1 -1
  150. package/dist/files.js +7 -32
  151. package/dist/internal/artifacts-store.d.ts +13 -25
  152. package/dist/internal/artifacts-store.d.ts.map +1 -1
  153. package/dist/internal/artifacts-store.js +25 -46
  154. package/dist/internal/cli-ax.d.ts +10 -17
  155. package/dist/internal/cli-ax.d.ts.map +1 -1
  156. package/dist/internal/cli-ax.js +87 -155
  157. package/dist/internal/cli-bitbucket.js +5 -5
  158. package/dist/internal/cli-deploy.d.ts +4 -1
  159. package/dist/internal/cli-deploy.d.ts.map +1 -1
  160. package/dist/internal/cli-deploy.js +117 -20
  161. package/dist/internal/cli-github.js +13 -13
  162. package/dist/internal/cli-gitlab.js +5 -5
  163. package/dist/internal/continuation-identity.d.ts +2 -0
  164. package/dist/internal/continuation-identity.d.ts.map +1 -1
  165. package/dist/internal/continuation-identity.js +4 -0
  166. package/dist/internal/conversation-mirror.d.ts +9 -38
  167. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  168. package/dist/internal/conversation-mirror.js +62 -68
  169. package/dist/internal/cursor/account-mcp.d.ts +1 -1
  170. package/dist/internal/cursor/account-mcp.js +1 -1
  171. package/dist/internal/cursor/backend-client.js +1 -1
  172. package/dist/internal/cursor/github-credentials.js +3 -3
  173. package/dist/internal/cursor/hosted-bound-secrets.d.ts +6 -2
  174. package/dist/internal/cursor/hosted-bound-secrets.d.ts.map +1 -1
  175. package/dist/internal/cursor/hosted-bound-secrets.js +13 -2
  176. package/dist/internal/cursor/hosted-store-secrets.d.ts +13 -37
  177. package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
  178. package/dist/internal/cursor/hosted-store-secrets.js +13 -37
  179. package/dist/internal/cursor/store-api-client.d.ts +17 -39
  180. package/dist/internal/cursor/store-api-client.d.ts.map +1 -1
  181. package/dist/internal/cursor/store-api-client.js +15 -37
  182. package/dist/internal/cursor-deployment-relay.js +3 -3
  183. package/dist/internal/cursor-event-relay.js +1 -1
  184. package/dist/internal/cursor-relay-core.d.ts +1 -1
  185. package/dist/internal/cursor-relay-core.d.ts.map +1 -1
  186. package/dist/internal/deploy-client.d.ts +55 -63
  187. package/dist/internal/deploy-client.d.ts.map +1 -1
  188. package/dist/internal/deploy-client.js +48 -28
  189. package/dist/internal/discovery/agent.d.ts +1 -1
  190. package/dist/internal/discovery/agent.d.ts.map +1 -1
  191. package/dist/internal/discovery/agent.js +4 -0
  192. package/dist/internal/discovery/extensions.d.ts +2 -1
  193. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  194. package/dist/internal/discovery/extensions.js +11 -1
  195. package/dist/internal/discovery/project.d.ts.map +1 -1
  196. package/dist/internal/discovery/project.js +1 -0
  197. package/dist/internal/distribution.d.ts +2 -2
  198. package/dist/internal/distribution.d.ts.map +1 -1
  199. package/dist/internal/distribution.js +2 -2
  200. package/dist/internal/docs-site.js +3 -3
  201. package/dist/internal/eval-run-store.js +8 -8
  202. package/dist/internal/framework-file-storage.d.ts +10 -34
  203. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  204. package/dist/internal/framework-file-storage.js +12 -39
  205. package/dist/internal/framework-storage-selection.d.ts +10 -46
  206. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  207. package/dist/internal/framework-storage-selection.js +15 -64
  208. package/dist/internal/github-fanout.js +2 -2
  209. package/dist/internal/handleAgentServeTrigger.d.ts +5 -8
  210. package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
  211. package/dist/internal/handleAgentServeTrigger.js +5 -8
  212. package/dist/internal/host-files.js +6 -9
  213. package/dist/internal/host-platforms.js +5 -5
  214. package/dist/internal/hosted-catch.d.ts +3 -2
  215. package/dist/internal/hosted-catch.d.ts.map +1 -1
  216. package/dist/internal/hosted-catch.js +27 -9
  217. package/dist/internal/hosted-delivery-protocol.d.ts +31 -8
  218. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  219. package/dist/internal/hosted-delivery-protocol.js +102 -1
  220. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  221. package/dist/internal/hosted-delivery.js +32 -12
  222. package/dist/internal/hosted-execution-diag.d.ts +13 -24
  223. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  224. package/dist/internal/hosted-execution-diag.js +11 -20
  225. package/dist/internal/hosted-execution-flush.d.ts +22 -10
  226. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  227. package/dist/internal/hosted-execution-flush.js +45 -9
  228. package/dist/internal/hosted-managed-automation.js +5 -5
  229. package/dist/internal/hosting.d.ts +5 -10
  230. package/dist/internal/hosting.d.ts.map +1 -1
  231. package/dist/internal/hosting.js +5 -10
  232. package/dist/internal/legacy-command-guard.d.ts +1 -4
  233. package/dist/internal/legacy-command-guard.d.ts.map +1 -1
  234. package/dist/internal/legacy-command-guard.js +2 -11
  235. package/dist/internal/listen-port.js +1 -1
  236. package/dist/internal/local-control-plane.js +6 -6
  237. package/dist/internal/logs-client.d.ts +20 -1
  238. package/dist/internal/logs-client.d.ts.map +1 -1
  239. package/dist/internal/logs-client.js +89 -1
  240. package/dist/internal/mcp-endpoint.js +1 -1
  241. package/dist/internal/otel/collector.js +1 -1
  242. package/dist/internal/otel/runtime.js +13 -13
  243. package/dist/internal/platform-schedule-sync.js +2 -2
  244. package/dist/internal/playground/toolchain.js +6 -6
  245. package/dist/internal/process-memory-telemetry.js +2 -2
  246. package/dist/internal/reminder-runner.d.ts +8 -3
  247. package/dist/internal/reminder-runner.d.ts.map +1 -1
  248. package/dist/internal/reminder-runner.js +51 -52
  249. package/dist/internal/resolve-prod-target.d.ts +1 -12
  250. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  251. package/dist/internal/resolve-prod-target.js +2 -32
  252. package/dist/internal/resolved-connections.js +8 -8
  253. package/dist/internal/run-client.d.ts +4 -3
  254. package/dist/internal/run-client.d.ts.map +1 -1
  255. package/dist/internal/run-client.js +98 -61
  256. package/dist/internal/runtime-dispatch-runner.d.ts +1 -0
  257. package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
  258. package/dist/internal/runtime-dispatch-runner.js +7 -1
  259. package/dist/internal/schedule-runner.js +1 -1
  260. package/dist/internal/sdk-runner.d.ts +4 -0
  261. package/dist/internal/sdk-runner.d.ts.map +1 -1
  262. package/dist/internal/sdk-runner.js +37 -22
  263. package/dist/internal/server.d.ts +2 -0
  264. package/dist/internal/server.d.ts.map +1 -1
  265. package/dist/internal/server.js +39 -38
  266. package/dist/internal/session-engine.d.ts +40 -44
  267. package/dist/internal/session-engine.d.ts.map +1 -1
  268. package/dist/internal/session-engine.js +108 -97
  269. package/dist/internal/session-run-log.d.ts +10 -24
  270. package/dist/internal/session-run-log.d.ts.map +1 -1
  271. package/dist/internal/session-run-log.js +13 -27
  272. package/dist/internal/sessions-client.d.ts.map +1 -1
  273. package/dist/internal/sessions-client.js +6 -3
  274. package/dist/internal/skills-sync.d.ts +3 -5
  275. package/dist/internal/skills-sync.d.ts.map +1 -1
  276. package/dist/internal/skills-sync.js +3 -5
  277. package/dist/internal/start-log-store.d.ts +7 -18
  278. package/dist/internal/start-log-store.d.ts.map +1 -1
  279. package/dist/internal/start-log-store.js +47 -24
  280. package/dist/internal/storage-coordinator.d.ts +7 -10
  281. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  282. package/dist/internal/storage-coordinator.js +18 -20
  283. package/dist/internal/storage-roles.d.ts +5 -0
  284. package/dist/internal/storage-roles.d.ts.map +1 -1
  285. package/dist/internal/store-api-protocol.d.ts +12 -33
  286. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  287. package/dist/internal/store-api-protocol.js +6 -22
  288. package/dist/internal/store-mirror.d.ts +4 -5
  289. package/dist/internal/store-mirror.d.ts.map +1 -1
  290. package/dist/internal/store-mirror.js +6 -8
  291. package/dist/internal/turn-cost.d.ts.map +1 -1
  292. package/dist/internal/turn-cost.js +31 -18
  293. package/dist/internal/turn-lease-store.d.ts +12 -5
  294. package/dist/internal/turn-lease-store.d.ts.map +1 -1
  295. package/dist/internal/turn-lease-store.js +61 -8
  296. package/dist/internal/v2-hosting.d.ts +4 -7
  297. package/dist/internal/v2-hosting.d.ts.map +1 -1
  298. package/dist/internal/v2-hosting.js +4 -7
  299. package/dist/internal/workspace-sync.d.ts +3 -6
  300. package/dist/internal/workspace-sync.d.ts.map +1 -1
  301. package/dist/internal/workspace-sync.js +3 -6
  302. package/dist/internal/workspace.d.ts +10 -16
  303. package/dist/internal/workspace.d.ts.map +1 -1
  304. package/dist/internal/workspace.js +9 -14
  305. package/dist/memory.d.ts +17 -43
  306. package/dist/memory.d.ts.map +1 -1
  307. package/dist/memory.js +34 -80
  308. package/dist/playground/assets/index-DPKLl4C_.css +1 -0
  309. package/dist/playground/assets/index-MijLHTbB.js +71 -0
  310. package/dist/playground/index.html +2 -2
  311. package/dist/storage-backends/cursor-hosted-v2.d.ts +8 -36
  312. package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
  313. package/dist/storage-backends/cursor-hosted-v2.js +9 -37
  314. package/dist/storage-backends/cursor-hosted.d.ts +17 -30
  315. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  316. package/dist/storage-backends/cursor-hosted.js +14 -27
  317. package/dist/storage-protocol.d.ts +13 -38
  318. package/dist/storage-protocol.d.ts.map +1 -1
  319. package/dist/storage-protocol.js +14 -39
  320. package/dist/types.d.ts +29 -30
  321. package/dist/types.d.ts.map +1 -1
  322. package/docs/reference/cli.md +20 -9
  323. package/package.json +1 -1
  324. package/templates/pr-autofixer/bot/instructions.md +3 -3
  325. package/dist/docs/assets/chunks/@localSearchIndexroot.Bq-pxRXm.js +0 -1
  326. package/dist/docs/assets/chunks/channel.DCU8W1RP.js +0 -1
  327. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.DwpXsM06.js +0 -1
  328. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DwpXsM06.js +0 -1
  329. package/dist/docs/assets/chunks/clone.DH6Mx2zB.js +0 -1
  330. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.kzD0-U89.js +0 -1
  331. package/dist/docs/assets/reference_cli.md.BsgDqYPh.lean.js +0 -1
  332. package/dist/playground/assets/index-6BbTPnaT.css +0 -1
  333. package/dist/playground/assets/index-CI7FAmOP.js +0 -71
@@ -57,10 +57,9 @@ Usage:
57
57
  ${CLI} resume [sessionId] [--url <baseUrl> | --prod] [--message <text>]
58
58
  [--json] [--text] [--continuation-token <t>]
59
59
  [--slug <slug>] [--team <id>]
60
- ${CLI} logs [--url <baseUrl> | --prod] [--once] [--json]
61
- [--slug <slug>] [--team <id>] [--dir <path>]
62
- v2: --prod unsupported; use deployment <slug> and
63
- session <ses_> --prod.
60
+ ${CLI} logs [<ses_>] [--url <baseUrl> | --prod] [--session <ses_>]
61
+ [--once] [--json] [--slug <slug>] [--team <id>]
62
+ [--dir <path>]
64
63
  ${CLI} sessions [--url <baseUrl> | --prod] [--json]
65
64
  [--slug <slug>] [--team <id>] [--dir <path>]
66
65
  v2: unsupported. ${v2HostedVerifyHint()}
@@ -98,14 +97,10 @@ Usage:
98
97
  [--junit <path>] [--artifacts <dir>|--no-artifacts]
99
98
  [--out <file.json>]
100
99
  [--skip-report] [--no-stream] [--no-wait]
101
- [--prod | --url <baseUrl>] [--slug <slug>]
102
- [--team <id>]
103
- ${CLI} eval status [runId] --prod|--url <baseUrl> [--dir <path>] [--json]
104
- [--out <file.json>] [--slug <slug>] [--team <id>]
105
- ${CLI} eval cancel <runId> --prod|--url <baseUrl> [--dir <path>] [--json]
106
- [--slug <slug>] [--team <id>]
107
- v2: --prod unsupported for eval, status, and cancel;
108
- run eval locally or pass --url.
100
+ [--url <baseUrl>] [--slug <slug>]
101
+ ${CLI} eval status [runId] --url <baseUrl> [--dir <path>] [--json]
102
+ [--out <file.json>]
103
+ ${CLI} eval cancel <runId> --url <baseUrl> [--dir <path>] [--json]
109
104
  ${CLI} info [--dir <path>] [--json]
110
105
  ${CLI} validate [--dir <path>]
111
106
  ${CLI} login [--api-key <key>] [--key-name <name>]
@@ -157,10 +152,12 @@ Commands:
157
152
  --continuation-token is omitted, then replays the transcript.
158
153
  Pass --prod for a hosted deployment.
159
154
  logs Tail agent logs. Default follows (Ctrl-C to stop); --once dumps
160
- the current buffer. --prod (v1 deployments) shows deploy progress
161
- until the deployment is running, then tails runtime logs. Without
162
- --prod, tails the local server (or --url). On architecture v2,
163
- use \`${CLI} deployment <slug>\` and \`${CLI} session <ses_> --prod\`.
155
+ the current buffer. Without --prod, tails the local server (or
156
+ --url). On a v1 deployment, --prod shows deploy progress until
157
+ the deployment is running, then tails runtime logs. On
158
+ architecture v2, --prod tails the output of the deployment's
159
+ most recent sessions, each under a ==> ses_… <== header; pass a
160
+ session id (positional or --session) to tail only that session.
164
161
  sessions List sessions on a running agent or a v1 --prod deployment.
165
162
  Unsupported on architecture v2. ${v2HostedVerifyHint()}
166
163
  session Show one session. On v2: \`${CLI} session <ses_> --prod --slug <slug>\`.
@@ -230,18 +227,17 @@ Commands:
230
227
  MCP_OAUTH_<NAME>_* secrets on the hosted deployment.
231
228
  eval Run filesystem evals under evals/**/*.eval.ts (streams on a TTY).
232
229
  Default: ephemeral local harness against evals on disk. Pass
233
- --prod to kick off the batch on the team's v1 hosted deployment
234
- (slug from --slug or the directory name) via /v1/dev/evals/runs
235
- so results appear in the playground and persist when the agent
236
- declares an evals storage table; or --url for a running server
237
- (same server-side path). Hosted evals are unsupported on
238
- architecture v2. With --prod/--url, prints an Eval ID as soon
239
- as the batch is accepted (also with --no-wait). Check later with
240
- \`${CLI} eval status <evalId> --prod\` (omit id to list recent
241
- runs; exit 3 while still running) or cancel with
242
- \`${CLI} eval cancel <evalId> --prod\`. The status/cancel
243
- subcommands only bind when --prod/--url is set, so an eval id
244
- named status/cancel still runs locally. Pass evalId args to
230
+ --url to kick off the batch on a running server via
231
+ /v1/dev/evals/runs so results appear in the playground and
232
+ persist when the agent declares an evals storage table. With
233
+ --url, prints an Eval ID as soon as the batch is accepted (also
234
+ with --no-wait). Check later with
235
+ \`${CLI} eval status <evalId> --url <baseUrl>\` (omit id to list
236
+ recent runs; exit 3 while still running) or cancel with
237
+ \`${CLI} eval cancel <evalId> --url <baseUrl>\`. The
238
+ status/cancel subcommands only bind when --url is set, so an
239
+ eval id named status/cancel still runs locally. eval does not
240
+ accept --prod. Pass evalId args to
245
241
  select: one datapoint (weather/nyc), a whole file (weather → all
246
242
  cases in that file), several of either, or omit to run all.
247
243
  info Print the discovered agent surface (tools, skills, channels, ...).
@@ -362,17 +358,19 @@ Options:
362
358
  --no-control-plane serve: do not start the bundled control plane (schedule
363
359
  and reminder clocks). Cursor hosting passes this so the
364
360
  kit uses the Cursor backend instead.
361
+ --cloud-tools-url serve: Cursor hosting passes the deployment's server-tools
362
+ MCP URL here. Hosted install probes this help text for the
363
+ flag before trusting a checkout build; keep it listed.
365
364
  --team deploy/deployments/deployment/stop/rotate-token and
366
- chat/resume/run/call/eval/logs/sessions/session/playground
365
+ chat/resume/run/call/logs/sessions/session/playground
367
366
  --prod: Cursor team id. Defaults to the account's team when
368
367
  it has one.
369
- --prod chat/resume/run/call/eval/logs/sessions/session/playground:
368
+ --prod chat/resume/run/call/logs/sessions/session/playground:
370
369
  use the team's hosted deployment. Slug from --slug or the
371
370
  --dir basename. Mutually exclusive with --url. Requires
372
- \`${CLI} login\`. For eval, this is how you opt into the
373
- persisted server-side batch (default is local).
374
- v2: only run, session, and playground support --prod.
375
- ${v2HostedVerifyHint()}
371
+ \`${CLI} login\`. eval does not accept --prod.
372
+ v2: only run, session, logs, and playground support
373
+ --prod. ${v2HostedVerifyHint()}
376
374
  --dry-run run/session --prod: mark the hosted v2 turn non-mutating.
377
375
  ${v2HostedVerifyHint()}
378
376
  --component run/session --prod: wake this v2 component key,
@@ -386,7 +384,7 @@ Options:
386
384
  path without writing them.
387
385
  --no-wait deploy/stop/eval: return right after the request is
388
386
  accepted instead of polling until a terminal status.
389
- For eval, prints the runId (deployment / --url only).
387
+ For eval, prints the runId (--url only).
390
388
  --cancel-runs stop: also cancel this install's active Agent SDK v2
391
389
  session runs and reminder clocks, and mark factory
392
390
  creating/active sessions failed (not every tenant).
@@ -402,7 +400,7 @@ Options:
402
400
  --messages-file JSON array of strings (run).
403
401
  --session Existing session id (run/call follow-up, or chat reattach).
404
402
  Prefer \`${CLI} resume [sessionId]\` for interactive
405
- reattach.
403
+ reattach. logs --prod (v2): tail only this session.
406
404
  --resume chat: reattach the previous followable session (most
407
405
  recently updated in /v1/sessions). Same as
408
406
  \`${CLI} resume\` with no session id. Ignored when
@@ -431,7 +429,8 @@ Options:
431
429
  --json JSON output (init/convert-automation/install-skills/
432
430
  info/chat/eval/logs/version/
433
431
  sessions/session/github; run defaults to JSON). logs:
434
- NDJSON progress/log events. session: trajectory JSON
432
+ NDJSON progress/log events (v2: {sessionId, line}).
433
+ session: trajectory JSON
435
434
  (not raw events).
436
435
  --no-color chat: force plain output.
437
436
  --cursor-events serve: pull SCM webhook events from /v0/scm-events. The
@@ -493,7 +492,7 @@ function writeStdout(text) {
493
492
  function main(argv) {
494
493
  return __awaiter(this, void 0, void 0, function* () {
495
494
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
496
- var _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
495
+ var _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
497
496
  const [command, ...restIn] = argv;
498
497
  if (command === undefined || command === "help" || command === "--help" || command === "-h") {
499
498
  // Await the write: HELP is larger than a pipe buffer, and process.exit
@@ -798,7 +797,8 @@ function main(argv) {
798
797
  // `--repo` is repeatable for `serve --cursor-events`; deploy targets a
799
798
  // single source repo, so the last one wins.
800
799
  const repo = (_e = values.repo) === null || _e === void 0 ? void 0 : _e.at(-1);
801
- return cmdDeploy(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, deployOptionsFromValues(values)), { dir }), (values.slug === undefined ? {} : { slug: values.slug })), { all: values.all === true }), (repo === undefined ? {} : { repo })), (values.ref === undefined ? {} : { ref: values.ref })), (values.path === undefined ? {} : { path: values.path })), (values["cursor-events-repo"] === undefined
800
+ const dirFlagPassed = rest.includes("--dir") || rest.some(arg => arg.startsWith("--dir="));
801
+ return cmdDeploy(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, deployOptionsFromValues(values)), { dir: dirFlagPassed ? dir : undefined }), (values.slug === undefined ? {} : { slug: values.slug })), { all: values.all === true }), (repo === undefined ? {} : { repo })), (values.ref === undefined ? {} : { ref: values.ref })), (values.path === undefined ? {} : { path: values.path })), (values["cursor-events-repo"] === undefined
802
802
  ? {}
803
803
  : { cursorEventsRepos: values["cursor-events-repo"] })), (values["allow-domain"] === undefined ? {} : { allowDomains: values["allow-domain"] })), { multiTenant: values["multi-tenant"] === true }));
804
804
  }
@@ -935,29 +935,25 @@ function main(argv) {
935
935
  }));
936
936
  }
937
937
  case "eval": {
938
- // Remote status subcommand only when targeting --prod/--url. Otherwise
939
- // the bare token "status" is a normal eval id (evals/status.eval.ts).
940
- if (positionals[0] === "status" && (values.prod === true || values.url !== undefined)) {
938
+ // Remote status subcommand only when targeting --url. Otherwise the
939
+ // bare token "status" is a normal eval id (evals/status.eval.ts).
940
+ if (positionals[0] === "status" && values.url !== undefined) {
941
941
  return cmdEvalStatus(positionals[1], axFromOptions({
942
942
  dir,
943
943
  json: values.json,
944
944
  url: values.url,
945
945
  prod: values.prod,
946
- team: values.team,
947
- apiKey: values["api-key"],
948
946
  slug: values.slug,
949
947
  bearerToken: values["bearer-token"],
950
948
  out: values.out,
951
949
  }));
952
950
  }
953
- if (positionals[0] === "cancel" && (values.prod === true || values.url !== undefined)) {
951
+ if (positionals[0] === "cancel" && values.url !== undefined) {
954
952
  return cmdEvalCancel(positionals[1], axFromOptions({
955
953
  dir,
956
954
  json: values.json,
957
955
  url: values.url,
958
956
  prod: values.prod,
959
- team: values.team,
960
- apiKey: values["api-key"],
961
957
  slug: values.slug,
962
958
  bearerToken: values["bearer-token"],
963
959
  }));
@@ -972,8 +968,6 @@ function main(argv) {
972
968
  url: values.url,
973
969
  prod: values.prod,
974
970
  noWait: values["no-wait"],
975
- team: values.team,
976
- apiKey: values["api-key"],
977
971
  slug: values.slug,
978
972
  bearerToken: values["bearer-token"],
979
973
  stateRoot: values["state-root"],
@@ -1033,6 +1027,7 @@ function main(argv) {
1033
1027
  apiKey: values["api-key"],
1034
1028
  slug: values.slug,
1035
1029
  bearerToken: values["bearer-token"],
1030
+ sessionId: (_u = (_t = positionals[0]) !== null && _t !== void 0 ? _t : values["session-id"]) !== null && _u !== void 0 ? _u : values.session,
1036
1031
  json: values.json,
1037
1032
  once: values.once,
1038
1033
  }));
@@ -1064,14 +1059,14 @@ function main(argv) {
1064
1059
  rawEvents: values["raw-events"],
1065
1060
  out: values.out,
1066
1061
  messages,
1067
- sessionId: (_t = values["session-id"]) !== null && _t !== void 0 ? _t : values.session,
1062
+ sessionId: (_v = values["session-id"]) !== null && _v !== void 0 ? _v : values.session,
1068
1063
  dryRun: values["dry-run"],
1069
1064
  asOf: values["as-of"],
1070
1065
  componentKey: values.component,
1071
1066
  }));
1072
1067
  }
1073
1068
  case "cost": {
1074
- return cmdCost((_v = (_u = positionals[0]) !== null && _u !== void 0 ? _u : values["session-id"]) !== null && _v !== void 0 ? _v : values.session, axFromOptions({
1069
+ return cmdCost((_x = (_w = positionals[0]) !== null && _w !== void 0 ? _w : values["session-id"]) !== null && _x !== void 0 ? _x : values.session, axFromOptions({
1075
1070
  dir,
1076
1071
  url: values.url,
1077
1072
  prod: values.prod,
@@ -1091,7 +1086,7 @@ function main(argv) {
1091
1086
  apiKey: values["api-key"],
1092
1087
  slug: values.slug,
1093
1088
  bearerToken: values["bearer-token"],
1094
- sessionId: (_w = values["session-id"]) !== null && _w !== void 0 ? _w : values.session,
1089
+ sessionId: (_y = values["session-id"]) !== null && _y !== void 0 ? _y : values.session,
1095
1090
  print: values.print,
1096
1091
  }));
1097
1092
  }
@@ -1167,8 +1162,8 @@ function main(argv) {
1167
1162
  lines.push(section("channels", info.channels.map(c => `${c.id}: ${c.routes.map(r => `${r.method} ${r.url}`).join(", ") || "(events only)"}`)));
1168
1163
  lines.push(section("schedules", info.schedules.map(s => `${s.name} (${s.cron}, ${s.kind})`)));
1169
1164
  lines.push(section("hooks", info.hooks));
1170
- lines.push(section("hosting egress domains", (_x = (_j = info.hosting) === null || _j === void 0 ? void 0 : _j.egressDomains) !== null && _x !== void 0 ? _x : []));
1171
- lines.push(section("hosting secret names", (_y = (_k = info.hosting) === null || _k === void 0 ? void 0 : _k.secretNames) !== null && _y !== void 0 ? _y : []));
1165
+ lines.push(section("hosting egress domains", (_z = (_j = info.hosting) === null || _j === void 0 ? void 0 : _j.egressDomains) !== null && _z !== void 0 ? _z : []));
1166
+ lines.push(section("hosting secret names", (_0 = (_k = info.hosting) === null || _k === void 0 ? void 0 : _k.secretNames) !== null && _0 !== void 0 ? _0 : []));
1172
1167
  if (info.diagnostics.length > 0) {
1173
1168
  lines.push(`\ndiagnostics:\n${formatDiagnostics(info.diagnostics)}`);
1174
1169
  }
@@ -1231,7 +1226,7 @@ function main(argv) {
1231
1226
  docs: values["no-docs"] === true ? false : undefined,
1232
1227
  publicUrl: values["public-url"],
1233
1228
  cloudToolsUrl: values["cloud-tools-url"],
1234
- cursorEvents: values["cursor-events"] === true ? { repos: (_z = values.repo) !== null && _z !== void 0 ? _z : [] } : undefined,
1229
+ cursorEvents: values["cursor-events"] === true ? { repos: (_1 = values.repo) !== null && _1 !== void 0 ? _1 : [] } : undefined,
1235
1230
  // Soft boot logs stay secondary to the banner. `dim` is a no-op on
1236
1231
  // already-styled lines (the MCP warning box).
1237
1232
  logger: (line) => {
@@ -1572,7 +1567,7 @@ function installTransportErrorGuards() {
1572
1567
  };
1573
1568
  const log = (label, reason) => {
1574
1569
  const text = reason instanceof Error ? reason.message : String(reason);
1575
- process.stderr.write(`[agent-sdk] ${label} (server stays up): ${text.slice(0, 400)}\n`);
1570
+ process.stderr.write(`[bdk] ${label} (server stays up): ${text.slice(0, 400)}\n`);
1576
1571
  };
1577
1572
  process.on("unhandledRejection", reason => {
1578
1573
  if (isTransportNoise(reason)) {
@@ -1587,7 +1582,7 @@ function installTransportErrorGuards() {
1587
1582
  log("swallowed uncaughtException", error);
1588
1583
  return;
1589
1584
  }
1590
- process.stderr.write(`[agent-sdk] uncaughtException: ${(_a = error.stack) !== null && _a !== void 0 ? _a : error.message}\n`);
1585
+ process.stderr.write(`[bdk] uncaughtException: ${(_a = error.stack) !== null && _a !== void 0 ? _a : error.message}\n`);
1591
1586
  void flushSessionRunFatal(error).finally(() => {
1592
1587
  process.exit(1);
1593
1588
  });
@@ -1 +1 @@
1
- {"version":3,"file":"github-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/github/github-channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/github/github-channel.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ import { acknowledgeTask, acknowledgeTurn, isTaskDispatch, scheduleAfterAck, ski
14
14
  import { continuationSource, normalizeIdentity } from "../../internal/continuation-identity.js";
15
15
  import { isDevMode } from "../../internal/dev-mode.js";
16
16
  import { attachHostedAdmissionAdapter } from "../../internal/hosted-admission-adapter.js";
17
+ import { CATCH_DELIVERY_ID_HEADER, replayCatchRequest } from "../../internal/hosted-catch.js";
18
+ import { AGENT_SDK_CATCH_EVENT_TYPE } from "../../internal/hosted-catch-protocol.js";
17
19
  import { bindLocalIngressSend } from "../../internal/local-ingress.js";
18
20
  import { resolveCredentialValue } from "./auth.js";
19
21
  import { buildGitHubBinding, } from "./binding.js";
@@ -371,7 +373,13 @@ export function handleGitHubWebhookRequest(input) {
371
373
  var _b, _c;
372
374
  const bodyText = yield input.request.text();
373
375
  const webhookSecret = (_b = (_a = input.options.credentials) === null || _a === void 0 ? void 0 : _a.webhookSecret) !== null && _b !== void 0 ? _b : envWebhookSecret();
374
- if (webhookSecret !== undefined && input.skipSignatureVerification !== true) {
376
+ // A hosted public catch is reachable without an alias token. Require a
377
+ // verified Hub signature there even when no secret is configured, so a
378
+ // missing secret is a rejection rather than an unsigned accept. Local
379
+ // routes keep the existing rule: verify only when a secret is set.
380
+ const requireSignature = input.skipSignatureVerification !== true &&
381
+ (webhookSecret !== undefined || input.request.headers.has(CATCH_DELIVERY_ID_HEADER));
382
+ if (requireSignature) {
375
383
  const signatureResult = yield verifyGitHubWebhookSignature({
376
384
  body: bodyText,
377
385
  signatureHeader: input.request.headers.get("x-hub-signature-256"),
@@ -530,13 +538,29 @@ export function githubChannel(options = {}) {
530
538
  attachHostedAdmissionAdapter(definition, {
531
539
  kind: GITHUB_CHANNEL_KIND,
532
540
  prepareArgs: withPropagatingBackgroundErrors,
533
- dispatch: ({ eventType, payload, deliveryId, args }) => dispatchGitHubWebhook({
534
- options: channelOptions,
535
- eventName: eventType,
536
- payload,
537
- deliveryId,
538
- args,
539
- }),
541
+ dispatch: ({ channelId, eventType, payload, deliveryId, args }) => {
542
+ var _a;
543
+ // A publicEndpoint() catch is an http.request envelope. Replay it
544
+ // into the route handler, which verifies X-Hub-Signature-256.
545
+ // Forge deliveries carry a GitHub event name and stay on
546
+ // dispatchGitHubWebhook.
547
+ if (eventType === AGENT_SDK_CATCH_EVENT_TYPE) {
548
+ return replayCatchRequest({
549
+ channelId: channelId !== null && channelId !== void 0 ? channelId : "github",
550
+ deliveryId,
551
+ routes: (_a = definition.routes) !== null && _a !== void 0 ? _a : [],
552
+ payload,
553
+ args,
554
+ });
555
+ }
556
+ return dispatchGitHubWebhook({
557
+ options: channelOptions,
558
+ eventName: eventType,
559
+ payload,
560
+ deliveryId,
561
+ args,
562
+ });
563
+ },
540
564
  });
541
565
  if (cursorCredentials !== undefined) {
542
566
  registerGithubCursorAccountRuntime(definition, {
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/dispatch.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ import { describeSlackEventShape, formatSlackContextBlock, parseAppHomeOpened, p
25
25
  import { defaultSlackLog } from "./log.js";
26
26
  import { paintTurnStart, retractTurnStart } from "./paint-start.js";
27
27
  import { adoptPlaceholder, retractPlaceholderMessage, retractPlaceholderSlot, startPlaceholder, } from "./placeholder.js";
28
+ import { resolveSlackSelfIdentity } from "./self-identity.js";
29
+ import { resolveSlackSenderName } from "./sender-name.js";
28
30
  import { isWholeMessageStop } from "./stop.js";
29
31
  import { EMPTY_SLACK_THREAD_CONTEXT, loadSlackThreadContext, loadSlackThreadDelta, } from "./thread-context.js";
30
32
  const FOLLOWUP_TYPING = "Saw your follow-up…";
@@ -126,10 +128,10 @@ function slackSessionContinuation(identity, channelId, threadTs) {
126
128
  }
127
129
  export function dispatchInboundMessage(args) {
128
130
  return __awaiter(this, void 0, void 0, function* () {
129
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2;
130
- var _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17;
131
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5;
132
+ var _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20;
131
133
  const { message, kind } = args;
132
- const log = (_3 = args.log) !== null && _3 !== void 0 ? _3 : defaultSlackLog;
134
+ const log = (_6 = args.log) !== null && _6 !== void 0 ? _6 : defaultSlackLog;
133
135
  const binding = buildSlackBinding({
134
136
  botToken: (_a = args.credentials) === null || _a === void 0 ? void 0 : _a.botToken,
135
137
  channelId: message.channelId,
@@ -210,7 +212,7 @@ export function dispatchInboundMessage(args) {
210
212
  log,
211
213
  });
212
214
  });
213
- const userId = (_4 = (_d = message.author) === null || _d === void 0 ? void 0 : _d.userId) !== null && _4 !== void 0 ? _4 : "";
215
+ const userId = (_7 = (_d = message.author) === null || _d === void 0 ? void 0 : _d.userId) !== null && _7 !== void 0 ? _7 : "";
214
216
  const teamId = message.teamId;
215
217
  let membership;
216
218
  if (args.blockExternals !== false && ((_e = message.author) === null || _e === void 0 ? void 0 : _e.isBot) !== true) {
@@ -268,7 +270,7 @@ export function dispatchInboundMessage(args) {
268
270
  try {
269
271
  yield binding.thread.startTyping(interrupted ? "Stopped." : "Nothing to stop.");
270
272
  }
271
- catch (_18) {
273
+ catch (_21) {
272
274
  // best-effort status
273
275
  }
274
276
  yield retractUnadoptedHandoff();
@@ -279,7 +281,7 @@ export function dispatchInboundMessage(args) {
279
281
  // whatever it says, and may open with `eval` while talking to someone else.
280
282
  const evalCommandsEnabled = args.evalCommandsEnabled !== false && (kind === "app_mention" || kind === "direct_message");
281
283
  const evalDirective = evalCommandsEnabled && args.host.evals !== undefined
282
- ? ((_5 = parseSlackEvalDirective(message.text)) !== null && _5 !== void 0 ? _5 : parseSlackEvalDirective(message.markdown))
284
+ ? ((_8 = parseSlackEvalDirective(message.text)) !== null && _8 !== void 0 ? _8 : parseSlackEvalDirective(message.markdown))
283
285
  : null;
284
286
  if (evalDirective !== null && args.host.evals !== undefined) {
285
287
  if (membership !== undefined && (yield membership)) {
@@ -370,7 +372,7 @@ export function dispatchInboundMessage(args) {
370
372
  const excludeThreadTimestamps = [
371
373
  message.ts,
372
374
  ...(handoffInThread === undefined ? [] : [handoffInThread.messageTs]),
373
- ...((_6 = decision.excludeThreadTimestamps) !== null && _6 !== void 0 ? _6 : []),
375
+ ...((_9 = decision.excludeThreadTimestamps) !== null && _9 !== void 0 ? _9 : []),
374
376
  ];
375
377
  const mergeMessages = [triggeringMergeMessage(message)];
376
378
  const continuationExists = existsP === undefined ? false : yield existsP;
@@ -378,14 +380,19 @@ export function dispatchInboundMessage(args) {
378
380
  const afterTs = loadThread && hasSession && args.getContinuationLastBotMessageTs !== undefined
379
381
  ? yield args.getContinuationLastBotMessageTs(continuation)
380
382
  : undefined;
383
+ const selfIdentity = resolveSlackSelfIdentity((_m = args.credentials) === null || _m === void 0 ? void 0 : _m.botToken);
384
+ const senderName = resolveSlackSenderName({
385
+ botToken: (_o = args.credentials) === null || _o === void 0 ? void 0 : _o.botToken,
386
+ author: message.author,
387
+ });
381
388
  // Channel mentions: cold <slack_thread>, warm <slack_thread_delta>.
382
389
  const threadTask = !loadThread
383
390
  ? Promise.resolve(EMPTY_SLACK_THREAD_CONTEXT)
384
391
  : hasSession
385
- ? loadSlackThreadDelta(Object.assign(Object.assign({ botToken: (_m = args.credentials) === null || _m === void 0 ? void 0 : _m.botToken, channelId: message.channelId, threadTs: message.threadTs }, (afterTs === undefined ? {} : { afterTs })), { excludeTs: excludeThreadTimestamps, mergeMessages,
392
+ ? loadSlackThreadDelta(Object.assign(Object.assign({ botToken: (_p = args.credentials) === null || _p === void 0 ? void 0 : _p.botToken, channelId: message.channelId, threadTs: message.threadTs }, (afterTs === undefined ? {} : { afterTs })), { excludeTs: excludeThreadTimestamps, mergeMessages,
386
393
  log }))
387
394
  : loadSlackThreadContext({
388
- botToken: (_o = args.credentials) === null || _o === void 0 ? void 0 : _o.botToken,
395
+ botToken: (_q = args.credentials) === null || _q === void 0 ? void 0 : _q.botToken,
389
396
  channelId: message.channelId,
390
397
  threadTs: message.threadTs,
391
398
  excludeTs: excludeThreadTimestamps,
@@ -398,14 +405,14 @@ export function dispatchInboundMessage(args) {
398
405
  if (painted !== undefined) {
399
406
  yield painted;
400
407
  yield retractTurnStart({
401
- botToken: (_p = args.credentials) === null || _p === void 0 ? void 0 : _p.botToken,
408
+ botToken: (_r = args.credentials) === null || _r === void 0 ? void 0 : _r.botToken,
402
409
  channelId: message.channelId,
403
410
  threadTs: message.threadTs,
404
- ack: (_7 = args.ack) !== null && _7 !== void 0 ? _7 : "",
411
+ ack: (_10 = args.ack) !== null && _10 !== void 0 ? _10 : "",
405
412
  log,
406
413
  });
407
414
  }
408
- yield (_q = args.host.slackNudges) === null || _q === void 0 ? void 0 : _q.releaseAsk(message.channelId, message.ts);
415
+ yield (_s = args.host.slackNudges) === null || _s === void 0 ? void 0 : _s.releaseAsk(message.channelId, message.ts);
409
416
  yield retractAdoptedPlaceholder();
410
417
  return;
411
418
  }
@@ -415,7 +422,7 @@ export function dispatchInboundMessage(args) {
415
422
  message,
416
423
  threadFiles: thread.files,
417
424
  decision,
418
- botToken: (_r = args.credentials) === null || _r === void 0 ? void 0 : _r.botToken,
425
+ botToken: (_t = args.credentials) === null || _t === void 0 ? void 0 : _t.botToken,
419
426
  log,
420
427
  });
421
428
  if ((message.files !== undefined && message.files.length > 0) || threadFileCount > 0) {
@@ -424,18 +431,19 @@ export function dispatchInboundMessage(args) {
424
431
  channel: message.channelId,
425
432
  thread_ts: message.threadTs,
426
433
  thread_files: threadFileCount,
427
- images: (_8 = (_s = media.images) === null || _s === void 0 ? void 0 : _s.length) !== null && _8 !== void 0 ? _8 : 0,
428
- workspace_files: Object.keys((_9 = media.workspaceFiles) !== null && _9 !== void 0 ? _9 : {}).length,
434
+ images: (_11 = (_u = media.images) === null || _u === void 0 ? void 0 : _u.length) !== null && _11 !== void 0 ? _11 : 0,
435
+ workspace_files: Object.keys((_12 = media.workspaceFiles) !== null && _12 !== void 0 ? _12 : {}).length,
429
436
  event_id: args.eventId,
430
437
  });
431
438
  }
432
439
  if (threadContext !== undefined) {
433
440
  log.info(hasSession ? "thread delta loaded" : "thread context loaded", Object.assign({ kind, channel: message.channelId, thread_ts: message.threadTs, chars: threadContext.length, event_id: args.eventId }, (afterTs === undefined ? {} : { after_ts: afterTs })));
434
441
  }
442
+ const [self, userName] = yield Promise.all([selfIdentity, senderName]);
435
443
  const prompt = [
436
- formatSlackContextBlock(Object.assign(Object.assign({ userId: (_10 = (_t = message.author) === null || _t === void 0 ? void 0 : _t.userId) !== null && _10 !== void 0 ? _10 : "", channelId: message.channelId, threadTs: message.threadTs }, (((_u = message.author) === null || _u === void 0 ? void 0 : _u.userName) === undefined ? {} : { userName: message.author.userName })), (message.teamId === undefined ? {} : { teamId: message.teamId }))),
444
+ formatSlackContextBlock(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ userId: (_13 = (_v = message.author) === null || _v === void 0 ? void 0 : _v.userId) !== null && _13 !== void 0 ? _13 : "", channelId: message.channelId, threadTs: message.threadTs }, (userName === undefined ? {} : { userName })), (((_w = message.author) === null || _w === void 0 ? void 0 : _w.isBot) === true ? { userIsBot: true } : {})), (((_x = message.author) === null || _x === void 0 ? void 0 : _x.botId) === undefined ? {} : { userBotId: message.author.botId })), (message.teamId === undefined ? {} : { teamId: message.teamId })), (self === undefined ? {} : { selfUserId: self.userId })), ((self === null || self === void 0 ? void 0 : self.name) === undefined ? {} : { selfName: self.name }))),
437
445
  ...(threadContext === undefined ? [] : [threadContext]),
438
- ...((_11 = decision.context) !== null && _11 !== void 0 ? _11 : []),
446
+ ...((_14 = decision.context) !== null && _14 !== void 0 ? _14 : []),
439
447
  "",
440
448
  media.userText,
441
449
  ]
@@ -450,11 +458,11 @@ export function dispatchInboundMessage(args) {
450
458
  const placeholder = !adoptedPlaceholder && hasPlaceholder && (!hosted || hostedFollowup)
451
459
  ? startPlaceholder({
452
460
  line: placeholderLine,
453
- botToken: (_v = args.credentials) === null || _v === void 0 ? void 0 : _v.botToken,
461
+ botToken: (_y = args.credentials) === null || _y === void 0 ? void 0 : _y.botToken,
454
462
  channelId: message.channelId,
455
463
  threadTs: message.threadTs,
456
464
  log,
457
- recipientUserId: (_w = message.author) === null || _w === void 0 ? void 0 : _w.userId,
465
+ recipientUserId: (_z = message.author) === null || _z === void 0 ? void 0 : _z.userId,
458
466
  recipientTeamId: message.teamId,
459
467
  })
460
468
  : undefined;
@@ -462,19 +470,19 @@ export function dispatchInboundMessage(args) {
462
470
  const state = emptySlackChannelState({
463
471
  channelId: message.channelId,
464
472
  threadTs: message.threadTs,
465
- teamId: (_12 = message.teamId) !== null && _12 !== void 0 ? _12 : null,
466
- triggeringUserId: (_13 = (_x = message.author) === null || _x === void 0 ? void 0 : _x.userId) !== null && _13 !== void 0 ? _13 : null,
473
+ teamId: (_15 = message.teamId) !== null && _15 !== void 0 ? _15 : null,
474
+ triggeringUserId: (_16 = (_0 = message.author) === null || _0 === void 0 ? void 0 : _0.userId) !== null && _16 !== void 0 ? _16 : null,
467
475
  startPainted: paintedStart,
468
476
  placeholderPosted: posted,
469
477
  });
470
478
  const sendOptions = Object.assign(Object.assign({ auth: decision.auth }, sendPatch), { admission: "coalesce", coalesceSourceTs: message.ts, state: state, refreshState: slackWakeChannelState({
471
479
  channelId: message.channelId,
472
480
  threadTs: message.threadTs,
473
- teamId: (_14 = message.teamId) !== null && _14 !== void 0 ? _14 : null,
474
- triggeringUserId: (_15 = (_y = message.author) === null || _y === void 0 ? void 0 : _y.userId) !== null && _15 !== void 0 ? _15 : null,
481
+ teamId: (_17 = message.teamId) !== null && _17 !== void 0 ? _17 : null,
482
+ triggeringUserId: (_18 = (_1 = message.author) === null || _1 === void 0 ? void 0 : _1.userId) !== null && _18 !== void 0 ? _18 : null,
475
483
  startPainted: paintedStart,
476
484
  placeholderPosted: posted,
477
- }), title: (_16 = decision.title) !== null && _16 !== void 0 ? _16 : `slack:${message.channelId}:${message.threadTs}`, workspaceDir: decision.workspaceDir, workspaceFiles: media.workspaceFiles, images: media.images, cloud: decision.cloud, sdkAgentId: decision.sdkAgentId });
485
+ }), title: (_19 = decision.title) !== null && _19 !== void 0 ? _19 : `slack:${message.channelId}:${message.threadTs}`, workspaceDir: decision.workspaceDir, workspaceFiles: media.workspaceFiles, images: media.images, cloud: decision.cloud, sdkAgentId: decision.sdkAgentId });
478
486
  try {
479
487
  const session = yield args.send(prompt, sendOptions);
480
488
  if (isDeferredChannelSession(session)) {
@@ -511,11 +519,11 @@ export function dispatchInboundMessage(args) {
511
519
  });
512
520
  if (!steeringEnabled()) {
513
521
  try {
514
- yield (_z = args.host.slackNudges) === null || _z === void 0 ? void 0 : _z.append({
522
+ yield (_2 = args.host.slackNudges) === null || _2 === void 0 ? void 0 : _2.append({
515
523
  continuationKey: continuation,
516
524
  sourceTs: message.ts,
517
525
  text: media.userText,
518
- author: (_0 = message.author) === null || _0 === void 0 ? void 0 : _0.userName,
526
+ author: (_3 = message.author) === null || _3 === void 0 ? void 0 : _3.userName,
519
527
  });
520
528
  }
521
529
  catch (nudgeError) {
@@ -541,7 +549,7 @@ export function dispatchInboundMessage(args) {
541
549
  }
542
550
  }
543
551
  catch (error) {
544
- yield (_1 = args.host.slackNudges) === null || _1 === void 0 ? void 0 : _1.releaseAsk(message.channelId, message.ts);
552
+ yield (_4 = args.host.slackNudges) === null || _4 === void 0 ? void 0 : _4.releaseAsk(message.channelId, message.ts);
545
553
  if (placeholder !== undefined) {
546
554
  yield placeholder.retract();
547
555
  }
@@ -549,10 +557,10 @@ export function dispatchInboundMessage(args) {
549
557
  if (painted !== undefined) {
550
558
  yield painted;
551
559
  yield retractTurnStart({
552
- botToken: (_2 = args.credentials) === null || _2 === void 0 ? void 0 : _2.botToken,
560
+ botToken: (_5 = args.credentials) === null || _5 === void 0 ? void 0 : _5.botToken,
553
561
  channelId: message.channelId,
554
562
  threadTs: message.threadTs,
555
- ack: (_17 = args.ack) !== null && _17 !== void 0 ? _17 : "",
563
+ ack: (_20 = args.ack) !== null && _20 !== void 0 ? _20 : "",
556
564
  log,
557
565
  });
558
566
  }
@@ -1 +1 @@
1
- {"version":3,"file":"external-policy.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/external-policy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACxC,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;CACrB,GAAG,OAAO,CAcV;AAID,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,4EAA4E;AAC5E,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BnB"}
1
+ {"version":3,"file":"external-policy.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/external-policy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACxC,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;CACrB,GAAG,OAAO,CAcV;AAID,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AAED,4EAA4E;AAC5E,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BnB"}
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  step((generator = generator.apply(thisArg, _arguments || [])).next());
12
12
  });
13
13
  };
14
- import { callSlackApi } from "./api.js";
14
+ import { fetchSlackUserInfo, resetSlackUserInfoCache } from "./user-info.js";
15
15
  /** Pure classifier over a `users.info` user object. Fails open to external. */
16
16
  export function classifySlackUserExternality(args) {
17
17
  var _a;
@@ -29,6 +29,7 @@ export function classifySlackUserExternality(args) {
29
29
  const classified = new Map();
30
30
  export function resetExternalSenderCache() {
31
31
  classified.clear();
32
+ resetSlackUserInfoCache();
32
33
  }
33
34
  /** Lookup + classify. Empty userId / API failure → external. Hits cache. */
34
35
  export function isExternalSlackSender(args) {
@@ -42,17 +43,16 @@ export function isExternalSlackSender(args) {
42
43
  return cached;
43
44
  }
44
45
  try {
45
- const result = yield callSlackApi({
46
+ const user = yield fetchSlackUserInfo({
46
47
  botToken: args.botToken,
47
- operation: "users.info",
48
- body: { user: args.userId },
48
+ userId: args.userId,
49
49
  });
50
- if (result.ok !== true || result.user === undefined) {
50
+ if (user === undefined) {
51
51
  return true;
52
52
  }
53
53
  const external = classifySlackUserExternality({
54
54
  slackTeamId: args.slackTeamId,
55
- user: result.user,
55
+ user: user,
56
56
  });
57
57
  classified.set(key, external);
58
58
  return external;