@cursor/bdk 0.2.3 → 0.2.4

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 (577) hide show
  1. package/dist/bin/agent-serve.js +9 -1
  2. package/dist/channels/slack/attachments.d.ts +2 -1
  3. package/dist/channels/slack/attachments.d.ts.map +1 -1
  4. package/dist/channels/slack/attachments.js +19 -9
  5. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  6. package/dist/channels/slack/dispatch.js +26 -24
  7. package/dist/channels/slack/thread-context.d.ts +21 -11
  8. package/dist/channels/slack/thread-context.d.ts.map +1 -1
  9. package/dist/channels/slack/thread-context.js +75 -27
  10. package/dist/docs/404.html +2 -2
  11. package/dist/docs/assets/{app.BOIHhrKi.js → app.4kQ8Db_q.js} +4 -4
  12. package/dist/docs/assets/chunks/@localSearchIndexroot.CvuAJ0My.js +1 -0
  13. package/dist/docs/assets/chunks/{VPLocalSearchBox.D49zVZqM.js → VPLocalSearchBox.DY1RwB8Q.js} +1 -1
  14. package/dist/docs/assets/chunks/{arc.hmjb-sc4.js → arc.CxE_fSPK.js} +1 -1
  15. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CxEI1KqM.js → architectureDiagram-Q4EWVU46.CPX426ui.js} +1 -1
  16. package/dist/docs/assets/chunks/{baseUniq.DHHvBWoV.js → baseUniq.CB52JrKG.js} +1 -1
  17. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DnXW-3bu.js → blockDiagram-DXYQGD6D.J0cNaQCL.js} +1 -1
  18. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.e-47O2jM.js → c4Diagram-AHTNJAMY.DJn3vEGT.js} +1 -1
  19. package/dist/docs/assets/chunks/channel.BoNycAoN.js +1 -0
  20. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.3ry4pYXB.js → chunk-4BX2VUAB.Dao618F6.js} +1 -1
  21. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DGIZFRx6.js → chunk-4TB4RGXK.QW8Rhjai.js} +1 -1
  22. package/dist/docs/assets/chunks/{chunk-55IACEB6.DKBnqg9U.js → chunk-55IACEB6.DfRLLKF_.js} +1 -1
  23. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BIU8Ue5k.js → chunk-EDXVE4YY.CIV2ApKQ.js} +1 -1
  24. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DP-TFhjI.js → chunk-FMBD7UC4.BEheSuxp.js} +1 -1
  25. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Ux0OYj5v.js → chunk-OYMX7WX6.CUN88ENB.js} +1 -1
  26. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BzHMwYox.js → chunk-QZHKN3VN.CgqCs8b_.js} +1 -1
  27. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.D4OGAsSP.js → chunk-YZCP3GAM.iCH0nnTJ.js} +1 -1
  28. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C4x07Gkj.js +1 -0
  29. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C4x07Gkj.js +1 -0
  30. package/dist/docs/assets/chunks/clone.Db22cH_-.js +1 -0
  31. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Jq_7BUNx.js → cose-bilkent-S5V4N54A.BLcUxhWE.js} +1 -1
  32. package/dist/docs/assets/chunks/{dagre-KV5264BT.Di-skR2x.js → dagre-KV5264BT.Ep7LofOm.js} +1 -1
  33. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DeREHIdH.js → diagram-5BDNPKRD.Bzf4GSQ4.js} +1 -1
  34. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.C7Kcqxro.js → diagram-G4DWMVQ6.DD6Jh-eM.js} +1 -1
  35. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BK3eohyo.js → diagram-MMDJMWI5.oOIl8bWd.js} +1 -1
  36. package/dist/docs/assets/chunks/{diagram-TYMM5635.C6TyymXT.js → diagram-TYMM5635.DHs85Ade.js} +1 -1
  37. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DYGG-gGx.js → erDiagram-SMLLAGMA.BIb5ghCk.js} +1 -1
  38. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.C9nBcSV4.js → flowDiagram-DWJPFMVM.DV4paY9k.js} +1 -1
  39. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.wAg_ymsp.js → ganttDiagram-T4ZO3ILL.AyEKA6_v.js} +1 -1
  40. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.B87j9Oeg.js → gitGraphDiagram-UUTBAWPF.BltiCDFo.js} +1 -1
  41. package/dist/docs/assets/chunks/{graph.CuFMj31w.js → graph.DzuEYGdC.js} +1 -1
  42. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.P_mLGumP.js → infoDiagram-42DDH7IO.BV2l981J.js} +1 -1
  43. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DyuL_MsT.js → ishikawaDiagram-UXIWVN3A.BA4Izf-m.js} +1 -1
  44. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CtP09IoJ.js → journeyDiagram-VCZTEJTY.DjaFbFS3.js} +1 -1
  45. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BoeSYPZo.js → kanban-definition-6JOO6SKY.CfTFieDs.js} +1 -1
  46. package/dist/docs/assets/chunks/{layout.B0lMMtNo.js → layout.DzfWqTBV.js} +1 -1
  47. package/dist/docs/assets/chunks/{linear.HxRBiAFX.js → linear.BO6mpulV.js} +1 -1
  48. package/dist/docs/assets/chunks/{min.BGlFFHwS.js → min.BGgTadgT.js} +1 -1
  49. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.JyLBD9M8.js → mindmap-definition-QFDTVHPH.DPuIXVWY.js} +1 -1
  50. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DnSmNZF8.js → pieDiagram-DEJITSTG.BOnl3bBg.js} +1 -1
  51. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CUCnbfCa.js → quadrantDiagram-34T5L4WZ.DNB6Ckdc.js} +1 -1
  52. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.py0IVUn5.js → requirementDiagram-MS252O5E.D5-Qo7vb.js} +1 -1
  53. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.Bkc-HWYp.js → sankeyDiagram-XADWPNL6.8t65cesf.js} +1 -1
  54. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Dqn8Mlv2.js → sequenceDiagram-FGHM5R23.CaG07BdS.js} +1 -1
  55. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.JikkoQUU.js → stateDiagram-FHFEXIEX.TKOweTB6.js} +1 -1
  56. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CuqmyQc4.js +1 -0
  57. package/dist/docs/assets/chunks/{theme.b6HQ6zG_.js → theme.Dx-JhpTB.js} +2 -2
  58. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BvpSXiBj.js → timeline-definition-GMOUNBTQ.fE53zQ2s.js} +1 -1
  59. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CU7MVnZx.js → vennDiagram-DHZGUBPP.DJsZZaJg.js} +1 -1
  60. package/dist/docs/assets/chunks/{wardley-RL74JXVD.BKwC4ctG.js → wardley-RL74JXVD.844kyrjl.js} +1 -1
  61. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.BfaF6Uhe.js → wardleyDiagram-NUSXRM2D.CMZ-Ru_t.js} +1 -1
  62. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.Bg5dcpj4.js → xychartDiagram-5P7HB3ND.XXrhBc7a.js} +1 -1
  63. package/dist/docs/assets/{deployment.md.BJ8i7Q6p.js → deployment.md.UhnJIMr-.js} +2 -2
  64. package/dist/docs/assets/{deployment.md.BJ8i7Q6p.lean.js → deployment.md.UhnJIMr-.lean.js} +1 -1
  65. package/dist/docs/assets/{guides_jev.md.BNDm14Gy.js → guides_jev.md.CRcgmjDb.js} +2 -2
  66. package/dist/docs/assets/{guides_jev.md.BNDm14Gy.lean.js → guides_jev.md.CRcgmjDb.lean.js} +1 -1
  67. package/dist/docs/assets/{reference_agent-config.md.DzGI777n.js → reference_agent-config.md.Cj5uBKp4.js} +1 -1
  68. package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.js → reference_extensions.md.pa2tN-e4.js} +4 -3
  69. package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.lean.js → reference_extensions.md.pa2tN-e4.lean.js} +1 -1
  70. package/dist/docs/building-with-agents.html +35 -35
  71. package/dist/docs/deployment.html +37 -37
  72. package/dist/docs/deployment.md +4 -1
  73. package/dist/docs/evals.html +35 -35
  74. package/dist/docs/guides/agent-to-agent.html +35 -35
  75. package/dist/docs/guides/bitbucket.html +35 -35
  76. package/dist/docs/guides/cloud-agents.html +35 -35
  77. package/dist/docs/guides/convert-automation.html +35 -35
  78. package/dist/docs/guides/github.html +35 -35
  79. package/dist/docs/guides/gitlab.html +35 -35
  80. package/dist/docs/guides/grokbot-agents.html +35 -35
  81. package/dist/docs/guides/hooks.html +35 -35
  82. package/dist/docs/guides/improve.html +35 -35
  83. package/dist/docs/guides/jev.html +37 -37
  84. package/dist/docs/guides/jev.md +7 -0
  85. package/dist/docs/guides/mcp-oauth.html +35 -35
  86. package/dist/docs/guides/opentelemetry.html +35 -35
  87. package/dist/docs/guides/slack.html +35 -35
  88. package/dist/docs/guides/webhooks.html +35 -35
  89. package/dist/docs/hashmap.json +1 -1
  90. package/dist/docs/hillclimbing.html +35 -35
  91. package/dist/docs/index.html +35 -35
  92. package/dist/docs/llms-full.txt +25 -2
  93. package/dist/docs/quickstart.html +35 -35
  94. package/dist/docs/reference/agent-config.html +37 -37
  95. package/dist/docs/reference/agent-config.md +1 -1
  96. package/dist/docs/reference/artifacts.html +35 -35
  97. package/dist/docs/reference/channels.html +35 -35
  98. package/dist/docs/reference/cli.html +35 -35
  99. package/dist/docs/reference/connections.html +35 -35
  100. package/dist/docs/reference/evals.html +35 -35
  101. package/dist/docs/reference/extensions.html +39 -38
  102. package/dist/docs/reference/extensions.md +13 -0
  103. package/dist/docs/reference/hooks.html +35 -35
  104. package/dist/docs/reference/http-api.html +35 -35
  105. package/dist/docs/reference/instructions.html +35 -35
  106. package/dist/docs/reference/playground.html +35 -35
  107. package/dist/docs/reference/project-layout.html +35 -35
  108. package/dist/docs/reference/prompt.html +35 -35
  109. package/dist/docs/reference/schedules.html +35 -35
  110. package/dist/docs/reference/sessions.html +35 -35
  111. package/dist/docs/reference/skills.html +35 -35
  112. package/dist/docs/reference/subagents.html +35 -35
  113. package/dist/docs/reference/tools.html +35 -35
  114. package/dist/docs/templates/agentic-owners.html +35 -35
  115. package/dist/docs/templates/security-reviewer.html +35 -35
  116. package/dist/docs/templates/thermo-quality-review.html +35 -35
  117. package/dist/docs/templates/thermo-review.html +35 -35
  118. package/dist/docs/templates/triage.html +35 -35
  119. package/dist/docs/troubleshooting.html +35 -35
  120. package/dist/extensions/jev/extension.d.ts +3 -0
  121. package/dist/extensions/jev/extension.d.ts.map +1 -1
  122. package/dist/extensions/jev/extension.js +10 -1
  123. package/dist/extensions/jev/lib/evaluate.d.ts +4 -0
  124. package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -1
  125. package/dist/extensions/jev/lib/evaluate.js +6 -2
  126. package/dist/extensions.d.ts +4 -2
  127. package/dist/extensions.d.ts.map +1 -1
  128. package/dist/extensions.js +5 -2
  129. package/dist/internal/cli-deploy.d.ts.map +1 -1
  130. package/dist/internal/cli-deploy.js +19 -5
  131. package/dist/internal/discovery/agent-config.d.ts +6 -5
  132. package/dist/internal/discovery/agent-config.d.ts.map +1 -1
  133. package/dist/internal/discovery/agent-config.js +29 -28
  134. package/dist/internal/discovery/agent.js +1 -1
  135. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  136. package/dist/internal/discovery/extensions.js +12 -0
  137. package/dist/internal/hosting.d.ts +8 -0
  138. package/dist/internal/hosting.d.ts.map +1 -1
  139. package/dist/internal/hosting.js +24 -0
  140. package/dist/types.d.ts +18 -2
  141. package/dist/types.d.ts.map +1 -1
  142. package/docs/deployment.md +4 -1
  143. package/docs/guides/jev.md +7 -0
  144. package/docs/reference/agent-config.md +1 -1
  145. package/docs/reference/extensions.md +13 -0
  146. package/package.json +1 -9
  147. package/dist/docs/assets/chunks/@localSearchIndexroot.D5L-b34G.js +0 -1
  148. package/dist/docs/assets/chunks/channel.BbOGaJQP.js +0 -1
  149. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Db58HCb1.js +0 -1
  150. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Db58HCb1.js +0 -1
  151. package/dist/docs/assets/chunks/clone.Co4MBflG.js +0 -1
  152. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CMsKhrW0.js +0 -1
  153. package/src/artifacts.ts +0 -68
  154. package/src/bin/agent-serve.ts +0 -1854
  155. package/src/channels/bitbucket/api.ts +0 -891
  156. package/src/channels/bitbucket/binding.ts +0 -417
  157. package/src/channels/bitbucket/bitbucket-channel.ts +0 -162
  158. package/src/channels/bitbucket/bitbucket-webhook.ts +0 -519
  159. package/src/channels/bitbucket/checks.ts +0 -146
  160. package/src/channels/bitbucket/cursor-account.ts +0 -106
  161. package/src/channels/bitbucket/defaults.ts +0 -100
  162. package/src/channels/bitbucket/events.ts +0 -74
  163. package/src/channels/bitbucket/index.ts +0 -51
  164. package/src/channels/bitbucket/replay.ts +0 -421
  165. package/src/channels/bitbucket/state.ts +0 -59
  166. package/src/channels/bitbucket/types.ts +0 -261
  167. package/src/channels/change-monitors/change-monitors-channel.ts +0 -63
  168. package/src/channels/change-monitors/index.ts +0 -8
  169. package/src/channels/change-monitors/types.ts +0 -42
  170. package/src/channels/checks.ts +0 -185
  171. package/src/channels/deployments/deployments-channel.ts +0 -224
  172. package/src/channels/deployments/index.ts +0 -25
  173. package/src/channels/deployments/types.ts +0 -92
  174. package/src/channels/github/api.ts +0 -526
  175. package/src/channels/github/auth.ts +0 -293
  176. package/src/channels/github/binding.ts +0 -233
  177. package/src/channels/github/checks.ts +0 -145
  178. package/src/channels/github/cursor-account.ts +0 -303
  179. package/src/channels/github/defaults.ts +0 -168
  180. package/src/channels/github/events.ts +0 -67
  181. package/src/channels/github/forward.ts +0 -359
  182. package/src/channels/github/github-channel.ts +0 -2334
  183. package/src/channels/github/index.ts +0 -54
  184. package/src/channels/github/progress.ts +0 -365
  185. package/src/channels/github/replay.ts +0 -372
  186. package/src/channels/github/state.ts +0 -124
  187. package/src/channels/github/types.ts +0 -590
  188. package/src/channels/gitlab/api.ts +0 -329
  189. package/src/channels/gitlab/binding.ts +0 -231
  190. package/src/channels/gitlab/checks.ts +0 -228
  191. package/src/channels/gitlab/cursor-account.ts +0 -105
  192. package/src/channels/gitlab/defaults.ts +0 -80
  193. package/src/channels/gitlab/events.ts +0 -37
  194. package/src/channels/gitlab/gitlab-channel.ts +0 -160
  195. package/src/channels/gitlab/gitlab-webhook.ts +0 -509
  196. package/src/channels/gitlab/index.ts +0 -44
  197. package/src/channels/gitlab/replay.ts +0 -328
  198. package/src/channels/gitlab/state.ts +0 -55
  199. package/src/channels/gitlab/types.ts +0 -247
  200. package/src/channels/issues/index.ts +0 -9
  201. package/src/channels/issues/issues-channel.ts +0 -45
  202. package/src/channels/issues/types.ts +0 -38
  203. package/src/channels/origin/api.ts +0 -507
  204. package/src/channels/origin/binding.ts +0 -114
  205. package/src/channels/origin/checks.ts +0 -250
  206. package/src/channels/origin/cursor-account.ts +0 -58
  207. package/src/channels/origin/defaults.ts +0 -140
  208. package/src/channels/origin/events.ts +0 -35
  209. package/src/channels/origin/index.ts +0 -35
  210. package/src/channels/origin/origin-channel.ts +0 -815
  211. package/src/channels/origin/origin-webhook.ts +0 -296
  212. package/src/channels/origin/reactions.ts +0 -72
  213. package/src/channels/origin/state.ts +0 -54
  214. package/src/channels/origin/types.ts +0 -295
  215. package/src/channels/slack/agentic-delivery.ts +0 -634
  216. package/src/channels/slack/agentic-posted.ts +0 -135
  217. package/src/channels/slack/agentic-signals.ts +0 -231
  218. package/src/channels/slack/api.ts +0 -761
  219. package/src/channels/slack/approvals.ts +0 -279
  220. package/src/channels/slack/assistant.ts +0 -76
  221. package/src/channels/slack/attachments.ts +0 -596
  222. package/src/channels/slack/auth.ts +0 -127
  223. package/src/channels/slack/blocks.ts +0 -131
  224. package/src/channels/slack/bot-mentions.ts +0 -318
  225. package/src/channels/slack/channel-watch.ts +0 -314
  226. package/src/channels/slack/cli-project.ts +0 -249
  227. package/src/channels/slack/code-fences.ts +0 -171
  228. package/src/channels/slack/constants.ts +0 -38
  229. package/src/channels/slack/credentials.ts +0 -88
  230. package/src/channels/slack/defaults.ts +0 -714
  231. package/src/channels/slack/dispatch.ts +0 -1060
  232. package/src/channels/slack/doctor.ts +0 -338
  233. package/src/channels/slack/eval-directive.ts +0 -306
  234. package/src/channels/slack/event-id-dedupe.ts +0 -30
  235. package/src/channels/slack/external-policy.ts +0 -75
  236. package/src/channels/slack/footer.ts +0 -106
  237. package/src/channels/slack/inbound.ts +0 -416
  238. package/src/channels/slack/index.ts +0 -53
  239. package/src/channels/slack/init.ts +0 -169
  240. package/src/channels/slack/interactive.ts +0 -406
  241. package/src/channels/slack/links.ts +0 -23
  242. package/src/channels/slack/live-delivery.ts +0 -489
  243. package/src/channels/slack/log.ts +0 -70
  244. package/src/channels/slack/manifest.ts +0 -240
  245. package/src/channels/slack/message-body.ts +0 -82
  246. package/src/channels/slack/nudge-carrier.ts +0 -224
  247. package/src/channels/slack/nudge-store.ts +0 -334
  248. package/src/channels/slack/paint-start.ts +0 -93
  249. package/src/channels/slack/placeholder.ts +0 -358
  250. package/src/channels/slack/pr-ref.ts +0 -74
  251. package/src/channels/slack/progress-delivery.ts +0 -138
  252. package/src/channels/slack/reasoning-card.ts +0 -125
  253. package/src/channels/slack/reasoning-chip.ts +0 -41
  254. package/src/channels/slack/recording-sink.ts +0 -167
  255. package/src/channels/slack/redact.ts +0 -6
  256. package/src/channels/slack/reply-options.ts +0 -279
  257. package/src/channels/slack/setup.ts +0 -125
  258. package/src/channels/slack/slack-channel.ts +0 -744
  259. package/src/channels/slack/socket-mode.ts +0 -140
  260. package/src/channels/slack/stop.ts +0 -25
  261. package/src/channels/slack/stream.ts +0 -66
  262. package/src/channels/slack/thread-context.ts +0 -485
  263. package/src/channels/slack/tool-approval-events.ts +0 -233
  264. package/src/channels/slack/tool-cards.ts +0 -198
  265. package/src/channels/slack/tool-chip.ts +0 -34
  266. package/src/channels/slack/types.ts +0 -787
  267. package/src/channels/slack/upload.ts +0 -137
  268. package/src/channels.ts +0 -543
  269. package/src/connections.ts +0 -153
  270. package/src/dashboard-session-url.ts +0 -30
  271. package/src/evals/assertions.ts +0 -688
  272. package/src/evals/expect.ts +0 -250
  273. package/src/evals/judge.ts +0 -329
  274. package/src/evals/loaders.ts +0 -111
  275. package/src/evals/matchers.ts +0 -223
  276. package/src/evals/reporters.ts +0 -257
  277. package/src/evals/results.ts +0 -130
  278. package/src/evals/run-facts.ts +0 -306
  279. package/src/evals.ts +0 -709
  280. package/src/extensions/cursor-cloud-agents/extension.ts +0 -131
  281. package/src/extensions/cursor-cloud-agents/lib/backend.ts +0 -386
  282. package/src/extensions/cursor-cloud-agents/lib/channels.ts +0 -11
  283. package/src/extensions/cursor-cloud-agents/lib/fleet.ts +0 -98
  284. package/src/extensions/cursor-cloud-agents/lib/inputs.ts +0 -5
  285. package/src/extensions/cursor-cloud-agents/lib/repos.ts +0 -80
  286. package/src/extensions/cursor-cloud-agents/lib/transcript.ts +0 -19
  287. package/src/extensions/cursor-cloud-agents/skills/handoff.md +0 -37
  288. package/src/extensions/cursor-cloud-agents/tools/cancel.ts +0 -21
  289. package/src/extensions/cursor-cloud-agents/tools/dump.ts +0 -47
  290. package/src/extensions/cursor-cloud-agents/tools/get.ts +0 -18
  291. package/src/extensions/cursor-cloud-agents/tools/launch.ts +0 -62
  292. package/src/extensions/cursor-cloud-agents/tools/list.ts +0 -31
  293. package/src/extensions/cursor-cloud-agents/tools/reply.ts +0 -36
  294. package/src/extensions/cursor-grokbot-agents/extension.ts +0 -132
  295. package/src/extensions/cursor-grokbot-agents/lib/agents.ts +0 -42
  296. package/src/extensions/cursor-grokbot-agents/lib/backend.ts +0 -208
  297. package/src/extensions/cursor-grokbot-agents/lib/contacts.ts +0 -74
  298. package/src/extensions/cursor-grokbot-agents/lib/conversation.ts +0 -260
  299. package/src/extensions/cursor-grokbot-agents/lib/inputs.ts +0 -21
  300. package/src/extensions/cursor-grokbot-agents/lib/lock.ts +0 -26
  301. package/src/extensions/cursor-grokbot-agents/skills/consult.md +0 -40
  302. package/src/extensions/cursor-grokbot-agents/tools/ask.ts +0 -32
  303. package/src/extensions/cursor-grokbot-agents/tools/check.ts +0 -25
  304. package/src/extensions/cursor-grokbot-agents/tools/interrupt.ts +0 -17
  305. package/src/extensions/cursor-grokbot-agents/tools/list.ts +0 -26
  306. package/src/extensions/improve/extension.ts +0 -69
  307. package/src/extensions/improve/skills/yourself.ts +0 -50
  308. package/src/extensions/jev/extension.ts +0 -95
  309. package/src/extensions/jev/lib/evaluate.ts +0 -266
  310. package/src/extensions/jev/skills/gated-write.md +0 -25
  311. package/src/extensions/jev/skills/questions.md +0 -33
  312. package/src/extensions/jev/tools/evaluate.ts +0 -82
  313. package/src/extensions/slack-communication/evals/harness.ts +0 -705
  314. package/src/extensions/slack-communication/evals/slack-communication.eval.ts +0 -830
  315. package/src/extensions/slack-communication/evals/slack-placeholder.eval.ts +0 -172
  316. package/src/extensions/slack-communication/extension.ts +0 -44
  317. package/src/extensions/slack-communication/skills/slack-voice.ts +0 -56
  318. package/src/extensions/slack-communication/tools/delete-message.ts +0 -33
  319. package/src/extensions/slack-communication/tools/edit-message.ts +0 -42
  320. package/src/extensions/slack-communication/tools/post-card.ts +0 -28
  321. package/src/extensions/slack-communication/tools/post-file.ts +0 -82
  322. package/src/extensions/slack-communication/tools/post-update.ts +0 -40
  323. package/src/extensions/slack-communication/tools/react.ts +0 -30
  324. package/src/extensions/slack-communication/tools/set-status.ts +0 -21
  325. package/src/extensions.ts +0 -179
  326. package/src/files-backends/agent-store-presigned-url.ts +0 -11
  327. package/src/files-backends/cursor-hosted.ts +0 -1212
  328. package/src/files-backends/local-fs.ts +0 -163
  329. package/src/files.ts +0 -293
  330. package/src/filesystem.ts +0 -2005
  331. package/src/hooks.ts +0 -30
  332. package/src/index.ts +0 -259
  333. package/src/internal/advertise-tools.ts +0 -370
  334. package/src/internal/approval-gate.ts +0 -103
  335. package/src/internal/artifacts-store.ts +0 -836
  336. package/src/internal/as-of.ts +0 -257
  337. package/src/internal/auth.ts +0 -46
  338. package/src/internal/authored-alias-hooks.ts +0 -138
  339. package/src/internal/authored-loaders.ts +0 -188
  340. package/src/internal/bounded-int.ts +0 -24
  341. package/src/internal/bounded.ts +0 -25
  342. package/src/internal/brand.ts +0 -28
  343. package/src/internal/browser-origin-guard.ts +0 -67
  344. package/src/internal/builtin-tools/artifacts.ts +0 -62
  345. package/src/internal/builtin-tools/index.ts +0 -53
  346. package/src/internal/builtin-tools/reminders.ts +0 -145
  347. package/src/internal/channel-dispatch.ts +0 -129
  348. package/src/internal/channel-route-dispatch.ts +0 -58
  349. package/src/internal/channel-state.ts +0 -83
  350. package/src/internal/chat-client.ts +0 -594
  351. package/src/internal/cli-ax.ts +0 -2318
  352. package/src/internal/cli-bitbucket.ts +0 -438
  353. package/src/internal/cli-convert-automation.ts +0 -335
  354. package/src/internal/cli-cursor.ts +0 -282
  355. package/src/internal/cli-deploy.ts +0 -2519
  356. package/src/internal/cli-docs.ts +0 -192
  357. package/src/internal/cli-github.ts +0 -806
  358. package/src/internal/cli-gitlab.ts +0 -452
  359. package/src/internal/cli-images.ts +0 -672
  360. package/src/internal/cli-manifest.ts +0 -56
  361. package/src/internal/cli-mcp-oauth.ts +0 -396
  362. package/src/internal/cli-mcp.ts +0 -808
  363. package/src/internal/cli-skills.ts +0 -98
  364. package/src/internal/cli-slack-manual.ts +0 -418
  365. package/src/internal/cli-slack.ts +0 -874
  366. package/src/internal/cloud-merge.ts +0 -51
  367. package/src/internal/cloud-turn-cost.ts +0 -159
  368. package/src/internal/connection-env.ts +0 -106
  369. package/src/internal/continuation-channel.ts +0 -233
  370. package/src/internal/continuation-identity.ts +0 -935
  371. package/src/internal/conversation-mirror.ts +0 -423
  372. package/src/internal/convert-automation/convert-workflow.ts +0 -1377
  373. package/src/internal/convert-automation/slug.ts +0 -29
  374. package/src/internal/convert-automation/types.ts +0 -212
  375. package/src/internal/cron.ts +0 -76
  376. package/src/internal/cursor/account-mcp.ts +0 -692
  377. package/src/internal/cursor/backend-client.ts +0 -984
  378. package/src/internal/cursor/bound-secret-file.ts +0 -101
  379. package/src/internal/cursor/credentials.ts +0 -560
  380. package/src/internal/cursor/cursor-api-transport.ts +0 -65
  381. package/src/internal/cursor/github-credentials.ts +0 -228
  382. package/src/internal/cursor/hosted-bound-secrets.ts +0 -71
  383. package/src/internal/cursor/hosted-deployment-secrets.ts +0 -100
  384. package/src/internal/cursor/hosted-store-secrets.ts +0 -152
  385. package/src/internal/cursor/session-token.ts +0 -111
  386. package/src/internal/cursor/store-api-client.ts +0 -323
  387. package/src/internal/cursor-account-mcp-auth.ts +0 -303
  388. package/src/internal/cursor-agent-template.ts +0 -50
  389. package/src/internal/cursor-deployment-relay.ts +0 -315
  390. package/src/internal/cursor-event-relay.ts +0 -675
  391. package/src/internal/cursor-relay-core.ts +0 -563
  392. package/src/internal/deferred-channel-session.ts +0 -61
  393. package/src/internal/deploy-client.ts +0 -1574
  394. package/src/internal/deploy-manifest.ts +0 -361
  395. package/src/internal/deploy-source.ts +0 -144
  396. package/src/internal/describe-error.ts +0 -32
  397. package/src/internal/dev-mode.ts +0 -20
  398. package/src/internal/discovery/agent-config.ts +0 -288
  399. package/src/internal/discovery/agent.ts +0 -381
  400. package/src/internal/discovery/channels.ts +0 -100
  401. package/src/internal/discovery/connections.ts +0 -516
  402. package/src/internal/discovery/context.ts +0 -38
  403. package/src/internal/discovery/cursor-plugin.ts +0 -628
  404. package/src/internal/discovery/extension-overlay.ts +0 -247
  405. package/src/internal/discovery/extensions.ts +0 -490
  406. package/src/internal/discovery/fs.ts +0 -103
  407. package/src/internal/discovery/hooks.ts +0 -63
  408. package/src/internal/discovery/info.ts +0 -174
  409. package/src/internal/discovery/instructions.ts +0 -98
  410. package/src/internal/discovery/modules.ts +0 -107
  411. package/src/internal/discovery/names.ts +0 -45
  412. package/src/internal/discovery/project.ts +0 -319
  413. package/src/internal/discovery/reminders.ts +0 -65
  414. package/src/internal/discovery/runtime.ts +0 -158
  415. package/src/internal/discovery/schedules.ts +0 -120
  416. package/src/internal/discovery/seed-files.ts +0 -34
  417. package/src/internal/discovery/services.ts +0 -151
  418. package/src/internal/discovery/skills.ts +0 -174
  419. package/src/internal/discovery/subagent.ts +0 -138
  420. package/src/internal/discovery/tools.ts +0 -170
  421. package/src/internal/discovery.ts +0 -27
  422. package/src/internal/distribution.ts +0 -126
  423. package/src/internal/docs-site.ts +0 -248
  424. package/src/internal/duration.ts +0 -37
  425. package/src/internal/env-file.ts +0 -83
  426. package/src/internal/eval-judge-model.ts +0 -142
  427. package/src/internal/eval-run-store.ts +0 -585
  428. package/src/internal/eval-runner.ts +0 -823
  429. package/src/internal/evals-client.ts +0 -475
  430. package/src/internal/event-log.ts +0 -342
  431. package/src/internal/event-mapper.ts +0 -811
  432. package/src/internal/expected-delivery-failure.ts +0 -34
  433. package/src/internal/factory-resource-channel.ts +0 -103
  434. package/src/internal/filesystem/errors.ts +0 -207
  435. package/src/internal/filesystem/format.ts +0 -253
  436. package/src/internal/filesystem/merge.ts +0 -192
  437. package/src/internal/filesystem/nearest.ts +0 -112
  438. package/src/internal/filesystem/scratch.ts +0 -239
  439. package/src/internal/filesystem/sdk-schemas.ts +0 -204
  440. package/src/internal/filesystem/tools.ts +0 -804
  441. package/src/internal/filesystem/walk.ts +0 -366
  442. package/src/internal/fixtures/units-server.ts +0 -52
  443. package/src/internal/framework-file-storage.ts +0 -357
  444. package/src/internal/framework-storage-selection.ts +0 -156
  445. package/src/internal/frontmatter.ts +0 -108
  446. package/src/internal/github-fanout.ts +0 -144
  447. package/src/internal/guest-network.ts +0 -391
  448. package/src/internal/handleAgentServeTrigger.ts +0 -286
  449. package/src/internal/host-files.ts +0 -341
  450. package/src/internal/host-kv.ts +0 -81
  451. package/src/internal/host-otel.ts +0 -231
  452. package/src/internal/host-platforms.ts +0 -170
  453. package/src/internal/hosted-admission-adapter.ts +0 -47
  454. package/src/internal/hosted-admission-context.ts +0 -37
  455. package/src/internal/hosted-catch-protocol.ts +0 -112
  456. package/src/internal/hosted-catch.ts +0 -179
  457. package/src/internal/hosted-delivery-protocol.ts +0 -824
  458. package/src/internal/hosted-delivery.ts +0 -1410
  459. package/src/internal/hosted-execution-diag.ts +0 -291
  460. package/src/internal/hosted-execution-flush.ts +0 -136
  461. package/src/internal/hosted-execution-latency.ts +0 -301
  462. package/src/internal/hosted-managed-automation.ts +0 -116
  463. package/src/internal/hosting.ts +0 -114
  464. package/src/internal/http-channel-define.ts +0 -25
  465. package/src/internal/http-channel.ts +0 -669
  466. package/src/internal/http-control-plane-session.ts +0 -110
  467. package/src/internal/ids.ts +0 -39
  468. package/src/internal/incoming-headers-to-fetch.ts +0 -45
  469. package/src/internal/init-interview.ts +0 -360
  470. package/src/internal/init-project.ts +0 -711
  471. package/src/internal/init-scaffold.ts +0 -182
  472. package/src/internal/inline-stdio-define-stub.ts +0 -4
  473. package/src/internal/inline-stdio-mcp.ts +0 -230
  474. package/src/internal/install-cursor-skills.ts +0 -604
  475. package/src/internal/is-record.ts +0 -3
  476. package/src/internal/json-schema.ts +0 -95
  477. package/src/internal/legacy-command-guard.ts +0 -66
  478. package/src/internal/listen-port.ts +0 -85
  479. package/src/internal/local-control-plane.ts +0 -442
  480. package/src/internal/local-env.ts +0 -59
  481. package/src/internal/local-ingress.ts +0 -90
  482. package/src/internal/log-ring.ts +0 -59
  483. package/src/internal/logs-client.ts +0 -477
  484. package/src/internal/map-pool.ts +0 -39
  485. package/src/internal/mcp-endpoint.ts +0 -747
  486. package/src/internal/mcp-host.ts +0 -509
  487. package/src/internal/mcp-oauth-on-demand.ts +0 -337
  488. package/src/internal/mcp-oauth-persist.ts +0 -118
  489. package/src/internal/mcp-oauth.ts +0 -549
  490. package/src/internal/net.ts +0 -29
  491. package/src/internal/open-browser.ts +0 -41
  492. package/src/internal/otel/attrs.ts +0 -16
  493. package/src/internal/otel/collector.ts +0 -937
  494. package/src/internal/otel/config.ts +0 -287
  495. package/src/internal/otel/http.ts +0 -122
  496. package/src/internal/otel/mcp.ts +0 -56
  497. package/src/internal/otel/propagation.ts +0 -17
  498. package/src/internal/otel/runtime.ts +0 -441
  499. package/src/internal/package-inline-stdio.ts +0 -114
  500. package/src/internal/peer-connections.ts +0 -96
  501. package/src/internal/platform-schedule-sync.ts +0 -75
  502. package/src/internal/platform-timers.ts +0 -365
  503. package/src/internal/playground/static.ts +0 -278
  504. package/src/internal/playground/toolchain.ts +0 -270
  505. package/src/internal/playground-proxy.ts +0 -564
  506. package/src/internal/process-memory-telemetry.ts +0 -334
  507. package/src/internal/project-layout.ts +0 -31
  508. package/src/internal/prompt-context.ts +0 -116
  509. package/src/internal/reminder-control-plane-protocol.ts +0 -482
  510. package/src/internal/reminder-runner.ts +0 -1559
  511. package/src/internal/reminder-schedule.ts +0 -104
  512. package/src/internal/reminder-store.ts +0 -176
  513. package/src/internal/request-error-status.ts +0 -95
  514. package/src/internal/request-headers.ts +0 -21
  515. package/src/internal/resolve-prod-target.ts +0 -334
  516. package/src/internal/resolved-connections.ts +0 -190
  517. package/src/internal/router.ts +0 -143
  518. package/src/internal/run-client.ts +0 -354
  519. package/src/internal/runtime-dispatch-runner.ts +0 -50
  520. package/src/internal/sanitize-mcp-tool-name.ts +0 -31
  521. package/src/internal/schedule-runner.ts +0 -154
  522. package/src/internal/scm/pr-url.ts +0 -245
  523. package/src/internal/sdk-runner.ts +0 -959
  524. package/src/internal/serve-restart.ts +0 -113
  525. package/src/internal/server.ts +0 -3147
  526. package/src/internal/session-cost.ts +0 -208
  527. package/src/internal/session-engine.ts +0 -5622
  528. package/src/internal/session-links.ts +0 -84
  529. package/src/internal/session-run-log.ts +0 -535
  530. package/src/internal/session-store.ts +0 -307
  531. package/src/internal/session-urls.ts +0 -32
  532. package/src/internal/sessions-client.ts +0 -239
  533. package/src/internal/skill-catalog.ts +0 -66
  534. package/src/internal/skills-sync.ts +0 -55
  535. package/src/internal/slack-provision-client.ts +0 -544
  536. package/src/internal/slack-thread-key.ts +0 -11
  537. package/src/internal/sleep.ts +0 -3
  538. package/src/internal/start-log-store.ts +0 -164
  539. package/src/internal/steering.ts +0 -17
  540. package/src/internal/storage-coordinator.ts +0 -800
  541. package/src/internal/storage-roles.ts +0 -86
  542. package/src/internal/storage.ts +0 -1
  543. package/src/internal/store-api-protocol.ts +0 -205
  544. package/src/internal/store-mirror.ts +0 -73
  545. package/src/internal/stream-progress.ts +0 -294
  546. package/src/internal/terminal-style.ts +0 -133
  547. package/src/internal/testing/factory-resource-fixtures.ts +0 -84
  548. package/src/internal/testing/scm-continuation-fixtures.ts +0 -285
  549. package/src/internal/tool-catalog.ts +0 -104
  550. package/src/internal/tool-policy.ts +0 -222
  551. package/src/internal/tool-result.ts +0 -50
  552. package/src/internal/trajectory.ts +0 -418
  553. package/src/internal/turn-cost.ts +0 -136
  554. package/src/internal/turn-governor.ts +0 -145
  555. package/src/internal/turn-lease-store.ts +0 -144
  556. package/src/internal/turn-outbox.ts +0 -77
  557. package/src/internal/update-check.ts +0 -517
  558. package/src/internal/v2-hosting.ts +0 -52
  559. package/src/internal/workspace-sync.ts +0 -114
  560. package/src/internal/workspace.ts +0 -505
  561. package/src/kv/memory-kv.ts +0 -94
  562. package/src/kv.ts +0 -18
  563. package/src/memory.ts +0 -487
  564. package/src/otel-public.ts +0 -24
  565. package/src/otel.ts +0 -320
  566. package/src/prompt.ts +0 -80
  567. package/src/reminders.ts +0 -65
  568. package/src/schedules.ts +0 -31
  569. package/src/skills.ts +0 -27
  570. package/src/storage-backends/cursor-hosted-v2.ts +0 -204
  571. package/src/storage-backends/cursor-hosted.ts +0 -388
  572. package/src/storage-backends/file-kv.ts +0 -276
  573. package/src/storage-protocol.ts +0 -261
  574. package/src/storage.ts +0 -408
  575. package/src/tools.ts +0 -166
  576. package/src/types.ts +0 -3776
  577. /package/dist/docs/assets/{reference_agent-config.md.DzGI777n.lean.js → reference_agent-config.md.Cj5uBKp4.lean.js} +0 -0
