@cursor/july 0.1.1 → 0.1.3

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 (298) hide show
  1. package/AGENTS.md +40 -7
  2. package/README.md +33 -24
  3. package/dist/bin/agent-serve.d.ts +3 -1
  4. package/dist/bin/agent-serve.d.ts.map +1 -1
  5. package/dist/bin/agent-serve.js +466 -140
  6. package/dist/channels/github/api.d.ts.map +1 -1
  7. package/dist/channels/github/api.js +31 -14
  8. package/dist/channels/github/cursor-account.d.ts +43 -0
  9. package/dist/channels/github/cursor-account.d.ts.map +1 -0
  10. package/dist/channels/github/cursor-account.js +95 -0
  11. package/dist/channels/github/github-channel.d.ts.map +1 -1
  12. package/dist/channels/github/github-channel.js +46 -9
  13. package/dist/channels/github/index.d.ts +2 -2
  14. package/dist/channels/github/index.js +2 -2
  15. package/dist/channels/github/types.d.ts +17 -0
  16. package/dist/channels/github/types.d.ts.map +1 -1
  17. package/dist/channels/slack/slack-channel.d.ts +8 -2
  18. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  19. package/dist/channels/slack/slack-channel.js +8 -0
  20. package/dist/channels/slack/types.d.ts +24 -3
  21. package/dist/channels/slack/types.d.ts.map +1 -1
  22. package/dist/channels/slack/types.js +15 -1
  23. package/dist/docs/404.html +2 -2
  24. package/dist/docs/ab.html +8 -8
  25. package/dist/docs/assets/{ab.md.COdXkces.js → ab.md.BMCZ6Hd7.js} +3 -3
  26. package/dist/docs/assets/{ab.md.COdXkces.lean.js → ab.md.BMCZ6Hd7.lean.js} +1 -1
  27. package/dist/docs/assets/{app.DqfFEmJd.js → app.BR0RbIdx.js} +1 -1
  28. package/dist/docs/assets/chunks/@localSearchIndexroot.DtIOQzGj.js +1 -0
  29. package/dist/docs/assets/chunks/{VPLocalSearchBox.BaLEdS15.js → VPLocalSearchBox.qjsVTneI.js} +1 -1
  30. package/dist/docs/assets/chunks/{theme.CZRvu_0q.js → theme.2Kg8jIp_.js} +2 -2
  31. package/dist/docs/assets/{deployment.md.Dx1TYNk5.js → deployment.md.DTKwE15Z.js} +3 -3
  32. package/dist/docs/assets/{deployment.md.Dx1TYNk5.lean.js → deployment.md.DTKwE15Z.lean.js} +1 -1
  33. package/dist/docs/assets/{evals.md.DPZ_MAnI.js → evals.md.DAgEc_hL.js} +3 -3
  34. package/dist/docs/assets/{guides_agent-to-agent.md.CrtrsySy.js → guides_agent-to-agent.md.Bpzgq2Pq.js} +1 -1
  35. package/dist/docs/assets/{guides_cloud-runtime.md.CYlNMTNp.js → guides_cloud-runtime.md.gVzabdQL.js} +1 -1
  36. package/dist/docs/assets/{guides_github.md.DwbKhCeS.js → guides_github.md.DOOCpqsW.js} +11 -4
  37. package/dist/docs/assets/{guides_github.md.DwbKhCeS.lean.js → guides_github.md.DOOCpqsW.lean.js} +1 -1
  38. package/dist/docs/assets/{guides_human-in-the-loop.md.Dvuctx7s.js → guides_human-in-the-loop.md.DlUqsp1S.js} +2 -2
  39. package/dist/docs/assets/{guides_slack.md.bv41fHfW.js → guides_slack.md.CCwqHvSV.js} +4 -4
  40. package/dist/docs/assets/{guides_slack.md.bv41fHfW.lean.js → guides_slack.md.CCwqHvSV.lean.js} +1 -1
  41. package/dist/docs/assets/{guides_webhooks.md.hFTik3lf.js → guides_webhooks.md.B1EswtUu.js} +2 -2
  42. package/dist/docs/assets/index.md.m81y7TY7.js +20 -0
  43. package/dist/docs/assets/{index.md.BPKcj5AI.lean.js → index.md.m81y7TY7.lean.js} +1 -1
  44. package/dist/docs/assets/quickstart.md.BU6Iwi_9.js +204 -0
  45. package/dist/docs/assets/quickstart.md.BU6Iwi_9.lean.js +1 -0
  46. package/dist/docs/assets/{reference_agent-config.md.Bpd7HQwf.js → reference_agent-config.md.DrW2JUM8.js} +4 -4
  47. package/dist/docs/assets/{reference_agent-config.md.Bpd7HQwf.lean.js → reference_agent-config.md.DrW2JUM8.lean.js} +1 -1
  48. package/dist/docs/assets/{reference_channels.md.D7JTR03W.js → reference_channels.md.DdmiKgqf.js} +4 -4
  49. package/dist/docs/assets/{reference_channels.md.D7JTR03W.lean.js → reference_channels.md.DdmiKgqf.lean.js} +1 -1
  50. package/dist/docs/assets/{reference_cli.md.DA730zCu.js → reference_cli.md.Bv6pOxcF.js} +11 -6
  51. package/dist/docs/assets/{reference_cli.md.DA730zCu.lean.js → reference_cli.md.Bv6pOxcF.lean.js} +1 -1
  52. package/dist/docs/assets/{reference_connections.md.C3vNH_DE.js → reference_connections.md.zaEYCLHT.js} +1 -1
  53. package/dist/docs/assets/{reference_hooks.md.BCEc3MyM.js → reference_hooks.md.DyLVfE1O.js} +1 -1
  54. package/dist/docs/assets/{reference_hooks.md.BCEc3MyM.lean.js → reference_hooks.md.DyLVfE1O.lean.js} +1 -1
  55. package/dist/docs/assets/{reference_http-api.md.DBAahtdz.js → reference_http-api.md.Dx_nmDG6.js} +1 -1
  56. package/dist/docs/assets/{reference_instructions.md.BC05LEQ8.js → reference_instructions.md.CgoV-YEb.js} +9 -7
  57. package/dist/docs/assets/{reference_instructions.md.BC05LEQ8.lean.js → reference_instructions.md.CgoV-YEb.lean.js} +1 -1
  58. package/dist/docs/assets/{reference_schedules.md.D7qijxLk.js → reference_schedules.md.w_F2mXB6.js} +2 -2
  59. package/dist/docs/assets/{reference_skills.md.VQnlBT3Q.js → reference_skills.md.B_jHN7JL.js} +3 -3
  60. package/dist/docs/assets/{reference_skills.md.VQnlBT3Q.lean.js → reference_skills.md.B_jHN7JL.lean.js} +1 -1
  61. package/dist/docs/assets/{reference_subagents.md.CIRAVcPK.js → reference_subagents.md.zWAMNfi1.js} +1 -1
  62. package/dist/docs/assets/{reference_tools.md.DF5kwlt0.js → reference_tools.md.CqgJroI0.js} +2 -2
  63. package/dist/docs/assets/scaffolding-agents.md.C3pTrmoE.js +1 -0
  64. package/dist/docs/assets/scaffolding-agents.md.C3pTrmoE.lean.js +1 -0
  65. package/dist/docs/assets/storage.md.CVnInNiN.js +17 -0
  66. package/dist/docs/assets/storage.md.CVnInNiN.lean.js +1 -0
  67. package/dist/docs/building-with-agents.html +4 -4
  68. package/dist/docs/concepts.html +4 -4
  69. package/dist/docs/deployment.html +7 -7
  70. package/dist/docs/evals.html +7 -7
  71. package/dist/docs/guides/agent-to-agent.html +6 -6
  72. package/dist/docs/guides/cloud-runtime.html +5 -5
  73. package/dist/docs/guides/github.html +14 -7
  74. package/dist/docs/guides/human-in-the-loop.html +6 -6
  75. package/dist/docs/guides/slack.html +8 -8
  76. package/dist/docs/guides/webhooks.html +6 -6
  77. package/dist/docs/hashmap.json +1 -1
  78. package/dist/docs/hillclimbing.html +5 -5
  79. package/dist/docs/index.html +7 -7
  80. package/dist/docs/quickstart.html +195 -26
  81. package/dist/docs/reference/agent-config.html +7 -7
  82. package/dist/docs/reference/channels.html +8 -8
  83. package/dist/docs/reference/cli.html +14 -9
  84. package/dist/docs/reference/connections.html +5 -5
  85. package/dist/docs/reference/hooks.html +5 -5
  86. package/dist/docs/reference/http-api.html +6 -6
  87. package/dist/docs/reference/instructions.html +13 -11
  88. package/dist/docs/reference/playground.html +4 -4
  89. package/dist/docs/reference/project-layout.html +4 -4
  90. package/dist/docs/reference/schedules.html +7 -7
  91. package/dist/docs/reference/sessions.html +4 -4
  92. package/dist/docs/reference/skills.html +6 -6
  93. package/dist/docs/reference/subagents.html +6 -6
  94. package/dist/docs/reference/tools.html +7 -7
  95. package/dist/docs/scaffolding-agents.html +5 -5
  96. package/dist/docs/storage.html +41 -0
  97. package/dist/docs/troubleshooting.html +4 -4
  98. package/dist/index.d.ts +2 -0
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +1 -0
  101. package/dist/internal/chat-client.d.ts +29 -3
  102. package/dist/internal/chat-client.d.ts.map +1 -1
  103. package/dist/internal/chat-client.js +180 -27
  104. package/dist/internal/cli-ax.d.ts +75 -2
  105. package/dist/internal/cli-ax.d.ts.map +1 -1
  106. package/dist/internal/cli-ax.js +600 -52
  107. package/dist/internal/cli-cursor.d.ts.map +1 -1
  108. package/dist/internal/cli-cursor.js +8 -36
  109. package/dist/internal/cli-deploy.d.ts +108 -0
  110. package/dist/internal/cli-deploy.d.ts.map +1 -0
  111. package/dist/internal/cli-deploy.js +1009 -0
  112. package/dist/internal/cursor/backend-client.d.ts +10 -1
  113. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  114. package/dist/internal/cursor/backend-client.js +79 -1
  115. package/dist/internal/cursor/credentials.d.ts +9 -0
  116. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  117. package/dist/internal/cursor/credentials.js +12 -0
  118. package/dist/internal/cursor/github-credentials.d.ts +44 -0
  119. package/dist/internal/cursor/github-credentials.d.ts.map +1 -0
  120. package/dist/internal/cursor/github-credentials.js +195 -0
  121. package/dist/internal/deploy-client.d.ts +184 -0
  122. package/dist/internal/deploy-client.d.ts.map +1 -0
  123. package/dist/internal/deploy-client.js +395 -0
  124. package/dist/internal/deploy-source.d.ts +35 -0
  125. package/dist/internal/deploy-source.d.ts.map +1 -0
  126. package/dist/internal/deploy-source.js +118 -0
  127. package/dist/internal/discovery.d.ts +11 -0
  128. package/dist/internal/discovery.d.ts.map +1 -1
  129. package/dist/internal/discovery.js +116 -19
  130. package/dist/internal/distribution.d.ts.map +1 -1
  131. package/dist/internal/distribution.js +1 -0
  132. package/dist/internal/eval-run-store.d.ts +22 -3
  133. package/dist/internal/eval-run-store.d.ts.map +1 -1
  134. package/dist/internal/eval-run-store.js +39 -20
  135. package/dist/internal/eval-runner.d.ts +2 -0
  136. package/dist/internal/eval-runner.d.ts.map +1 -1
  137. package/dist/internal/eval-runner.js +2 -0
  138. package/dist/internal/event-mapper.d.ts +54 -1
  139. package/dist/internal/event-mapper.d.ts.map +1 -1
  140. package/dist/internal/event-mapper.js +151 -41
  141. package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
  142. package/dist/internal/handleAgentServeTrigger.js +10 -12
  143. package/dist/internal/host-platforms.d.ts +7 -2
  144. package/dist/internal/host-platforms.d.ts.map +1 -1
  145. package/dist/internal/host-platforms.js +15 -10
  146. package/dist/internal/hosting.d.ts +37 -0
  147. package/dist/internal/hosting.d.ts.map +1 -0
  148. package/dist/internal/hosting.js +67 -0
  149. package/dist/internal/init-project.d.ts +88 -1
  150. package/dist/internal/init-project.d.ts.map +1 -1
  151. package/dist/internal/init-project.js +221 -31
  152. package/dist/internal/install-cursor-skills.d.ts +64 -0
  153. package/dist/internal/install-cursor-skills.d.ts.map +1 -0
  154. package/dist/internal/install-cursor-skills.js +274 -0
  155. package/dist/internal/logs-client.d.ts +60 -0
  156. package/dist/internal/logs-client.d.ts.map +1 -0
  157. package/dist/internal/logs-client.js +311 -0
  158. package/dist/internal/open-browser.d.ts +5 -0
  159. package/dist/internal/open-browser.d.ts.map +1 -0
  160. package/dist/internal/open-browser.js +34 -0
  161. package/dist/internal/playground/toolchain.d.ts.map +1 -1
  162. package/dist/internal/playground/toolchain.js +16 -11
  163. package/dist/internal/playground-proxy.d.ts +69 -0
  164. package/dist/internal/playground-proxy.d.ts.map +1 -0
  165. package/dist/internal/playground-proxy.js +468 -0
  166. package/dist/internal/prompt-context.d.ts +35 -0
  167. package/dist/internal/prompt-context.d.ts.map +1 -0
  168. package/dist/internal/prompt-context.js +71 -0
  169. package/dist/internal/reminder-runner.d.ts +7 -0
  170. package/dist/internal/reminder-runner.d.ts.map +1 -1
  171. package/dist/internal/reminder-runner.js +50 -6
  172. package/dist/internal/reminder-store.d.ts +2 -0
  173. package/dist/internal/reminder-store.d.ts.map +1 -1
  174. package/dist/internal/reminder-store.js +18 -0
  175. package/dist/internal/request-headers.d.ts +11 -0
  176. package/dist/internal/request-headers.d.ts.map +1 -0
  177. package/dist/internal/request-headers.js +14 -0
  178. package/dist/internal/resolve-prod-target.d.ts +42 -0
  179. package/dist/internal/resolve-prod-target.d.ts.map +1 -0
  180. package/dist/internal/resolve-prod-target.js +111 -0
  181. package/dist/internal/run-client.d.ts +2 -2
  182. package/dist/internal/run-client.d.ts.map +1 -1
  183. package/dist/internal/run-client.js +38 -23
  184. package/dist/internal/server.d.ts.map +1 -1
  185. package/dist/internal/server.js +182 -45
  186. package/dist/internal/session-engine.d.ts +50 -1
  187. package/dist/internal/session-engine.d.ts.map +1 -1
  188. package/dist/internal/session-engine.js +267 -23
  189. package/dist/internal/sessions-client.d.ts +21 -0
  190. package/dist/internal/sessions-client.d.ts.map +1 -0
  191. package/dist/internal/sessions-client.js +168 -0
  192. package/dist/internal/storage-coordinator.d.ts +139 -0
  193. package/dist/internal/storage-coordinator.d.ts.map +1 -0
  194. package/dist/internal/storage-coordinator.js +499 -0
  195. package/dist/internal/stream-progress.d.ts.map +1 -1
  196. package/dist/internal/stream-progress.js +31 -3
  197. package/dist/internal/terminal-style.d.ts +22 -0
  198. package/dist/internal/terminal-style.d.ts.map +1 -0
  199. package/dist/internal/terminal-style.js +49 -0
  200. package/dist/internal/trajectory.d.ts +10 -5
  201. package/dist/internal/trajectory.d.ts.map +1 -1
  202. package/dist/internal/trajectory.js +82 -10
  203. package/dist/internal/workspace.d.ts +11 -0
  204. package/dist/internal/workspace.d.ts.map +1 -1
  205. package/dist/internal/workspace.js +38 -4
  206. package/dist/playground/assets/cursor-icons-outline-BxTT_FVJ.woff2 +0 -0
  207. package/dist/playground/assets/index-D-vo2lV_.css +1 -0
  208. package/dist/playground/assets/index-x60b9q2j.js +312 -0
  209. package/dist/playground/index.html +2 -2
  210. package/dist/storage.d.ts +204 -0
  211. package/dist/storage.d.ts.map +1 -0
  212. package/dist/storage.js +153 -0
  213. package/dist/types.d.ts +70 -4
  214. package/dist/types.d.ts.map +1 -1
  215. package/docs/README.md +3 -2
  216. package/docs/guides/github.md +43 -8
  217. package/docs/guides/slack.md +1 -1
  218. package/docs/quickstart.md +350 -57
  219. package/docs/reference/cli.md +51 -3
  220. package/docs/reference/instructions.md +8 -6
  221. package/docs/scaffolding-agents.md +1 -1
  222. package/docs/storage.md +98 -0
  223. package/package.json +10 -1
  224. package/skills/ab/SKILL.md +8 -8
  225. package/skills/create-agent/SKILL.md +28 -22
  226. package/skills/debug/SKILL.md +11 -11
  227. package/skills/evals/SKILL.md +16 -16
  228. package/skills/framework-map/SKILL.md +6 -6
  229. package/skills/github/SKILL.md +22 -14
  230. package/skills/hillclimb/SKILL.md +10 -10
  231. package/skills/setup-slack/SKILL.md +13 -13
  232. package/src/bin/agent-serve.ts +552 -179
  233. package/src/channels/github/api.ts +42 -23
  234. package/src/channels/github/cursor-account.ts +165 -0
  235. package/src/channels/github/github-channel.ts +66 -6
  236. package/src/channels/github/index.ts +2 -2
  237. package/src/channels/github/types.ts +19 -0
  238. package/src/channels/slack/slack-channel.ts +17 -3
  239. package/src/channels/slack/types.ts +44 -3
  240. package/src/index.ts +13 -0
  241. package/src/internal/chat-client.ts +252 -37
  242. package/src/internal/cli-ax.ts +722 -72
  243. package/src/internal/cli-cursor.ts +14 -42
  244. package/src/internal/cli-deploy.ts +1319 -0
  245. package/src/internal/cursor/backend-client.ts +103 -1
  246. package/src/internal/cursor/credentials.ts +14 -0
  247. package/src/internal/cursor/github-credentials.ts +248 -0
  248. package/src/internal/deploy-client.ts +632 -0
  249. package/src/internal/deploy-source.ts +133 -0
  250. package/src/internal/discovery.ts +141 -17
  251. package/src/internal/distribution.ts +1 -0
  252. package/src/internal/eval-run-store.ts +50 -20
  253. package/src/internal/eval-runner.ts +5 -0
  254. package/src/internal/event-mapper.ts +222 -42
  255. package/src/internal/handleAgentServeTrigger.ts +10 -12
  256. package/src/internal/host-platforms.ts +28 -11
  257. package/src/internal/hosting.ts +77 -0
  258. package/src/internal/init-project.ts +333 -51
  259. package/src/internal/install-cursor-skills.ts +327 -0
  260. package/src/internal/logs-client.ts +442 -0
  261. package/src/internal/open-browser.ts +41 -0
  262. package/src/internal/playground/toolchain.ts +15 -13
  263. package/src/internal/playground-proxy.ts +576 -0
  264. package/src/internal/prompt-context.ts +95 -0
  265. package/src/internal/reminder-runner.ts +50 -6
  266. package/src/internal/reminder-store.ts +21 -0
  267. package/src/internal/request-headers.ts +23 -0
  268. package/src/internal/resolve-prod-target.ts +150 -0
  269. package/src/internal/run-client.ts +39 -36
  270. package/src/internal/server.ts +223 -28
  271. package/src/internal/session-engine.ts +307 -10
  272. package/src/internal/sessions-client.ts +182 -0
  273. package/src/internal/storage-coordinator.ts +615 -0
  274. package/src/internal/stream-progress.ts +36 -2
  275. package/src/internal/terminal-style.ts +74 -0
  276. package/src/internal/trajectory.ts +91 -13
  277. package/src/internal/workspace.ts +42 -4
  278. package/src/storage.ts +325 -0
  279. package/src/types.ts +82 -8
  280. package/dist/docs/assets/chunks/@localSearchIndexroot.CcVk1uKq.js +0 -1
  281. package/dist/docs/assets/index.md.BPKcj5AI.js +0 -20
  282. package/dist/docs/assets/quickstart.md.tVPiGK_L.js +0 -35
  283. package/dist/docs/assets/quickstart.md.tVPiGK_L.lean.js +0 -1
  284. package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.js +0 -1
  285. package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.lean.js +0 -1
  286. package/dist/playground/assets/cursor-icons-outline-oY2V_mvK.woff2 +0 -0
  287. package/dist/playground/assets/index-1K-hG-7p.css +0 -1
  288. package/dist/playground/assets/index-FlWjhg3x.js +0 -79
  289. /package/dist/docs/assets/{evals.md.DPZ_MAnI.lean.js → evals.md.DAgEc_hL.lean.js} +0 -0
  290. /package/dist/docs/assets/{guides_agent-to-agent.md.CrtrsySy.lean.js → guides_agent-to-agent.md.Bpzgq2Pq.lean.js} +0 -0
  291. /package/dist/docs/assets/{guides_cloud-runtime.md.CYlNMTNp.lean.js → guides_cloud-runtime.md.gVzabdQL.lean.js} +0 -0
  292. /package/dist/docs/assets/{guides_human-in-the-loop.md.Dvuctx7s.lean.js → guides_human-in-the-loop.md.DlUqsp1S.lean.js} +0 -0
  293. /package/dist/docs/assets/{guides_webhooks.md.hFTik3lf.lean.js → guides_webhooks.md.B1EswtUu.lean.js} +0 -0
  294. /package/dist/docs/assets/{reference_connections.md.C3vNH_DE.lean.js → reference_connections.md.zaEYCLHT.lean.js} +0 -0
  295. /package/dist/docs/assets/{reference_http-api.md.DBAahtdz.lean.js → reference_http-api.md.Dx_nmDG6.lean.js} +0 -0
  296. /package/dist/docs/assets/{reference_schedules.md.D7qijxLk.lean.js → reference_schedules.md.w_F2mXB6.lean.js} +0 -0
  297. /package/dist/docs/assets/{reference_subagents.md.CIRAVcPK.lean.js → reference_subagents.md.zWAMNfi1.lean.js} +0 -0
  298. /package/dist/docs/assets/{reference_tools.md.DF5kwlt0.lean.js → reference_tools.md.CqgJroI0.lean.js} +0 -0
