@cursor/july 0.1.93 → 0.1.95

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 (440) hide show
  1. package/AGENTS.md +8 -20
  2. package/README.md +4 -26
  3. package/dist/channels/github/github-channel.d.ts.map +1 -1
  4. package/dist/channels/github/github-channel.js +14 -2
  5. package/dist/channels/github/types.d.ts +18 -3
  6. package/dist/channels/github/types.d.ts.map +1 -1
  7. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  8. package/dist/channels/origin/origin-channel.js +11 -3
  9. package/dist/channels/origin/origin-webhook.d.ts +11 -1
  10. package/dist/channels/origin/origin-webhook.d.ts.map +1 -1
  11. package/dist/channels/origin/origin-webhook.js +23 -3
  12. package/dist/channels/origin/types.d.ts +8 -0
  13. package/dist/channels/origin/types.d.ts.map +1 -1
  14. package/dist/channels/slack/attachments.js +2 -2
  15. package/dist/channels/slack/dispatch.d.ts +0 -7
  16. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  17. package/dist/channels/slack/dispatch.js +4 -7
  18. package/dist/channels/slack/eval-directive.d.ts +5 -12
  19. package/dist/channels/slack/eval-directive.d.ts.map +1 -1
  20. package/dist/channels/slack/eval-directive.js +8 -19
  21. package/dist/channels/slack/index.d.ts +0 -6
  22. package/dist/channels/slack/index.d.ts.map +1 -1
  23. package/dist/channels/slack/index.js +0 -6
  24. package/dist/channels/slack/pr-ref.d.ts +7 -1
  25. package/dist/channels/slack/pr-ref.d.ts.map +1 -1
  26. package/dist/channels/slack/pr-ref.js +42 -23
  27. package/dist/channels/slack/setup.d.ts +4 -4
  28. package/dist/channels/slack/setup.d.ts.map +1 -1
  29. package/dist/channels/slack/setup.js +8 -15
  30. package/dist/channels/slack/slack-channel.d.ts +6 -13
  31. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  32. package/dist/channels/slack/slack-channel.js +15 -101
  33. package/dist/channels/slack/types.d.ts +12 -79
  34. package/dist/channels/slack/types.d.ts.map +1 -1
  35. package/dist/channels/slack/types.js +1 -15
  36. package/dist/client.d.ts +14 -0
  37. package/dist/client.d.ts.map +1 -0
  38. package/dist/client.js +12 -0
  39. package/dist/connections.d.ts +18 -9
  40. package/dist/connections.d.ts.map +1 -1
  41. package/dist/connections.js +17 -8
  42. package/dist/docs/404.html +2 -2
  43. package/dist/docs/ab.html +4 -4
  44. package/dist/docs/assets/{app.CjWU-x0z.js → app.BBj0klBO.js} +1 -1
  45. package/dist/docs/assets/chunks/@localSearchIndexroot.oqPawjiD.js +1 -0
  46. package/dist/docs/assets/chunks/{VPLocalSearchBox.Cxy8ySFQ.js → VPLocalSearchBox.CUEXpL78.js} +1 -1
  47. package/dist/docs/assets/chunks/{theme.Dvq1Bktu.js → theme.DabmQnia.js} +2 -2
  48. package/dist/docs/assets/concepts.md.lwAgBIMI.js +1 -0
  49. package/dist/docs/assets/{deployment.md.DoLFAzfm.js → deployment.md.D9msOFOW.js} +3 -8
  50. package/dist/docs/assets/{deployment.md.DoLFAzfm.lean.js → deployment.md.D9msOFOW.lean.js} +1 -1
  51. package/dist/docs/assets/{guides_agent-to-agent.md.B3JIaAqz.js → guides_agent-to-agent.md.BDb0t1QV.js} +1 -1
  52. package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.js +9 -0
  53. package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.lean.js +1 -0
  54. package/dist/docs/assets/{guides_convert-automation.md.Bboisykk.js → guides_convert-automation.md.B4sjlodG.js} +1 -1
  55. package/dist/docs/assets/{guides_github.md.DqJhuaN1.js → guides_github.md.Cnh2mL4a.js} +1 -1
  56. package/dist/docs/assets/{guides_mcp-oauth.md.CJvrXtkN.js → guides_mcp-oauth.md.DPYmBCbV.js} +7 -9
  57. package/dist/docs/assets/{guides_mcp-oauth.md.CJvrXtkN.lean.js → guides_mcp-oauth.md.DPYmBCbV.lean.js} +1 -1
  58. package/dist/docs/assets/{guides_slack.md.mqeNKs84.js → guides_slack.md.C32HsdKk.js} +5 -11
  59. package/dist/docs/assets/guides_slack.md.C32HsdKk.lean.js +1 -0
  60. package/dist/docs/assets/index.md.BoHaMdeZ.js +5 -0
  61. package/dist/docs/assets/{index.md.B-lVR4wT.lean.js → index.md.BoHaMdeZ.lean.js} +1 -1
  62. package/dist/docs/assets/{quickstart.md.BrmfrrIr.js → quickstart.md.Nj_LjW_a.js} +1 -1
  63. package/dist/docs/assets/{reference_cli.md.D9KESDsD.js → reference_cli.md.BsMOxDvh.js} +4 -3
  64. package/dist/docs/assets/{reference_cli.md.D9KESDsD.lean.js → reference_cli.md.BsMOxDvh.lean.js} +1 -1
  65. package/dist/docs/assets/{reference_connections.md.DB6SsN6U.js → reference_connections.md.BH8Oc0D0.js} +5 -5
  66. package/dist/docs/assets/{reference_connections.md.DB6SsN6U.lean.js → reference_connections.md.BH8Oc0D0.lean.js} +1 -1
  67. package/dist/docs/assets/{reference_hooks.md.BxN87gCw.js → reference_hooks.md.a8BJxMR5.js} +1 -1
  68. package/dist/docs/assets/reference_http-api.md.D89k1mdm.js +11 -0
  69. package/dist/docs/assets/reference_http-api.md.D89k1mdm.lean.js +1 -0
  70. package/dist/docs/assets/reference_project-layout.md.Bv4KOtlB.js +19 -0
  71. package/dist/docs/assets/{reference_subagents.md.Xoav0AII.js → reference_subagents.md.CfsIloPm.js} +1 -1
  72. package/dist/docs/assets/{reference_tools.md.DuKvkYWG.js → reference_tools.md.BHeXn2id.js} +3 -3
  73. package/dist/docs/assets/{reference_tools.md.DuKvkYWG.lean.js → reference_tools.md.BHeXn2id.lean.js} +1 -1
  74. package/dist/docs/assets/{templates_agentic-owners.md.DqtPdm6f.js → templates_agentic-owners.md.BZSH4N9z.js} +1 -1
  75. package/dist/docs/assets/{templates_demo.md.DhFcWN6j.js → templates_demo.md.BeQX9V3H.js} +1 -1
  76. package/dist/docs/assets/{templates_pr-autofixer.md.R4K_qytS.js → templates_pr-autofixer.md.x5zl6-GT.js} +2 -2
  77. package/dist/docs/assets/{templates_pr-autofixer.md.R4K_qytS.lean.js → templates_pr-autofixer.md.x5zl6-GT.lean.js} +1 -1
  78. package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.js +4 -0
  79. package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.lean.js +1 -0
  80. package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.js → templates_security-reviewer.md.lshxbCLK.js} +2 -2
  81. package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.lean.js → templates_security-reviewer.md.lshxbCLK.lean.js} +1 -1
  82. package/dist/docs/assets/{templates_triage.md.CVlpctKS.js → templates_triage.md.Co4UNzkZ.js} +3 -3
  83. package/dist/docs/assets/{templates_triage.md.CVlpctKS.lean.js → templates_triage.md.Co4UNzkZ.lean.js} +1 -1
  84. package/dist/docs/assets/troubleshooting.md.Ctv3T8C2.js +1 -0
  85. package/dist/docs/building-with-agents.html +4 -4
  86. package/dist/docs/concepts.html +5 -5
  87. package/dist/docs/concepts.md +1 -0
  88. package/dist/docs/deployment.html +7 -12
  89. package/dist/docs/deployment.md +1 -20
  90. package/dist/docs/design/agsh.md +406 -0
  91. package/dist/docs/evals.html +4 -4
  92. package/dist/docs/guides/agent-to-agent.html +6 -6
  93. package/dist/docs/guides/agent-to-agent.md +2 -2
  94. package/dist/docs/guides/cloud-runtime.html +6 -6
  95. package/dist/docs/guides/cloud-runtime.md +1 -0
  96. package/dist/docs/guides/convert-automation.html +6 -6
  97. package/dist/docs/guides/convert-automation.md +1 -1
  98. package/dist/docs/guides/github.html +6 -6
  99. package/dist/docs/guides/github.md +4 -4
  100. package/dist/docs/guides/human-in-the-loop.html +4 -4
  101. package/dist/docs/guides/mcp-oauth.html +11 -13
  102. package/dist/docs/guides/mcp-oauth.md +10 -18
  103. package/dist/docs/guides/opentelemetry.html +5 -5
  104. package/dist/docs/guides/slack.html +9 -15
  105. package/dist/docs/guides/slack.md +9 -46
  106. package/dist/docs/guides/webhooks.html +4 -4
  107. package/dist/docs/hashmap.json +1 -1
  108. package/dist/docs/hillclimbing.html +4 -4
  109. package/dist/docs/index.html +6 -6
  110. package/dist/docs/index.md +3 -29
  111. package/dist/docs/llms-full.txt +756 -2810
  112. package/dist/docs/llms.txt +3 -16
  113. package/dist/docs/quickstart.html +6 -6
  114. package/dist/docs/quickstart.md +2 -3
  115. package/dist/docs/reference/agent-config.html +4 -4
  116. package/dist/docs/reference/artifacts.html +4 -4
  117. package/dist/docs/reference/channels.html +4 -4
  118. package/dist/docs/reference/cli.html +8 -7
  119. package/dist/docs/reference/cli.md +5 -2
  120. package/dist/docs/reference/connections.html +9 -9
  121. package/dist/docs/reference/connections.md +15 -11
  122. package/dist/docs/reference/hooks.html +6 -6
  123. package/dist/docs/reference/hooks.md +2 -3
  124. package/dist/docs/reference/http-api.html +6 -6
  125. package/dist/docs/reference/http-api.md +8 -0
  126. package/dist/docs/reference/instructions.html +4 -4
  127. package/dist/docs/reference/playground.html +4 -4
  128. package/dist/docs/reference/project-layout.html +8 -6
  129. package/dist/docs/reference/project-layout.md +5 -1
  130. package/dist/docs/reference/prompt.html +4 -4
  131. package/dist/docs/reference/schedules.html +4 -4
  132. package/dist/docs/reference/sessions.html +4 -4
  133. package/dist/docs/reference/skills.html +4 -4
  134. package/dist/docs/reference/subagents.html +6 -6
  135. package/dist/docs/reference/subagents.md +2 -2
  136. package/dist/docs/reference/tools.html +7 -7
  137. package/dist/docs/reference/tools.md +19 -3
  138. package/dist/docs/scaffolding-agents.html +4 -4
  139. package/dist/docs/storage.html +4 -4
  140. package/dist/docs/templates/agentic-owners.html +7 -7
  141. package/dist/docs/templates/agentic-owners.md +1 -1
  142. package/dist/docs/templates/demo.html +6 -6
  143. package/dist/docs/templates/demo.md +3 -2
  144. package/dist/docs/templates/pr-autofixer.html +6 -6
  145. package/dist/docs/templates/pr-autofixer.md +8 -13
  146. package/dist/docs/templates/security-help.html +30 -0
  147. package/dist/docs/templates/security-help.md +65 -0
  148. package/dist/docs/templates/security-reviewer.html +6 -6
  149. package/dist/docs/templates/security-reviewer.md +1 -3
  150. package/dist/docs/templates/triage.html +7 -7
  151. package/dist/docs/templates/triage.md +2 -6
  152. package/dist/docs/troubleshooting.html +5 -5
  153. package/dist/docs/troubleshooting.md +2 -2
  154. package/dist/files-backends/cursor-hosted.d.ts +6 -2
  155. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  156. package/dist/files-backends/cursor-hosted.js +2 -2
  157. package/dist/files.d.ts +2 -0
  158. package/dist/files.d.ts.map +1 -1
  159. package/dist/files.js +5 -0
  160. package/dist/index.d.ts +1 -1
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +1 -1
  163. package/dist/internal/advertise-tools.d.ts +11 -0
  164. package/dist/internal/advertise-tools.d.ts.map +1 -1
  165. package/dist/internal/advertise-tools.js +47 -9
  166. package/dist/internal/cli-deploy.d.ts.map +1 -1
  167. package/dist/internal/cli-deploy.js +135 -6
  168. package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
  169. package/dist/internal/cli-mcp-oauth.js +7 -4
  170. package/dist/internal/conversation-mirror.d.ts +82 -0
  171. package/dist/internal/conversation-mirror.d.ts.map +1 -0
  172. package/dist/internal/conversation-mirror.js +251 -0
  173. package/dist/internal/convert-automation/convert-workflow.d.ts.map +1 -1
  174. package/dist/internal/convert-automation/convert-workflow.js +26 -15
  175. package/dist/internal/convert-automation/slug.d.ts +0 -2
  176. package/dist/internal/convert-automation/slug.d.ts.map +1 -1
  177. package/dist/internal/convert-automation/slug.js +0 -8
  178. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  179. package/dist/internal/cursor/account-mcp.js +5 -1
  180. package/dist/internal/deferred-channel-session.d.ts +20 -0
  181. package/dist/internal/deferred-channel-session.d.ts.map +1 -0
  182. package/dist/internal/deferred-channel-session.js +62 -0
  183. package/dist/internal/deploy-client.d.ts +13 -1
  184. package/dist/internal/deploy-client.d.ts.map +1 -1
  185. package/dist/internal/deploy-client.js +11 -1
  186. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  187. package/dist/internal/deploy-manifest.js +11 -5
  188. package/dist/internal/discovery.d.ts.map +1 -1
  189. package/dist/internal/discovery.js +110 -15
  190. package/dist/internal/framework-storage-selection.d.ts +32 -16
  191. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  192. package/dist/internal/framework-storage-selection.js +51 -17
  193. package/dist/internal/hosted-admission-context.d.ts +20 -0
  194. package/dist/internal/hosted-admission-context.d.ts.map +1 -0
  195. package/dist/internal/hosted-admission-context.js +31 -0
  196. package/dist/internal/hosted-delivery-protocol.d.ts +5 -0
  197. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  198. package/dist/internal/hosted-delivery-protocol.js +33 -1
  199. package/dist/internal/hosted-delivery.d.ts +4 -2
  200. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  201. package/dist/internal/hosted-delivery.js +97 -44
  202. package/dist/internal/hosted-managed-automation.d.ts +30 -0
  203. package/dist/internal/hosted-managed-automation.d.ts.map +1 -0
  204. package/dist/internal/hosted-managed-automation.js +58 -0
  205. package/dist/internal/mcp-endpoint.js +3 -3
  206. package/dist/internal/mcp-host.d.ts +8 -7
  207. package/dist/internal/mcp-host.d.ts.map +1 -1
  208. package/dist/internal/mcp-host.js +8 -7
  209. package/dist/internal/peer-connections.d.ts.map +1 -1
  210. package/dist/internal/peer-connections.js +5 -1
  211. package/dist/internal/playground/static.d.ts +0 -3
  212. package/dist/internal/playground/static.d.ts.map +1 -1
  213. package/dist/internal/resolved-connections.d.ts.map +1 -1
  214. package/dist/internal/resolved-connections.js +5 -7
  215. package/dist/internal/review-comments.d.ts.map +1 -1
  216. package/dist/internal/review-comments.js +10 -98
  217. package/dist/internal/scm/pr-url.d.ts +14 -0
  218. package/dist/internal/scm/pr-url.d.ts.map +1 -0
  219. package/dist/internal/scm/pr-url.js +65 -0
  220. package/dist/internal/sdk-runner.d.ts +14 -0
  221. package/dist/internal/sdk-runner.d.ts.map +1 -1
  222. package/dist/internal/sdk-runner.js +41 -2
  223. package/dist/internal/server.d.ts.map +1 -1
  224. package/dist/internal/server.js +123 -174
  225. package/dist/internal/session-engine.d.ts +45 -10
  226. package/dist/internal/session-engine.d.ts.map +1 -1
  227. package/dist/internal/session-engine.js +217 -65
  228. package/dist/internal/tool-catalog.d.ts +31 -0
  229. package/dist/internal/tool-catalog.d.ts.map +1 -0
  230. package/dist/internal/tool-catalog.js +67 -0
  231. package/dist/playground/assets/index-CF7hUDnQ.css +1 -0
  232. package/dist/playground/assets/{index-D9MFzhNE.js → index-CZA1uEWA.js} +48 -48
  233. package/dist/playground/index.html +2 -2
  234. package/dist/storage-backends/cursor-hosted.d.ts +7 -2
  235. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  236. package/dist/storage-backends/cursor-hosted.js +2 -2
  237. package/dist/types.d.ts +72 -23
  238. package/dist/types.d.ts.map +1 -1
  239. package/dist/types.js +19 -0
  240. package/docs/README.md +3 -29
  241. package/docs/concepts.md +1 -0
  242. package/docs/deployment.md +1 -20
  243. package/docs/design/agsh.md +406 -0
  244. package/docs/guides/agent-to-agent.md +2 -2
  245. package/docs/guides/cloud-runtime.md +1 -0
  246. package/docs/guides/convert-automation.md +1 -1
  247. package/docs/guides/github.md +4 -4
  248. package/docs/guides/mcp-oauth.md +10 -18
  249. package/docs/guides/slack.md +10 -47
  250. package/docs/quickstart.md +2 -3
  251. package/docs/reference/cli.md +5 -2
  252. package/docs/reference/connections.md +15 -11
  253. package/docs/reference/hooks.md +2 -3
  254. package/docs/reference/http-api.md +8 -0
  255. package/docs/reference/project-layout.md +5 -1
  256. package/docs/reference/subagents.md +2 -2
  257. package/docs/reference/tools.md +19 -3
  258. package/docs/templates/agentic-owners.md +1 -1
  259. package/docs/templates/demo.md +3 -2
  260. package/docs/templates/pr-autofixer.md +8 -13
  261. package/docs/templates/security-help.md +70 -0
  262. package/docs/templates/security-reviewer.md +1 -3
  263. package/docs/templates/triage.md +2 -6
  264. package/docs/troubleshooting.md +2 -2
  265. package/package.json +9 -2
  266. package/skills/create-agent/SKILL.md +6 -13
  267. package/skills/debug/SKILL.md +2 -4
  268. package/skills/evals/SKILL.md +1 -1
  269. package/skills/framework-map/SKILL.md +3 -2
  270. package/skills/mcp-auth/SKILL.md +10 -13
  271. package/skills/setup-slack/SKILL.md +21 -137
  272. package/src/channels/github/github-channel.ts +23 -8
  273. package/src/channels/github/types.ts +19 -2
  274. package/src/channels/origin/origin-channel.ts +13 -1
  275. package/src/channels/origin/origin-webhook.ts +27 -3
  276. package/src/channels/origin/types.ts +8 -0
  277. package/src/channels/slack/attachments.ts +2 -2
  278. package/src/channels/slack/dispatch.ts +2 -16
  279. package/src/channels/slack/eval-directive.ts +8 -27
  280. package/src/channels/slack/index.ts +0 -6
  281. package/src/channels/slack/pr-ref.ts +56 -25
  282. package/src/channels/slack/setup.ts +8 -15
  283. package/src/channels/slack/slack-channel.ts +14 -125
  284. package/src/channels/slack/types.ts +12 -96
  285. package/src/client.ts +23 -0
  286. package/src/connections.ts +20 -7
  287. package/src/files-backends/cursor-hosted.ts +9 -3
  288. package/src/files.ts +11 -0
  289. package/src/index.ts +2 -0
  290. package/src/internal/advertise-tools.ts +45 -7
  291. package/src/internal/cli-deploy.ts +171 -7
  292. package/src/internal/cli-mcp-oauth.ts +6 -4
  293. package/src/internal/conversation-mirror.ts +330 -0
  294. package/src/internal/convert-automation/convert-workflow.ts +29 -17
  295. package/src/internal/convert-automation/slug.ts +0 -9
  296. package/src/internal/cursor/account-mcp.ts +4 -1
  297. package/src/internal/deferred-channel-session.ts +61 -0
  298. package/src/internal/deploy-client.ts +24 -1
  299. package/src/internal/deploy-manifest.ts +10 -5
  300. package/src/internal/discovery.ts +129 -15
  301. package/src/internal/fixtures/units-server.ts +52 -0
  302. package/src/internal/framework-storage-selection.ts +61 -19
  303. package/src/internal/hosted-admission-context.ts +37 -0
  304. package/src/internal/hosted-delivery-protocol.ts +44 -1
  305. package/src/internal/hosted-delivery.ts +155 -68
  306. package/src/internal/hosted-managed-automation.ts +72 -0
  307. package/src/internal/mcp-endpoint.ts +3 -3
  308. package/src/internal/mcp-host.ts +8 -7
  309. package/src/internal/peer-connections.ts +4 -1
  310. package/src/internal/playground/static.ts +1 -3
  311. package/src/internal/resolved-connections.ts +8 -10
  312. package/src/internal/review-comments.ts +10 -113
  313. package/src/internal/scm/pr-url.ts +95 -0
  314. package/src/internal/sdk-runner.ts +57 -2
  315. package/src/internal/server.ts +161 -251
  316. package/src/internal/session-engine.ts +266 -69
  317. package/src/internal/tool-catalog.ts +106 -0
  318. package/src/storage-backends/cursor-hosted.ts +10 -3
  319. package/src/types.ts +90 -23
  320. package/templates/agentic-owners/README.md +1 -1
  321. package/templates/agentic-owners/agent/agent.ts +0 -10
  322. package/templates/agentic-owners/agent/channels/github.ts +5 -14
  323. package/templates/agentic-owners/agent/lib/config.ts +0 -8
  324. package/templates/agentic-owners/agent/lib/review.ts +2 -15
  325. package/templates/agentic-owners/agent/tools/record_review.ts +2 -4
  326. package/templates/demo/agent/agent.ts +0 -10
  327. package/templates/pr-autofixer/README.md +0 -2
  328. package/templates/pr-autofixer/agent/agent.ts +0 -11
  329. package/templates/pr-autofixer/agent/channels/slack.ts +1 -2
  330. package/templates/pr-autofixer/agent/lib/pr-state.ts +5 -17
  331. package/templates/pr-autofixer/agent/lib/repos.ts +0 -1
  332. package/templates/security-help/README.md +2 -2
  333. package/templates/security-help/agent/agent.ts +1 -2
  334. package/templates/security-help/agent/channels/slack.ts +0 -3
  335. package/templates/security-help/agent/instructions.md +9 -10
  336. package/templates/security-help/agent/skills/access-request.md +1 -1
  337. package/templates/security-help/agent/skills/faq.md +31 -0
  338. package/templates/security-help/agent/skills/security-playbooks.md +1 -1
  339. package/templates/security-help/package.json +1 -2
  340. package/templates/security-reviewer/agent/agent.ts +0 -10
  341. package/templates/triage/README.md +2 -1
  342. package/templates/triage/agent/agent.ts +0 -10
  343. package/templates/triage/agent/channels/queue.ts +1 -1
  344. package/templates/triage/agent/channels/webhook.ts +1 -3
  345. package/templates/triage/overlays/jira/agent/mcp-connections/tracker.ts +0 -1
  346. package/templates/triage/overlays/linear/agent/mcp-connections/tracker.ts +0 -1
  347. package/dist/channels/slack/cursor-account.d.ts +0 -87
  348. package/dist/channels/slack/cursor-account.d.ts.map +0 -1
  349. package/dist/channels/slack/cursor-account.js +0 -100
  350. package/dist/docs/assets/chunks/@localSearchIndexroot.ChpIC3Zy.js +0 -1
  351. package/dist/docs/assets/concepts.md.F6AiPorA.js +0 -1
  352. package/dist/docs/assets/example-agents_approval-buddy.md.DmezILPg.js +0 -10
  353. package/dist/docs/assets/example-agents_approval-buddy.md.DmezILPg.lean.js +0 -1
  354. package/dist/docs/assets/example-agents_benny.md.B0kwY7D_.js +0 -5
  355. package/dist/docs/assets/example-agents_benny.md.B0kwY7D_.lean.js +0 -1
  356. package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.js +0 -11
  357. package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.lean.js +0 -1
  358. package/dist/docs/assets/example-agents_codebase-wiki.md.BBNw9Ekr.js +0 -8
  359. package/dist/docs/assets/example-agents_codebase-wiki.md.BBNw9Ekr.lean.js +0 -1
  360. package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.js +0 -8
  361. package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.lean.js +0 -1
  362. package/dist/docs/assets/example-agents_concierge.md.BzB2b20R.js +0 -22
  363. package/dist/docs/assets/example-agents_concierge.md.BzB2b20R.lean.js +0 -1
  364. package/dist/docs/assets/example-agents_index.md.ChBp0AX6.js +0 -2
  365. package/dist/docs/assets/example-agents_index.md.ChBp0AX6.lean.js +0 -1
  366. package/dist/docs/assets/example-agents_knowledge-base.md.CrA85ig-.js +0 -11
  367. package/dist/docs/assets/example-agents_knowledge-base.md.CrA85ig-.lean.js +0 -1
  368. package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.js +0 -10
  369. package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.lean.js +0 -1
  370. package/dist/docs/assets/example-agents_security-reviewer.md.74pPpWYj.js +0 -19
  371. package/dist/docs/assets/example-agents_security-reviewer.md.74pPpWYj.lean.js +0 -1
  372. package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.js +0 -5
  373. package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.lean.js +0 -1
  374. package/dist/docs/assets/example-agents_weather-agent.md.CaGpmw3Y.js +0 -25
  375. package/dist/docs/assets/example-agents_weather-agent.md.CaGpmw3Y.lean.js +0 -1
  376. package/dist/docs/assets/guides_cloud-runtime.md.BnvjPiia.js +0 -9
  377. package/dist/docs/assets/guides_cloud-runtime.md.BnvjPiia.lean.js +0 -1
  378. package/dist/docs/assets/guides_slack.md.mqeNKs84.lean.js +0 -1
  379. package/dist/docs/assets/index.md.B-lVR4wT.js +0 -5
  380. package/dist/docs/assets/reference_http-api.md.C68BERYr.js +0 -11
  381. package/dist/docs/assets/reference_http-api.md.C68BERYr.lean.js +0 -1
  382. package/dist/docs/assets/reference_project-layout.md.WN9nwJht.js +0 -17
  383. package/dist/docs/assets/troubleshooting.md.vCWwvqcJ.js +0 -1
  384. package/dist/docs/example-agents/approval-buddy.html +0 -36
  385. package/dist/docs/example-agents/approval-buddy.md +0 -266
  386. package/dist/docs/example-agents/benny.html +0 -31
  387. package/dist/docs/example-agents/benny.md +0 -173
  388. package/dist/docs/example-agents/bugbot.html +0 -37
  389. package/dist/docs/example-agents/bugbot.md +0 -229
  390. package/dist/docs/example-agents/codebase-wiki.html +0 -34
  391. package/dist/docs/example-agents/codebase-wiki.md +0 -167
  392. package/dist/docs/example-agents/codeowners-review.html +0 -34
  393. package/dist/docs/example-agents/codeowners-review.md +0 -192
  394. package/dist/docs/example-agents/concierge.html +0 -48
  395. package/dist/docs/example-agents/concierge.md +0 -200
  396. package/dist/docs/example-agents/index.html +0 -28
  397. package/dist/docs/example-agents/index.md +0 -99
  398. package/dist/docs/example-agents/knowledge-base.html +0 -37
  399. package/dist/docs/example-agents/knowledge-base.md +0 -168
  400. package/dist/docs/example-agents/oncall.html +0 -36
  401. package/dist/docs/example-agents/oncall.md +0 -212
  402. package/dist/docs/example-agents/security-reviewer.html +0 -45
  403. package/dist/docs/example-agents/security-reviewer.md +0 -265
  404. package/dist/docs/example-agents/slack-agent.html +0 -31
  405. package/dist/docs/example-agents/slack-agent.md +0 -142
  406. package/dist/docs/example-agents/weather-agent.html +0 -51
  407. package/dist/docs/example-agents/weather-agent.md +0 -297
  408. package/dist/internal/cursor-slack-relay.d.ts +0 -96
  409. package/dist/internal/cursor-slack-relay.d.ts.map +0 -1
  410. package/dist/internal/cursor-slack-relay.js +0 -176
  411. package/dist/playground/assets/index-D9N7-q97.css +0 -1
  412. package/docs/example-agents/approval-buddy.md +0 -271
  413. package/docs/example-agents/benny.md +0 -178
  414. package/docs/example-agents/bugbot.md +0 -234
  415. package/docs/example-agents/codebase-wiki.md +0 -172
  416. package/docs/example-agents/codeowners-review.md +0 -197
  417. package/docs/example-agents/concierge.md +0 -205
  418. package/docs/example-agents/index.md +0 -104
  419. package/docs/example-agents/knowledge-base.md +0 -173
  420. package/docs/example-agents/oncall.md +0 -217
  421. package/docs/example-agents/security-reviewer.md +0 -270
  422. package/docs/example-agents/slack-agent.md +0 -147
  423. package/docs/example-agents/weather-agent.md +0 -302
  424. package/src/channels/slack/cursor-account.ts +0 -202
  425. package/src/internal/cursor-slack-relay.ts +0 -249
  426. package/templates/security-help/agent/knowledge/faq/approvals.md +0 -5
  427. package/templates/security-help/agent/knowledge/faq/channels.md +0 -6
  428. package/templates/security-help/agent/knowledge/faq/phishing.md +0 -10
  429. package/templates/security-help/agent/skills/security-first-pass.md +0 -15
  430. /package/dist/docs/assets/{concepts.md.F6AiPorA.lean.js → concepts.md.lwAgBIMI.lean.js} +0 -0
  431. /package/dist/docs/assets/{guides_agent-to-agent.md.B3JIaAqz.lean.js → guides_agent-to-agent.md.BDb0t1QV.lean.js} +0 -0
  432. /package/dist/docs/assets/{guides_convert-automation.md.Bboisykk.lean.js → guides_convert-automation.md.B4sjlodG.lean.js} +0 -0
  433. /package/dist/docs/assets/{guides_github.md.DqJhuaN1.lean.js → guides_github.md.Cnh2mL4a.lean.js} +0 -0
  434. /package/dist/docs/assets/{quickstart.md.BrmfrrIr.lean.js → quickstart.md.Nj_LjW_a.lean.js} +0 -0
  435. /package/dist/docs/assets/{reference_hooks.md.BxN87gCw.lean.js → reference_hooks.md.a8BJxMR5.lean.js} +0 -0
  436. /package/dist/docs/assets/{reference_project-layout.md.WN9nwJht.lean.js → reference_project-layout.md.Bv4KOtlB.lean.js} +0 -0
  437. /package/dist/docs/assets/{reference_subagents.md.Xoav0AII.lean.js → reference_subagents.md.CfsIloPm.lean.js} +0 -0
  438. /package/dist/docs/assets/{templates_agentic-owners.md.DqtPdm6f.lean.js → templates_agentic-owners.md.BZSH4N9z.lean.js} +0 -0
  439. /package/dist/docs/assets/{templates_demo.md.DhFcWN6j.lean.js → templates_demo.md.BeQX9V3H.lean.js} +0 -0
  440. /package/dist/docs/assets/{troubleshooting.md.vCWwvqcJ.lean.js → troubleshooting.md.Ctv3T8C2.lean.js} +0 -0
