@cursor/july 0.1.90 → 0.1.92

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 (335) hide show
  1. package/AGENTS.md +12 -0
  2. package/README.md +8 -7
  3. package/dist/channels/slack/channel-watch.d.ts +1 -1
  4. package/dist/channels/slack/channel-watch.js +1 -1
  5. package/dist/channels/slack/slack-channel.js +1 -1
  6. package/dist/channels/slack/types.d.ts +2 -4
  7. package/dist/channels/slack/types.d.ts.map +1 -1
  8. package/dist/docs/404.html +5 -3
  9. package/dist/docs/ab.html +9 -7
  10. package/dist/docs/ab.md +338 -0
  11. package/dist/docs/assets/{ab.md.DYjwREAP.js → ab.md.CVzWxLoB.js} +1 -1
  12. package/dist/docs/assets/{ab.md.DYjwREAP.lean.js → ab.md.CVzWxLoB.lean.js} +1 -1
  13. package/dist/docs/assets/{app.wiNkt6G7.js → app.Bci6CM9E.js} +1 -1
  14. package/dist/docs/assets/{building-with-agents.md.PeZaZA1P.js → building-with-agents.md.DH8A_cHA.js} +1 -1
  15. package/dist/docs/assets/{building-with-agents.md.PeZaZA1P.lean.js → building-with-agents.md.DH8A_cHA.lean.js} +1 -1
  16. package/dist/docs/assets/chunks/@localSearchIndexroot.Dv-Q0XtU.js +1 -0
  17. package/dist/docs/assets/chunks/{VPLocalSearchBox.ByhUGu47.js → VPLocalSearchBox.BCPT6xA-.js} +1 -1
  18. package/dist/docs/assets/chunks/{framework.CAZyNGu9.js → framework.BCISBCiQ.js} +1 -1
  19. package/dist/docs/assets/chunks/theme.BEA8BF3c.js +2 -0
  20. package/dist/docs/assets/{concepts.md.2NfkGjqM.js → concepts.md.CRfU3bVg.js} +1 -1
  21. package/dist/docs/assets/{concepts.md.2NfkGjqM.lean.js → concepts.md.CRfU3bVg.lean.js} +1 -1
  22. package/dist/docs/assets/{deployment.md.B8kW-h7P.js → deployment.md.DX_hc3ze.js} +6 -5
  23. package/dist/docs/assets/{deployment.md.B8kW-h7P.lean.js → deployment.md.DX_hc3ze.lean.js} +1 -1
  24. package/dist/docs/assets/{evals.md.CVe_O75-.js → evals.md.a0SMN6r9.js} +3 -3
  25. package/dist/docs/assets/{evals.md.CVe_O75-.lean.js → evals.md.a0SMN6r9.lean.js} +1 -1
  26. package/dist/docs/assets/{example-agents_approval-buddy.md.CIiZ9coo.js → example-agents_approval-buddy.md.DNL83puR.js} +1 -1
  27. package/dist/docs/assets/{example-agents_approval-buddy.md.CIiZ9coo.lean.js → example-agents_approval-buddy.md.DNL83puR.lean.js} +1 -1
  28. package/dist/docs/assets/{example-agents_benny.md.B-LIDGja.js → example-agents_benny.md.C40vHRLc.js} +1 -1
  29. package/dist/docs/assets/{example-agents_benny.md.B-LIDGja.lean.js → example-agents_benny.md.C40vHRLc.lean.js} +1 -1
  30. package/dist/docs/assets/{example-agents_bugbot.md.Dp5JqHSQ.js → example-agents_bugbot.md.BRGMi9O2.js} +1 -1
  31. package/dist/docs/assets/{example-agents_bugbot.md.Dp5JqHSQ.lean.js → example-agents_bugbot.md.BRGMi9O2.lean.js} +1 -1
  32. package/dist/docs/assets/{example-agents_codebase-wiki.md.D-lteFf0.js → example-agents_codebase-wiki.md.Dftj_tPp.js} +1 -1
  33. package/dist/docs/assets/{example-agents_codebase-wiki.md.D-lteFf0.lean.js → example-agents_codebase-wiki.md.Dftj_tPp.lean.js} +1 -1
  34. package/dist/docs/assets/{example-agents_codeowners-review.md.BU2ZXLf-.js → example-agents_codeowners-review.md.Bfta-lBU.js} +1 -1
  35. package/dist/docs/assets/{example-agents_codeowners-review.md.BU2ZXLf-.lean.js → example-agents_codeowners-review.md.Bfta-lBU.lean.js} +1 -1
  36. package/dist/docs/assets/{example-agents_concierge.md.DA2al_NK.js → example-agents_concierge.md.MrKpQndp.js} +1 -1
  37. package/dist/docs/assets/{example-agents_concierge.md.DA2al_NK.lean.js → example-agents_concierge.md.MrKpQndp.lean.js} +1 -1
  38. package/dist/docs/assets/{example-agents_fsd.md.ZeGEpAw_.js → example-agents_fsd.md.ZWHWWZPE.js} +1 -1
  39. package/dist/docs/assets/{example-agents_fsd.md.ZeGEpAw_.lean.js → example-agents_fsd.md.ZWHWWZPE.lean.js} +1 -1
  40. package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.js +2 -0
  41. package/dist/docs/assets/{example-agents_index.md.xmJ87d_3.lean.js → example-agents_index.md.QZ8mhr6n.lean.js} +1 -1
  42. package/dist/docs/assets/{example-agents_knowledge-base.md.IneynQSR.js → example-agents_knowledge-base.md.DqKqHQ9u.js} +1 -1
  43. package/dist/docs/assets/{example-agents_knowledge-base.md.IneynQSR.lean.js → example-agents_knowledge-base.md.DqKqHQ9u.lean.js} +1 -1
  44. package/dist/docs/assets/{example-agents_oncall.md.CBmyuAKc.js → example-agents_oncall.md.DK4XkYTd.js} +1 -1
  45. package/dist/docs/assets/{example-agents_oncall.md.CBmyuAKc.lean.js → example-agents_oncall.md.DK4XkYTd.lean.js} +1 -1
  46. package/dist/docs/assets/{example-agents_security-reviewer.md.DBL1TwtP.js → example-agents_security-reviewer.md.Bai6D0Ee.js} +4 -4
  47. package/dist/docs/assets/{example-agents_security-reviewer.md.DBL1TwtP.lean.js → example-agents_security-reviewer.md.Bai6D0Ee.lean.js} +1 -1
  48. package/dist/docs/assets/{example-agents_slack-agent.md.06jQXTAI.js → example-agents_slack-agent.md.D7Kdj5BV.js} +1 -1
  49. package/dist/docs/assets/{example-agents_slack-agent.md.06jQXTAI.lean.js → example-agents_slack-agent.md.D7Kdj5BV.lean.js} +1 -1
  50. package/dist/docs/assets/{example-agents_weather-agent.md.DC3lINjo.js → example-agents_weather-agent.md.lVEAbWFf.js} +5 -5
  51. package/dist/docs/assets/example-agents_weather-agent.md.lVEAbWFf.lean.js +1 -0
  52. package/dist/docs/assets/{guides_agent-to-agent.md.Bmbxy-FA.js → guides_agent-to-agent.md.BCeVdJRJ.js} +1 -1
  53. package/dist/docs/assets/{guides_agent-to-agent.md.Bmbxy-FA.lean.js → guides_agent-to-agent.md.BCeVdJRJ.lean.js} +1 -1
  54. package/dist/docs/assets/{guides_cloud-runtime.md.CbklWfzh.js → guides_cloud-runtime.md.BSMLIBHr.js} +1 -1
  55. package/dist/docs/assets/{guides_cloud-runtime.md.CbklWfzh.lean.js → guides_cloud-runtime.md.BSMLIBHr.lean.js} +1 -1
  56. package/dist/docs/assets/{guides_convert-automation.md.BhMzTkE5.js → guides_convert-automation.md.D06eIzea.js} +1 -1
  57. package/dist/docs/assets/{guides_convert-automation.md.BhMzTkE5.lean.js → guides_convert-automation.md.D06eIzea.lean.js} +1 -1
  58. package/dist/docs/assets/{guides_github.md.CLLQJKRB.js → guides_github.md.Cdt1s2QC.js} +4 -4
  59. package/dist/docs/assets/{guides_github.md.CLLQJKRB.lean.js → guides_github.md.Cdt1s2QC.lean.js} +1 -1
  60. package/dist/docs/assets/{guides_human-in-the-loop.md.Cf8kIIqC.js → guides_human-in-the-loop.md.By1G2T3_.js} +1 -1
  61. package/dist/docs/assets/{guides_human-in-the-loop.md.Cf8kIIqC.lean.js → guides_human-in-the-loop.md.By1G2T3_.lean.js} +1 -1
  62. package/dist/docs/assets/{guides_mcp-oauth.md.CzEB6RaG.js → guides_mcp-oauth.md.Du0f7pGU.js} +1 -1
  63. package/dist/docs/assets/{guides_mcp-oauth.md.CzEB6RaG.lean.js → guides_mcp-oauth.md.Du0f7pGU.lean.js} +1 -1
  64. package/dist/docs/assets/{guides_opentelemetry.md.Csn7ZI25.js → guides_opentelemetry.md.bmPmkvJu.js} +1 -1
  65. package/dist/docs/assets/{guides_opentelemetry.md.Csn7ZI25.lean.js → guides_opentelemetry.md.bmPmkvJu.lean.js} +1 -1
  66. package/dist/docs/assets/{guides_slack.md.DP4H75WP.js → guides_slack.md.DiUmk_Oi.js} +5 -5
  67. package/dist/docs/assets/{guides_slack.md.DP4H75WP.lean.js → guides_slack.md.DiUmk_Oi.lean.js} +1 -1
  68. package/dist/docs/assets/{guides_webhooks.md.DB-r_er9.js → guides_webhooks.md.BpnIdO0i.js} +5 -6
  69. package/dist/docs/assets/{guides_webhooks.md.DB-r_er9.lean.js → guides_webhooks.md.BpnIdO0i.lean.js} +1 -1
  70. package/dist/docs/assets/{hillclimbing.md.yXqdlv2R.js → hillclimbing.md.ywF3yDAd.js} +1 -1
  71. package/dist/docs/assets/{hillclimbing.md.yXqdlv2R.lean.js → hillclimbing.md.ywF3yDAd.lean.js} +1 -1
  72. package/dist/docs/assets/index.md.BAaMXLFd.js +5 -0
  73. package/dist/docs/assets/{index.md.DhRHS_-L.lean.js → index.md.BAaMXLFd.lean.js} +1 -1
  74. package/dist/docs/assets/{quickstart.md.DZxBu44y.js → quickstart.md.DsrarzEg.js} +1 -1
  75. package/dist/docs/assets/{quickstart.md.DZxBu44y.lean.js → quickstart.md.DsrarzEg.lean.js} +1 -1
  76. package/dist/docs/assets/{reference_agent-config.md.CTWp4DnU.js → reference_agent-config.md.Bqylgw50.js} +1 -1
  77. package/dist/docs/assets/{reference_agent-config.md.CTWp4DnU.lean.js → reference_agent-config.md.Bqylgw50.lean.js} +1 -1
  78. package/dist/docs/assets/{reference_artifacts.md.BGG4bZo-.js → reference_artifacts.md.Dior32Qw.js} +1 -1
  79. package/dist/docs/assets/{reference_artifacts.md.BGG4bZo-.lean.js → reference_artifacts.md.Dior32Qw.lean.js} +1 -1
  80. package/dist/docs/assets/{reference_channels.md.CboFd5IH.js → reference_channels.md.DQZjCnyh.js} +2 -2
  81. package/dist/docs/assets/{reference_channels.md.CboFd5IH.lean.js → reference_channels.md.DQZjCnyh.lean.js} +1 -1
  82. package/dist/docs/assets/{reference_cli.md.TAaYU8br.js → reference_cli.md.B7GkAJRC.js} +8 -7
  83. package/dist/docs/assets/{reference_cli.md.TAaYU8br.lean.js → reference_cli.md.B7GkAJRC.lean.js} +1 -1
  84. package/dist/docs/assets/{reference_connections.md.Cu3N-S3Q.js → reference_connections.md.DYidrb-j.js} +5 -5
  85. package/dist/docs/assets/{reference_connections.md.Cu3N-S3Q.lean.js → reference_connections.md.DYidrb-j.lean.js} +1 -1
  86. package/dist/docs/assets/{reference_hooks.md.DJE5DXcT.js → reference_hooks.md.B9FSgdDe.js} +1 -1
  87. package/dist/docs/assets/{reference_hooks.md.DJE5DXcT.lean.js → reference_hooks.md.B9FSgdDe.lean.js} +1 -1
  88. package/dist/docs/assets/{reference_http-api.md.DMbdFGVQ.js → reference_http-api.md.CSHVobzG.js} +4 -4
  89. package/dist/docs/assets/{reference_http-api.md.DMbdFGVQ.lean.js → reference_http-api.md.CSHVobzG.lean.js} +1 -1
  90. package/dist/docs/assets/{reference_instructions.md.CgoV-YEb.js → reference_instructions.md.DhNCOl7r.js} +1 -1
  91. package/dist/docs/assets/{reference_instructions.md.CgoV-YEb.lean.js → reference_instructions.md.DhNCOl7r.lean.js} +1 -1
  92. package/dist/docs/assets/{reference_playground.md.CPZhfYaO.js → reference_playground.md.Dfb92yQf.js} +1 -1
  93. package/dist/docs/assets/{reference_playground.md.CPZhfYaO.lean.js → reference_playground.md.Dfb92yQf.lean.js} +1 -1
  94. package/dist/docs/assets/{reference_project-layout.md.CueaKpjr.js → reference_project-layout.md.CwkSbEWT.js} +1 -1
  95. package/dist/docs/assets/{reference_project-layout.md.CueaKpjr.lean.js → reference_project-layout.md.CwkSbEWT.lean.js} +1 -1
  96. package/dist/docs/assets/{reference_prompt.md.BaiweQxE.js → reference_prompt.md.DZUMtLPD.js} +1 -1
  97. package/dist/docs/assets/{reference_prompt.md.BaiweQxE.lean.js → reference_prompt.md.DZUMtLPD.lean.js} +1 -1
  98. package/dist/docs/assets/{reference_schedules.md.gmfYzf_I.js → reference_schedules.md.DNipebiG.js} +1 -1
  99. package/dist/docs/assets/{reference_schedules.md.gmfYzf_I.lean.js → reference_schedules.md.DNipebiG.lean.js} +1 -1
  100. package/dist/docs/assets/{reference_sessions.md.B0DdlM-K.js → reference_sessions.md.tUFzz98S.js} +1 -1
  101. package/dist/docs/assets/{reference_sessions.md.B0DdlM-K.lean.js → reference_sessions.md.tUFzz98S.lean.js} +1 -1
  102. package/dist/docs/assets/{reference_skills.md.BRF2nDv9.js → reference_skills.md.B5ZEuHfG.js} +1 -1
  103. package/dist/docs/assets/{reference_skills.md.BRF2nDv9.lean.js → reference_skills.md.B5ZEuHfG.lean.js} +1 -1
  104. package/dist/docs/assets/{reference_subagents.md.DSrGLIuB.js → reference_subagents.md.Xoav0AII.js} +1 -1
  105. package/dist/docs/assets/{reference_subagents.md.DSrGLIuB.lean.js → reference_subagents.md.Xoav0AII.lean.js} +1 -1
  106. package/dist/docs/assets/{reference_tools.md.XmeFP_3d.js → reference_tools.md.wpaJtHn6.js} +2 -3
  107. package/dist/docs/assets/{reference_tools.md.XmeFP_3d.lean.js → reference_tools.md.wpaJtHn6.lean.js} +1 -1
  108. package/dist/docs/assets/{scaffolding-agents.md.BpMFXv2J.js → scaffolding-agents.md.CRDDUtYJ.js} +1 -1
  109. package/dist/docs/assets/{scaffolding-agents.md.BpMFXv2J.lean.js → scaffolding-agents.md.CRDDUtYJ.lean.js} +1 -1
  110. package/dist/docs/assets/{storage.md.ks1u64_R.js → storage.md.JbjlHWZ6.js} +1 -1
  111. package/dist/docs/assets/{storage.md.ks1u64_R.lean.js → storage.md.JbjlHWZ6.lean.js} +1 -1
  112. package/dist/docs/assets/{style.kTsvp4pE.css → style.BRuM8477.css} +1 -1
  113. package/dist/docs/assets/{templates_agentic-owners.md.BkTLORaU.js → templates_agentic-owners.md.DSJSIpWU.js} +1 -1
  114. package/dist/docs/assets/{templates_agentic-owners.md.BkTLORaU.lean.js → templates_agentic-owners.md.DSJSIpWU.lean.js} +1 -1
  115. package/dist/docs/assets/{templates_demo.md.Bgd6MBaZ.js → templates_demo.md.DhFcWN6j.js} +1 -1
  116. package/dist/docs/assets/{templates_demo.md.Bgd6MBaZ.lean.js → templates_demo.md.DhFcWN6j.lean.js} +1 -1
  117. package/dist/docs/assets/{templates_pr-autofixer.md.DcmoeUNZ.js → templates_pr-autofixer.md.1HAR3RXE.js} +1 -1
  118. package/dist/docs/assets/{templates_pr-autofixer.md.DcmoeUNZ.lean.js → templates_pr-autofixer.md.1HAR3RXE.lean.js} +1 -1
  119. package/dist/docs/assets/{templates_security-reviewer.md.C0yIUaYs.js → templates_security-reviewer.md.ByFyRta2.js} +1 -1
  120. package/dist/docs/assets/{templates_security-reviewer.md.C0yIUaYs.lean.js → templates_security-reviewer.md.ByFyRta2.lean.js} +1 -1
  121. package/dist/docs/assets/{templates_triage.md.DWuQ1bZz.js → templates_triage.md.CVlpctKS.js} +2 -2
  122. package/dist/docs/assets/{templates_triage.md.DWuQ1bZz.lean.js → templates_triage.md.CVlpctKS.lean.js} +1 -1
  123. package/dist/docs/assets/troubleshooting.md.DYECCZiJ.js +1 -0
  124. package/dist/docs/assets/{troubleshooting.md.KgmmaCgw.lean.js → troubleshooting.md.DYECCZiJ.lean.js} +1 -1
  125. package/dist/docs/building-with-agents.html +9 -7
  126. package/dist/docs/building-with-agents.md +124 -0
  127. package/dist/docs/concepts.html +9 -7
  128. package/dist/docs/concepts.md +174 -0
  129. package/dist/docs/deployment.html +13 -10
  130. package/dist/docs/deployment.md +464 -0
  131. package/dist/docs/evals.html +10 -8
  132. package/dist/docs/evals.md +481 -0
  133. package/dist/docs/example-agents/approval-buddy.html +9 -7
  134. package/dist/docs/example-agents/approval-buddy.md +266 -0
  135. package/dist/docs/example-agents/benny.html +9 -7
  136. package/dist/docs/example-agents/benny.md +182 -0
  137. package/dist/docs/example-agents/bugbot.html +9 -7
  138. package/dist/docs/example-agents/bugbot.md +229 -0
  139. package/dist/docs/example-agents/codebase-wiki.html +9 -7
  140. package/dist/docs/example-agents/codebase-wiki.md +170 -0
  141. package/dist/docs/example-agents/codeowners-review.html +9 -7
  142. package/dist/docs/example-agents/codeowners-review.md +192 -0
  143. package/dist/docs/example-agents/concierge.html +9 -7
  144. package/dist/docs/example-agents/concierge.md +201 -0
  145. package/dist/docs/example-agents/fsd.html +9 -7
  146. package/dist/docs/example-agents/fsd.md +329 -0
  147. package/dist/docs/example-agents/index.html +9 -7
  148. package/dist/docs/example-agents/index.md +102 -0
  149. package/dist/docs/example-agents/knowledge-base.html +9 -7
  150. package/dist/docs/example-agents/knowledge-base.md +168 -0
  151. package/dist/docs/example-agents/oncall.html +9 -7
  152. package/dist/docs/example-agents/oncall.md +212 -0
  153. package/dist/docs/example-agents/security-reviewer.html +12 -10
  154. package/dist/docs/example-agents/security-reviewer.md +265 -0
  155. package/dist/docs/example-agents/slack-agent.html +9 -7
  156. package/dist/docs/example-agents/slack-agent.md +142 -0
  157. package/dist/docs/example-agents/weather-agent.html +14 -12
  158. package/dist/docs/example-agents/weather-agent.md +296 -0
  159. package/dist/docs/guides/agent-to-agent.html +9 -7
  160. package/dist/docs/guides/agent-to-agent.md +113 -0
  161. package/dist/docs/guides/cloud-runtime.html +9 -7
  162. package/dist/docs/guides/cloud-runtime.md +131 -0
  163. package/dist/docs/guides/convert-automation.html +9 -7
  164. package/dist/docs/guides/convert-automation.md +171 -0
  165. package/dist/docs/guides/github.html +11 -9
  166. package/dist/docs/guides/github.md +287 -0
  167. package/dist/docs/guides/human-in-the-loop.html +9 -7
  168. package/dist/docs/guides/human-in-the-loop.md +126 -0
  169. package/dist/docs/guides/mcp-oauth.html +9 -7
  170. package/dist/docs/guides/mcp-oauth.md +159 -0
  171. package/dist/docs/guides/opentelemetry.html +9 -7
  172. package/dist/docs/guides/opentelemetry.md +209 -0
  173. package/dist/docs/guides/slack.html +12 -10
  174. package/dist/docs/guides/slack.md +337 -0
  175. package/dist/docs/guides/webhooks.html +12 -11
  176. package/dist/docs/guides/webhooks.md +463 -0
  177. package/dist/docs/hashmap.json +1 -1
  178. package/dist/docs/hillclimbing.html +9 -7
  179. package/dist/docs/hillclimbing.md +88 -0
  180. package/dist/docs/index.html +10 -8
  181. package/dist/docs/index.md +179 -0
  182. package/dist/docs/llms-full.txt +11518 -0
  183. package/dist/docs/llms.txt +75 -0
  184. package/dist/docs/quickstart.html +9 -7
  185. package/dist/docs/quickstart.md +364 -0
  186. package/dist/docs/reference/agent-config.html +9 -7
  187. package/dist/docs/reference/agent-config.md +256 -0
  188. package/dist/docs/reference/artifacts.html +9 -7
  189. package/dist/docs/reference/artifacts.md +112 -0
  190. package/dist/docs/reference/channels.html +10 -8
  191. package/dist/docs/reference/channels.md +255 -0
  192. package/dist/docs/reference/cli.html +15 -12
  193. package/dist/docs/reference/cli.md +957 -0
  194. package/dist/docs/reference/connections.html +12 -10
  195. package/dist/docs/reference/connections.md +268 -0
  196. package/dist/docs/reference/hooks.html +9 -7
  197. package/dist/docs/reference/hooks.md +102 -0
  198. package/dist/docs/reference/http-api.html +12 -10
  199. package/dist/docs/reference/http-api.md +267 -0
  200. package/dist/docs/reference/instructions.html +9 -7
  201. package/dist/docs/reference/instructions.md +74 -0
  202. package/dist/docs/reference/playground.html +9 -7
  203. package/dist/docs/reference/playground.md +62 -0
  204. package/dist/docs/reference/project-layout.html +9 -7
  205. package/dist/docs/reference/project-layout.md +107 -0
  206. package/dist/docs/reference/prompt.html +9 -7
  207. package/dist/docs/reference/prompt.md +42 -0
  208. package/dist/docs/reference/schedules.html +9 -7
  209. package/dist/docs/reference/schedules.md +215 -0
  210. package/dist/docs/reference/sessions.html +9 -7
  211. package/dist/docs/reference/sessions.md +170 -0
  212. package/dist/docs/reference/skills.html +9 -7
  213. package/dist/docs/reference/skills.md +83 -0
  214. package/dist/docs/reference/subagents.html +9 -7
  215. package/dist/docs/reference/subagents.md +71 -0
  216. package/dist/docs/reference/tools.html +10 -9
  217. package/dist/docs/reference/tools.md +298 -0
  218. package/dist/docs/scaffolding-agents.html +9 -7
  219. package/dist/docs/scaffolding-agents.md +130 -0
  220. package/dist/docs/storage.html +9 -7
  221. package/dist/docs/storage.md +219 -0
  222. package/dist/docs/templates/agentic-owners.html +9 -7
  223. package/dist/docs/templates/agentic-owners.md +92 -0
  224. package/dist/docs/templates/demo.html +9 -7
  225. package/dist/docs/templates/demo.md +79 -0
  226. package/dist/docs/templates/pr-autofixer.html +9 -7
  227. package/dist/docs/templates/pr-autofixer.md +131 -0
  228. package/dist/docs/templates/security-reviewer.html +9 -7
  229. package/dist/docs/templates/security-reviewer.md +84 -0
  230. package/dist/docs/templates/triage.html +10 -8
  231. package/dist/docs/templates/triage.md +98 -0
  232. package/dist/docs/troubleshooting.html +9 -7
  233. package/dist/docs/troubleshooting.md +111 -0
  234. package/dist/internal/cli-deploy.d.ts.map +1 -1
  235. package/dist/internal/cli-deploy.js +21 -3
  236. package/dist/internal/cursor-agent-template.d.ts +1 -1
  237. package/dist/internal/cursor-agent-template.d.ts.map +1 -1
  238. package/dist/internal/cursor-agent-template.js +1 -0
  239. package/dist/internal/deploy-client.d.ts +18 -0
  240. package/dist/internal/deploy-client.d.ts.map +1 -1
  241. package/dist/internal/deploy-client.js +25 -1
  242. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  243. package/dist/internal/deploy-manifest.js +5 -1
  244. package/dist/internal/discovery.d.ts +5 -1
  245. package/dist/internal/discovery.d.ts.map +1 -1
  246. package/dist/internal/discovery.js +16 -0
  247. package/dist/internal/http-channel.d.ts +2 -2
  248. package/dist/internal/http-channel.d.ts.map +1 -1
  249. package/dist/internal/http-channel.js +11 -31
  250. package/dist/internal/init-project.d.ts.map +1 -1
  251. package/dist/internal/init-project.js +2 -0
  252. package/dist/internal/init-scaffold.d.ts.map +1 -1
  253. package/dist/internal/init-scaffold.js +1 -0
  254. package/dist/internal/playground/static.d.ts.map +1 -1
  255. package/dist/internal/playground/static.js +2 -0
  256. package/dist/internal/session-engine.d.ts +8 -0
  257. package/dist/internal/session-engine.d.ts.map +1 -1
  258. package/dist/internal/session-engine.js +50 -6
  259. package/dist/playground/assets/index-D9N7-q97.css +1 -0
  260. package/dist/playground/assets/{index-DxapiDj_.js → index-DDvyC2z6.js} +49 -49
  261. package/dist/playground/index.html +2 -2
  262. package/dist/types.d.ts +8 -5
  263. package/dist/types.d.ts.map +1 -1
  264. package/docs/README.md +3 -1
  265. package/docs/concepts.md +1 -1
  266. package/docs/deployment.md +9 -6
  267. package/docs/evals.md +1 -5
  268. package/docs/example-agents/codebase-wiki.md +2 -3
  269. package/docs/example-agents/fsd.md +1 -1
  270. package/docs/example-agents/index.md +2 -2
  271. package/docs/example-agents/knowledge-base.md +3 -3
  272. package/docs/example-agents/security-reviewer.md +17 -48
  273. package/docs/example-agents/weather-agent.md +14 -45
  274. package/docs/guides/github.md +7 -4
  275. package/docs/guides/slack.md +7 -2
  276. package/docs/guides/webhooks.md +12 -15
  277. package/docs/reference/channels.md +4 -0
  278. package/docs/reference/cli.md +21 -7
  279. package/docs/reference/connections.md +13 -32
  280. package/docs/reference/http-api.md +14 -9
  281. package/docs/reference/tools.md +1 -3
  282. package/docs/templates/triage.md +3 -5
  283. package/docs/troubleshooting.md +1 -1
  284. package/package.json +2 -2
  285. package/skills/ab/SKILL.md +3 -0
  286. package/skills/create-agent/SKILL.md +9 -7
  287. package/skills/debug/SKILL.md +3 -0
  288. package/skills/evals/SKILL.md +3 -0
  289. package/skills/framework-map/SKILL.md +9 -6
  290. package/skills/github/SKILL.md +3 -0
  291. package/skills/hillclimb/SKILL.md +3 -0
  292. package/skills/mcp-auth/SKILL.md +3 -0
  293. package/skills/otel/SKILL.md +3 -0
  294. package/skills/setup-slack/SKILL.md +4 -1
  295. package/src/channels/slack/channel-watch.ts +1 -1
  296. package/src/channels/slack/slack-channel.ts +1 -1
  297. package/src/channels/slack/types.ts +2 -4
  298. package/src/internal/cli-deploy.ts +27 -7
  299. package/src/internal/cursor-agent-template.ts +1 -0
  300. package/src/internal/deploy-client.ts +40 -1
  301. package/src/internal/deploy-manifest.ts +10 -1
  302. package/src/internal/discovery.ts +20 -0
  303. package/src/internal/http-channel.ts +14 -41
  304. package/src/internal/init-project.ts +2 -0
  305. package/src/internal/init-scaffold.ts +1 -0
  306. package/src/internal/playground/static.ts +2 -0
  307. package/src/internal/session-engine.ts +62 -14
  308. package/src/types.ts +8 -5
  309. package/templates/security-help/README.md +37 -0
  310. package/templates/security-help/agent/agent.ts +18 -0
  311. package/templates/security-help/agent/channels/github.ts +13 -0
  312. package/templates/security-help/agent/channels/slack.ts +89 -0
  313. package/templates/security-help/agent/instructions.md +20 -0
  314. package/templates/security-help/agent/knowledge/faq/approvals.md +5 -0
  315. package/templates/security-help/agent/knowledge/faq/channels.md +6 -0
  316. package/templates/security-help/agent/knowledge/faq/phishing.md +10 -0
  317. package/templates/security-help/agent/lib/pr-first-pass.ts +42 -0
  318. package/templates/security-help/agent/lib/repos.ts +5 -0
  319. package/templates/security-help/agent/skills/access-request.md +10 -0
  320. package/templates/security-help/agent/skills/security-first-pass.md +15 -0
  321. package/templates/security-help/agent/skills/security-playbooks.md +12 -0
  322. package/templates/security-help/agent/skills/security-pr-first-pass.md +12 -0
  323. package/templates/security-help/evals/evals.config.ts +5 -0
  324. package/templates/security-help/evals/security-help.eval.ts +53 -0
  325. package/templates/security-help/init.json +31 -0
  326. package/templates/security-help/package.json +18 -0
  327. package/templates/security-help/tsconfig.json +12 -0
  328. package/templates/triage/agent/channels/webhook.ts +2 -2
  329. package/dist/docs/assets/chunks/@localSearchIndexroot.FV0R6kOb.js +0 -1
  330. package/dist/docs/assets/chunks/theme.Dx7j_-0n.js +0 -2
  331. package/dist/docs/assets/example-agents_index.md.xmJ87d_3.js +0 -2
  332. package/dist/docs/assets/example-agents_weather-agent.md.DC3lINjo.lean.js +0 -1
  333. package/dist/docs/assets/index.md.DhRHS_-L.js +0 -5
  334. package/dist/docs/assets/troubleshooting.md.KgmmaCgw.js +0 -1
  335. package/dist/playground/assets/index-BpVS-paP.css +0 -1
