@cursor/july 0.1.89 → 0.1.91

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 (346) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +98 -96
  3. package/dist/ab.d.ts +1 -1
  4. package/dist/ab.js +1 -1
  5. package/dist/artifacts.d.ts +1 -1
  6. package/dist/artifacts.js +1 -1
  7. package/dist/bin/agent-serve.js +20 -7
  8. package/dist/channels/slack/channel-watch.d.ts +1 -1
  9. package/dist/channels/slack/channel-watch.js +1 -1
  10. package/dist/channels/slack/slack-channel.js +1 -1
  11. package/dist/channels/slack/types.d.ts +2 -4
  12. package/dist/channels/slack/types.d.ts.map +1 -1
  13. package/dist/channels.d.ts +1 -1
  14. package/dist/channels.js +1 -1
  15. package/dist/connections.d.ts +1 -1
  16. package/dist/connections.js +1 -1
  17. package/dist/docs/404.html +3 -3
  18. package/dist/docs/ab.html +7 -7
  19. package/dist/docs/assets/{ab.md.DYjwREAP.js → ab.md.CVzWxLoB.js} +1 -1
  20. package/dist/docs/assets/{ab.md.DYjwREAP.lean.js → ab.md.CVzWxLoB.lean.js} +1 -1
  21. package/dist/docs/assets/{app.DUOPbN18.js → app.Bci6CM9E.js} +1 -1
  22. package/dist/docs/assets/{building-with-agents.md.PeZaZA1P.js → building-with-agents.md.DH8A_cHA.js} +1 -1
  23. package/dist/docs/assets/{building-with-agents.md.PeZaZA1P.lean.js → building-with-agents.md.DH8A_cHA.lean.js} +1 -1
  24. package/dist/docs/assets/chunks/@localSearchIndexroot.Dv-Q0XtU.js +1 -0
  25. package/dist/docs/assets/chunks/{VPLocalSearchBox.CmWbGcGk.js → VPLocalSearchBox.BCPT6xA-.js} +1 -1
  26. package/dist/docs/assets/chunks/{framework.CAZyNGu9.js → framework.BCISBCiQ.js} +1 -1
  27. package/dist/docs/assets/chunks/theme.BEA8BF3c.js +2 -0
  28. package/dist/docs/assets/{concepts.md.BXAm6G-C.js → concepts.md.CRfU3bVg.js} +1 -1
  29. package/dist/docs/assets/{concepts.md.BXAm6G-C.lean.js → concepts.md.CRfU3bVg.lean.js} +1 -1
  30. package/dist/docs/assets/{deployment.md.B8kW-h7P.js → deployment.md.DX_hc3ze.js} +6 -5
  31. package/dist/docs/assets/{deployment.md.B8kW-h7P.lean.js → deployment.md.DX_hc3ze.lean.js} +1 -1
  32. package/dist/docs/assets/{evals.md.CVe_O75-.js → evals.md.a0SMN6r9.js} +3 -3
  33. package/dist/docs/assets/{evals.md.CVe_O75-.lean.js → evals.md.a0SMN6r9.lean.js} +1 -1
  34. package/dist/docs/assets/{example-agents_approval-buddy.md.CIiZ9coo.js → example-agents_approval-buddy.md.DNL83puR.js} +1 -1
  35. package/dist/docs/assets/{example-agents_approval-buddy.md.CIiZ9coo.lean.js → example-agents_approval-buddy.md.DNL83puR.lean.js} +1 -1
  36. package/dist/docs/assets/{example-agents_benny.md.B-LIDGja.js → example-agents_benny.md.C40vHRLc.js} +1 -1
  37. package/dist/docs/assets/{example-agents_benny.md.B-LIDGja.lean.js → example-agents_benny.md.C40vHRLc.lean.js} +1 -1
  38. package/dist/docs/assets/{example-agents_bugbot.md.Dp5JqHSQ.js → example-agents_bugbot.md.BRGMi9O2.js} +1 -1
  39. package/dist/docs/assets/{example-agents_bugbot.md.Dp5JqHSQ.lean.js → example-agents_bugbot.md.BRGMi9O2.lean.js} +1 -1
  40. package/dist/docs/assets/{example-agents_codebase-wiki.md.D-lteFf0.js → example-agents_codebase-wiki.md.Dftj_tPp.js} +1 -1
  41. package/dist/docs/assets/{example-agents_codebase-wiki.md.D-lteFf0.lean.js → example-agents_codebase-wiki.md.Dftj_tPp.lean.js} +1 -1
  42. package/dist/docs/assets/{example-agents_codeowners-review.md.BU2ZXLf-.js → example-agents_codeowners-review.md.Bfta-lBU.js} +1 -1
  43. package/dist/docs/assets/{example-agents_codeowners-review.md.BU2ZXLf-.lean.js → example-agents_codeowners-review.md.Bfta-lBU.lean.js} +1 -1
  44. package/dist/docs/assets/{example-agents_concierge.md.DA2al_NK.js → example-agents_concierge.md.MrKpQndp.js} +1 -1
  45. package/dist/docs/assets/{example-agents_concierge.md.DA2al_NK.lean.js → example-agents_concierge.md.MrKpQndp.lean.js} +1 -1
  46. package/dist/docs/assets/{example-agents_fsd.md.ZeGEpAw_.js → example-agents_fsd.md.ZWHWWZPE.js} +1 -1
  47. package/dist/docs/assets/{example-agents_fsd.md.ZeGEpAw_.lean.js → example-agents_fsd.md.ZWHWWZPE.lean.js} +1 -1
  48. package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.js +2 -0
  49. package/dist/docs/assets/{example-agents_index.md.xmJ87d_3.lean.js → example-agents_index.md.QZ8mhr6n.lean.js} +1 -1
  50. package/dist/docs/assets/{example-agents_knowledge-base.md.IneynQSR.js → example-agents_knowledge-base.md.DqKqHQ9u.js} +1 -1
  51. package/dist/docs/assets/{example-agents_knowledge-base.md.IneynQSR.lean.js → example-agents_knowledge-base.md.DqKqHQ9u.lean.js} +1 -1
  52. package/dist/docs/assets/{example-agents_oncall.md.CBmyuAKc.js → example-agents_oncall.md.DK4XkYTd.js} +1 -1
  53. package/dist/docs/assets/{example-agents_oncall.md.CBmyuAKc.lean.js → example-agents_oncall.md.DK4XkYTd.lean.js} +1 -1
  54. package/dist/docs/assets/{example-agents_security-reviewer.md.DBL1TwtP.js → example-agents_security-reviewer.md.Bai6D0Ee.js} +4 -4
  55. package/dist/docs/assets/{example-agents_security-reviewer.md.DBL1TwtP.lean.js → example-agents_security-reviewer.md.Bai6D0Ee.lean.js} +1 -1
  56. package/dist/docs/assets/{example-agents_slack-agent.md.06jQXTAI.js → example-agents_slack-agent.md.D7Kdj5BV.js} +1 -1
  57. package/dist/docs/assets/{example-agents_slack-agent.md.06jQXTAI.lean.js → example-agents_slack-agent.md.D7Kdj5BV.lean.js} +1 -1
  58. package/dist/docs/assets/{example-agents_weather-agent.md.DC3lINjo.js → example-agents_weather-agent.md.lVEAbWFf.js} +5 -5
  59. package/dist/docs/assets/example-agents_weather-agent.md.lVEAbWFf.lean.js +1 -0
  60. package/dist/docs/assets/{guides_agent-to-agent.md.Bmbxy-FA.js → guides_agent-to-agent.md.BCeVdJRJ.js} +1 -1
  61. package/dist/docs/assets/{guides_agent-to-agent.md.Bmbxy-FA.lean.js → guides_agent-to-agent.md.BCeVdJRJ.lean.js} +1 -1
  62. package/dist/docs/assets/{guides_cloud-runtime.md.CbklWfzh.js → guides_cloud-runtime.md.BSMLIBHr.js} +1 -1
  63. package/dist/docs/assets/{guides_cloud-runtime.md.CbklWfzh.lean.js → guides_cloud-runtime.md.BSMLIBHr.lean.js} +1 -1
  64. package/dist/docs/assets/{guides_convert-automation.md.BhMzTkE5.js → guides_convert-automation.md.D06eIzea.js} +1 -1
  65. package/dist/docs/assets/{guides_convert-automation.md.BhMzTkE5.lean.js → guides_convert-automation.md.D06eIzea.lean.js} +1 -1
  66. package/dist/docs/assets/{guides_github.md.CLLQJKRB.js → guides_github.md.Cdt1s2QC.js} +4 -4
  67. package/dist/docs/assets/{guides_github.md.CLLQJKRB.lean.js → guides_github.md.Cdt1s2QC.lean.js} +1 -1
  68. package/dist/docs/assets/{guides_human-in-the-loop.md.Cf8kIIqC.js → guides_human-in-the-loop.md.By1G2T3_.js} +1 -1
  69. package/dist/docs/assets/{guides_human-in-the-loop.md.Cf8kIIqC.lean.js → guides_human-in-the-loop.md.By1G2T3_.lean.js} +1 -1
  70. package/dist/docs/assets/{guides_mcp-oauth.md.CzEB6RaG.js → guides_mcp-oauth.md.Du0f7pGU.js} +1 -1
  71. package/dist/docs/assets/{guides_mcp-oauth.md.CzEB6RaG.lean.js → guides_mcp-oauth.md.Du0f7pGU.lean.js} +1 -1
  72. package/dist/docs/assets/{guides_opentelemetry.md.Csn7ZI25.js → guides_opentelemetry.md.bmPmkvJu.js} +1 -1
  73. package/dist/docs/assets/{guides_opentelemetry.md.Csn7ZI25.lean.js → guides_opentelemetry.md.bmPmkvJu.lean.js} +1 -1
  74. package/dist/docs/assets/{guides_slack.md.DP4H75WP.js → guides_slack.md.DiUmk_Oi.js} +5 -5
  75. package/dist/docs/assets/{guides_slack.md.DP4H75WP.lean.js → guides_slack.md.DiUmk_Oi.lean.js} +1 -1
  76. package/dist/docs/assets/{guides_webhooks.md.DB-r_er9.js → guides_webhooks.md.BpnIdO0i.js} +5 -6
  77. package/dist/docs/assets/{guides_webhooks.md.DB-r_er9.lean.js → guides_webhooks.md.BpnIdO0i.lean.js} +1 -1
  78. package/dist/docs/assets/{hillclimbing.md.yXqdlv2R.js → hillclimbing.md.ywF3yDAd.js} +1 -1
  79. package/dist/docs/assets/{hillclimbing.md.yXqdlv2R.lean.js → hillclimbing.md.ywF3yDAd.lean.js} +1 -1
  80. package/dist/docs/assets/index.md.BAaMXLFd.js +5 -0
  81. package/dist/docs/assets/{index.md.DhRHS_-L.lean.js → index.md.BAaMXLFd.lean.js} +1 -1
  82. package/dist/docs/assets/{quickstart.md.DZxBu44y.js → quickstart.md.DsrarzEg.js} +1 -1
  83. package/dist/docs/assets/{quickstart.md.DZxBu44y.lean.js → quickstart.md.DsrarzEg.lean.js} +1 -1
  84. package/dist/docs/assets/{reference_agent-config.md.CTWp4DnU.js → reference_agent-config.md.Bqylgw50.js} +1 -1
  85. package/dist/docs/assets/{reference_agent-config.md.CTWp4DnU.lean.js → reference_agent-config.md.Bqylgw50.lean.js} +1 -1
  86. package/dist/docs/assets/{reference_artifacts.md.BGG4bZo-.js → reference_artifacts.md.Dior32Qw.js} +1 -1
  87. package/dist/docs/assets/{reference_artifacts.md.BGG4bZo-.lean.js → reference_artifacts.md.Dior32Qw.lean.js} +1 -1
  88. package/dist/docs/assets/{reference_channels.md.CboFd5IH.js → reference_channels.md.DQZjCnyh.js} +2 -2
  89. package/dist/docs/assets/{reference_channels.md.CboFd5IH.lean.js → reference_channels.md.DQZjCnyh.lean.js} +1 -1
  90. package/dist/docs/assets/{reference_cli.md.TAaYU8br.js → reference_cli.md.B7GkAJRC.js} +8 -7
  91. package/dist/docs/assets/{reference_cli.md.TAaYU8br.lean.js → reference_cli.md.B7GkAJRC.lean.js} +1 -1
  92. package/dist/docs/assets/{reference_connections.md.Cu3N-S3Q.js → reference_connections.md.DYidrb-j.js} +5 -5
  93. package/dist/docs/assets/{reference_connections.md.Cu3N-S3Q.lean.js → reference_connections.md.DYidrb-j.lean.js} +1 -1
  94. package/dist/docs/assets/{reference_hooks.md.DJE5DXcT.js → reference_hooks.md.B9FSgdDe.js} +1 -1
  95. package/dist/docs/assets/{reference_hooks.md.DJE5DXcT.lean.js → reference_hooks.md.B9FSgdDe.lean.js} +1 -1
  96. package/dist/docs/assets/{reference_http-api.md.DMbdFGVQ.js → reference_http-api.md.CSHVobzG.js} +4 -4
  97. package/dist/docs/assets/{reference_http-api.md.DMbdFGVQ.lean.js → reference_http-api.md.CSHVobzG.lean.js} +1 -1
  98. package/dist/docs/assets/{reference_instructions.md.CgoV-YEb.js → reference_instructions.md.DhNCOl7r.js} +1 -1
  99. package/dist/docs/assets/{reference_instructions.md.CgoV-YEb.lean.js → reference_instructions.md.DhNCOl7r.lean.js} +1 -1
  100. package/dist/docs/assets/{reference_playground.md.CPZhfYaO.js → reference_playground.md.Dfb92yQf.js} +1 -1
  101. package/dist/docs/assets/{reference_playground.md.CPZhfYaO.lean.js → reference_playground.md.Dfb92yQf.lean.js} +1 -1
  102. package/dist/docs/assets/{reference_project-layout.md.D3MdHM2z.js → reference_project-layout.md.CwkSbEWT.js} +5 -20
  103. package/dist/docs/assets/reference_project-layout.md.CwkSbEWT.lean.js +1 -0
  104. package/dist/docs/assets/{reference_prompt.md.BaiweQxE.js → reference_prompt.md.DZUMtLPD.js} +1 -1
  105. package/dist/docs/assets/{reference_prompt.md.BaiweQxE.lean.js → reference_prompt.md.DZUMtLPD.lean.js} +1 -1
  106. package/dist/docs/assets/{reference_schedules.md.gmfYzf_I.js → reference_schedules.md.DNipebiG.js} +1 -1
  107. package/dist/docs/assets/{reference_schedules.md.gmfYzf_I.lean.js → reference_schedules.md.DNipebiG.lean.js} +1 -1
  108. package/dist/docs/assets/{reference_sessions.md.B0DdlM-K.js → reference_sessions.md.tUFzz98S.js} +1 -1
  109. package/dist/docs/assets/{reference_sessions.md.B0DdlM-K.lean.js → reference_sessions.md.tUFzz98S.lean.js} +1 -1
  110. package/dist/docs/assets/{reference_skills.md.BRF2nDv9.js → reference_skills.md.B5ZEuHfG.js} +1 -1
  111. package/dist/docs/assets/{reference_skills.md.BRF2nDv9.lean.js → reference_skills.md.B5ZEuHfG.lean.js} +1 -1
  112. package/dist/docs/assets/{reference_subagents.md.DSrGLIuB.js → reference_subagents.md.Xoav0AII.js} +1 -1
  113. package/dist/docs/assets/{reference_subagents.md.DSrGLIuB.lean.js → reference_subagents.md.Xoav0AII.lean.js} +1 -1
  114. package/dist/docs/assets/{reference_tools.md.DTg_kEsx.js → reference_tools.md.wpaJtHn6.js} +23 -3
  115. package/dist/docs/assets/{reference_tools.md.DTg_kEsx.lean.js → reference_tools.md.wpaJtHn6.lean.js} +1 -1
  116. package/dist/docs/assets/{scaffolding-agents.md.CiGsJ1aw.js → scaffolding-agents.md.CRDDUtYJ.js} +1 -1
  117. package/dist/docs/assets/{scaffolding-agents.md.CiGsJ1aw.lean.js → scaffolding-agents.md.CRDDUtYJ.lean.js} +1 -1
  118. package/dist/docs/assets/{storage.md.ks1u64_R.js → storage.md.JbjlHWZ6.js} +1 -1
  119. package/dist/docs/assets/{storage.md.ks1u64_R.lean.js → storage.md.JbjlHWZ6.lean.js} +1 -1
  120. package/dist/docs/assets/{style.kTsvp4pE.css → style.BRuM8477.css} +1 -1
  121. package/dist/docs/assets/{templates_agentic-owners.md.BkTLORaU.js → templates_agentic-owners.md.DSJSIpWU.js} +1 -1
  122. package/dist/docs/assets/{templates_agentic-owners.md.BkTLORaU.lean.js → templates_agentic-owners.md.DSJSIpWU.lean.js} +1 -1
  123. package/dist/docs/assets/{templates_demo.md.Bgd6MBaZ.js → templates_demo.md.DhFcWN6j.js} +1 -1
  124. package/dist/docs/assets/{templates_demo.md.Bgd6MBaZ.lean.js → templates_demo.md.DhFcWN6j.lean.js} +1 -1
  125. package/dist/docs/assets/{templates_pr-autofixer.md.DcmoeUNZ.js → templates_pr-autofixer.md.1HAR3RXE.js} +1 -1
  126. package/dist/docs/assets/{templates_pr-autofixer.md.DcmoeUNZ.lean.js → templates_pr-autofixer.md.1HAR3RXE.lean.js} +1 -1
  127. package/dist/docs/assets/{templates_security-reviewer.md.C0yIUaYs.js → templates_security-reviewer.md.ByFyRta2.js} +1 -1
  128. package/dist/docs/assets/{templates_security-reviewer.md.C0yIUaYs.lean.js → templates_security-reviewer.md.ByFyRta2.lean.js} +1 -1
  129. package/dist/docs/assets/{templates_triage.md.DWuQ1bZz.js → templates_triage.md.CVlpctKS.js} +2 -2
  130. package/dist/docs/assets/{templates_triage.md.DWuQ1bZz.lean.js → templates_triage.md.CVlpctKS.lean.js} +1 -1
  131. package/dist/docs/assets/troubleshooting.md.DYECCZiJ.js +1 -0
  132. package/dist/docs/assets/{troubleshooting.md.KgmmaCgw.lean.js → troubleshooting.md.DYECCZiJ.lean.js} +1 -1
  133. package/dist/docs/building-with-agents.html +7 -7
  134. package/dist/docs/concepts.html +7 -7
  135. package/dist/docs/deployment.html +11 -10
  136. package/dist/docs/evals.html +8 -8
  137. package/dist/docs/example-agents/approval-buddy.html +7 -7
  138. package/dist/docs/example-agents/benny.html +7 -7
  139. package/dist/docs/example-agents/bugbot.html +7 -7
  140. package/dist/docs/example-agents/codebase-wiki.html +7 -7
  141. package/dist/docs/example-agents/codeowners-review.html +7 -7
  142. package/dist/docs/example-agents/concierge.html +7 -7
  143. package/dist/docs/example-agents/fsd.html +7 -7
  144. package/dist/docs/example-agents/index.html +7 -7
  145. package/dist/docs/example-agents/knowledge-base.html +7 -7
  146. package/dist/docs/example-agents/oncall.html +7 -7
  147. package/dist/docs/example-agents/security-reviewer.html +10 -10
  148. package/dist/docs/example-agents/slack-agent.html +7 -7
  149. package/dist/docs/example-agents/weather-agent.html +12 -12
  150. package/dist/docs/guides/agent-to-agent.html +7 -7
  151. package/dist/docs/guides/cloud-runtime.html +7 -7
  152. package/dist/docs/guides/convert-automation.html +7 -7
  153. package/dist/docs/guides/github.html +9 -9
  154. package/dist/docs/guides/human-in-the-loop.html +7 -7
  155. package/dist/docs/guides/mcp-oauth.html +7 -7
  156. package/dist/docs/guides/opentelemetry.html +7 -7
  157. package/dist/docs/guides/slack.html +10 -10
  158. package/dist/docs/guides/webhooks.html +10 -11
  159. package/dist/docs/hashmap.json +1 -1
  160. package/dist/docs/hillclimbing.html +7 -7
  161. package/dist/docs/index.html +8 -8
  162. package/dist/docs/quickstart.html +7 -7
  163. package/dist/docs/reference/agent-config.html +7 -7
  164. package/dist/docs/reference/artifacts.html +7 -7
  165. package/dist/docs/reference/channels.html +8 -8
  166. package/dist/docs/reference/cli.html +13 -12
  167. package/dist/docs/reference/connections.html +10 -10
  168. package/dist/docs/reference/hooks.html +7 -7
  169. package/dist/docs/reference/http-api.html +10 -10
  170. package/dist/docs/reference/instructions.html +7 -7
  171. package/dist/docs/reference/playground.html +7 -7
  172. package/dist/docs/reference/project-layout.html +10 -25
  173. package/dist/docs/reference/prompt.html +7 -7
  174. package/dist/docs/reference/schedules.html +7 -7
  175. package/dist/docs/reference/sessions.html +7 -7
  176. package/dist/docs/reference/skills.html +7 -7
  177. package/dist/docs/reference/subagents.html +7 -7
  178. package/dist/docs/reference/tools.html +29 -9
  179. package/dist/docs/scaffolding-agents.html +7 -7
  180. package/dist/docs/storage.html +7 -7
  181. package/dist/docs/templates/agentic-owners.html +7 -7
  182. package/dist/docs/templates/demo.html +7 -7
  183. package/dist/docs/templates/pr-autofixer.html +7 -7
  184. package/dist/docs/templates/security-reviewer.html +7 -7
  185. package/dist/docs/templates/triage.html +8 -8
  186. package/dist/docs/troubleshooting.html +7 -7
  187. package/dist/evals.d.ts +1 -1
  188. package/dist/evals.js +1 -1
  189. package/dist/hooks.d.ts +1 -1
  190. package/dist/hooks.js +1 -1
  191. package/dist/index.d.ts +2 -2
  192. package/dist/index.js +2 -2
  193. package/dist/internal/cli-convert-automation.d.ts +1 -1
  194. package/dist/internal/cli-convert-automation.js +1 -1
  195. package/dist/internal/cli-cursor.d.ts +12 -4
  196. package/dist/internal/cli-cursor.d.ts.map +1 -1
  197. package/dist/internal/cli-cursor.js +11 -4
  198. package/dist/internal/cli-deploy.d.ts.map +1 -1
  199. package/dist/internal/cli-deploy.js +21 -3
  200. package/dist/internal/convert-automation/convert-workflow.d.ts +1 -1
  201. package/dist/internal/convert-automation/convert-workflow.js +9 -9
  202. package/dist/internal/convert-automation/types.d.ts +1 -1
  203. package/dist/internal/convert-automation/types.js +1 -1
  204. package/dist/internal/cursor/backend-client.d.ts +9 -1
  205. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  206. package/dist/internal/cursor/backend-client.js +19 -6
  207. package/dist/internal/cursor/credentials.d.ts +35 -9
  208. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  209. package/dist/internal/cursor/credentials.js +92 -39
  210. package/dist/internal/cursor-agent-template.d.ts +1 -1
  211. package/dist/internal/cursor-agent-template.d.ts.map +1 -1
  212. package/dist/internal/cursor-agent-template.js +1 -0
  213. package/dist/internal/deploy-client.d.ts +18 -0
  214. package/dist/internal/deploy-client.d.ts.map +1 -1
  215. package/dist/internal/deploy-client.js +25 -1
  216. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  217. package/dist/internal/deploy-manifest.js +5 -1
  218. package/dist/internal/discovery.d.ts +5 -1
  219. package/dist/internal/discovery.d.ts.map +1 -1
  220. package/dist/internal/discovery.js +17 -1
  221. package/dist/internal/distribution.d.ts +18 -0
  222. package/dist/internal/distribution.d.ts.map +1 -1
  223. package/dist/internal/distribution.js +19 -0
  224. package/dist/internal/eval-runner.js +1 -1
  225. package/dist/internal/grokbot/runner.d.ts +5 -2
  226. package/dist/internal/grokbot/runner.d.ts.map +1 -1
  227. package/dist/internal/grokbot/runner.js +10 -6
  228. package/dist/internal/http-channel.d.ts +2 -2
  229. package/dist/internal/http-channel.d.ts.map +1 -1
  230. package/dist/internal/http-channel.js +11 -31
  231. package/dist/internal/init-project.d.ts.map +1 -1
  232. package/dist/internal/init-project.js +10 -1
  233. package/dist/internal/sdk-runner.d.ts +5 -0
  234. package/dist/internal/sdk-runner.d.ts.map +1 -1
  235. package/dist/internal/sdk-runner.js +10 -5
  236. package/dist/internal/server.d.ts.map +1 -1
  237. package/dist/internal/server.js +80 -36
  238. package/dist/internal/session-engine.d.ts +8 -0
  239. package/dist/internal/session-engine.d.ts.map +1 -1
  240. package/dist/internal/session-engine.js +47 -5
  241. package/dist/playground/assets/index-D9N7-q97.css +1 -0
  242. package/dist/playground/assets/{index-BmiIjFlM.js → index-DDvyC2z6.js} +49 -49
  243. package/dist/playground/index.html +2 -2
  244. package/dist/reminders.d.ts +1 -1
  245. package/dist/reminders.js +1 -1
  246. package/dist/schedules.d.ts +1 -1
  247. package/dist/schedules.js +1 -1
  248. package/dist/skills.d.ts +1 -1
  249. package/dist/skills.js +1 -1
  250. package/dist/storage.d.ts +1 -1
  251. package/dist/storage.js +1 -1
  252. package/dist/tools.d.ts +1 -1
  253. package/dist/tools.js +1 -1
  254. package/dist/types.d.ts +10 -7
  255. package/dist/types.d.ts.map +1 -1
  256. package/dist/types.js +1 -1
  257. package/docs/README.md +3 -1
  258. package/docs/concepts.md +2 -1
  259. package/docs/deployment.md +9 -6
  260. package/docs/evals.md +1 -5
  261. package/docs/example-agents/codebase-wiki.md +2 -3
  262. package/docs/example-agents/fsd.md +1 -1
  263. package/docs/example-agents/index.md +2 -2
  264. package/docs/example-agents/knowledge-base.md +3 -3
  265. package/docs/example-agents/security-reviewer.md +17 -48
  266. package/docs/example-agents/weather-agent.md +14 -45
  267. package/docs/guides/github.md +7 -4
  268. package/docs/guides/slack.md +7 -2
  269. package/docs/guides/webhooks.md +12 -15
  270. package/docs/reference/channels.md +4 -0
  271. package/docs/reference/cli.md +21 -7
  272. package/docs/reference/connections.md +13 -32
  273. package/docs/reference/http-api.md +14 -9
  274. package/docs/reference/project-layout.md +5 -20
  275. package/docs/reference/tools.md +51 -3
  276. package/docs/scaffolding-agents.md +2 -0
  277. package/docs/templates/triage.md +3 -5
  278. package/docs/troubleshooting.md +1 -1
  279. package/package.json +2 -1
  280. package/skills/create-agent/SKILL.md +6 -7
  281. package/skills/framework-map/SKILL.md +6 -6
  282. package/skills/setup-slack/SKILL.md +1 -1
  283. package/src/ab.ts +1 -1
  284. package/src/artifacts.ts +1 -1
  285. package/src/bin/agent-serve.ts +20 -6
  286. package/src/channels/slack/channel-watch.ts +1 -1
  287. package/src/channels/slack/slack-channel.ts +1 -1
  288. package/src/channels/slack/types.ts +2 -4
  289. package/src/channels.ts +1 -1
  290. package/src/connections.ts +1 -1
  291. package/src/evals.ts +1 -1
  292. package/src/hooks.ts +1 -1
  293. package/src/index.ts +2 -2
  294. package/src/internal/cli-convert-automation.ts +1 -1
  295. package/src/internal/cli-cursor.ts +18 -5
  296. package/src/internal/cli-deploy.ts +27 -7
  297. package/src/internal/convert-automation/convert-workflow.ts +9 -9
  298. package/src/internal/convert-automation/types.ts +1 -1
  299. package/src/internal/cursor/backend-client.ts +29 -4
  300. package/src/internal/cursor/credentials.ts +87 -24
  301. package/src/internal/cursor-agent-template.ts +1 -0
  302. package/src/internal/deploy-client.ts +40 -1
  303. package/src/internal/deploy-manifest.ts +10 -1
  304. package/src/internal/discovery.ts +21 -1
  305. package/src/internal/distribution.ts +31 -0
  306. package/src/internal/eval-runner.ts +1 -1
  307. package/src/internal/grokbot/runner.ts +15 -6
  308. package/src/internal/http-channel.ts +14 -41
  309. package/src/internal/init-project.ts +13 -1
  310. package/src/internal/sdk-runner.ts +10 -4
  311. package/src/internal/server.ts +95 -33
  312. package/src/internal/session-engine.ts +58 -8
  313. package/src/reminders.ts +1 -1
  314. package/src/schedules.ts +1 -1
  315. package/src/skills.ts +1 -1
  316. package/src/storage.ts +1 -1
  317. package/src/tools.ts +1 -1
  318. package/src/types.ts +10 -7
  319. package/templates/security-help/README.md +37 -0
  320. package/templates/security-help/agent/agent.ts +18 -0
  321. package/templates/security-help/agent/channels/github.ts +13 -0
  322. package/templates/security-help/agent/channels/slack.ts +89 -0
  323. package/templates/security-help/agent/instructions.md +20 -0
  324. package/templates/security-help/agent/knowledge/faq/approvals.md +5 -0
  325. package/templates/security-help/agent/knowledge/faq/channels.md +6 -0
  326. package/templates/security-help/agent/knowledge/faq/phishing.md +10 -0
  327. package/templates/security-help/agent/lib/pr-first-pass.ts +42 -0
  328. package/templates/security-help/agent/lib/repos.ts +5 -0
  329. package/templates/security-help/agent/skills/access-request.md +10 -0
  330. package/templates/security-help/agent/skills/security-first-pass.md +15 -0
  331. package/templates/security-help/agent/skills/security-playbooks.md +12 -0
  332. package/templates/security-help/agent/skills/security-pr-first-pass.md +12 -0
  333. package/templates/security-help/evals/evals.config.ts +5 -0
  334. package/templates/security-help/evals/security-help.eval.ts +53 -0
  335. package/templates/security-help/init.json +31 -0
  336. package/templates/security-help/package.json +18 -0
  337. package/templates/security-help/tsconfig.json +12 -0
  338. package/templates/triage/agent/channels/webhook.ts +2 -2
  339. package/dist/docs/assets/chunks/@localSearchIndexroot.CxCtxfDE.js +0 -1
  340. package/dist/docs/assets/chunks/theme.S57OeOLA.js +0 -2
  341. package/dist/docs/assets/example-agents_index.md.xmJ87d_3.js +0 -2
  342. package/dist/docs/assets/example-agents_weather-agent.md.DC3lINjo.lean.js +0 -1
  343. package/dist/docs/assets/index.md.DhRHS_-L.js +0 -5
  344. package/dist/docs/assets/reference_project-layout.md.D3MdHM2z.lean.js +0 -1
  345. package/dist/docs/assets/troubleshooting.md.KgmmaCgw.js +0 -1
  346. package/dist/playground/assets/index-DQGZnAI0.css +0 -1