@@ -1,787 +0,0 @@
1
- /**
2
- * Types for the Slack platform channel pack.
3
- */
4
-
5
- import type { ContinuationIdentity } from "../../internal/continuation-identity.js";
6
- import type {
7
- AgentCloudOptions,
8
- ArtifactsApi,
9
- AuthContext,
10
- ChannelEventHandlers,
11
- HostContext,
12
- } from "../../types.js";
13
- import type { SlackReplyFooter } from "./footer.js";
14
-
15
- export type { SlackReplyFooter, SlackReplyFooterContext } from "./footer.js";
16
-
17
- /**
18
- * Pluggable Slack Web API caller. Instead of holding a raw `xoxb-…` token,
19
- * calls are executed by `call`. Implementations return the Slack response
20
- * body (including `ok: false` platform errors) and only throw on
21
- * programmer error.
22
- */
23
- export interface SlackApiTransport {
24
- kind: "api-transport";
25
- /** Human-readable transport label for logs. */
26
- label: string;
27
- call(method: string, args: Record<string, unknown>): Promise<Record<string, unknown>>;
28
- }
29
-
30
- /** Bot token as a string, a (possibly async) resolver, or an API transport. */
31
- export type SlackBotToken = string | (() => string | Promise<string>) | SlackApiTransport;
32
-
33
- export interface SlackCredentials {
34
- /**
35
- * Bot user OAuth token (`xoxb-…`), or a {@link SlackApiTransport} that
36
- * executes Web API calls without a local token. When omitted, falls back
37
- * to `SLACK_BOT_TOKEN` (or `{envPrefix}_SLACK_BOT_TOKEN` via
38
- * {@link SlackChannelOptions.envPrefix}).
39
- */
40
- botToken?: SlackBotToken;
41
- /**
42
- * App-level token (`xapp-…`) for Socket Mode. Requires scope
43
- * `connections:write`. Same fallback rules as `botToken`.
44
- */
45
- appToken?: string | (() => string | Promise<string>);
46
- }
47
-
48
- /** Per-session Slack adapter state. */
49
- export interface SlackChannelState {
50
- channelId: string | null;
51
- threadTs: string | null;
52
- teamId: string | null;
53
- triggeringUserId: string | null;
54
- pendingToolCallMessage: string | null;
55
- lastReasoningTypingAtMs: number | null;
56
- lastReasoningTypingStatus: string | null;
57
- /** Active chat stream message ts (`chat.startStream`). */
58
- streamTs: string | null;
59
- /** Channel id used when the stream was started. */
60
- streamChannelId?: string | null;
61
- /** Last assistant text delivered to the thread (stream or postMessage). */
62
- lastPostedText?: string | null;
63
- /**
64
- * Text of the current assistant block already written into the open stream.
65
- * The harness restarts its cumulative text at every tool boundary, so the
66
- * append delta cannot be measured against {@link lastPostedText}.
67
- */
68
- streamBlockText?: string | null;
69
- /**
70
- * Slack message ts of the agent's last delivered reply in this thread.
71
- * Warm turns use this as the `<slack_thread_delta>` watermark.
72
- */
73
- lastBotMessageTs?: string | null;
74
- /** Admission already posted the static placeholder; execution must not post it again. */
75
- placeholderPosted?: boolean;
76
- /**
77
- * When true, stream APIs failed for this session — use postMessage
78
- * for the rest of the turn.
79
- */
80
- streamingUnavailable?: boolean;
81
- /** The open stream hit Slack's size cap; appends stop until it closes. */
82
- streamFull?: boolean;
83
- /** Chunks Slack accepted on the open stream, reported when it closes. */
84
- streamAppendedChunks?: number;
85
- /** Editable progress message ts when `chat.startStream` is unavailable. */
86
- progressTs: string | null;
87
- /**
88
- * Message ts of approval cards keyed by tool call id (for
89
- * replacing Approve/Deny buttons after a decision).
90
- */
91
- approvalMessageByCallId?: Record<string, string>;
92
- /** `reply.reasoningCard` bookkeeping for the current turn. */
93
- reasoningCard?: ReasoningCardState;
94
- /** `reply.toolCards` per-tool tallies for the current turn, keyed by tool name. */
95
- toolCardCounts?: Record<string, ToolCardCount>;
96
- /** Staged `post-file` uploads this turn (`agentic`). */
97
- agenticFiles?: Array<{ path: string; name: string; workspace: string }>;
98
- /** Inbound already started ack + chip; `turn.started` skips the backstop. */
99
- startPainted?: boolean;
100
- /** `Date.now()` at `turn.started`. Footer elapsed time is measured from this. */
101
- turnStartedAtMs?: number | null;
102
- }
103
-
104
- /**
105
- * Slack appends a task card's `details` across updates, so the reasoning
106
- * card is fed deltas: `blockSent` is how much of the current reasoning block
107
- * is already on Slack, `pending` is buffered text awaiting a flush.
108
- */
109
- export interface ReasoningCardState {
110
- status: "in_progress" | "complete" | null;
111
- blockSent: number | null;
112
- pending: string;
113
- lastFlushMs: number | null;
114
- chars: number;
115
- }
116
-
117
- /**
118
- * `details` / `output` count the lines already on the card, so a later
119
- * batch can start on a new line (Slack appends updates verbatim).
120
- */
121
- export interface ToolCardCount {
122
- started: number;
123
- done: number;
124
- errors: number;
125
- details?: number;
126
- output?: number;
127
- }
128
-
129
- /** A tool call as the model requested it (`actions.requested`). */
130
- export interface SlackToolCall {
131
- callId: string;
132
- toolName: string;
133
- args?: unknown;
134
- }
135
-
136
- /** A finished tool call (`action.result`). */
137
- export interface SlackToolResult {
138
- callId: string;
139
- toolName: string;
140
- output?: unknown;
141
- isError: boolean;
142
- }
143
-
144
- /**
145
- * What the status chip under the thread shows while a turn runs. Slack caps
146
- * each line at 50 characters. While a `chat.startStream` is open Slack shows
147
- * its own generic "is working…" instead, so in `"stream"` mode these lines
148
- * are only visible until the first chunk goes out.
149
- */
150
- export interface SlackStatusOptions {
151
- /** First line of each reasoning block, throttled. Defaults to `true`. */
152
- reasoning?: boolean;
153
- /**
154
- * Tool calls as they start: `"Running grep, glob…"` (tool names through
155
- * {@link SlackChannelOptions.toolLabels}), or your own line. Defaults to
156
- * `true`.
157
- */
158
- tools?: boolean | ((calls: readonly SlackToolCall[]) => string);
159
- /**
160
- * Rotation Slack cycles through while nothing more specific is known
161
- * (turn start, long silent stretches). Up to 5 entries. Defaults to
162
- * Thinking… / Working on it… / Almost there….
163
- */
164
- idle?: readonly string[];
165
- }
166
-
167
- export type SlackToolCardGroup = "per-call" | "per-tool";
168
-
169
- /**
170
- * Task cards for tool calls inside the streamed reply. Slack appends each
171
- * update's `details` / `output` to the card, so the callbacks return the
172
- * text to add, not the full card.
173
- */
174
- export interface SlackToolCardOptions {
175
- /**
176
- * `"per-tool"` (default) keeps one card per tool name and counts calls in
177
- * the title (`grep ×3`). `"per-call"` shows one card per call.
178
- */
179
- group?: SlackToolCardGroup;
180
- /**
181
- * `true` (default): cards expand to show one line per call, the way the
182
- * reasoning card does. `false`: cards are their titles only.
183
- */
184
- collapsible?: boolean;
185
- /**
186
- * The line a collapsible card shows for a call. Defaults to what the
187
- * playground shows in that tool's header: the grep pattern, the file
188
- * path, the shell command.
189
- */
190
- details?: (call: SlackToolCall) => string | undefined;
191
- /** Text appended to a collapsible card when a call finishes. */
192
- output?: (result: SlackToolResult) => string | undefined;
193
- }
194
-
195
- /**
196
- * One task card that receives the model's reasoning as it streams. Its
197
- * status is `in_progress` while the model thinks and `complete` once the
198
- * answer text starts.
199
- */
200
- export interface SlackReasoningCardOptions {
201
- /** Card title. Defaults to `"Thinking"`. */
202
- title?: string;
203
- /**
204
- * Stop appending after this many characters. Defaults to 1500: Slack caps
205
- * a streamed message (answer text plus cards) near 12k, so a long card
206
- * shortens the answer that fits before the reply spills into a second
207
- * message.
208
- */
209
- maxChars?: number;
210
- }
211
-
212
- /**
213
- * How the reply reaches the thread while the turn runs.
214
- *
215
- * - `"post"` (default): live feedback is the status chip; the answer lands
216
- * as one message when the turn finishes.
217
- * - `"stream"`: the answer text streams into one message as it is written.
218
- * Slack replaces the status chip with its generic "is working…" for the
219
- * duration, so live feedback inside the message comes from cards.
220
- * - `"agentic"`: inbound still starts turns. At turn start the channel
221
- * acks the parent and raises the thinking chip, then paints thinking
222
- * from `reasoning.appended` and tool lines from `actions.requested`
223
- * (last assistant line before a `tool_call` wins when present).
224
- * Model `set-status` does not own the chip. It does not write tool
225
- * cards, reasoning cards, or assistant text. It watches `post-update`,
226
- * `post-file`, `post-card`, `react`, `edit-message`, and
227
- * `delete-message` and renders those.
228
- */
229
- export type SlackReplyOptions =
230
- | {
231
- mode: "post";
232
- status?: SlackStatusOptions;
233
- footer?: SlackReplyFooter;
234
- }
235
- | {
236
- mode: "stream";
237
- status?: SlackStatusOptions;
238
- /** Defaults to `false`. `true` is `{ group: "per-tool" }`. */
239
- toolCards?: boolean | SlackToolCardOptions;
240
- /** Defaults to `false`. */
241
- reasoningCard?: boolean | SlackReasoningCardOptions;
242
- footer?: SlackReplyFooter;
243
- }
244
- | {
245
- mode: "agentic";
246
- /**
247
- * Reaction on the parent at turn start. Slack name, with or without
248
- * colons. Default `eyes`.
249
- */
250
- ack?: string;
251
- /**
252
- * Post this exact static line as the first message (`chat.startStream`
253
- * when Slack allows, then `stopStream` so the chip can paint). The
254
- * first `post-update` edits that same ts. Maximum 80 characters.
255
- */
256
- placeholder?: string;
257
- /** Chip while the turn runs. Reasoning and tools default on. Idle is ignored. */
258
- status?: Omit<SlackStatusOptions, "idle">;
259
- footer?: SlackReplyFooter;
260
- };
261
-
262
- /**
263
- * Human labels for tool names, shared by the status chip and the cards.
264
- * A function may return `undefined` to keep the raw tool name.
265
- */
266
- export type SlackToolLabels =
267
- | Readonly<Record<string, string>>
268
- | ((toolName: string) => string | undefined);
269
-
270
- export interface SlackAuthor {
271
- /** Slack user id. Empty string for bot posts with no `user` field. */
272
- userId: string;
273
- userName?: string;
274
- isBot: boolean;
275
- /** Posting app's `bot_id` (`B…`) when the message is bot-authored. */
276
- botId?: string;
277
- }
278
-
279
- export interface SlackReactionAddedInfo {
280
- /** Slack reaction name without surrounding colons. */
281
- name: string;
282
- /** User id of the message author, when Slack includes it. */
283
- itemUserId?: string;
284
- }
285
-
286
- /**
287
- * Delegation metadata carried on bot-to-bot mention posts (Slack message
288
- * `metadata`, event type {@link SLACK_DELEGATION_METADATA_EVENT_TYPE}).
289
- * Absent on posts from bots that don't speak the protocol — the gate then
290
- * treats the mention as depth 1.
291
- */
292
- export interface SlackDelegationInfo {
293
- /** Delegation hop count. A dispatcher woken by a human posts depth 1. */
294
- depth: number;
295
- /** Mount slug / display name of the delegating agent. */
296
- fromAgent?: string;
297
- /** Session id on the delegating agent, for cross-agent tracing. */
298
- originSessionId?: string;
299
- }
300
-
301
- /** File upload on an inbound Slack message (see {@link SlackMessage.files}). */
302
- export interface SlackMessageFile {
303
- id: string;
304
- name?: string;
305
- title?: string;
306
- mimetype?: string;
307
- filetype?: string;
308
- mode?: string;
309
- size?: number;
310
- /**
311
- * When set, bytes were already downloaded by the caller. Skip a second
312
- * `files.info` / private URL fetch.
313
- */
314
- dataBase64?: string;
315
- }
316
-
317
- export interface SlackMessage {
318
- /** Raw top-level `text` exactly as Slack sent it. Often empty on bot posts. */
319
- text: string;
320
- /**
321
- * Raw mrkdwn body: top-level `text` plus attachment / Block Kit content.
322
- * Alert feeds (Datadog, PagerDuty) leave `text` empty and put the whole
323
- * notification in attachments, so read `body` for message content. Unlike
324
- * {@link markdown} this keeps `<url|label>` links intact.
325
- */
326
- body: string;
327
- /** Body roughly suitable for the model (mention markers cleaned). */
328
- markdown: string;
329
- ts: string;
330
- threadTs: string;
331
- channelId: string;
332
- teamId?: string;
333
- author?: SlackAuthor;
334
- /** Present only for a synthetic message dispatched from `reaction_added`. */
335
- reaction?: SlackReactionAddedInfo;
336
- /** Parsed delegation metadata when the post carried it (bot mentions). */
337
- delegation?: SlackDelegationInfo;
338
- /**
339
- * Slack file uploads on this message (top-level + forwarded shares).
340
- * Downloaded during dispatch into vision images / workspace files.
341
- */
342
- files?: SlackMessageFile[];
343
- }
344
-
345
- export interface SlackDispatchDecision {
346
- auth: AuthContext | null;
347
- /** Extra context blocks injected alongside the default Slack context. */
348
- context?: string[];
349
- /**
350
- * Override the user prompt sent to the model. When omitted, uses the Slack
351
- * message markdown (plus context blocks). Host-prepared reviews can pass
352
- * a short "read pr.txt" prompt here.
353
- */
354
- message?: string;
355
- /**
356
- * Absolute directory used as the local harness `cwd` for this session
357
- * (new sessions only).
358
- */
359
- workspaceDir?: string;
360
- /**
361
- * Relative path → contents written into the session workspace before the
362
- * first turn (new sessions only). Prefer this for host-prepared files like
363
- * `pr.txt` so default skill materialization stays on the session cwd.
364
- * Values may be utf8 strings or `{ encoding: "base64", data }` blobs.
365
- */
366
- workspaceFiles?: Record<string, string | { encoding: "base64"; data: string; mimeType?: string }>;
367
- /**
368
- * Base64 images attached to this turn for vision (Cursor SDK `images`).
369
- * Populated automatically from Slack file uploads during inbound dispatch.
370
- */
371
- images?: Array<{ data: string; mimeType: string }>;
372
- /** Session display title (new sessions only). */
373
- title?: string;
374
- /**
375
- * Per-session cloud options (new sessions only). Use this to attach a PR to
376
- * a cloud agent from an inbound Slack mention.
377
- */
378
- cloud?: AgentCloudOptions;
379
- /**
380
- * Seed the Cursor SDK agent id for a new session (ignored when the thread
381
- * already has one). Lets a handler reattach a Slack thread to an existing
382
- * cloud conversation (e.g. per-PR `bc-…` affinity).
383
- */
384
- sdkAgentId?: string;
385
- /**
386
- * Additional Slack message timestamps to omit from `<slack_thread>` hydration
387
- * (e.g. every message in a coalesced batch already folded into `message`).
388
- */
389
- excludeThreadTimestamps?: readonly string[];
390
- }
391
-
392
- export interface SlackSuggestedPrompt {
393
- title: string;
394
- message: string;
395
- }
396
-
397
- export interface SlackThreadHandle {
398
- post(text: string, options?: { blocks?: unknown[] }): Promise<{ ts: string }>;
399
- startTyping(status: string, loadingMessages?: string[]): Promise<void>;
400
- setTitle(title: string): Promise<void>;
401
- setSuggestedPrompts(prompts: SlackSuggestedPrompt[], title?: string): Promise<void>;
402
- }
403
-
404
- export interface SlackBinding {
405
- thread: SlackThreadHandle;
406
- slack: {
407
- channelId: string;
408
- threadTs: string;
409
- teamId?: string;
410
- };
411
- /** Shared host services (MCP / GitHub / Slack). */
412
- host: HostContext;
413
- /**
414
- * Durable artifacts (unbound — the handler runs before any session is
415
- * admitted; pass `sessionId` in `tag` input to attribute one).
416
- */
417
- artifacts: ArtifactsApi;
418
- }
419
-
420
- export type SlackMessageHandler = (
421
- ctx: SlackBinding,
422
- message: SlackMessage,
423
- ) => SlackDispatchDecision | null | undefined | Promise<SlackDispatchDecision | null | undefined>;
424
-
425
- /**
426
- * Host probes into a Slack thread's continuation. Optional on dispatch
427
- * deps; the serve host wires them at channel start.
428
- */
429
- export interface SlackContinuationProbes {
430
- /**
431
- * When set, full-thread hydration runs only for cold-start turns (no
432
- * existing session). Warm turns load a `<slack_thread_delta>` instead.
433
- */
434
- hasContinuationSession?: (continuationToken: string) => Promise<boolean>;
435
- /** True when a turn is already running for this Slack continuation. */
436
- isContinuationBusy?: (continuationToken: string) => Promise<boolean>;
437
- /**
438
- * Warm-delta watermark from session channel state (`lastBotMessageTs`).
439
- * When absent, delta falls back to the last matching bot post in-thread.
440
- */
441
- getContinuationLastBotMessageTs?: (continuationToken: string) => Promise<string | undefined>;
442
- /** Cancel the active turn + clear coalesced nudges for this continuation. */
443
- interruptContinuation?: (continuationToken: string) => Promise<boolean>;
444
- }
445
-
446
- /**
447
- * A Block Kit action click (Socket Mode `block_actions` payload) that the
448
- * framework does not own — the built-in tool-approval Approve/Deny actions
449
- * are routed to `resolveApproval` before author handlers see anything.
450
- */
451
- export interface SlackBlockAction {
452
- /** `action_id` of the clicked element. */
453
- actionId: string;
454
- /** `block_id` of the actions row holding the element (Slack always sets one). */
455
- blockId: string;
456
- /**
457
- * Element `value` payload; empty string when absent (button-style
458
- * elements only — select/overflow `selected_option`s are not read).
459
- */
460
- value: string;
461
- /** Plain-text label of the clicked element, when present. */
462
- label?: string;
463
- channelId: string;
464
- /**
465
- * Thread of the message carrying the element (the message's own ts when
466
- * it is a top-level post — clicks on a thread root stay in its thread).
467
- */
468
- threadTs: string;
469
- /** The message carrying the clicked element. */
470
- messageTs: string;
471
- /** That message's blocks, for `chat.update` resolution cards. */
472
- messageBlocks?: unknown[];
473
- /** Slack user who clicked. */
474
- userId: string;
475
- userName?: string;
476
- teamId?: string;
477
- /**
478
- * Slack `action_ts` — unique per click; block-action dispatch dedupes on
479
- * it. Empty when the payload omitted it (malformed; never dispatched).
480
- */
481
- actionTs: string;
482
- }
483
-
484
- /**
485
- * Author handler for {@link SlackBlockAction} clicks. Return a
486
- * {@link SlackDispatchDecision} to dispatch a turn on the click's thread —
487
- * the click is dispatched like an inbound message from the clicking user
488
- * (thread-scoped continuation, `<slack_context>` naming the clicker) — or
489
- * `null` to ignore the click.
490
- */
491
- export type SlackBlockActionHandler = (
492
- ctx: SlackBinding,
493
- action: SlackBlockAction,
494
- ) => SlackDispatchDecision | null | undefined | Promise<SlackDispatchDecision | null | undefined>;
495
-
496
- /**
497
- * Opt-in channel watch: dispatch on posts in configured channels without an
498
- * @mention. Mentions stay global (any channel the bot is in). Listening
499
- * without a mention names its channels, or `"*"` for every channel the bot
500
- * is in — thread replies only.
501
- */
502
- export interface SlackChannelPostsOptions {
503
- /**
504
- * Channels to watch. Either a lone `"*"` (every channel the bot is in;
505
- * thread replies only — set `posts: "replies"`) or a finite list: at
506
- * least one channel id (`C…` / `G…`), at most 10 distinct ids. Mixing
507
- * `"*"` with ids is a definition error. `#name` entries may accompany
508
- * ids (resolved via `conversations.list` on Socket Mode). On
509
- * Cursor-managed hosting, id entries become channel-scoped
510
- * subscriptions. A lone `"*"` is the guest watcher only: it is omitted
511
- * from the deploy manifest, and a thread reply is delivered when a
512
- * mention already opened that thread. The bot must be a member of a
513
- * channel to receive its messages.
514
- */
515
- allow: string[];
516
- /**
517
- * Which posts dispatch. `"top-level"` (default) fires only on new
518
- * channel posts — never on replies inside other people's threads.
519
- * `"replies"` is the opposite: thread replies only (`ts !== threadTs`),
520
- * never a top-level post. `"all"` is both. A lone `"*"` allowlist
521
- * requires `"replies"`.
522
- */
523
- posts?: "top-level" | "all" | "replies";
524
- /**
525
- * Delay dispatch by this many milliseconds so rapid edits settle first.
526
- * Edits during the window update the dispatched text; deleting the post
527
- * cancels the dispatch. Defaults to `0` (immediate). Socket Mode only —
528
- * the Cursor relay does not deliver edits/deletes.
529
- */
530
- debounceMs?: number;
531
- /**
532
- * Also dispatch bot-authored posts (alert feeds, webhook integrations,
533
- * other agents posting notes). Defaults to `false` — human posts only.
534
- * The watching bot's own posts are always dropped regardless (loop
535
- * safety), matched by the app's `bot_id` / bot user id from `auth.test`.
536
- */
537
- includeBotPosts?: boolean;
538
- }
539
-
540
- /**
541
- * Opt-in bot-to-bot mention wake: allow @mentions authored by explicitly
542
- * trusted bots (e.g. a dispatcher agent) to dispatch like human mentions.
543
- * Default off — bot-authored mentions are dropped (loop safety). There is
544
- * deliberately no "any bot" wildcard; trusting a bot is a per-bot decision.
545
- *
546
- * Loop protection is layered: this allowlist, the always-on own-post
547
- * filter, a delegation-depth budget (Slack message metadata), and a
548
- * per-thread wake budget.
549
- */
550
- export interface SlackBotMentionsOptions {
551
- /**
552
- * Bots whose mentions may wake this agent. Three entry forms:
553
- *
554
- * - `"B…"` — a `bot_id` (dedicated Slack app).
555
- * - `"U…"` — a bot *user* id.
556
- * - `"<botId>:<username>"` — compound: the posting app's `bot_id` AND its
557
- * message `username` must both match (case-insensitive username). Use
558
- * this when several agents post through one app under different
559
- * usernames. Fails closed when the event carries no username.
560
- *
561
- * Must be non-empty (empty is a definition error).
562
- */
563
- allowFrom: string[];
564
- /**
565
- * Maximum delegation depth admitted (from the mention's delegation
566
- * metadata; mentions without metadata count as depth 1). Defaults to 2 —
567
- * human → dispatcher → specialist, no deeper chains.
568
- */
569
- maxDepth?: number;
570
- /**
571
- * Maximum bot-initiated wakes per thread per hour (sliding window).
572
- * Defaults to 5. Rate-limits ping-pong between bots that carry no
573
- * delegation metadata; termination comes from {@link maxPerThreadTotal}.
574
- */
575
- maxPerThreadPerHour?: number;
576
- /**
577
- * Lifetime cap on bot-initiated wakes per thread (resets only after the
578
- * thread has been idle for 24h). Defaults to 20. This is the terminating
579
- * backstop: a sliding window alone refills, so two mutually-allowlisted
580
- * bots could ping-pong forever at the rate cap. Avoid mutual allowlists
581
- * regardless — keep the delegation graph a DAG.
582
- */
583
- maxPerThreadTotal?: number;
584
- }
585
-
586
- /**
587
- * How the agent engages over Slack. Omitted entirely = mentions + DMs,
588
- * which is also the default for each flag — summoned, never proactive.
589
- */
590
- export interface SlackEngagementOptions {
591
- /** Dispatch on `app_mention`. Defaults to `true`. */
592
- mentions?: boolean;
593
- /** Dispatch on direct messages (`message.im`). Defaults to `true`. */
594
- directMessages?: boolean;
595
- /**
596
- * Opt-in channel watch (see {@link SlackChannelPostsOptions}). Requires
597
- * the Slack app to subscribe to `message.channels` / `message.groups`
598
- * (`slack create --channel-posts`).
599
- */
600
- channelPosts?: SlackChannelPostsOptions;
601
- /**
602
- * Opt-in bot-to-bot mention wake (see {@link SlackBotMentionsOptions}).
603
- */
604
- botMentions?: SlackBotMentionsOptions;
605
- }
606
-
607
- /** `"thread"` = anyone in the thread (default); `"author"` = session starter only. */
608
- export type SlackRespondTo = "thread" | "author";
609
-
610
- export interface SlackAccessPolicy {
611
- /** Defaults to `"thread"`. Applied by the default inbound handlers. */
612
- respondTo?: SlackRespondTo;
613
- /** Refuse Slack Connect / guest / other-workspace senders. Defaults to `true`. */
614
- blockExternals?: boolean;
615
- }
616
-
617
- export interface SlackChannelOptions {
618
- credentials?: SlackCredentials;
619
- /**
620
- * Continuation selector. Omit this to inherit the agent architecture's
621
- * default. Set it explicitly only when migrating persisted identities.
622
- */
623
- continuation?: ContinuationIdentity;
624
- /** Defaults to `{ respondTo: "thread", blockExternals: true }`. */
625
- policy?: SlackAccessPolicy;
626
- /**
627
- * Per-agent env prefix for tokens. `envPrefix: "MY_AGENT"` reads
628
- * `MY_AGENT_SLACK_BOT_TOKEN` + `MY_AGENT_SLACK_APP_TOKEN`. Prefer this over
629
- * shared `SLACK_*` vars when serving multiple agents in one process.
630
- * Ignored when `credentials` is set explicitly.
631
- */
632
- envPrefix?: string;
633
- /**
634
- * Optional log sink. When omitted, uses `console.log` until the server
635
- * mounts the channel and rebinds to {@link ServeOptions.logger}.
636
- */
637
- logger?: (line: string) => void;
638
- /**
639
- * Engagement surface. Defaults to mentions + DMs only; channel watch is
640
- * opt-in via {@link SlackEngagementOptions.channelPosts}.
641
- */
642
- engagement?: SlackEngagementOptions;
643
- onAppMention?: SlackMessageHandler;
644
- onDirectMessage?: SlackMessageHandler;
645
- /**
646
- * Handler for Socket Mode `reaction_added` events on messages. The Slack
647
- * app must subscribe to `reaction_added` and have `reactions:read`.
648
- * The handler receives a synthetic message whose thread timestamp is the
649
- * reacted-to message and whose {@link SlackMessage.reaction} names the emoji.
650
- */
651
- onReactionAdded?: SlackMessageHandler;
652
- /**
653
- * Handler for watched channel posts (same contract as `onAppMention`:
654
- * return `null` to skip, or a {@link SlackDispatchDecision} to dispatch).
655
- * Only consulted when `engagement.channelPosts` is configured.
656
- */
657
- onChannelPost?: SlackMessageHandler;
658
- /**
659
- * Override / extend the default stream-event handlers (typing, replies).
660
- * Handlers you provide replace the matching default handlers.
661
- */
662
- events?: ChannelEventHandlers<SlackChannelState>;
663
- /**
664
- * When true (default), install the default turn sinks for `post` and
665
- * `stream`, or the signal watcher for `agentic`.
666
- */
667
- deliverDefaults?: boolean;
668
- /**
669
- * How the reply reaches the thread: status chip + one message at the end
670
- * (`"post"`, default), a live-streamed message with optional tool and
671
- * reasoning cards (`"stream"`), or agent-owned posts (`"agentic"`).
672
- * See {@link SlackReplyOptions}.
673
- */
674
- reply?: SlackReplyOptions;
675
- /** Human labels for tool names in the status chip and cards. */
676
- toolLabels?: SlackToolLabels;
677
- /**
678
- * @deprecated Use `reply: { mode: "stream" }` / `reply: { mode: "post" }`.
679
- * Ignored when `reply` is set.
680
- */
681
- streaming?: boolean;
682
- /**
683
- * @deprecated Use `reply: { mode: "stream", toolCards: true }`. Ignored
684
- * when `reply` is set.
685
- */
686
- thinkingSteps?: boolean;
687
- /**
688
- * Write Slack's assistant status chip ("Saw your follow-up…") when a
689
- * follow-up coalesces into a running turn. Defaults to `true`, except
690
- * when `reply.mode` is `"agentic"`.
691
- *
692
- * Set to `false` on channels that report progress themselves: the chip is
693
- * cleared by the default `message.completed` handler, so a channel that
694
- * replaces that handler has nothing to take it down and it outlives the
695
- * turn.
696
- */
697
- followUpStatus?: boolean;
698
- /**
699
- * Opt in to Slack delivery for human-in-the-loop tool approvals.
700
- *
701
- * Framework park/resume is enabled by `needsApproval` on server tools.
702
- * Set this to `true` to also post Block Kit Approve/Deny cards and route
703
- * the Socket Mode `interactive` clicks to `resolveApproval`.
704
- *
705
- * Defaults to `false`. For custom composition, spread
706
- * `buildToolApprovalEvents({ credentials })` into `events`.
707
- */
708
- toolApprovals?: boolean;
709
- /**
710
- * Route interactive payloads to approval resolution without opting into
711
- * the full {@link buildToolApprovalEvents} handler pack. Use when
712
- * composing `buildToolApprovalEvents` into `events` manually.
713
- */
714
- interactivity?: boolean;
715
- /**
716
- * Handler for Block Kit actions the framework does not own (the built-in
717
- * tool-approval Approve/Deny clicks are routed to `resolveApproval`
718
- * first). Return a {@link SlackDispatchDecision} — typically with a
719
- * thread-scoped auth via `buildSlackAuthContext` so replies in the same
720
- * thread continue the session — to dispatch a turn on the click's
721
- * thread, or `null` to ignore the click. Setting this implies
722
- * interactive routing; the Slack app manifest still needs
723
- * `interactivity` enabled (`buildSlackManifest({ interactivity: true })`).
724
- */
725
- onBlockAction?: SlackBlockActionHandler;
726
- /**
727
- * Suggested prompts shown when an assistant thread starts (and optionally
728
- * after a turn completes).
729
- */
730
- suggestedPrompts?: SlackSuggestedPrompt[];
731
- suggestedPromptsTitle?: string;
732
- /**
733
- * @deprecated Use `reply: { mode, status: { idle: [...] } }`. Ignored when
734
- * `reply` is set.
735
- */
736
- loadingMessages?: string[];
737
- /**
738
- * Built-in Slack `eval` / `eval list` / `eval status` directive that runs
739
- * playground eval batches (`host.evals` / `/v1/dev/evals/runs`) without an
740
- * agent turn, on mentions and DMs only. Defaults to `true`. Set `false` to
741
- * leave `eval …` for the model handler instead.
742
- */
743
- evalCommands?: boolean;
744
- /** Optional teardown (e.g. stop example-local debouncers). Runs after Socket Mode stops. */
745
- onStop?: () => void | Promise<void>;
746
- }
747
-
748
- export interface SlackManifestOptions {
749
- /** Display name for the Slack app. */
750
- name: string;
751
- /** Bot display name (handle without @). Defaults from `name`. */
752
- botDisplayName?: string;
753
- /** Env profile. Affects display name suffix. */
754
- env: "dev" | "prod";
755
- /** Optional short description shown in the Slack app directory. Slack caps this at 140 characters. */
756
- description?: string;
757
- /**
758
- * Slack agent profile (`features.agent_view.agent_description`).
759
- * Defaults to `description`. Separate from the 140-character marketplace line.
760
- */
761
- agentDescription?: string;
762
- /** Include `agent_view` + `assistant:write` for typing status. */
763
- assistant?: boolean;
764
- /**
765
- * Enable Slack interactivity (needed for Approve/Deny cards).
766
- * Defaults to `false` — enable when using `toolApprovals: true`.
767
- */
768
- interactivity?: boolean;
769
- /**
770
- * Subscribe to `message.channels` + `message.groups` for the opt-in
771
- * channel watch (`engagement.channelPosts`). Defaults to `false`.
772
- */
773
- channelPosts?: boolean;
774
- /** Seed suggested prompts into the manifest `agent_view`. */
775
- suggestedPrompts?: Array<{ title: string; message: string }>;
776
- /**
777
- * Emit `settings.managed_app_settings`. Defaults to `true` — Cursor
778
- * provisions these apps through its manager app. Pass `false` when the
779
- * caller is not a manager user token.
780
- */
781
- managedByCursor?: boolean;
782
- }
783
-
784
- /** Soft-fail result for optional Slack API features. */
785
- export type SoftSlackResult<T extends Record<string, unknown> = Record<string, unknown>> =
786
- | ({ ok: true } & T)
787
- | { ok: false; error: string; unsupported?: boolean };