@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,18 @@
1
+ import { defineAgent } from "@cursor/july";
2
+
3
+ export default defineAgent({
4
+ name: "Security Help",
5
+ description:
6
+ "Answers security questions in Slack and takes a first look at a GitHub pull request.",
7
+ model: {
8
+ id: "grok-4.6",
9
+ params: [
10
+ { id: "effort", value: "high" },
11
+ { id: "fast", value: "true" },
12
+ ],
13
+ },
14
+ tools: ["read", "grep"],
15
+ local: {
16
+ sandbox: true,
17
+ },
18
+ });
@@ -0,0 +1,13 @@
1
+ import { githubChannel } from "@cursor/july/channels/github";
2
+ import { REPOS } from "../lib/repos.js";
3
+
4
+ export default githubChannel({
5
+ webhookEvents: [],
6
+ deliverReplies: false,
7
+ cursorAccount: {
8
+ repos: REPOS,
9
+ permissions: "read",
10
+ },
11
+ onPullRequest: () => null,
12
+ onComment: () => null,
13
+ });
@@ -0,0 +1,89 @@
1
+ import {
2
+ defaultSlackAuth,
3
+ extractGithubPrRef,
4
+ type SlackMessageHandler,
5
+ slackChannel,
6
+ } from "@cursor/july/channels/slack";
7
+ import { loadPrFiles } from "../lib/pr-first-pass.js";
8
+ import { REPOS, watches } from "../lib/repos.js";
9
+
10
+ const watch: string[] = [];
11
+
12
+ const clear = {
13
+ "pr/meta.md": "",
14
+ "pr/diff.patch": "",
15
+ "pr/head.sha": "",
16
+ };
17
+
18
+ const handleSlack: SlackMessageHandler = async (ctx, message) => {
19
+ const auth = defaultSlackAuth(message, ctx);
20
+ if (auth === null) {
21
+ return null;
22
+ }
23
+
24
+ const pr = extractGithubPrRef(message.markdown);
25
+ if (pr === undefined) {
26
+ return { auth };
27
+ }
28
+
29
+ const title = `Security Help ${pr.label}`;
30
+ const fullName = `${pr.owner}/${pr.repo}`;
31
+ if (!watches(fullName)) {
32
+ return {
33
+ auth,
34
+ title,
35
+ workspaceFiles: clear,
36
+ context: [
37
+ `Security help can only fetch ${REPOS.join(", ")} (got ${fullName}).`,
38
+ ],
39
+ };
40
+ }
41
+
42
+ const loaded = await loadPrFiles({
43
+ github: ctx.host.github,
44
+ ref: pr,
45
+ });
46
+ return {
47
+ auth,
48
+ title,
49
+ workspaceFiles: loaded ?? clear,
50
+ context:
51
+ loaded === undefined
52
+ ? ["Could not fetch the pull request. Connect GitHub or check the URL."]
53
+ : undefined,
54
+ };
55
+ };
56
+
57
+ export default slackChannel({
58
+ envPrefix: "SECURITY_HELP",
59
+ policy: {
60
+ blockExternals: true,
61
+ },
62
+ engagement: {
63
+ channelPosts:
64
+ watch.length === 0
65
+ ? undefined
66
+ : {
67
+ allow: watch,
68
+ posts: "top-level" as const,
69
+ },
70
+ },
71
+ onAppMention: handleSlack,
72
+ onDirectMessage: handleSlack,
73
+ onChannelPost: watch.length === 0 ? undefined : handleSlack,
74
+ suggestedPrompts: [
75
+ {
76
+ title: "Look at a PR",
77
+ message: "First look at https://github.com/owner/repo/pull/1",
78
+ },
79
+ {
80
+ title: "How urgent",
81
+ message: "How urgent is this?",
82
+ },
83
+ {
84
+ title: "Ask for context",
85
+ message: "What else do we need before answering?",
86
+ },
87
+ ],
88
+ suggestedPromptsTitle: "Ask security",
89
+ });
@@ -0,0 +1,20 @@
1
+ # Security help
2
+
3
+ Answer security questions in Slack from the FAQ and skills.
4
+ If you do not know, say so and ask a human.
5
+
6
+ Open the skill or FAQ for the ask. Those files are under `agent/skills/` and `agent/knowledge/faq/`.
7
+
8
+ | If the ask is about | Open |
9
+ | --- | --- |
10
+ | A GitHub pull request | `agent/skills/security-pr-first-pass.md` |
11
+ | An access request | `agent/skills/access-request.md` |
12
+ | A leak, alert, or incident | `agent/skills/security-playbooks.md` |
13
+ | Who can approve, privacy, or policy | `agent/knowledge/faq/approvals.md` |
14
+ | Phishing text, email, or a call | `agent/knowledge/faq/phishing.md` |
15
+ | Which team or channel owns a request | `agent/knowledge/faq/channels.md` |
16
+ | Another security question | `agent/skills/security-first-pass.md` |
17
+
18
+ A pull request earlier in the thread is not this one.
19
+
20
+ If you say an incident is over or a system is safe, show why. Looking at a pull request is not that.
@@ -0,0 +1,5 @@
1
+ # Approvals
2
+
3
+ Who can say yes depends on the request. If this file does not name an owner, ask a human for that topic.
4
+
5
+ Privacy questions (training, retention, where prompts sit) go to a privacy or security person.
@@ -0,0 +1,6 @@
1
+ # Channels
2
+
3
+ `#security` is for security questions and phishing reports.
4
+
5
+ Name the channel that owns SaaS access, identity groups, laptops, and billing.
6
+ Until you do, say you do not know which team owns that request.
@@ -0,0 +1,10 @@
1
+ # Phishing
2
+
3
+ `#security` is where phishing and unexpected texts, emails, or calls go.
4
+ If the thread is already about that, keep it there.
5
+
6
+ Leave the original message alone. Do not reply, click, or send a 2FA code on it.
7
+ Confirm unknown texts or calls over Slack or in person before acting.
8
+
9
+ If an account looks compromised, they should lock it now and wait for a human.
10
+ If security already gave a verdict in-thread, follow that.
@@ -0,0 +1,42 @@
1
+ import { prompt, type HostGitHubClient } from "@cursor/july";
2
+ import type { GitHubPrRef } from "@cursor/july/channels/github";
3
+
4
+ const MAX_DIFF_CHARS = 150_000;
5
+
6
+ export async function loadPrFiles(args: {
7
+ github: HostGitHubClient;
8
+ ref: GitHubPrRef;
9
+ }): Promise<Record<string, string> | undefined> {
10
+ try {
11
+ const octokit = await args.github.getOctokit();
12
+ const pull = {
13
+ owner: args.ref.owner,
14
+ repo: args.ref.repo,
15
+ pull_number: args.ref.number,
16
+ };
17
+ const [meta, diff] = await Promise.all([
18
+ octokit.rest.pulls.get(pull),
19
+ octokit.rest.pulls.get({ ...pull, mediaType: { format: "diff" } }),
20
+ ]);
21
+ const data = meta.data;
22
+ const text = String(diff.data);
23
+ const header = prompt`
24
+ # ${data.title}
25
+
26
+ url: ${args.ref.url}
27
+ author: @${data.user?.login ?? "unknown"}
28
+ head: ${data.head.ref} (${data.head.sha})
29
+ base: ${data.base.ref}
30
+ `;
31
+ return {
32
+ "pr/meta.md": `${header}\n\n${data.body ?? ""}`,
33
+ "pr/diff.patch":
34
+ text.length > MAX_DIFF_CHARS
35
+ ? `${text.slice(0, MAX_DIFF_CHARS)}\n…[truncated]\n`
36
+ : text,
37
+ "pr/head.sha": data.head.sha,
38
+ };
39
+ } catch {
40
+ return undefined;
41
+ }
42
+ }
@@ -0,0 +1,5 @@
1
+ export const REPOS: readonly string[] = ["owner/repo"];
2
+
3
+ export function watches(fullName: string): boolean {
4
+ return REPOS.some((repo) => repo.toLowerCase() === fullName.toLowerCase());
5
+ }
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: use when Slack has an access request or request number
3
+ ---
4
+
5
+ # Access request
6
+
7
+ This skill is the access request. SaaS or identity-group asks go to the team named in `agent/knowledge/faq/channels.md`.
8
+
9
+ Say what they asked for, why, and how long it lasts, from the request.
10
+ Do not invent a grant that is not on the request.
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: use for Slack security questions; open the skill or FAQ you need
3
+ ---
4
+
5
+ # Security questions
6
+
7
+ Open the security skill or FAQ for the ask.
8
+
9
+ SaaS access, identity groups, laptops, and billing go to the team named in `agent/knowledge/faq/channels.md`.
10
+
11
+ If this looks like production secrets out, an exploit, customer data out, malware, or an account takeover, they should stop it now and wait for a human.
12
+
13
+ Training, retention, or policy ownership: `agent/knowledge/faq/approvals.md`.
14
+
15
+ If the skills and the topic file for this ask do not have it, say you do not know and ask a human.
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: use when Slack looks like a leak, alert, access, privacy, or incident
3
+ ---
4
+
5
+ # Security playbooks
6
+
7
+ If a production secret is already out, revoke or rotate it at the place that issued it, or turn it off there.
8
+
9
+ For other alerts, follow the FAQ or runbook under `agent/knowledge/`.
10
+ Do not call it safe without a human.
11
+
12
+ If you cannot see who is affected, skip that.
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: use when they asked for a look at a GitHub pull request
3
+ ---
4
+
5
+ # Looking at a pull request
6
+
7
+ They asked for a first look. Summarize the change. Note anything that looks like a security issue.
8
+
9
+ The look is in `pr/meta.md` and `pr/diff.patch`.
10
+ Read those files.
11
+
12
+ You only have those files. Do not guess at CI, review checks, or anything that is not in them.
@@ -0,0 +1,5 @@
1
+ import { defineEvalConfig } from "@cursor/july/evals";
2
+
3
+ export default defineEvalConfig({
4
+ maxConcurrency: 10,
5
+ });
@@ -0,0 +1,53 @@
1
+ import { defineEval, includes } from "@cursor/july/evals";
2
+
3
+ export default defineEval({
4
+ tags: ["smoke"],
5
+ cases: [
6
+ {
7
+ id: "phishing",
8
+ description: "A phishing text is left alone and confirmed over Slack.",
9
+ async test(t) {
10
+ await t.send(
11
+ "got a text saying my okta expired and i should tap a link. what do i do?"
12
+ );
13
+ t.succeeded();
14
+ t.check(t.reply, includes(/leave|don't click|do not click|slack/i));
15
+ },
16
+ },
17
+ {
18
+ id: "saas-access",
19
+ description: "SaaS access is not granted until the FAQ names an owner.",
20
+ async test(t) {
21
+ await t.send("can you add me to the figma okta group?");
22
+ t.succeeded();
23
+ t.check(t.reply, includes(/do not know|don't know|faq|human/i));
24
+ },
25
+ },
26
+ {
27
+ id: "pr-first-pass",
28
+ description: "A seeded PR look says what the change is.",
29
+ async test(t) {
30
+ await t.send("first look at https://github.com/acme/api/pull/12", {
31
+ workspaceFiles: {
32
+ "pr/meta.md": [
33
+ "# add search highlighting",
34
+ "",
35
+ "url: https://github.com/acme/api/pull/12",
36
+ "author: @sam",
37
+ "head: feat/search (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)",
38
+ "base: main",
39
+ "",
40
+ "highlight the query in search results",
41
+ ].join("\n"),
42
+ "pr/diff.patch": [
43
+ "diff --git a/app/routes/search.ts b/app/routes/search.ts",
44
+ "+res.send(`<h1>Results for ${req.query.q}</h1>`);",
45
+ ].join("\n"),
46
+ },
47
+ });
48
+ t.succeeded();
49
+ t.check(t.reply, includes(/search|highlight/i));
50
+ },
51
+ },
52
+ ],
53
+ });
@@ -0,0 +1,31 @@
1
+ {
2
+ "questions": [
3
+ {
4
+ "id": "repos",
5
+ "prompt": "Which GitHub repos may this agent read?",
6
+ "hint": "Comma-separated owner/repo. One GitHub owner.",
7
+ "placeholder": "acme/api, acme/web",
8
+ "parse": "owner-repo-list"
9
+ }
10
+ ],
11
+ "replace": [
12
+ {
13
+ "file": "agent/lib/repos.ts",
14
+ "find": "[\"owner/repo\"]",
15
+ "answer": "repos",
16
+ "as": "json-array"
17
+ },
18
+ {
19
+ "file": "README.md",
20
+ "find": "owner/repo",
21
+ "answer": "repos",
22
+ "as": "first"
23
+ },
24
+ {
25
+ "file": "agent/channels/slack.ts",
26
+ "find": "owner/repo",
27
+ "answer": "repos",
28
+ "as": "first"
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "security-help-agent",
3
+ "private": true,
4
+ "type": "module",
5
+ "description": "Answers security questions in Slack and takes a first look at a pull request.",
6
+ "scripts": {
7
+ "check": "tsc --noEmit",
8
+ "dev": "agent-sdk dev"
9
+ },
10
+ "dependencies": {
11
+ "@cursor/july": "latest",
12
+ "zod": "^3.25.0"
13
+ },
14
+ "devDependencies": {
15
+ "@types/node": "^22.14.0",
16
+ "typescript": "^5.8.0"
17
+ }
18
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "strict": true,
7
+ "noEmit": true,
8
+ "skipLibCheck": true,
9
+ "types": ["node"]
10
+ },
11
+ "include": ["agent/**/*", "evals/**/*"]
12
+ }
@@ -1,4 +1,4 @@
1
- import { allowAll, defineChannel, POST } from "@cursor/july/channels";
1
+ import { defineChannel, POST, publicEndpoint } from "@cursor/july/channels";
2
2
  import { z } from "zod";
3
3
  import {
4
4
  formatQueuePrompt,
@@ -7,7 +7,7 @@ import {
7
7
  import { verifyTrackerWebhook } from "../lib/verify-webhook.js";
8
8
 
9
9
  export default defineChannel({
10
- auth: [allowAll()],
10
+ auth: [publicEndpoint()],
11
11
  routes: [
12
12
  POST("/", {
13
13
  description: "Signed Linear or Jira issue-created webhook",