@@ -5,7 +5,7 @@
5
5
  * is named `foo`, a subagent at `agent/subagents/researcher/` is named
6
6
  * `researcher` — so no definition carries a `name` field.
7
7
  */
8
- import { type AgentProject, type AgentProjectInfo, type Diagnostic } from "../types.js";
8
+ import { type AgentArchitecture, type AgentProject, type AgentProjectInfo, type AgentRuntime, type Diagnostic } from "../types.js";
9
9
  export interface LoadAgentProjectOptions {
10
10
  /** Override the module loader (embedders / tests). */
11
11
  importModule?: (absolutePath: string) => Promise<Record<string, unknown>>;
@@ -57,6 +57,10 @@ export declare function loadAgentProject(dir: string, options?: LoadAgentProject
57
57
  /** True when the project has diagnostics that must block serving. */
58
58
  export declare function hasErrorDiagnostics(project: AgentProject): boolean;
59
59
  export declare function formatDiagnostics(diagnostics: Diagnostic[]): string;
60
+ export declare function runtimeArchitectureCompatibilityError(agent: {
61
+ runtime: AgentRuntime;
62
+ architecture?: AgentArchitecture;
63
+ }): string | undefined;
60
64
  /**
61
65
  * Advertise the first non-empty, non-code-fence line of the body, with any
62
66
  * leading `#`, `>`, `*`, or `-` markers stripped.
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/internal/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EASrB,KAAK,UAAU,EAwBhB,MAAM,aAAa,CAAC;AAgCrB,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3E;AAmBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,EAAE,CAAC,CA2B1B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CA6BzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAAuB,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgBzD;AAWD,iFAAiF;AACjF,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,CAIrC,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CA0EvB;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAElE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAOnE;AAk0BD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB3E;AA88BD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,CA4JnE"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/internal/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,OAAO,EACL,KAAK,iBAAiB,EAItB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAQjB,KAAK,UAAU,EAwBhB,MAAM,aAAa,CAAC;AAgCrB,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3E;AAmBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,EAAE,CAAC,CA2B1B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CA6BzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAAuB,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgBzD;AAWD,iFAAiF;AACjF,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,CAIrC,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CA0EvB;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAElE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAOnE;AAsOD,wBAAgB,qCAAqC,CAAC,KAAK,EAAE;IAC3D,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,GAAG,MAAM,GAAG,SAAS,CAIrB;AAymBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB3E;AA88BD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,CA4JnE"}
@@ -388,6 +388,17 @@ function loadAgent(ctx, agentDir, options) {
388
388
  const hosting = resolveHosting(ctx, agentDir, config === null || config === void 0 ? void 0 : config.hosting);
389
389
  const concurrency = resolveConcurrency(ctx, agentDir, config === null || config === void 0 ? void 0 : config.concurrency);
390
390
  const architecture = resolveArchitecture(ctx, agentDir, config === null || config === void 0 ? void 0 : config.architecture);
391
+ const runtimeArchitectureError = runtimeArchitectureCompatibilityError({
392
+ runtime,
393
+ architecture,
394
+ });
395
+ if (runtimeArchitectureError !== undefined) {
396
+ ctx.diagnostics.push({
397
+ severity: "error",
398
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
399
+ message: runtimeArchitectureError,
400
+ });
401
+ }
391
402
  if (runtime === "cloud") {
392
403
  warnCloudRuntimeLimitations(ctx, agentDir, {
393
404
  agentTools: tools.filter((tool) => tool.execution === "agent").length,
@@ -423,6 +434,11 @@ function loadAgent(ctx, agentDir, options) {
423
434
  seedFiles });
424
435
  });
425
436
  }
437
+ export function runtimeArchitectureCompatibilityError(agent) {
438
+ return agent.architecture === "v2" && agent.runtime === "grokbot"
439
+ ? 'architecture: "v2" cannot use runtime: "grokbot": the grokbot runtime executes through the signed-in account\'s hosted /v0/grokbot box, not a deployment-scoped v2 runtime.'
440
+ : undefined;
441
+ }
426
442
  function resolveArchitecture(ctx, agentDir, architecture) {
427
443
  if (architecture === undefined ||
428
444
  architecture === "v1" ||
@@ -1620,7 +1636,7 @@ function loadABConfig(ctx, agentDir) {
1620
1636
  ctx.diagnostics.push({
1621
1637
  severity: "error",
1622
1638
  path: displayPath(ctx, path),
1623
- message: "ab.config.ts must default-export defineABConfig({ ... }) from @anysphere/agent-serve/ab.",
1639
+ message: "ab.config.ts must default-export defineABConfig({ ... }) from @cursor/july/ab.",
1624
1640
  });
1625
1641
  return undefined;
1626
1642
  }
@@ -44,6 +44,24 @@ export declare function isCompiledDistribution(): boolean;
44
44
  export declare function packageRootDir(): string;
45
45
  /** Version of the running package (from its own package.json). */
46
46
  export declare function packageVersion(): string;
47
+ /** Facts `agent-sdk version` / `--version` print. */
48
+ export interface CliVersionInfo {
49
+ /** Published npm name (`@cursor/july`). */
50
+ name: string;
51
+ /** `package.json` version of this install. */
52
+ version: string;
53
+ /** Bin the process was invoked as (`agent-sdk` / `agent-serve`). */
54
+ cli: string;
55
+ }
56
+ export declare function cliVersionInfo(): CliVersionInfo;
57
+ /**
58
+ * Text or JSON for `version` / `--version` / `-V`.
59
+ * Text is the bare `package.json` version (npm-style). `--json` is the
60
+ * complete `{ name, version, cli }` payload.
61
+ */
62
+ export declare function formatCliVersion(options?: {
63
+ json?: boolean;
64
+ }): string;
47
65
  /**
48
66
  * Authoring entry subpaths and their dist-relative output files — the
49
67
  * runtime mirror of the package `exports` map (the source of truth;
@@ -1 +1 @@
1
- {"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/internal/distribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,sEAAsE;AACtE,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,WAAW,cAAc,CAAC;AACvC,eAAO,MAAM,UAAU,EAAE,MAA2B,CAAC;AACrD,eAAO,MAAM,gBAAgB,EAAE,MAAiC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAA+B,CAAC;AAc/D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CA2BzC,CAAC"}
1
+ {"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/internal/distribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,sEAAsE;AACtE,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,WAAW,cAAc,CAAC;AACvC,eAAO,MAAM,UAAU,EAAE,MAA2B,CAAC;AACrD,eAAO,MAAM,gBAAgB,EAAE,MAAiC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAA+B,CAAC;AAc/D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,cAAc,IAAI,cAAc,CAM/C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAMrE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CA2BzC,CAAC"}
@@ -67,6 +67,25 @@ export function packageVersion() {
67
67
  const parsed = JSON.parse(raw);
68
68
  return typeof parsed.version === "string" ? parsed.version : "0.0.0";
69
69
  }
70
+ export function cliVersionInfo() {
71
+ return {
72
+ name: PACKAGE_NAME,
73
+ version: packageVersion(),
74
+ cli: CLI_COMMAND_NAME,
75
+ };
76
+ }
77
+ /**
78
+ * Text or JSON for `version` / `--version` / `-V`.
79
+ * Text is the bare `package.json` version (npm-style). `--json` is the
80
+ * complete `{ name, version, cli }` payload.
81
+ */
82
+ export function formatCliVersion(options) {
83
+ const info = cliVersionInfo();
84
+ if ((options === null || options === void 0 ? void 0 : options.json) === true) {
85
+ return `${JSON.stringify(info, null, 2)}\n`;
86
+ }
87
+ return `${info.version}\n`;
88
+ }
70
89
  /**
71
90
  * Authoring entry subpaths and their dist-relative output files — the
72
91
  * runtime mirror of the package `exports` map (the source of truth;
@@ -324,7 +324,7 @@ export function groupEvalsForIterationSchedule(evals) {
324
324
  function resolveEvalMaxConcurrency(config) {
325
325
  if (config.maxConcurrency === undefined) {
326
326
  throw new Error(`evals/evals.config.ts must define maxConcurrency (1–${EVAL_MAX_CONCURRENCY_LIMIT}; hard limit is due to model provider request limits). Example:\n` +
327
- ` import { defineEvalConfig } from "@anysphere/agent-serve/evals";\n` +
327
+ ` import { defineEvalConfig } from "@cursor/july/evals";\n` +
328
328
  ` export default defineEvalConfig({ maxConcurrency: 20 });`);
329
329
  }
330
330
  return normalizeEvalMaxConcurrency(config.maxConcurrency);
@@ -13,11 +13,14 @@
13
13
  import type { RunnerTurnRequest, TurnOutcome } from "../../types.js";
14
14
  import type { AgentRunner } from "./../sdk-runner.js";
15
15
  export interface GrokBotRunnerOptions {
16
- /** Cursor API key. Defaults to the `CURSOR_API_KEY` environment variable. */
16
+ /** Cursor API key. Resolved as option env → file → stored login. */
17
17
  apiKey?: string;
18
18
  /** Test seam. Defaults to global fetch. */
19
19
  fetchImpl?: typeof fetch;
20
- /** Test seam. Defaults to {@link cursorBackendUrl}. */
20
+ /**
21
+ * Test seam. Defaults to {@link cursorExternalApiUrl} (`api.cursor.com`).
22
+ * `/v0/grokbot` is an external-api microlith route — it 404s on api2.
23
+ */
21
24
  backendUrl?: string;
22
25
  /** Test seam. Poll interval while a turn runs. */
23
26
  pollIntervalMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/internal/grokbot/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAoID,qBAAa,aAAc,YAAW,WAAW;IAiBnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhBpC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D,OAAO,CAAC,MAAM,CAA+B;IAE7C,YAA6B,OAAO,GAAE,oBAAyB,EAAI;IAE7D,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAsB9D;YAEa,WAAW;IAiFnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAI7B;IAED,OAAO,CAAC,YAAY;YAKN,QAAQ;YAyBR,KAAK;CAgBpB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/internal/grokbot/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAuID,qBAAa,aAAc,YAAW,WAAW;IAiBnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhBpC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D,OAAO,CAAC,MAAM,CAA+B;IAE7C,YAA6B,OAAO,GAAE,oBAAyB,EAAI;IAE7D,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAsB9D;YAEa,WAAW;IAiFnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAI7B;IAED,OAAO,CAAC,YAAY;YAKN,QAAQ;YAyBR,KAAK;CAgBpB"}
@@ -20,7 +20,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  });
21
21
  };