@@ -0,0 +1,337 @@
1
+ # Slack agents
2
+
3
+ The Slack channel puts your agent in Slack. Two products: the Cursor-hosted
4
+ connection (`cursorAccount: true`), or a dedicated Socket Mode app created
5
+ in the dashboard wizard (`agent-sdk slack create`). To own the Slack app
6
+ yourself, run `agent-sdk slack init --manual` and paste the manifests at
7
+ [api.slack.com](https://api.slack.com/apps). Socket Mode has no
8
+ public Request URL. Replies stream in threads, with tool "thinking" steps,
9
+ suggested prompts, and opt-in approval buttons.
10
+
11
+ The companion skill is
12
+ [`skills/setup-slack/SKILL.md`](https://github.com/cursor/cursor/blob/main/packages/agent-serve/skills/setup-slack/SKILL.md).
13
+
14
+ ## Define the channel
15
+
16
+ Author `agent/channels/slack.ts` with `slackChannel()` from
17
+ `@cursor/july/channels/slack`:
18
+
19
+ ```ts
20
+ import { slackChannel } from "@cursor/july/channels/slack";
21
+
22
+ // Single agent: reads SLACK_BOT_TOKEN + SLACK_APP_TOKEN
23
+ export default slackChannel();
24
+
25
+ // Multi-agent serve: one Slack app (and token pair) per agent
26
+ export default slackChannel({ envPrefix: "WEATHER_AGENT" });
27
+ // → WEATHER_AGENT_SLACK_BOT_TOKEN + WEATHER_AGENT_SLACK_APP_TOKEN
28
+ ```
29
+
30
+ By default the channel connects over Socket Mode (the app connects
31
+ outward, so it works from behind any firewall) and responds only to
32
+ `app_mention` events and direct messages. It also refuses Slack Connect
33
+ users, guests, and senders from other workspaces. Threads bind to
34
+ sessions with `continuationToken = channelId:threadTs`, so a thread is
35
+ one durable conversation. Replies stream (`chat.startStream` /
36
+ `appendStream` / `stopStream`) with a plain-message fallback, a rotating
37
+ status shows while the agent works, and the pack sets thread titles and
38
+ suggested prompts. When a Slack API is unavailable (`method_not_found`,
39
+ `missing_scope`), the pack degrades to `postMessage` instead of failing.
40
+
41
+ Missing tokens leave the channel idle (`channel idle … missing
42
+ credentials`) rather than failing `serve`. That's useful when you mount
43
+ many agents and only some have Slack apps.
44
+
45
+ ## Use the Cursor Slack connection
46
+
47
+ If the Cursor Slack app is already installed in your workspace and linked
48
+ to your Cursor account, skip the dedicated Slack app:
49
+
50
+ ```ts
51
+ import { slackChannel } from "@cursor/july/channels/slack";
52
+
53
+ export default slackChannel({
54
+ cursorAccount: true,
55
+ agentName: "Weatherbot", // single token — no spaces; defaults from mount slug (PascalCase)
56
+ agentIcon: { emoji: ":robot_face:" },
57
+ });
58
+ ```
59
+
60
+ Sign the host in (`agent-sdk login` or `CURSOR_API_KEY`), then mention the
61
+ agent in Slack as `@Cursor Weatherbot …`. Thread replies and DMs keep going to
62
+ the same agent. Messages appear as the Cursor app under that agent's name
63
+ and icon. Slack shows its working status, then posts one final reply.
64
+
65
+ Use a dedicated Socket Mode Slack app when you need your own bot user,
66
+ channel watching (`engagement.channelPosts`), or approval buttons. On
67
+ `cursorAccount`, agents must be explicitly addressed (@mention, DM, or
68
+ claimed-thread reply). Channel watching and `toolApprovals` /
69
+ `interactivity` are Socket Mode only; the Cursor connection does not relay
70
+ Block Kit clicks. Agent names must be unique on the host; an unmatched
71
+ `@Cursor <name>` stays on Cursor's normal Slack agent.
72
+
73
+ ## Control who can message the agent
74
+
75
+ External senders are blocked by default. Slack Connect users, guests, and
76
+ people whose home workspace is not the install team never reach the
77
+ handler. That applies to Socket Mode and `cursorAccount: true`. Set
78
+ `blockExternals: false` only when the agent should serve people outside
79
+ your org:
80
+
81
+ ```ts
82
+ export default slackChannel({
83
+ policy: { blockExternals: false },
84
+ });
85
+ ```
86
+
87
+ Sessions are thread-scoped by default, so anyone in the thread can
88
+ continue. Restrict follow-ups to the person who started the session with
89
+ `respondTo: "author"`:
90
+
91
+ ```ts
92
+ export default slackChannel({
93
+ policy: { respondTo: "author" },
94
+ });
95
+ ```
96
+
97
+ ## Set it up
98
+
99
+ For a dedicated Socket Mode bot, run `agent-sdk slack create`. The CLI
100
+ opens the signed-in Cursor dashboard wizard. Slack consent, bot name,
101
+ and admin-approval wait happen there. Tokens are stored as deployment
102
+ secrets and written to `.env.local`. They are never shown. Do not paste
103
+ a manifest at [api.slack.com](https://api.slack.com/apps) unless you
104
+ are on the [manual setup](#manual-setup) path.
105
+
106
+ Bots that already have tokens in `.env.local` keep working. Skip the
107
+ wizard unless you want a Cursor-managed app.
108
+
109
+ ### Provision with the CLI
110
+
111
+ ```bash
112
+ agent-sdk slack create --dir . # dev app (default)
113
+ agent-sdk slack create --dir . --prod # prod app
114
+ ```
115
+
116
+ `slack create` needs a signed-in host (`agent-sdk login` or
117
+ `CURSOR_API_KEY`). It scaffolds `agent/channels/slack.ts` when the file
118
+ is missing, opens the dashboard wizard, and waits. Finish **Add Slack
119
+ to this agent** in the browser as the same Cursor account. The CLI
120
+ writes `<PREFIX>_SLACK_BOT_TOKEN` and `<PREFIX>_SLACK_APP_TOKEN` into
121
+ `<dir>/.env.local`, then runs `doctor`. Serve and smoke it as described
122
+ [below](#wire-the-env-and-verify).
123
+
124
+ If Slack needs a workspace admin to approve the app, keep the CLI
125
+ running. Managed install does not file the request — open Slack's
126
+ **Request approval** page (the CLI prints the link; the same URL is
127
+ **Send a reminder** after you submit). After an admin approves, click
128
+ **Retry** in the wizard.
129
+
130
+ Useful companions: `--name` / `--icon` / `--channel-posts` prefill the
131
+ wizard. `--slack-team T0123ABCD` picks a workspace when several are
132
+ connected. A second `slack create` for the same agent and env overwrites
133
+ that Slack app. It keeps the Slack app id and replaces the manifest and
134
+ tokens. `agent-sdk slack destroy` deletes the provisioned app.
135
+ `agent-sdk slack icon <source>` updates the icon later.
136
+
137
+ ### Provision from the dashboard
138
+
139
+ The same wizard is on [Deployed Agents](https://cursor.com/dashboard).
140
+ Open **Integrations** on an agent and click **Add Slack to this agent**,
141
+ or follow the URL `slack create` printed.
142
+
143
+ A first-run agent that has no hosted engine yet shows **Not deployed
144
+ yet**. Local `agent-sdk serve` works from `.env.local`. The next
145
+ **Deploy** injects the stored secrets; there is no Slack-only Redeploy.
146
+
147
+ If Slack needs admin approval, the wizard waits. Click **Request
148
+ approval** to file the request in Slack (that same page later sends a
149
+ reminder). After an admin approves, click **Retry**.
150
+
151
+ The app row's menu covers later care: rename, set an icon, rotate
152
+ tokens, remove the app, or disconnect the workspace.
153
+
154
+ ### Wire the env and verify
155
+
156
+ `agent-sdk slack create` already wrote the tokens to `.env.local`, so
157
+ after provisioning skip straight to `doctor`. `serve` / `dev` /
158
+ `slack doctor` load that file (real environment variables always win).
159
+
160
+ ```bash
161
+ agent-sdk slack doctor --prefix MY_AGENT
162
+ ```
163
+
164
+ Proceed when `app_token`, `connections_open`, `bot_token`, and
165
+ `auth_test` are all green. Then serve and smoke it:
166
+
167
+ ```bash
168
+ agent-sdk serve --dir . --dev
169
+ # expect: [agent-sdk/slack] Socket Mode connected
170
+ ```
171
+
172
+ Invite the bot to a channel and @mention it (or DM it). Expect the
173
+ Thinking… status, then a threaded streaming reply, with correlated
174
+ server logs (`inbound kind=app_mention`, `session start`,
175
+ `reply delivered via stream|postMessage`).
176
+
177
+ ### Manual setup
178
+
179
+ `slack init --manual` is for a Slack app you own at api.slack.com. You
180
+ paste the generated manifests and mint tokens yourself. Use this when
181
+ you want an unmanaged app, or when the dashboard wizard is not an
182
+ option.
183
+
184
+ ```bash
185
+ agent-sdk slack init --manual --dir . --name "My Agent"
186
+ ```
187
+
188
+ That writes `agent/channels/slack.ts`, importable manifests at
189
+ `.agent-serve/slack/manifest.{dev,prod}.json`, `env.example`, and
190
+ `setup-status.json`. `--no-prefix` uses shared `SLACK_*` variables on
191
+ a single-agent host. `--prefix CUSTOM` overrides the directory-derived
192
+ prefix. `--channel-posts` subscribes the manifests to channel-post
193
+ events.
194
+
195
+ `slack manifest --env both` regenerates the JSON files without
196
+ touching the channel file.
197
+
198
+ #### Create the apps
199
+
200
+ This phase needs someone with permission to create Slack apps.
201
+
202
+ 1. Open [api.slack.com/apps](https://api.slack.com/apps) → **Create New
203
+ App** → **From a manifest**.
204
+ 2. Paste `manifest.dev.json` and create the dev app.
205
+ 3. Repeat with `manifest.prod.json`. Dev and prod are separate Slack
206
+ apps with separate tokens.
207
+
208
+ #### Install and mint tokens
209
+
210
+ For each app: **Install to Workspace** and copy the Bot User OAuth Token
211
+ (`xoxb-…`). Then under **Basic Information → App-Level Tokens** create a
212
+ token with scope `connections:write` and copy it (`xapp-…`).
213
+
214
+ Put the pair in `.env.local` using the names from `env.example`, then
215
+ run `slack doctor` and serve as [above](#wire-the-env-and-verify).
216
+
217
+ ## Choose when the agent engages
218
+
219
+ Mentions and DMs are on by default. Watching channels means dispatching
220
+ on new posts without a mention. That's an explicit opt-in:
221
+
222
+ ```ts
223
+ export default slackChannel({
224
+ envPrefix: "TRIAGE",
225
+ engagement: {
226
+ // mentions / directMessages default to true
227
+ channelPosts: {
228
+ allow: ["#triage-alerts"], // use ["*"] for every joined channel
229
+ posts: "top-level", // default: thread replies never dispatch
230
+ debounceMs: 15_000, // optional: let rapid edits settle
231
+ includeBotPosts: false, // default: bot-authored posts never dispatch
232
+ },
233
+ },
234
+ onChannelPost: async (ctx, message) => {
235
+ // same contract as onAppMention: return null to skip
236
+ return message.markdown.length > 20 ? {} : null;
237
+ },
238
+ });
239
+ ```
240
+
241
+ Channel watching needs the `message.channels` / `message.groups` events
242
+ on the Slack app (Socket Mode only; not available with
243
+ `cursorAccount: true`). Pass `--channel-posts` on `slack create` or
244
+ `slack init --manual`. The bot must also be a member of each watched
245
+ channel.
246
+
247
+ Set `allow: ["*"]` to watch every channel the bot has joined.
248
+
249
+ Set `includeBotPosts: true` when the posts worth watching come from bots:
250
+ alert feeds, webhook integrations, or other agents posting notes. The
251
+ watching app's own posts stay dropped either way, matched by the `bot_id`
252
+ and bot user id from `auth.test`, so an agent can never dispatch on its
253
+ own replies. The
254
+ [alert investigator example](/docs/example-agents/oncall.md) watches a
255
+ bot-fed alerts channel this way.
256
+
257
+ ## Prepare work on the host
258
+
259
+ Mention and DM handlers may return a prepared `message`,
260
+ `workspaceFiles`, or `cloud` block. It's the same host-prep pattern as
261
+ [custom channels](/docs/guides/webhooks.md#prepare-on-the-host-then-hand-off).
262
+ PR agents use it: extract a PR URL from the mention text and run the
263
+ same host path as the HTTP channel.
264
+
265
+ Slack file uploads are attached automatically. Images become vision input.
266
+ Supported documents become workspace files for the turn.
267
+
268
+ ## Add approval buttons
269
+
270
+ Tools with `needsApproval` park until a person decides. Route that
271
+ through Slack with one flag:
272
+
273
+ ```ts
274
+ export default slackChannel({
275
+ toolApprovals: true, // posts Block Kit Approve/Deny cards + routes clicks
276
+ });
277
+ ```
278
+
279
+ Approval cards need interactivity on the Slack app. Recreate with
280
+ `slack create` if clicks do nothing. Composing events by hand: spread
281
+ `buildToolApprovalEvents({ credentials })` into `events` and set
282
+ `interactivity: true` on the channel so Socket Mode routes the clicks.
283
+
284
+ Approval buttons need Socket Mode. `slackChannel({ cursorAccount: true })`
285
+ rejects `toolApprovals` and `interactivity` at construction, since the
286
+ Cursor Slack connection does not relay Block Kit clicks. Use a dedicated
287
+ Slack app to run approvals for a cursor-account agent.
288
+
289
+ Cards show redacted, truncated arguments (Block Kit size limits);
290
+ execution still uses the full validated input, so review sensitive tools
291
+ in the playground when the arguments may exceed the card. Approvals
292
+ exist for `execution: "server"` tools on the local runtime only, and
293
+ parked calls do not survive a host restart. The full lifecycle is in
294
+ [Human-in-the-loop](/docs/guides/human-in-the-loop.md).
295
+
296
+ ## Run several agents on one host
297
+
298
+ One Slack app and token pair per agent. Never share a pair across
299
+ agents in the same process. `envPrefix` keeps them apart
300
+ (`WEATHER_AGENT_SLACK_*`, `TRIAGE_SLACK_*`, …), and agents without tokens mount
301
+ with their Slack channel idle while everything else serves normally.
302
+
303
+ ## Keep the channel healthy
304
+
305
+ Two habits matter most.
306
+
307
+ - Don't `await` long work inside Slack dispatch handlers. The pack
308
+ dispatches through `waitUntil` and streams as the turn progresses.
309
+ - In `--dev` (loopback) or `--allow-anonymous` (trusted shared host), the
310
+ playground can list and stream Slack sessions and resolve their parked
311
+ approvals (the audit trail records the HTTP caller). Bearer-auth hosts
312
+ stay strict: Slack approvals must come from Slack interactivity or a
313
+ matching principal.
314
+
315
+ ## CLI reference
316
+
317
+ The `slack` subcommands cover setup end to end.
318
+
319
+ ```bash
320
+ agent-sdk slack setup # two-product chooser plus manual phases
321
+ agent-sdk slack create --dir . # dashboard wizard (dev app)
322
+ agent-sdk slack create --dir . --prod # prod app
323
+ agent-sdk slack destroy --dir . # delete the provisioned app
324
+ agent-sdk slack icon ./icon.png --dir . # set the provisioned app's icon
325
+ agent-sdk slack init --manual --dir . # manifests to paste at api.slack.com
326
+ agent-sdk slack manifest --env both # regenerate those JSON files
327
+ agent-sdk slack doctor --prefix MY_AGENT # token / connectivity checks
328
+ ```
329
+
330
+ ## What's next
331
+
332
+ Continue with these pages:
333
+
334
+ - [Human-in-the-loop](/docs/guides/human-in-the-loop.md): the approval lifecycle
335
+ behind `toolApprovals`
336
+ - [Webhooks and custom channels](/docs/guides/webhooks.md): the mechanism this
337
+ pack is built on