@@ -15,7 +15,8 @@
15
15
  import { z } from "zod";
16
16
  export declare class CursorBackendError extends Error {
17
17
  readonly status?: number | undefined;
18
- constructor(message: string, status?: number | undefined);
18
+ readonly retryAfterMs?: number | undefined;
19
+ constructor(message: string, status?: number | undefined, retryAfterMs?: number | undefined);
19
20
  }
20
21
  declare const getMeResponseSchema: z.ZodObject<{
21
22
  authId: z.ZodOptional<z.ZodString>;
@@ -26,6 +27,10 @@ declare const getMeResponseSchema: z.ZodObject<{
26
27
  teamName: z.ZodOptional<z.ZodString>;
27
28
  }, "strip">;
28
29
  export type CursorIdentity = z.infer<typeof getMeResponseSchema>;
30
+ export interface CursorGithubToken {
31
+ token: string;
32
+ expiresAt: string;
33
+ }
29
34
  export interface AccountMcpTool {
30
35
  /** Fully-qualified tool name (`<server>-<tool>`), the execution key. */
31
36
  name: string;
@@ -84,6 +89,10 @@ export declare class CursorBackendClient {
84
89
  toolName: string;
85
90
  args: Record<string, unknown>;
86
91
  }): Promise<AccountMcpCallResult>;
92
+ /** Mint a short-lived GitHub token scoped to the requested repositories. */
93
+ getGithubToken(repos: readonly string[], options?: {
94
+ permissions?: "read" | "pr-write" | "contents-write";
95
+ }): Promise<CursorGithubToken>;
87
96
  private rpc;
88
97
  private getAccessToken;
89
98
  private exchangeApiKey;
@@ -1 +1 @@
1
- {"version":3,"file":"backend-client.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/backend-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend-client.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/backend-client.ts"],"names":[],"mappings":"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"}
@@ -34,9 +34,10 @@ const LIST_TIMEOUT_MS = 60000;
34
34
  /** Backend-executed tools call out to third-party servers; be generous. */