22
22
  import { randomUUID } from "node:crypto";
23
- import { cursorBackendUrl } from "../cursor/credentials.js";
23
+ import { cursorExternalApiUrl, resolveApiKeySync, } from "../cursor/credentials.js";
24
24
  const DEFAULT_POLL_INTERVAL_MS = 750;
25
25
  const DEFAULT_TURN_TIMEOUT_MS = 20 * 60 * 1000;
26
26
  /**
@@ -40,12 +40,16 @@ class GrokBotApiError extends Error {
40
40
  /** Minimal `/v0/grokbot` client: bearer API key, JSON in/out. */
41
41
  class GrokBotApiClient {
42
42
  constructor(options) {
43
- var _a, _b, _c;
44
- this.fetchImpl = (_a = options.fetchImpl) !== null && _a !== void 0 ? _a : fetch;
45
- this.baseUrl = ((_b = options.backendUrl) !== null && _b !== void 0 ? _b : cursorBackendUrl()).replace(/\/$/, "");
46
- const apiKey = (_c = options.apiKey) !== null && _c !== void 0 ? _c : process.env.CURSOR_API_KEY;
43
+ var _a;
44
+ var _b, _c;
45
+ this.fetchImpl = (_b = options.fetchImpl) !== null && _b !== void 0 ? _b : fetch;
46
+ this.baseUrl = ((_c = options.backendUrl) !== null && _c !== void 0 ? _c : cursorExternalApiUrl()).replace(/\/$/, "");
47
+ const apiKey = (_a = resolveApiKeySync({
48
+ apiKey: options.apiKey,
49
+ backendUrl: options.backendUrl,
50
+ })) === null || _a === void 0 ? void 0 : _a.apiKey;
47
51
  if (apiKey === undefined || apiKey === "") {
48
- throw new Error('runtime: "grokbot" needs a Cursor API key (CURSOR_API_KEY or agent-sdk login) to reach the hosted Grok Bot harness.');
52
+ throw new Error('runtime: "grokbot" needs a Cursor API key (CURSOR_API_KEY, CURSOR_API_KEY_FILE, or agent-sdk login) to reach the hosted Grok Bot harness.');
49
53
  }
50
54
  this.apiKey = apiKey;
51
55
  }
@@ -7,8 +7,8 @@
7
7
  * Continuation semantics: `POST /v1/session` returns a `continuationToken`;
8
8
  * each accepted follow-up rotates it and returns the replacement, and a
9
9
  * stale token is rejected with 409. Follow-ups address any chat session by
10
- * id (including custom channels such as `drive`) when the token matches
11
- * that session's channel + key; task sessions stay fire-and-forget.
10
+ * id (including custom channels such as `drive`) when the token matches its
11
+ * active HTTP follow-up key; task sessions stay fire-and-forget.
12
12
  */
13
13
  import type { AuthContext, AuthPolicy, HttpChannelDefinition, SessionRecord } from "../types.js";
14
14
  import type { ServerRoute } from "./router.js";
@@ -1 +1 @@
1
- {"version":3,"file":"http-channel.d.ts","sourceRoot":"","sources":["../../src/internal/http-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,UAAU,EACV,qBAAqB,EAErB,aAAa,EACd,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAQ7B,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GAAG,WAAW,EAAE,CAyahB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACA,QAAQ,GAAG,SAAS,CAiBtB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAC/D,QAAQ,CAQV;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,QAAQ,CAEV;AAoGD,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAc9C"}
1
+ {"version":3,"file":"http-channel.d.ts","sourceRoot":"","sources":["../../src/internal/http-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,UAAU,EACV,qBAAqB,EAErB,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAQ7B,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GAAG,WAAW,EAAE,CAmZhB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACA,QAAQ,GAAG,SAAS,CAiBtB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAC/D,QAAQ,CAQV;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,QAAQ,CAEV;AAoGD,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAc9C"}
@@ -7,8 +7,8 @@
7
7
  * Continuation semantics: `POST /v1/session` returns a `continuationToken`;
8
8
  * each accepted follow-up rotates it and returns the replacement, and a
9
9
  * stale token is rejected with 409. Follow-ups address any chat session by
10
- * id (including custom channels such as `drive`) when the token matches
11
- * that session's channel + key; task sessions stay fire-and-forget.
10
+ * id (including custom channels such as `drive`) when the token matches its
11
+ * active HTTP follow-up key; task sessions stay fire-and-forget.
12
12
  */
13
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
@@ -20,9 +20,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  });
21
21
  };