@@ -10,11 +10,6 @@
10
10
  * // Multi-agent serve: one Slack app per agent
11
11
  * export default slackChannel({ envPrefix: "MY_AGENT" });
12
12
  * // → MY_AGENT_SLACK_BOT_TOKEN + MY_AGENT_SLACK_APP_TOKEN
13
- *
14
- * // No Slack app at all: ride the signed-in Cursor account's Slack
15
- * // connection (`@Cursor <agent name> …` routes here; replies post as
16
- * // this agent through the Cursor Slack app)
17
- * export default slackChannel({ cursorAccount: true });
18
13
  * ```
19
14
  */
20
15
  export * from "./api.js";
@@ -27,7 +22,6 @@ export * from "./bot-mentions.js";
27
22
  export * from "./channel-watch.js";
28
23
  export * from "./constants.js";
29
24
  export * from "./credentials.js";
30
- export * from "./cursor-account.js";
31
25
  export * from "./defaults.js";
32
26
  export * from "./dispatch.js";
33
27
  export * from "./doctor.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC"}
@@ -10,11 +10,6 @@
10
10
  * // Multi-agent serve: one Slack app per agent
11
11
  * export default slackChannel({ envPrefix: "MY_AGENT" });
12
12
  * // → MY_AGENT_SLACK_BOT_TOKEN + MY_AGENT_SLACK_APP_TOKEN
13
- *
14
- * // No Slack app at all: ride the signed-in Cursor account's Slack
15
- * // connection (`@Cursor <agent name> …` routes here; replies post as
16
- * // this agent through the Cursor Slack app)
17
- * export default slackChannel({ cursorAccount: true });
18
13
  * ```