35
35
  const EXECUTE_TIMEOUT_MS = 120000;
36
36
  export class CursorBackendError extends Error {
37
- constructor(message, status) {
37
+ constructor(message, status, retryAfterMs) {
38
38
  super(message);
39
39
  this.status = status;
40
+ this.retryAfterMs = retryAfterMs;
40
41
  this.name = "CursorBackendError";
41
42
  }
42
43
  }
@@ -54,6 +55,10 @@ const getMeResponseSchema = z.object({
54
55
  const createUserApiKeyResponseSchema = z.object({
55
56
  apiKey: z.string().min(1),
56
57
  });
58
+ const githubTokenResponseSchema = z.object({
59
+ token: z.string().min(1),
60
+ expiresAt: z.string().datetime(),
61
+ });
57
62
  const mcpToolSchema = z.object({
58
63
  name: z.string(),
59
64
  providerIdentifier: z.string().optional(),
@@ -211,6 +216,40 @@ export class CursorBackendClient {
211
216
  return toCallResult((_a = parsed.result) !== null && _a !== void 0 ? _a : {});
212
217
  });
213
218
  }
219
+ /** Mint a short-lived GitHub token scoped to the requested repositories. */
220
+ getGithubToken(repos, options) {
221
+ return __awaiter(this, void 0, void 0, function* () {
222
+ var _a;
223
+ const permissions = (_a = options === null || options === void 0 ? void 0 : options.permissions) !== null && _a !== void 0 ? _a : "pr-write";
224
+ let response;
225
+ try {
226
+ response = yield this.fetchImpl(`${this.backendUrl}/v0/scm-events/github-token`, {
227
+ method: "POST",
228
+ headers: {
229
+ "content-type": "application/json",
230
+ authorization: `Bearer ${this.apiKey}`,
231
+ },
232
+ body: JSON.stringify({ repos: [...repos], permissions }),
233
+ signal: AbortSignal.timeout(30000),
234
+ });
235
+ }
236
+ catch (error) {
237
+ throw new CursorBackendError(`Cursor GitHub credential request failed: ${describeError(error)}`);
238
+ }
239
+ const text = yield response.text();
240
+ if (!response.ok) {
241
+ throw new CursorBackendError(describeGithubTokenHttpFailure(response.status, text), response.status, retryAfterMsFromResponse(response));
242
+ }
243
+ let parsed;
244
+ try {
245
+ parsed = JSON.parse(text);
246
+ }
247
+ catch (_b) {
248
+ throw new CursorBackendError("Cursor backend returned a non-JSON GitHub credential response.");
249
+ }
250
+ return githubTokenResponseSchema.parse(parsed);
251
+ });
252
+ }
214
253
  rpc(method_1, body_1) {
215
254
  return __awaiter(this, arguments, void 0, function* (method, body, timeoutMs = LIST_TIMEOUT_MS) {
216
255
  var _a, _b;
@@ -445,6 +484,45 @@ function connectErrorMessage(bodyText) {
445
484
  }
446
485
  return bodyText.slice(0, 300) || "(empty response body)";
447
486
  }
487
+ const MAX_GITHUB_TOKEN_RETRY_AFTER_MS = 60 * 60000;
488
+ /**
489
+ * Prefer the backend's actionable denial message. Only a true 401 on this
490
+ * route means the Cursor API key itself was rejected — GitHub-connection
491
+ * problems arrive as 403 with a server `error` string.
492
+ */
493
+ function describeGithubTokenHttpFailure(status, bodyText) {
494
+ const detail = githubTokenErrorFromBody(bodyText);
495
+ if (status === 401) {
496
+ return `The Cursor API key was rejected${detail === undefined ? "" : `: ${detail}`}. Run \`agent-serve login\` again or update CURSOR_API_KEY.`;
497
+ }
498
+ if (detail !== undefined) {
499
+ return detail;
500
+ }
501
+ return `Cursor GitHub credential request failed (${status}).`;
502
+ }
503
+ function githubTokenErrorFromBody(bodyText) {
504
+ const parsed = safeJsonParse(bodyText);
505
+ if (typeof parsed !== "object" || parsed === null) {
506
+ return undefined;
507
+ }
508
+ const error = parsed.error;
509
+ if (typeof error === "string" && error !== "") {
510
+ return error;
511
+ }
512
+ const message = parsed.message;
513
+ if (typeof message === "string" && message !== "") {
514
+ return message;
515
+ }
516
+ return undefined;
517
+ }
518
+ function retryAfterMsFromResponse(response) {
519
+ var _a;
520
+ const retryAfter = Number((_a = response.headers.get("retry-after")) !== null && _a !== void 0 ? _a : "");
521
+ if (!Number.isFinite(retryAfter) || retryAfter <= 0) {
522
+ return undefined;
523
+ }
524
+ return Math.min(retryAfter * 1000, MAX_GITHUB_TOKEN_RETRY_AFTER_MS);
525
+ }
448
526
  function jwtExpiryMs(token) {
449
527
  try {
450
528
  const payload = token.split(".")[1];
@@ -16,8 +16,17 @@
16
16
  */
17
17
  import { z } from "zod";
18
18
  export declare const DEFAULT_CURSOR_BACKEND_URL = "https://api2.cursor.sh";
19
+ export declare const DEFAULT_CURSOR_EXTERNAL_API_URL = "https://api.cursor.com";
19
20
  /** Backend API base URL (`CURSOR_API_BASE_URL` override for local dev). */
20
21
  export declare function cursorBackendUrl(): string;
22
+ /**
23
+ * External API base URL for routes served only by the external-api
24
+ * microlith (`/internal/agent-serve/*`, engine aliases). In production
25
+ * these are mounted on api.cursor.com and 404 on api2.cursor.sh, so the
26
+ * deploy surface needs its own default. `CURSOR_API_BASE_URL` still
27
+ * overrides everything for local dev, where one server mounts all routes.
28
+ */
29
+ export declare function cursorExternalApiUrl(): string;
21
30
  /** Website base URL for the login deep link (`CURSOR_WEBSITE_URL` override). */
22
31
  export declare function cursorWebsiteUrl(): string;
23
32
  declare const storedCredentialsSchema: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAGnE,2EAA2E;AAC3E,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAUD,QAAA,MAAM,uBAAuB,EAAE,CAAC,CAAC,SAAS,CACxC;IAAE,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAA;CAAE,EAChD,OAAO,CAKP,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAQ5C;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CACpD,iBAAiB,GAAG,SAAS,CAC9B,CAsBA;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO/D;AAMD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CActC;AAED,yEAAyE;AACzE,eAAO,MAAM,YAAY,EAAE,MAA8F,CAAC;AAQ1H,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,CAU9C;AAKD;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAmG3B"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AACnE,eAAO,MAAM,+BAA+B,2BAA2B,CAAC;AAGxE,2EAA2E;AAC3E,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAUD,QAAA,MAAM,uBAAuB,EAAE,CAAC,CAAC,SAAS,CACxC;IAAE,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAA;CAAE,EAChD,OAAO,CAKP,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAQ5C;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CACpD,iBAAiB,GAAG,SAAS,CAC9B,CAsBA;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO/D;AAMD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CActC;AAED,yEAAyE;AACzE,eAAO,MAAM,YAAY,EAAE,MAA8F,CAAC;AAQ1H,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,CAU9C;AAKD;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAmG3B"}
@@ -30,12 +30,24 @@ import { dirname, join } from "node:path";
30
30
  import { z } from "zod";
31
31
  import { CLI_COMMAND_NAME } from "../distribution.js";
32
32
  export const DEFAULT_CURSOR_BACKEND_URL = "https://api2.cursor.sh";
33
+ export const DEFAULT_CURSOR_EXTERNAL_API_URL = "https://api.cursor.com";
33
34
  const DEFAULT_CURSOR_WEBSITE_URL = "https://cursor.com";
34
35
  /** Backend API base URL (`CURSOR_API_BASE_URL` override for local dev). */
35
36
  export function cursorBackendUrl() {
36
37
  var _a;
37
38
  return trimTrailingSlash((_a = process.env.CURSOR_API_BASE_URL) !== null && _a !== void 0 ? _a : DEFAULT_CURSOR_BACKEND_URL);
38
39
  }
40
+ /**
41
+ * External API base URL for routes served only by the external-api
42
+ * microlith (`/internal/agent-serve/*`, engine aliases). In production
43
+ * these are mounted on api.cursor.com and 404 on api2.cursor.sh, so the
44
+ * deploy surface needs its own default. `CURSOR_API_BASE_URL` still
45
+ * overrides everything for local dev, where one server mounts all routes.
46
+ */
47
+ export function cursorExternalApiUrl() {
48
+ var _a;
49
+ return trimTrailingSlash((_a = process.env.CURSOR_API_BASE_URL) !== null && _a !== void 0 ? _a : DEFAULT_CURSOR_EXTERNAL_API_URL);
50
+ }
39
51
  /** Website base URL for the login deep link (`CURSOR_WEBSITE_URL` override). */
40
52
  export function cursorWebsiteUrl() {
41
53
  var _a;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Short-lived GitHub credentials minted from the host's Cursor account.
3
+ *
4
+ * The token stays in memory. `GH_TOKEN` is updated for child `gh` processes,
5
+ * while Octokit callers use {@link getToken} so long-lived clients refresh
6
+ * without being rebuilt.
7
+ */
8
+ import type { CursorGithubRepoScope } from "../../channels/github/cursor-account.js";
9
+ import type { CursorBackendClient } from "./backend-client.js";
10
+ type GithubTokenClient = Pick<CursorBackendClient, "getGithubToken">;
11
+ export interface CursorGithubCredentialProviderOptions {
12
+ client: GithubTokenClient;
13
+ scope: CursorGithubRepoScope;
14
+ logger?: (line: string) => void;
15
+ /** Test seam. */
16
+ now?: () => number;
17
+ }
18
+ export declare class CursorGithubCredentialProvider {
19
+ private readonly client;
20
+ private readonly repos;
21
+ private readonly permissions;
22
+ private readonly logger;
23
+ private readonly now;
24
+ private cached;
25
+ private failure;
26
+ private refreshPromise;
27
+ private refreshTimer;
28
+ private started;
29
+ private stopped;
30
+ private previousGhToken;
31
+ private installedGhToken;
32
+ constructor(options: CursorGithubCredentialProviderOptions);
33
+ start(): Promise<void>;
34
+ getToken(): Promise<string>;
35
+ stop(): void;
36
+ private refresh;
37
+ private scheduleRefresh;
38
+ private scheduleRetry;
39
+ private replaceTimer;
40
+ private installGhToken;
41
+ private restoreGhToken;
42
+ }
43
+ export {};
44
+ //# sourceMappingURL=github-credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-credentials.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/github-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAS/D,KAAK,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AAErE,MAAM,WAAW,qCAAqC;IACpD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAaD,qBAAa,8BAA8B;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,YAAY,OAAO,EAAE,qCAAqC,EAMzD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3B;IAEK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CA0BhC;IAED,IAAI,IAAI,IAAI,CAUX;YAEa,OAAO;IA4DrB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,cAAc;CAavB"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Short-lived GitHub credentials minted from the host's Cursor account.
3
+ *
4
+ * The token stays in memory. `GH_TOKEN` is updated for child `gh` processes,
5
+ * while Octokit callers use {@link getToken} so long-lived clients refresh
6
+ * without being rebuilt.
7
+ */
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ import { CursorBackendError } from "./backend-client.js";
18
+ const REFRESH_LEEWAY_MS = 5 * 60000;
19
+ const REFRESH_RETRY_MS = 60000;
20
+ const FAILURE_CACHE_TTL_MS = 60000;
21
+ const MAX_RETRY_AFTER_MS = 60 * 60000;
22
+ const MIN_TIMER_DELAY_MS = 1000;
23
+ export class CursorGithubCredentialProvider {
24
+ constructor(options) {
25
+ var _a, _b;
26
+ this.started = false;
27
+ this.stopped = false;
28
+ this.client = options.client;
29
+ this.repos = [...options.scope.repos];
30
+ this.permissions = options.scope.permissions;
31
+ this.logger = (_a = options.logger) !== null && _a !== void 0 ? _a : (() => { });
32
+ this.now = (_b = options.now) !== null && _b !== void 0 ? _b : (() => Date.now());
33
+ }
34
+ start() {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ if (this.stopped) {
37
+ throw new Error("Cursor account GitHub credentials have been stopped.");
38
+ }
39
+ if (this.started) {
40
+ return;
41
+ }
42
+ this.previousGhToken = process.env.GH_TOKEN;
43
+ this.started = true;
44
+ try {
45
+ const token = yield this.getToken();
46
+ this.installGhToken(token);
47
+ this.scheduleRefresh();
48
+ }
49
+ catch (error) {
50
+ this.started = false;
51
+ this.restoreGhToken();
52
+ throw error;
53
+ }
54
+ });
55
+ }
56
+ getToken() {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ if (this.stopped) {
59
+ throw new Error("Cursor account GitHub credentials have been stopped.");
60
+ }
61
+ const now = this.now();
62
+ if (this.cached !== undefined && now >= this.cached.expiresAtMs) {
63
+ // Expired leases must not be served; drop them so the next mint is clean.
64
+ this.cached = undefined;
65
+ this.restoreGhToken();
66
+ }
67
+ if (this.cached !== undefined && now < this.cached.refreshAtMs) {
68
+ return this.cached.token;
69
+ }
70
+ if (this.failure !== undefined &&
71
+ now < this.failure.retryAtMs &&
72
+ this.cached === undefined) {
73
+ throw new Error(this.failure.message);
74
+ }
75
+ if (this.refreshPromise === undefined) {
76
+ this.refreshPromise = this.refresh().finally(() => {
77
+ this.refreshPromise = undefined;
78
+ });
79
+ }
80
+ return this.refreshPromise;
81
+ });
82
+ }
83
+ stop() {
84
+ this.started = false;
85
+ this.stopped = true;
86
+ if (this.refreshTimer !== undefined) {
87
+ clearTimeout(this.refreshTimer);
88
+ this.refreshTimer = undefined;
89
+ }
90
+ this.cached = undefined;
91
+ this.failure = undefined;
92
+ this.restoreGhToken();
93
+ }
94
+ refresh() {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ try {
97
+ const result = yield this.client.getGithubToken(this.repos, {
98
+ permissions: this.permissions,
99
+ });
100
+ if (this.stopped) {
101
+ throw new Error("Cursor account GitHub credentials have been stopped.");
102
+ }
103
+ const expiresAtMs = Date.parse(result.expiresAt);
104
+ if (!Number.isFinite(expiresAtMs) ||
105
+ expiresAtMs <= this.now() + REFRESH_LEEWAY_MS) {
106
+ throw new Error("Cursor backend returned an invalid GitHub credential expiry.");
107
+ }
108
+ this.failure = undefined;
109
+ this.cached = {
110
+ token: result.token,
111
+ expiresAtMs,
112
+ refreshAtMs: expiresAtMs - REFRESH_LEEWAY_MS,
113
+ };
114
+ if (this.started) {
115
+ this.installGhToken(result.token);
116
+ this.scheduleRefresh();
117
+ }
118
+ this.logger(`[agent-serve] GitHub auth: refreshed Cursor account credential for ${this.repos.length} repo(s)`);
119
+ return result.token;
120
+ }
121
+ catch (error) {
122
+ const message = error instanceof Error ? error.message : String(error);
123
+ if (this.cached !== undefined && this.now() < this.cached.expiresAtMs) {
124
+ this.logger(`[agent-serve] GitHub auth: Cursor account credential refresh failed; using the current lease: ${message}`);
125
+ this.cached.refreshAtMs = Math.min(this.cached.expiresAtMs, this.now() + REFRESH_RETRY_MS);
126
+ if (this.started) {
127
+ this.scheduleRetry();
128
+ }
129
+ return this.cached.token;
130
+ }
131
+ // Hard failure with no usable lease: evict any stale cache and back off.
132
+ this.cached = undefined;
133
+ this.restoreGhToken();
134
+ this.failure = {
135
+ message,
136
+ retryAtMs: this.now() + failureBackoffMs(error),
137
+ };
138
+ if (this.started) {
139
+ this.scheduleRetry();
140
+ }
141
+ throw error instanceof Error ? error : new Error(message);
142
+ }
143
+ });
144
+ }
145
+ scheduleRefresh() {
146
+ if (!this.started || this.cached === undefined) {
147
+ return;
148
+ }
149
+ this.replaceTimer(Math.max(MIN_TIMER_DELAY_MS, this.cached.refreshAtMs - this.now()));
150
+ }
151
+ scheduleRetry() {
152
+ if (!this.started) {
153
+ return;
154
+ }
155
+ const delayMs = this.failure !== undefined
156
+ ? Math.max(MIN_TIMER_DELAY_MS, this.failure.retryAtMs - this.now())
157
+ : REFRESH_RETRY_MS;
158
+ this.replaceTimer(delayMs);
159
+ }
160
+ replaceTimer(delayMs) {
161
+ var _a, _b;
162
+ if (this.refreshTimer !== undefined) {
163
+ clearTimeout(this.refreshTimer);
164
+ }
165
+ this.refreshTimer = setTimeout(() => {
166
+ void this.getToken().catch((error) => {
167
+ this.logger(`[agent-serve] GitHub auth: Cursor account credential refresh failed: ${error instanceof Error ? error.message : String(error)}`);
168
+ this.scheduleRetry();
169
+ });
170
+ }, delayMs);
171
+ (_b = (_a = this.refreshTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);
172
+ }
173
+ installGhToken(token) {
174
+ process.env.GH_TOKEN = token;
175
+ this.installedGhToken = token;
176
+ }
177
+ restoreGhToken() {
178
+ if (this.installedGhToken !== undefined &&
179
+ process.env.GH_TOKEN === this.installedGhToken) {
180
+ if (this.previousGhToken === undefined) {
181
+ delete process.env.GH_TOKEN;
182
+ }
183
+ else {
184
+ process.env.GH_TOKEN = this.previousGhToken;
185
+ }
186
+ }
187
+ this.installedGhToken = undefined;
188
+ }
189
+ }
190
+ function failureBackoffMs(error) {
191
+ if (error instanceof CursorBackendError && error.retryAfterMs !== undefined) {
192
+ return Math.min(Math.max(error.retryAfterMs, FAILURE_CACHE_TTL_MS), MAX_RETRY_AFTER_MS);
193
+ }
194
+ return FAILURE_CACHE_TTL_MS;
195
+ }
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Thin client for the Agent Serve deployment management API
3
+ * (`/internal/agent-serve/deployments` on the Cursor backend). Pure
4
+ * request/response + error mapping — no console I/O, no polling loops;
5
+ * rendering lives in `cli-deploy.ts`.
6
+ *
7
+ * Auth is the user API key sent directly as the bearer (the routes are
8
+ * `wrapUserApiRoute` on the backend); there is no token exchange here.
9
+ * The endpoints are gated on the `agent_serve_mvp` Statsig gate and 404
10
+ * when it is off — the error mapping says so instead of "not found".
11
+ */
12
+ export type DeploymentStatus = "pending" | "deploying" | "running" | "degraded" | "failed" | "stopping" | "stopped";
13
+ /** Customer-safe deploy progress (no hosting phase / infra names). */
14
+ export type DeploymentProgress = "queued" | "preparing" | "building" | "finalizing" | "running" | "failed" | "stopping" | "stopped" | "degraded";
15
+ export declare const TERMINAL_DEPLOY_STATUSES: ReadonlySet<DeploymentStatus>;
16
+ /**
17
+ * What gets deployed. Today the control plane builds the engine itself from
18
+ * a git ref (or serves the static placeholder when no repo is given), so the
19
+ * only member is the slug/git-ref shape. When artifact-based deploys ship
20
+ * ("build locally + upload"), add an `{ kind: "artifact", ... }` member here
21
+ * and a branch in {@link AgentServeDeployClient.deploy} — the command
22
+ * surface and everything downstream stays unchanged.
23
+ */
24
+ export type DeploySource = {
25
+ kind: "git-ref";
26
+ /** Omit for the control-plane static engine (`static-http-200`). */
27
+ gitRepoUrl?: string;
28
+ gitRef?: string;
29
+ agentPath?: string;
30
+ /** Repos whose SCM events the deployed engine pulls (`owner/name`). */
31
+ cursorEventRepos?: string[];
32
+ /**
33
+ * Egress allowlist for the engine pod. Only valid on repo-backed
34
+ * deploys — the backend 400s when set on a static deploy.
35
+ */
36
+ egressAllowedDomains?: string[];
37
+ };
38
+ /** Returns a human error message, or undefined when the slug is valid. */
39
+ export declare function validateDeploymentSlug(slug: string): string | undefined;
40
+ /** Derive a valid slug from a directory name, or undefined if impossible. */
41
+ export declare function slugFromDirectoryName(name: string): string | undefined;
42
+ export declare class DeployApiError extends Error {
43
+ readonly status: number;
44
+ /** Seconds to wait before retrying (from `Retry-After` on 429s). */
45
+ readonly retryAfterSeconds?: number | undefined;
46
+ constructor(message: string, status: number,
47
+ /** Seconds to wait before retrying (from `Retry-After` on 429s). */
48
+ retryAfterSeconds?: number | undefined);
49
+ }
50
+ export interface DeployAccepted {
51
+ id: number;
52
+ slug: string;
53
+ teamId: number;
54
+ status: string;
55
+ generation: number;
56
+ deploymentKind: string;
57
+ engineAlias: string;
58
+ /** Present exactly once, on the deploy that minted the record. */
59
+ aliasToken?: string;
60
+ }
61
+ export interface Deployment {
62
+ id: number;
63
+ slug: string;
64
+ teamId: number;
65
+ deploymentKind: string;
66
+ gitRepoUrl?: string | null;
67
+ gitRef?: string;
68
+ agentPath?: string;
69
+ desiredState?: string;
70
+ status: DeploymentStatus;
71
+ /**
72
+ * Customer-safe deploy progress (no hosting internals). Present on newer
73
+ * backends; older responses omit it.
74
+ */
75
+ progress?: DeploymentProgress;
76
+ generation: number;
77
+ observedGeneration?: number | null;
78
+ engineGeneration?: number | null;
79
+ publicId?: string;
80
+ engineUrl?: string | null;
81
+ lastError?: string | null;
82
+ engineAlias: string;
83
+ desiredUpdatedAt?: string;
84
+ lastReconciledAt?: string | null;
85
+ /** SCM-event repos configured on the deployment (`owner/name`). */
86
+ cursorEventRepos?: string[];
87
+ /** Normalized egress allowlist for the engine pod. */
88
+ egressAllowedDomains?: string[];
89
+ /** Service-account id (`sa_…`); null on legacy rows. */
90
+ serviceAccountId?: string | number | null;
91
+ /** Masked pod credential; the raw key is never returned. */
92
+ podCredentialMaskedKey?: string | null;
93
+ /** Names of the secrets set on the deployment (values never returned). */
94
+ secretNames?: string[];
95
+ }
96
+ /** Short-lived direct pod access minted by the status route. */
97
+ export interface EngineAccess {
98
+ url: string;
99
+ headers: Record<string, string>;
100
+ expiresAt: string;
101
+ }
102
+ export interface DeploymentDetail extends Deployment {
103
+ engineAccess?: EngineAccess | null;
104
+ }
105
+ export interface StopAccepted {
106
+ id: number;
107
+ status: string;
108
+ }
109
+ /** One secret's metadata from the list endpoint — names only, never values. */
110
+ export interface SecretInfo {
111
+ name: string;
112
+ createdAt: string;
113
+ }
114
+ export interface AgentServeDeployClientOptions {
115
+ backendUrl: string;
116
+ apiKey: string;
117
+ /** Test seam; defaults to global fetch. */
118
+ fetchImpl?: typeof fetch;
119
+ }
120
+ export declare class AgentServeDeployClient {
121
+ private readonly backendUrl;
122
+ private readonly apiKey;
123
+ private readonly fetchImpl;
124
+ constructor(options: AgentServeDeployClientOptions);
125
+ /** Create or redeploy; 202 means accepted, not running (poll status). */
126
+ deploy(args: {
127
+ teamId: number;
128
+ slug: string;
129
+ source: DeploySource;
130
+ }): Promise<DeployAccepted>;
131
+ listDeployments(args: {
132
+ teamId: number;
133
+ }): Promise<Deployment[]>;
134
+ getDeployment(args: {
135
+ teamId: number;
136
+ slug: string;
137
+ }): Promise<DeploymentDetail>;
138
+ stopDeployment(args: {
139
+ teamId: number;
140
+ slug: string;
141
+ }): Promise<StopAccepted>;
142
+ /** Returns the new alias token exactly once; the old one dies now. */
143
+ rotateAliasToken(args: {
144
+ teamId: number;
145
+ slug: string;
146
+ }): Promise<string>;
147
+ /**
148
+ * Upsert secrets by name (unlisted names stay untouched). Returns the
149
+ * post-write union of secret names, sorted. Validates names and value
150
+ * sizes client-side with the backend's grammar before any network call.
151
+ */
152
+ setSecrets(args: {
153
+ teamId: number;
154
+ slug: string;
155
+ secrets: Array<{
156
+ name: string;
157
+ value: string;
158
+ }>;
159
+ }): Promise<string[]>;
160
+ /** Secret names + creation times; values are never returned. */
161
+ listSecrets(args: {
162
+ teamId: number;
163
+ slug: string;
164
+ }): Promise<SecretInfo[]>;
165
+ /** Remove one secret by name; 404 when it is not set. */
166
+ deleteSecret(args: {
167
+ teamId: number;
168
+ slug: string;
169
+ name: string;
170
+ }): Promise<void>;
171
+ /**
172
+ * Rotate the deployment's pod credential. Returns the masked new key —
173
+ * the raw key is injected into the pod on the next deploy, never
174
+ * returned to clients.
175
+ */
176
+ rotatePodCredential(args: {
177
+ teamId: number;
178
+ slug: string;
179
+ }): Promise<string>;
180
+ /** Full URL of the stable engine alias for a deployment. */
181
+ aliasUrl(engineAlias: string): string;
182
+ private request;
183
+ }
184
+ //# sourceMappingURL=deploy-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-client.d.ts","sourceRoot":"","sources":["../../src/internal/deploy-client.ts"],"names":[],"mappings":"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"}