22
22
  import { samePrincipal } from "./auth.js";
23
- import { formatContinuationToken, newContinuationKey, parseContinuationToken, } from "./ids.js";
23
+ import { formatContinuationToken, parseContinuationToken } from "./ids.js";
24
24
  import { isLoopbackAddress } from "./net.js";
25
- import { ApprovalInterruptedError, ApprovalNotFoundError, HTTP_CHANNEL_ID, SessionAuthError, SessionBusyError, } from "./session-engine.js";
25
+ import { ApprovalInterruptedError, ApprovalNotFoundError, HTTP_CHANNEL_ID, SessionAuthError, } from "./session-engine.js";
26
26
  import { eventsUrlForSession, playgroundUrlForSession, } from "./session-urls.js";
27
27
  const SESSION_ID_HEADER = "x-agent-serve-session-id";
28
28
  export function buildHttpChannelRoutes(args) {
@@ -74,10 +74,8 @@ export function buildHttpChannelRoutes(args) {
74
74
  if (record === undefined) {
75
75
  return errorResponse(404, "session_not_found", `Unknown session ${sessionId}.`);
76
76
  }
77
- // Playground (and other HTTP clients) may follow up on any chat
78
- // session including custom channels like `drive` — using that
79
- // session's own continuation token. Task/schedule sessions stay
80
- // fire-and-forget.
77
+ // HTTP can follow any chat session. Its credential is separate from the
78
+ // owning channel's continuation key.
81
79
  if (record.mode === "task") {
82
80
  return errorResponse(409, "session_not_followable", "Task sessions are fire-and-forget; they do not accept follow-ups.");
83
81
  }
@@ -97,36 +95,18 @@ export function buildHttpChannelRoutes(args) {
97
95
  return errorResponse(400, "invalid_request", "Expected a `continuationToken` from the previous response.");
98
96
  }
99
97
  const presented = parseContinuationToken(body.continuationToken);
100
- if (presented === null ||
101
- presented.channelId !== record.channelId ||
102
- record.continuationKey === null ||
103
- presented.key !== record.continuationKey) {
98
+ if (presented === null) {
104
99
  return errorResponse(409, "stale_continuation_token", "The continuation token does not address this session's active continuation.");
105
100
  }
106
101
  const message = yield transformMessage(body.message, ctx.auth);
107
- try {
108
- // Continue as the session owner after the HTTP ownership gate so
109
- // `--dev` relaxed reads can follow up on channel-owned sessions
110
- // (drive/slack/…) without failing SessionAuthError.
111
- yield engine.send(record.channelId, message, {
112
- auth: record.auth,
113
- continuationToken: record.continuationKey,
114
- });
115
- }
116
- catch (error) {
117
- if (error instanceof SessionBusyError) {
118
- return errorResponse(409, "session_busy", "A turn is already running; wait for session.waiting before sending a follow-up.");
119
- }
120
- throw error;
102
+ const rotated = yield engine.followUpHttp(sessionId, presented, message);
103
+ if (rotated === undefined) {
104
+ return errorResponse(409, "stale_continuation_token", "The continuation token does not address this session's active continuation.");
121
105
  }
122
- // Rotate only after the message is accepted so a rejected send leaves
123
- // the caller's token valid for retry.
124
- const rotated = newContinuationKey();
125
- yield engine.setContinuationToken(sessionId, rotated);
126
106
  return jsonResponse({
127
107
  ok: true,
128
108
  sessionId,
129
- continuationToken: formatContinuationToken(record.channelId, rotated),
109
+ continuationToken: formatContinuationToken(HTTP_CHANNEL_ID, rotated),
130
110
  }, { headers: { [SESSION_ID_HEADER]: sessionId } });
131
111
  }),
132
112
  };
@@ -1 +1 @@
1
- {"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/internal/init-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAC;AAQ7B,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAgBD,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAyBhE;AAED,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,eAAe,CAgCjB;AAUD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CA6E5B;AAwDD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhD;AAWD,MAAM,WAAW,kCAAkC;IACjD;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,yDAAyD;IACzD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;KAC3B,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC,iCAAiC,CAAC,CAW5C;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;KAC3B,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,gEAAgE;IAChE,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,MAAM,KACZ,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAgChC;AAwHD,MAAM,WAAW,0BAA0B;IACzC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,kBAAkB,GAAG,0BAA0B,GACzD,oBAAoB,CAAC;AAMvB;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAkBR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAgBzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAErE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAQpB;AA8BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,MAAM,EAAE,CAEX;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAgCrC"}
1
+ {"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/internal/init-project.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import { spawn } from "node:child_process";
14
14
  import { existsSync } from "node:fs";
15
15
  import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
16
16
  import { basename, dirname, join, relative, resolve } from "node:path";
17
+ import { runfiles } from "@bazel/runfiles";
17
18
  import { canonicalTemplateName, isTemplateName, readCursorAgentTemplate, } from "./cursor-agent-template.js";
18
19
  import { CLI_COMMAND_NAME, PACKAGE_NAME, packageRootDir, packageVersion, } from "./distribution.js";
19
20
  import { applyInitReplacements, isTemplateMetaPath, loadTemplateInitSpec, posixRel, templateFileHasReplacements, } from "./init-interview.js";
@@ -23,6 +24,7 @@ const TEMPLATES = {
23
24
  "agentic-owners": { dir: "agentic-owners" },
24
25
  demo: { dir: "demo" },
25
26
  "pr-autofixer": { dir: "pr-autofixer" },
27
+ "security-help": { dir: "security-help" },
26
28
  "security-reviewer": { dir: "security-reviewer" },
27
29
  "triage-linear": { dir: "triage", overlay: "linear" },
28
30
  "triage-jira": { dir: "triage", overlay: "jira" },
@@ -45,7 +47,7 @@ export function resolveTemplate(name) {
45
47
  };
46
48
  }
47
49
  const entry = TEMPLATES[resolved];
48
- const dir = join(packageRootDir(), "templates", entry.dir);
50
+ const dir = resolvePackagePath("templates", entry.dir);
49
51
  return {
50
52
  ok: true,
51
53
  name: resolved,
@@ -55,6 +57,12 @@ export function resolveTemplate(name) {
55
57
  : join(dir, "overlays", entry.overlay),
56
58
  };
57
59
  }
60
+ function resolvePackagePath(...segments) {
61
+ if (runfiles.workspace !== undefined) {
62
+ return runfiles.resolveWorkspaceRelative(["packages", "agent-serve", ...segments].join("/"));
63
+ }
64
+ return join(packageRootDir(), ...segments);
65
+ }
58
66
  /**
59
67
  * Re-init must keep the mode the project was scaffolded with: template
60
68
  * scaffolds stamp `cursorAgentTemplate` into package.json, and a mismatch
@@ -490,6 +498,7 @@ Scaffold a project, then open the playground:
490
498
  npx ${PACKAGE_NAME} init ./my-agent # installs deps + links agent-sdk onto PATH
491
499
  npx ${PACKAGE_NAME} init ./my-demo --template demo # record a PR walkthrough
492
500
  npx ${PACKAGE_NAME} init ./my-reviewer --template security-reviewer # review PRs for security bugs
501
+ npx ${PACKAGE_NAME} init ./security-help --template security-help # answer security questions in Slack
493
502
  npx ${PACKAGE_NAME} init ./my-triage --template triage-linear # comment on Linear issues
494
503
  npx ${PACKAGE_NAME} init ./my-triage --template triage-jira # comment on Jira issues
495
504
  npx ${PACKAGE_NAME} init ./my-owners --template agentic-owners # review PRs via owners policies
@@ -95,6 +95,11 @@ export declare class CursorSdkRunner implements AgentRunner {
95
95
  */
96
96
  private evictAgent;
97
97
  private log;
98
+ /**
99
+ * Re-resolve on every turn. Hosted freeze snapshots listen unsigned; the
100
+ * binder drops `CURSOR_API_KEY` / `CURSOR_API_KEY_FILE` at task time into
101
+ * the already-running process, which must not have closed over `undefined`.
102
+ */
98
103
  private requireApiKey;
99
104
  private buildSharedOptions;
100
105
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-runner.d.ts","sourceRoot":"","sources":["../../src/internal/sdk-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk-runner.d.ts","sourceRoot":"","sources":["../../src/internal/sdk-runner.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ import { Agent, Cursor, createAgentPlatform, } from "@cursor/sdk";
19
19
  import { SqliteLocalAgentStore } from "@cursor/sdk/sqlite";
20
20
  import { DEFAULT_MODEL, } from "../types.js";
21
21
  import { mapSdkTokenUsage, usageTokenSum } from "./cloud-turn-cost.js";
22
+ import { resolveApiKeySync } from "./cursor/credentials.js";
22
23
  /**
23
24
  * How long a non-`--dev` serve holds workspace scans (rules, skills,
24
25
  * `AGENTS.md`, ignore files). The SDK default is 20s for an editor whose
@@ -306,13 +307,17 @@ export class CursorSdkRunner {
306
307
  var _a;
307
308
  ((_a = this.options.logger) !== null && _a !== void 0 ? _a : (() => { }))(line);
308
309
  }
310
+ /**
311
+ * Re-resolve on every turn. Hosted freeze snapshots listen unsigned; the
312
+ * binder drops `CURSOR_API_KEY` / `CURSOR_API_KEY_FILE` at task time into
313
+ * the already-running process, which must not have closed over `undefined`.
314
+ */
309
315
  requireApiKey() {
310
- var _a;
311
- const apiKey = (_a = this.options.apiKey) !== null && _a !== void 0 ? _a : process.env.CURSOR_API_KEY;
312
- if (apiKey === undefined || apiKey.trim() === "") {
313
- throw new Error("The Cursor SDK runner requires a Cursor credential: run `agent-serve login`, set CURSOR_API_KEY, or pass serve({ apiKey }).");
316
+ const resolved = resolveApiKeySync({ apiKey: this.options.apiKey });
317
+ if (resolved === undefined) {
318
+ throw new Error("The Cursor SDK runner requires a Cursor credential: run `agent-serve login`, set CURSOR_API_KEY or CURSOR_API_KEY_FILE, or pass serve({ apiKey }).");
314
319
  }
315
- return apiKey;
320
+ return resolved.apiKey;
316
321
  }
317
322
  buildSharedOptions(request) {
318
323
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0CH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAOhB,YAAY,EACb,MAAM,aAAa,CAAC;AA0HrB,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAwBpE,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAmCD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,YAAY,GAAG,0BAA+B,GACtD,OAAO,CAAC,gBAAgB,CAAC,CAo5B3B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0CH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAOhB,YAAY,EACb,MAAM,aAAa,CAAC;AA4HrB,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAwBpE,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAmCD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,YAAY,GAAG,0BAA+B,GACtD,OAAO,CAAC,gBAAgB,CAAC,CAo8B3B"}