19
14
  */
20
15
  export * from "./api.js";
@@ -27,7 +22,6 @@ export * from "./bot-mentions.js";
27
22
  export * from "./channel-watch.js";
28
23
  export * from "./constants.js";
29
24
  export * from "./credentials.js";
30
- export * from "./cursor-account.js";
31
25
  export * from "./defaults.js";
32
26
  export * from "./dispatch.js";
33
27
  export * from "./doctor.js";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Best-effort GitHub PR references from free-form chat (Slack, etc.).
2
+ * Best-effort PR references from free-form chat (Slack, etc.).
3
3
  */
4
4
  export interface GithubPrRef {
5
5
  /** Normalized URL `https://github.com/owner/repo/pull/N`. */
@@ -10,6 +10,12 @@ export interface GithubPrRef {
10
10
  repo: string;
11
11
  number: number;
12
12
  }
13
+ export type OriginPrRef = GithubPrRef;
14
+ /**
15
+ * Find the first Origin PR URL in `text`.
16
+ * Does not treat bare `owner/repo#N` as Origin.
17
+ */
18
+ export declare function extractOriginPrRef(text: string): OriginPrRef | undefined;
13
19
  /**
14
20
  * Find the first GitHub PR URL or `owner/repo#N` in `text`.
15
21
  * Returns `undefined` when none is present.
@@ -1 +1 @@
1
- {"version":3,"file":"pr-ref.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/pr-ref.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CA+BxE"}
1
+ {"version":3,"file":"pr-ref.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/pr-ref.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC;AAqCtC;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAExE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAexE"}
@@ -1,36 +1,55 @@
1
1
  /**
2
- * Best-effort GitHub PR references from free-form chat (Slack, etc.).
2
+ * Best-effort PR references from free-form chat (Slack, etc.).
3
3
  */
4
+ import { parsePrUrl } from "../../internal/scm/pr-url.js";
5
+ const URL_IN_TEXT = /https?:\/\/[^\s>|]+/gi;
6
+ function githubRef(owner, repo, number) {
7
+ return {
8
+ owner,
9
+ repo,
10
+ number,
11
+ url: `https://github.com/${owner}/${repo}/pull/${number}`,
12
+ label: `${owner}/${repo}#${number}`,
13
+ };
14
+ }
15
+ function firstUrlRef(text, provider) {
16
+ const matches = text.match(URL_IN_TEXT);
17
+ if (matches === null) {
18
+ return undefined;
19
+ }
20
+ for (const raw of matches) {
21
+ const parsed = parsePrUrl(raw);
22
+ if ((parsed === null || parsed === void 0 ? void 0 : parsed.provider) === provider) {
23
+ return {
24
+ owner: parsed.owner,
25
+ repo: parsed.repo,
26
+ number: parsed.number,
27
+ url: parsed.url,
28
+ label: `${parsed.owner}/${parsed.repo}#${parsed.number}`,
29
+ };
30
+ }
31
+ }
32
+ return undefined;
33
+ }
34
+ /**
35
+ * Find the first Origin PR URL in `text`.
36
+ * Does not treat bare `owner/repo#N` as Origin.
37
+ */
38
+ export function extractOriginPrRef(text) {
39
+ return firstUrlRef(text, "origin");
40
+ }
4
41
  /**
5
42
  * Find the first GitHub PR URL or `owner/repo#N` in `text`.
6
43
  * Returns `undefined` when none is present.
7
44
  */
8
45
  export function extractGithubPrRef(text) {
9
- const urlMatch = text.match(/https?:\/\/(?:www\.)?github\.com\/([\w.-]+)\/([\w.-]+)\/pull\/(\d+)/i);
10
- if (urlMatch !== null) {
11
- const owner = urlMatch[1];
12
- const repo = urlMatch[2];
13
- const number = Number(urlMatch[3]);
14
- return {
15
- owner,
16
- repo,
17
- number,
18
- url: `https://github.com/${owner}/${repo}/pull/${number}`,
19
- label: `${owner}/${repo}#${number}`,
20
- };
46
+ const fromUrl = firstUrlRef(text, "github");
47
+ if (fromUrl !== undefined) {
48
+ return fromUrl;
21
49
  }
22
50
  const hashMatch = text.match(/\b([\w.-]+)\/([\w.-]+)#(\d+)\b/);
23
51
  if (hashMatch === null) {
24
52
  return undefined;
25
53
  }
26
- const owner = hashMatch[1];
27
- const repo = hashMatch[2];
28
- const number = Number(hashMatch[3]);
29
- return {
30
- owner,
31
- repo,
32
- number,
33
- url: `https://github.com/${owner}/${repo}/pull/${number}`,
34
- label: `${owner}/${repo}#${number}`,
35
- };
54
+ return githubRef(hashMatch[1], hashMatch[2], Number(hashMatch[3]));
36
55
  }
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Slack setup guide printed by `agent-serve slack setup`.
3
3
  *
4
- * Two products: Cursor-hosted (`cursorAccount`) vs a dedicated Socket
5
- * Mode app via `slack create` (dashboard wizard). `slack init --manual`
6
- * is the unmanaged paste-at-api.slack.com path. {@link SLACK_SETUP_PHASES}
7
- * is that checklist; its ids key `.agent-serve/slack/setup-status.json`.
4
+ * Dedicated Socket Mode app via `slack create` (dashboard wizard).
5
+ * `slack init --manual` is the unmanaged paste-at-api.slack.com path.
6
+ * {@link SLACK_SETUP_PHASES} is that checklist; its ids key
7
+ * `.agent-serve/slack/setup-status.json`.
8
8
  */
9
9
  export interface SlackSetupPhase {
10
10
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA4D/C,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC,GAAG;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAUA;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAkC9C"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA4D/C,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC,GAAG;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAUA;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CA2B9C"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Slack setup guide printed by `agent-serve slack setup`.
3
3
  *
4
- * Two products: Cursor-hosted (`cursorAccount`) vs a dedicated Socket
5
- * Mode app via `slack create` (dashboard wizard). `slack init --manual`
6
- * is the unmanaged paste-at-api.slack.com path. {@link SLACK_SETUP_PHASES}
7
- * is that checklist; its ids key `.agent-serve/slack/setup-status.json`.
4
+ * Dedicated Socket Mode app via `slack create` (dashboard wizard).
5
+ * `slack init --manual` is the unmanaged paste-at-api.slack.com path.
6
+ * {@link SLACK_SETUP_PHASES} is that checklist; its ids key
7
+ * `.agent-serve/slack/setup-status.json`.
8
8
  */
9
9
  export const SLACK_SETUP_PHASES = [
10
10
  {
@@ -83,17 +83,10 @@ export function formatSlackSetupGuide() {
83
83
  const lines = [
84
84
  "agent-serve — Slack setup",
85
85
  "",
86
- "Two products. Pick one.",
87
- "",
88
- " A) Cursor-hosted (recommended default, zero Slack admin):",
89
- ' slackChannel({ cursorAccount: true, agentName: "MyAgent" })',
90
- " Sign in (agent-serve login / CURSOR_API_KEY), serve, then mention",
91
- ' "@Cursor MyAgent ..." in the linked workspace. No app, no tokens.',
92
- " B) Dedicated Slack app (Socket Mode) via the dashboard wizard:",
93
- " agent-serve slack create --dir .",
94
- " Finish Slack consent and the bot name there. The CLI writes",
95
- " tokens into .env.local. Use this when you need your own bot",
96
- " user, channel watching, or approval buttons.",
86
+ "Dedicated Slack app (Socket Mode) via the dashboard wizard:",
87
+ " agent-serve slack create --dir .",
88
+ " Finish Slack consent and the bot name there. The CLI writes",
89
+ " tokens into .env.local.",
97
90
  "",
98
91
  "Manual Slack app: `slack init --manual`. Phases below.",
99
92
  "Goal: importable dev + prod Slack apps over Socket Mode (no public URL).",
@@ -7,7 +7,7 @@
7
7
  * envelopes.
8
8
  */
9
9
  import type { ChannelDefinition } from "../../types.js";
10
- import { type SlackChannelOptions, type SlackChannelState, type SlackCredentials, type SlackCursorAgentName } from "./types.js";
10
+ import type { SlackChannelOptions, SlackChannelState, SlackCredentials } from "./types.js";
11
11
  /**
12
12
  * Recover the {@link SlackChannelOptions} used to build a channel definition,
13
13
  * if it was created via {@link slackChannel}.
@@ -19,8 +19,7 @@ export interface SlackChannelHostBinding {
19
19
  envPrefix?: string;
20
20
  }
21
21
  /**
22
- * First dedicated (Socket Mode) Slack channel on a project. Skips
23
- * `cursorAccount` channels — those have no local bot token for
22
+ * First Slack channel on a project. Used for
24
23
  * {@link HostContext.slack.getClient}.
25
24
  */
26
25
  export declare function resolveDedicatedSlackHostBinding(channels: ReadonlyArray<{
@@ -29,15 +28,9 @@ export declare function resolveDedicatedSlackHostBinding(channels: ReadonlyArray
29
28
  /**
30
29
  * Create a Slack channel. Author as `agent/channels/slack.ts` default export.
31
30
  *
32
- * Missing credentials are not an error: without a token pair (or a
33
- * signed-in host for `cursorAccount`) the channel mounts idle and logs
34
- * `channel idle`, so serving an agent never blocks on Slack setup.
35
- *
36
- * When `cursorAccount` is on, `agentName` must be a single token (no
37
- * whitespace) — string literals with spaces fail at the type level;
38
- * runtime values are still checked by {@link assertSlackCursorAgentName}.
31
+ * Missing credentials are not an error: without a token pair the channel
32
+ * mounts idle and logs `channel idle`, so serving an agent never blocks
33
+ * on Slack setup.
39
34
  */
40
- export declare function slackChannel<const Name extends string = string>(authored?: Omit<SlackChannelOptions, "agentName"> & {
41
- agentName?: SlackCursorAgentName<Name>;
42
- }): ChannelDefinition<SlackChannelState>;
35
+ export declare function slackChannel(authored?: SlackChannelOptions): ChannelDefinition<SlackChannelState>;
43
36
  //# sourceMappingURL=slack-channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slack-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/slack-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAEV,iBAAiB,EAMlB,MAAM,gBAAgB,CAAC;AA+CxB,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAQpB;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GACjB,mBAAmB,GAAG,SAAS,CAEjC;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,aAAa,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,uBAAuB,GAAG,SAAS,CAYrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC7D,QAAQ,GAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,GAAG;IACjD,SAAS,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;CACnC,GACL,iBAAiB,CAAC,iBAAiB,CAAC,CA2gBtC"}
1
+ {"version":3,"file":"slack-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/slack-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAEV,iBAAiB,EAMlB,MAAM,gBAAgB,CAAC;AA2CxB,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAQpB;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GACjB,mBAAmB,GAAG,SAAS,CAEjC;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,aAAa,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,uBAAuB,GAAG,SAAS,CAYrC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAE,mBAAwB,GACjC,iBAAiB,CAAC,iBAAiB,CAAC,CAyatC"}
@@ -21,7 +21,6 @@ import { slackContinuationKey } from "./api.js";
21
21
  import { normalizeBotMentionAllowlist, SLACK_BOT_MENTION_DEFAULTS, SlackBotMentionGate, } from "./bot-mentions.js";
22
22
  import { createChannelPostWatcher, resolveChannelNames, SlackChannelAllowlist, } from "./channel-watch.js";
23
23
  import { credentialsFromEnv, slackEnvKeys, tryResolveAppToken, tryResolveBotToken, } from "./credentials.js";
24
- import { createPendingSlackApiTransport, registerSlackCursorAccountRuntime, } from "./cursor-account.js";
25
24
  import { buildDefaultEvents, createDefaultOnChannelPost, createDefaultOnInbound, resolveSlackBlockExternals, } from "./defaults.js";
26
25
  import { dispatchInboundFromEventBody, dispatchInboundMessage, emptySlackChannelState, } from "./dispatch.js";
27
26
  import { createEventIdDedupe } from "./event-id-dedupe.js";
@@ -29,7 +28,6 @@ import { dispatchBlockAction, dispatchInteractiveFromPayload, } from "./interact
29
28
  import { createSlackLogger } from "./log.js";
30
29
  import { startSlackSocketMode, } from "./socket-mode.js";
31
30
  import { buildToolApprovalEvents } from "./tool-approval-events.js";
32
- import { assertSlackCursorAgentName, } from "./types.js";
33
31
  /** Options used to construct a slack channel — for host-level credential binding. */
34
32
  const slackChannelOptionsByDefinition = new WeakMap();
35
33
  /**
@@ -40,15 +38,14 @@ export function getSlackChannelOptions(definition) {
40
38
  return slackChannelOptionsByDefinition.get(definition);
41
39
  }
42
40
  /**
43
- * First dedicated (Socket Mode) Slack channel on a project. Skips
44
- * `cursorAccount` channels — those have no local bot token for
41
+ * First Slack channel on a project. Used for
45
42
  * {@link HostContext.slack.getClient}.
46
43
  */
47
44
  export function resolveDedicatedSlackHostBinding(channels) {
48
45
  var _a;
49
46
  for (const channel of channels) {
50
47
  const options = slackChannelOptionsByDefinition.get(channel.definition);
51
- if (options === undefined || options.cursorAccount === true) {
48
+ if (options === undefined) {
52
49
  continue;
53
50
  }
54
51
  return {
@@ -61,86 +58,27 @@ export function resolveDedicatedSlackHostBinding(channels) {
61
58
  /**
62
59
  * Create a Slack channel. Author as `agent/channels/slack.ts` default export.
63
60
  *
64
- * Missing credentials are not an error: without a token pair (or a
65
- * signed-in host for `cursorAccount`) the channel mounts idle and logs
66
- * `channel idle`, so serving an agent never blocks on Slack setup.
67
- *
68
- * When `cursorAccount` is on, `agentName` must be a single token (no
69
- * whitespace) — string literals with spaces fail at the type level;
70
- * runtime values are still checked by {@link assertSlackCursorAgentName}.
61
+ * Missing credentials are not an error: without a token pair the channel
62
+ * mounts idle and logs `channel idle`, so serving an agent never blocks
63
+ * on Slack setup.
71
64
  */
72
65
  export function slackChannel(authored = {}) {
73
- var _a, _b, _c, _d;
74
- var _e, _f, _g, _h, _j;
66
+ var _a, _b, _c, _d, _e;
75
67
  const options = Object.assign({}, authored);
76
68
  if (options.continuation !== undefined) {
77
69
  options.continuation = normalizeIdentity(options.continuation, "slack");
78
70
  }
79
- const cursorAccount = options.cursorAccount === true;
80
- if (cursorAccount) {
81
- // Token pair and the Cursor connection are different Slack apps —
82
- // they can't be mixed on one channel definition.
83
- if (options.credentials !== undefined || options.envPrefix !== undefined) {
84
- throw new Error("slackChannel({ cursorAccount: true }) uses the Cursor account's Slack connection — do not also set credentials/envPrefix. Author a second slack channel file for a dedicated Slack app.");
85
- }
86
- if (options.agentName !== undefined) {
87
- assertSlackCursorAgentName(options.agentName);
88
- }
89
- // Channel watching is Socket Mode only — cursorAccount agents must be
90
- // explicitly addressed (@mention, DM, or claimed-thread reply).
91
- if (((_a = options.engagement) === null || _a === void 0 ? void 0 : _a.channelPosts) !== undefined) {
92
- throw new Error("slackChannel({ cursorAccount: true }) does not support engagement.channelPosts — agents must be explicitly addressed (@mention, DM, or claimed-thread reply). Channel watching is Socket Mode only.");
93
- }
94
- // Bot-mention wake needs the app's own bot identity (auth.test) and
95
- // Socket Mode event delivery; the Cursor relay drops bot-authored
96
- // mentions before they reach the agent.
97
- if (((_b = options.engagement) === null || _b === void 0 ? void 0 : _b.botMentions) !== undefined) {
98
- throw new Error("slackChannel({ cursorAccount: true }) does not support engagement.botMentions — bot-to-bot mention wake is Socket Mode only (author a dedicated Slack app channel).");
99
- }
100
- // Mentions/DMs are always routed by the backend. Disabling them
101
- // client-side would black-hole events the webhook already stole from
102
- // native Cursor handling — reject at construction instead.
103
- if (((_c = options.engagement) === null || _c === void 0 ? void 0 : _c.mentions) === false) {
104
- throw new Error("slackChannel({ cursorAccount: true }) cannot set engagement.mentions to false — the Cursor Slack relay always delivers mention and claimed-thread traffic.");
105
- }
106
- if (((_d = options.engagement) === null || _d === void 0 ? void 0 : _d.directMessages) === false) {
107
- throw new Error("slackChannel({ cursorAccount: true }) cannot set engagement.directMessages to false — DM continuity is part of the Cursor Slack connection.");
108
- }
109
- // Tool approvals / interactivity ride Slack Socket Mode `interactive`
110
- // envelopes; the Cursor connection does not relay Block Kit clicks, so
111
- // there is no backend tap to route Approve/Deny over cursorAccount.
112
- // Reject at construction (same posture as channelPosts) instead of
113
- // silently dropping clicks. Approvals stay available on a dedicated
114
- // Socket Mode Slack app channel.
115
- if (options.toolApprovals === true) {
116
- throw new Error("slackChannel({ cursorAccount: true }) does not support toolApprovals — Approve/Deny clicks are not relayed over the Cursor Slack connection. Tool approvals are Socket Mode only (author a dedicated Slack app channel for them).");
117
- }
118
- if (options.interactivity === true) {
119
- throw new Error("slackChannel({ cursorAccount: true }) does not support interactivity — interactive Block Kit clicks are not relayed over the Cursor Slack connection. Interactivity is Socket Mode only.");
120
- }
121
- if (options.onBlockAction !== undefined) {
122
- throw new Error("slackChannel({ cursorAccount: true }) does not support onBlockAction — interactive Block Kit clicks are not relayed over the Cursor Slack connection. Block actions are Socket Mode only.");
123
- }
124
- if (options.onReactionAdded !== undefined) {
125
- throw new Error("slackChannel({ cursorAccount: true }) does not support onReactionAdded because the Cursor Slack relay does not forward reaction events. Reaction handling is Socket Mode only.");
126
- }
127
- }
128
- const accountTransport = cursorAccount
129
- ? createPendingSlackApiTransport()
130
- : undefined;
131
- const credentials = accountTransport !== undefined
132
- ? { botToken: accountTransport }
133
- : ((_e = options.credentials) !== null && _e !== void 0 ? _e : credentialsFromEnv(options.envPrefix));
71
+ const credentials = (_a = options.credentials) !== null && _a !== void 0 ? _a : credentialsFromEnv(options.envPrefix);
134
72
  const envKeys = slackEnvKeys(options.envPrefix);
135
73
  const loadingMessages = options.loadingMessages;
136
74
  const policy = options.policy;
137
75
  const blockExternals = resolveSlackBlockExternals(policy);
138
76
  const defaultInbound = createDefaultOnInbound(loadingMessages, policy);
139
- const onAppMention = (_f = options.onAppMention) !== null && _f !== void 0 ? _f : defaultInbound;
140
- const onDirectMessage = (_g = options.onDirectMessage) !== null && _g !== void 0 ? _g : defaultInbound;
77
+ const onAppMention = (_b = options.onAppMention) !== null && _b !== void 0 ? _b : defaultInbound;
78
+ const onDirectMessage = (_c = options.onDirectMessage) !== null && _c !== void 0 ? _c : defaultInbound;
141
79
  const onReactionAdded = options.onReactionAdded;
142
- const onChannelPost = (_h = options.onChannelPost) !== null && _h !== void 0 ? _h : createDefaultOnChannelPost(loadingMessages, policy);
143
- const engagement = (_j = options.engagement) !== null && _j !== void 0 ? _j : {};
80
+ const onChannelPost = (_d = options.onChannelPost) !== null && _d !== void 0 ? _d : createDefaultOnChannelPost(loadingMessages, policy);
81
+ const engagement = (_e = options.engagement) !== null && _e !== void 0 ? _e : {};
144
82
  const mentionsEnabled = engagement.mentions !== false;
145
83
  const directMessagesEnabled = engagement.directMessages !== false;
146
84
  const evalCommandsEnabled = options.evalCommands !== false;
@@ -169,9 +107,7 @@ export function slackChannel(authored = {}) {
169
107
  if (options.deliverDefaults !== false) {
170
108
  Object.assign(events, buildDefaultEvents({
171
109
  credentials,
172
- // cursorAccount: never edit posts — setStatus for thinking, one
173
- // final postMessage for the reply (proxy pins agent username/icon).
174
- streaming: cursorAccount ? false : options.streaming,
110
+ streaming: options.streaming,
175
111
  thinkingSteps: options.thinkingSteps,
176
112
  suggestedPrompts: options.suggestedPrompts,
177
113
  suggestedPromptsTitle: options.suggestedPromptsTitle,
@@ -192,9 +128,8 @@ export function slackChannel(authored = {}) {
192
128
  eventIds, host: args.host, artifacts: args.artifacts, log: getLog(), mentionsEnabled,
193
129
  directMessagesEnabled,
194
130
  evalCommandsEnabled,
195
- followUpStatus,
196
- // cursorAccount: backend router already refuses externals.
197
- blockExternals: cursorAccount ? false : blockExternals }), (args.hasContinuationSession === undefined
131
+ followUpStatus,
132
+ blockExternals }), (args.hasContinuationSession === undefined
198
133
  ? {}
199
134
  : { hasContinuationSession: args.hasContinuationSession })), (args.isContinuationBusy === undefined
200
135
  ? {}
@@ -210,7 +145,7 @@ export function slackChannel(authored = {}) {
210
145
  auth: [allowAll()],
211
146
  state: emptySlackChannelState(),
212
147
  routes: [],
213
- meta: Object.assign(Object.assign({ kind: "slack" }, (cursorAccount ? { slackCursorAccount: true } : {})), (channelPosts === undefined
148
+ meta: Object.assign({ kind: "slack" }, (channelPosts === undefined
214
149
  ? {}
215
150
  : { slackChannelPosts: [...channelPosts.allow] })),
216
151
  receive(input_1, _a) {
@@ -253,13 +188,6 @@ export function slackChannel(authored = {}) {
253
188
  return __awaiter(this, void 0, void 0, function* () {
254
189
  var _a, _b, _c, _d, _e, _f;
255
190
  runtime.log = createSlackLogger((_a = args.logger) !== null && _a !== void 0 ? _a : options.logger);
256
- if (cursorAccount) {
257
- // Inbound arrives through the serve host's Cursor Slack relay
258
- // (`/v0/slack-events`), not Socket Mode; outbound goes through the
259
- // bound API transport. Nothing to start here.
260
- getLog().info("channel start", { transport: "cursor-account" });
261
- return;
262
- }
263
191
  getLog().info("channel start", { transport: "socket" });
264
192
  const appToken = yield tryResolveAppToken(credentials);
265
193
  const botToken = yield tryResolveBotToken(credentials);
@@ -446,19 +374,5 @@ export function slackChannel(authored = {}) {
446
374
  }),
447
375
  });
448
376
  slackChannelOptionsByDefinition.set(definition, options);
449
- if (accountTransport !== undefined) {
450
- // Serve-time seam: the host discovers cursor-account channels through
451
- // this registry, binds the outbound transport, and dispatches relayed
452
- // inbound envelopes through the pack's normal path.
453
- registerSlackCursorAccountRuntime(definition, {
454
- options,
455
- credentials,
456
- transport: accountTransport,
457
- eventIds,
458
- onAppMention,
459
- onDirectMessage,
460
- getLog,
461
- });
462
- }
463
377
  return definition;
464
378
  }
@@ -5,14 +5,13 @@ import type { ContinuationIdentity } from "../../continuation.js";
5
5
  import type { AgentCloudOptions, ArtifactsApi, AuthContext, ChannelEventHandlers, HostContext } from "../../types.js";
6
6
  /**
7
7
  * Pluggable Slack Web API caller. Instead of holding a raw `xoxb-…` token,
8
- * calls are executed by `call` e.g. proxied through the Cursor backend
9
- * with the signed-in account's Slack connection (`cursorAccount: true`).
10
- * Implementations return the Slack response body (including `ok: false`
11
- * platform errors) and only throw on programmer error.
8
+ * calls are executed by `call`. Implementations return the Slack response
9
+ * body (including `ok: false` platform errors) and only throw on
10
+ * programmer error.
12
11
  */
13
12
  export interface SlackApiTransport {
14
13
  kind: "api-transport";
15
- /** Human-readable transport label for logs (e.g. `cursor-account`). */
14
+ /** Human-readable transport label for logs. */
16
15
  label: string;
17
16
  call(method: string, args: Record<string, unknown>): Promise<Record<string, unknown>>;
18
17
  }
@@ -101,8 +100,8 @@ export interface SlackMessageFile {
101
100
  mode?: string;
102
101
  size?: number;
103
102
  /**
104
- * When set (cursorAccount relay), bytes were already downloaded by the
105
- * Cursor backend — skip a second `files.info` / private URL fetch.
103
+ * When set, bytes were already downloaded by the caller. Skip a second
104
+ * `files.info` / private URL fetch.
106
105
  */
107
106
  dataBase64?: string;
108
107
  }
@@ -291,8 +290,7 @@ export interface SlackChannelPostsOptions {
291
290
  * channel the bot is in. Must be non-empty (empty is a definition error).
292
291
  * `#names` are resolved to ids via `conversations.list` when the channel
293
292
  * starts; the bot must be a member of each watched channel to receive its
294
- * messages. Socket Mode only — `cursorAccount: true` rejects
295
- * `engagement.channelPosts`.
293
+ * messages.
296
294
  *
297
295
  * `"*"` suits agents whose handler decides per message (a thread the agent
298
296
  * is already in, say) rather than per channel. Every delivered message then
@@ -341,11 +339,8 @@ export interface SlackBotMentionsOptions {
341
339
  * - `"U…"` — a bot *user* id.
342
340
  * - `"<botId>:<username>"` — compound: the posting app's `bot_id` AND its
343
341
  * message `username` must both match (case-insensitive username). Use
344
- * this for shared multi-tenant apps like the Cursor Slack connection,
345
- * where every agent posts under one `bot_id` but the backend pins each
346
- * agent's `username` server-side — `"B0CURSOR…:Lasso"` trusts only the
347
- * Cursor app posting as Lasso, not every Cursor-connected agent.
348
- * Fails closed when the event carries no username.
342
+ * this when several agents post through one app under different
343
+ * usernames. Fails closed when the event carries no username.
349
344
  *
350
345
  * Must be non-empty (empty is a definition error).
351
346
  */
@@ -388,29 +383,9 @@ export interface SlackEngagementOptions {
388
383
  channelPosts?: SlackChannelPostsOptions;
389
384
  /**
390
385
  * Opt-in bot-to-bot mention wake (see {@link SlackBotMentionsOptions}).
391
- * Socket Mode only — rejected on `cursorAccount: true`.
392
386
  */
393
387
  botMentions?: SlackBotMentionsOptions;
394
388
  }
395
- /**
396
- * Whitespace forbidden in {@link SlackChannelOptions.agentName}. The Cursor
397
- * Slack router matches on leading words; multi-word names collide with Named
398
- * Agent shortened-prefix matching (`Approval …` stealing `ApprovalBuddy`).
399
- */
400
- type SlackAgentNameWhitespace = " " | "\t" | "\n" | "\r" | "\f" | "\v";
401
- /**
402
- * Single-token Cursor Slack handle for `cursorAccount` routing
403
- * (`@Cursor <name> …`). String literals that contain whitespace become
404
- * `never` (type error at the call site); plain `string` stays `string` and
405
- * is still rejected at runtime by {@link assertSlackCursorAgentName}.
406
- */
407
- export type SlackCursorAgentName<S extends string = string> = string extends S ? string : S extends `${string}${SlackAgentNameWhitespace}${string}` ? never : S;
408
- /**
409
- * Runtime guard for {@link SlackChannelOptions.agentName}. Call from
410
- * `slackChannel({ cursorAccount: true })` construction and serve-time
411
- * name resolution so derived defaults cannot sneak spaces in.
412
- */
413
- export declare function assertSlackCursorAgentName(name: string): void;
414
389
  /** `"thread"` = anyone in the thread (default); `"author"` = session starter only. */
415
390
  export type SlackRespondTo = "thread" | "author";
416
391
  export interface SlackAccessPolicy {
@@ -436,41 +411,6 @@ export interface SlackChannelOptions {
436
411
  * Ignored when `credentials` is set explicitly.
437
412
  */
438
413
  envPrefix?: string;
439
- /**
440
- * Use the signed-in Cursor account's Slack connection instead of a
441
- * dedicated Slack app: no bot/app tokens, no extra install. Inbound
442
- * traffic (`@Cursor <agent name> …` mentions, replies in threads the
443
- * agent owns, and DMs) is relayed from the Cursor backend
444
- * (`/v0/slack-events`), and outbound Web API calls are proxied through it
445
- * — the agent posts as the Cursor Slack app with this agent's name and
446
- * icon.
447
- *
448
- * Both paths stay first-class: omit this (default) for the classic
449
- * Socket-Mode channel with your own Slack app and tokens. Requires a
450
- * signed-in host (`agent-serve login` / `CURSOR_API_KEY`) and a Slack
451
- * account linked to the Cursor account. Mutually exclusive with
452
- * `credentials` / `envPrefix`. `engagement.mentions: false` and
453
- * `engagement.directMessages: false` are rejected (the relay always
454
- * carries that traffic). Channel watching (`engagement.channelPosts`) and
455
- * tool approvals / interactivity (`toolApprovals` / `interactivity`) are
456
- * Socket Mode only — not supported on cursorAccount; agents must be
457
- * explicitly addressed, and Approve/Deny buttons need a dedicated Slack
458
- * app.
459
- */
460
- cursorAccount?: boolean;
461
- /**
462
- * Single-token display name registered with the Cursor backend when
463
- * {@link cursorAccount} is on: `@Cursor <agentName> …` routes here, and
464
- * replies post under this username. **No whitespace** — prefer PascalCase
465
- * (`ApprovalBuddy`). Defaults to a PascalCase name derived from the
466
- * agent's mount slug (or project name).
467
- */
468
- agentName?: SlackCursorAgentName;
469
- /** Avatar for posts when {@link cursorAccount} is on. */
470
- agentIcon?: {
471
- url?: string;
472
- emoji?: string;
473
- };
474
414
  /**
475
415
  * Optional log sink. When omitted, uses `console.log` until the server
476
416
  * mounts the channel and rebinds to {@link ServeOptions.logger}.
@@ -508,9 +448,7 @@ export interface SlackChannelOptions {
508
448
  deliverDefaults?: boolean;
509
449
  /**
510
450
  * Stream assistant text while the turn runs via `chat.startStream` /
511
- * `appendStream` / `stopStream` (defaults to `true` for Socket Mode).
512
- * Ignored when {@link cursorAccount} is on — that path never edits posts
513
- * (`setStatus` + one final `chat.postMessage` only).
451
+ * `appendStream` / `stopStream` (defaults to `true`).
514
452
  */
515
453
  streaming?: boolean;
516
454
  /**
@@ -533,9 +471,7 @@ export interface SlackChannelOptions {
533
471
  *
534
472
  * Framework park/resume is enabled by `needsApproval` on server tools.
535
473
  * Set this to `true` to also post Block Kit Approve/Deny cards and route
536
- * the Socket Mode `interactive` clicks to `resolveApproval`. Socket Mode
537
- * only — rejected on `cursorAccount: true` (the Cursor Slack connection
538
- * does not relay Block Kit clicks).
474
+ * the Socket Mode `interactive` clicks to `resolveApproval`.
539
475
  *
540
476
  * Defaults to `false`. For custom composition, spread
541
477
  * `buildToolApprovalEvents({ credentials })` into `events`.
@@ -544,8 +480,7 @@ export interface SlackChannelOptions {
544
480
  /**
545
481
  * Route interactive payloads to approval resolution without opting into
546
482
  * the full {@link buildToolApprovalEvents} handler pack. Use when
547
- * composing `buildToolApprovalEvents` into `events` manually. Socket Mode
548
- * only — rejected on `cursorAccount: true`.
483
+ * composing `buildToolApprovalEvents` into `events` manually.
549
484
  */
550
485
  interactivity?: boolean;
551
486
  /**
@@ -557,7 +492,6 @@ export interface SlackChannelOptions {
557
492
  * thread, or `null` to ignore the click. Setting this implies
558
493
  * interactive routing; the Slack app manifest still needs
559
494
  * `interactivity` enabled (`buildSlackManifest({ interactivity: true })`).
560
- * Socket Mode only — rejected on `cursorAccount: true`.
561
495
  */
562
496
  onBlockAction?: SlackBlockActionHandler;
563
497
  /**
@@ -622,5 +556,4 @@ export type SoftSlackResult<T extends Record<string, unknown> = Record<string, u
622
556
  error: string;
623
557
  unsupported?: boolean;
624
558
  };
625
- export {};
626
559
  //# sourceMappingURL=types.d.ts.map