@cursor/july 0.1.105 → 0.1.108

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 (395) hide show
  1. package/README.md +10 -5
  2. package/dist/bin/agent-serve.js +31 -16
  3. package/dist/channels/bitbucket/types.d.ts +2 -4
  4. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  5. package/dist/channels/deployments/types.d.ts +5 -8
  6. package/dist/channels/deployments/types.d.ts.map +1 -1
  7. package/dist/channels/github/github-channel.js +8 -5
  8. package/dist/channels/github/types.d.ts +7 -5
  9. package/dist/channels/github/types.d.ts.map +1 -1
  10. package/dist/channels/gitlab/types.d.ts +2 -5
  11. package/dist/channels/gitlab/types.d.ts.map +1 -1
  12. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  13. package/dist/channels/origin/origin-channel.js +27 -13
  14. package/dist/channels/origin/types.d.ts +7 -4
  15. package/dist/channels/origin/types.d.ts.map +1 -1
  16. package/dist/channels/slack/defaults.d.ts.map +1 -1
  17. package/dist/channels/slack/defaults.js +3 -0
  18. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  19. package/dist/channels/slack/dispatch.js +1 -1
  20. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  21. package/dist/channels/slack/live-delivery.js +48 -11
  22. package/dist/channels/slack/types.d.ts +4 -3
  23. package/dist/channels/slack/types.d.ts.map +1 -1
  24. package/dist/channels.d.ts +45 -0
  25. package/dist/channels.d.ts.map +1 -1
  26. package/dist/channels.js +106 -7
  27. package/dist/connections.d.ts +2 -1
  28. package/dist/connections.d.ts.map +1 -1
  29. package/dist/connections.js +2 -1
  30. package/dist/docs/404.html +3 -3
  31. package/dist/docs/ab.html +6 -6
  32. package/dist/docs/assets/{app.BVwaffdK.js → app.BASKM3M4.js} +1 -1
  33. package/dist/docs/assets/chunks/@localSearchIndexroot.BHZYsNVi.js +1 -0
  34. package/dist/docs/assets/chunks/{VPLocalSearchBox.WuWTZ1x8.js → VPLocalSearchBox.BOKxlYGP.js} +2 -2
  35. package/dist/docs/assets/chunks/{theme.BYdI_6sF.js → theme.DbDZW-zb.js} +2 -2
  36. package/dist/docs/assets/{deployment.md.MFPKqsqI.js → deployment.md.JenwuCCB.js} +4 -4
  37. package/dist/docs/assets/{deployment.md.MFPKqsqI.lean.js → deployment.md.JenwuCCB.lean.js} +1 -1
  38. package/dist/docs/assets/{evals.md.CbMoebP1.js → evals.md.C1ekS3k2.js} +1 -1
  39. package/dist/docs/assets/guides_cloud-agents.md.BsloyHdY.js +9 -0
  40. package/dist/docs/assets/{guides_cloud-agents.md.DS8RIjwx.lean.js → guides_cloud-agents.md.BsloyHdY.lean.js} +1 -1
  41. package/dist/docs/assets/{guides_github.md.c0gdGJ-D.js → guides_github.md.BH33UEBJ.js} +1 -1
  42. package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.js → guides_grokbot-agents.md.DyV-WArv.js} +1 -1
  43. package/dist/docs/assets/guides_improve.md.BGVk32bK.js +14 -0
  44. package/dist/docs/assets/guides_improve.md.BGVk32bK.lean.js +1 -0
  45. package/dist/docs/assets/{guides_opentelemetry.md.COh9jFVg.js → guides_opentelemetry.md.SCRMskno.js} +3 -3
  46. package/dist/docs/assets/{guides_opentelemetry.md.COh9jFVg.lean.js → guides_opentelemetry.md.SCRMskno.lean.js} +1 -1
  47. package/dist/docs/assets/{guides_slack.md.9oHPye9o.js → guides_slack.md.D4RVMM4G.js} +3 -3
  48. package/dist/docs/assets/{guides_slack.md.9oHPye9o.lean.js → guides_slack.md.D4RVMM4G.lean.js} +1 -1
  49. package/dist/docs/assets/index.md.BjH1w2ZW.js +5 -0
  50. package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.js → reference_agent-config.md.CvoL6pof.js} +1 -1
  51. package/dist/docs/assets/{reference_channels.md.DBGcaB7m.js → reference_channels.md.D-qTqwcq.js} +2 -2
  52. package/dist/docs/assets/{reference_channels.md.DBGcaB7m.lean.js → reference_channels.md.D-qTqwcq.lean.js} +1 -1
  53. package/dist/docs/assets/{reference_cli.md.C6Lo8SEd.js → reference_cli.md.Ca26u0Es.js} +6 -6
  54. package/dist/docs/assets/{reference_cli.md.C6Lo8SEd.lean.js → reference_cli.md.Ca26u0Es.lean.js} +1 -1
  55. package/dist/docs/assets/{reference_connections.md.Di6jJAXF.js → reference_connections.md.BojkC6c5.js} +1 -1
  56. package/dist/docs/assets/{reference_extensions.md.CGmMLblt.js → reference_extensions.md.CPWt00ds.js} +1 -1
  57. package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.js → scaffolding-agents.md.Kctn3OVb.js} +1 -1
  58. package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.js → skills_create-agent.md.Q3h6Je-e.js} +1 -1
  59. package/dist/docs/assets/{skills_debug.md.CDbPhHfg.js → skills_debug.md.CVjCXMFF.js} +1 -1
  60. package/dist/docs/assets/{skills_debug.md.CDbPhHfg.lean.js → skills_debug.md.CVjCXMFF.lean.js} +1 -1
  61. package/dist/docs/assets/{skills_evals.md.723kpUmA.js → skills_evals.md.BhovOvrl.js} +1 -1
  62. package/dist/docs/assets/skills_framework-map.md.D-tFZhFS.js +1 -0
  63. package/dist/docs/assets/{skills_framework-map.md.haibFyoB.lean.js → skills_framework-map.md.D-tFZhFS.lean.js} +1 -1
  64. package/dist/docs/assets/{skills_github.md.D0JahM8c.js → skills_github.md.hgFX_oKY.js} +1 -1
  65. package/dist/docs/assets/{skills_otel.md.CqhobH3B.js → skills_otel.md.B5Ddv1xH.js} +1 -1
  66. package/dist/docs/assets/{style.BRuM8477.css → style.DCD_zyg3.css} +1 -1
  67. package/dist/docs/assets/troubleshooting.md.CYEAO9bM.js +1 -0
  68. package/dist/docs/building-with-agents.html +6 -6
  69. package/dist/docs/concepts.html +5 -5
  70. package/dist/docs/deployment.html +9 -9
  71. package/dist/docs/deployment.md +7 -2
  72. package/dist/docs/evals.html +8 -8
  73. package/dist/docs/evals.md +3 -2
  74. package/dist/docs/guides/agent-to-agent.html +6 -6
  75. package/dist/docs/guides/cloud-agents.html +7 -7
  76. package/dist/docs/guides/cloud-agents.md +4 -3
  77. package/dist/docs/guides/convert-automation.html +6 -6
  78. package/dist/docs/guides/github.html +7 -7
  79. package/dist/docs/guides/github.md +2 -1
  80. package/dist/docs/guides/grokbot-agents.html +7 -7
  81. package/dist/docs/guides/grokbot-agents.md +2 -2
  82. package/dist/docs/guides/human-in-the-loop.html +6 -6
  83. package/dist/docs/guides/improve.html +40 -0
  84. package/dist/docs/guides/improve.md +91 -0
  85. package/dist/docs/guides/mcp-oauth.html +6 -6
  86. package/dist/docs/guides/opentelemetry.html +8 -8
  87. package/dist/docs/guides/opentelemetry.md +3 -4
  88. package/dist/docs/guides/slack.html +8 -8
  89. package/dist/docs/guides/slack.md +2 -1
  90. package/dist/docs/guides/webhooks.html +6 -6
  91. package/dist/docs/hashmap.json +1 -1
  92. package/dist/docs/hillclimbing.html +6 -6
  93. package/dist/docs/index.html +8 -8
  94. package/dist/docs/index.md +4 -0
  95. package/dist/docs/llms-full.txt +180 -61
  96. package/dist/docs/llms.txt +1 -0
  97. package/dist/docs/quickstart.html +6 -6
  98. package/dist/docs/reference/agent-config.html +7 -7
  99. package/dist/docs/reference/agent-config.md +5 -2
  100. package/dist/docs/reference/artifacts.html +6 -6
  101. package/dist/docs/reference/channels.html +7 -7
  102. package/dist/docs/reference/channels.md +11 -19
  103. package/dist/docs/reference/cli.html +11 -11
  104. package/dist/docs/reference/cli.md +23 -13
  105. package/dist/docs/reference/connections.html +8 -8
  106. package/dist/docs/reference/connections.md +2 -1
  107. package/dist/docs/reference/extensions.html +7 -7
  108. package/dist/docs/reference/extensions.md +2 -0
  109. package/dist/docs/reference/hooks.html +6 -6
  110. package/dist/docs/reference/http-api.html +6 -6
  111. package/dist/docs/reference/instructions.html +6 -6
  112. package/dist/docs/reference/playground.html +5 -5
  113. package/dist/docs/reference/project-layout.html +6 -6
  114. package/dist/docs/reference/prompt.html +6 -6
  115. package/dist/docs/reference/result.html +6 -6
  116. package/dist/docs/reference/schedules.html +6 -6
  117. package/dist/docs/reference/sessions.html +5 -5
  118. package/dist/docs/reference/skills.html +6 -6
  119. package/dist/docs/reference/subagents.html +6 -6
  120. package/dist/docs/reference/tools.html +6 -6
  121. package/dist/docs/scaffolding-agents.html +6 -6
  122. package/dist/docs/scaffolding-agents.md +2 -1
  123. package/dist/docs/skills/ab.html +6 -6
  124. package/dist/docs/skills/create-agent.html +8 -8
  125. package/dist/docs/skills/create-agent.md +1 -1
  126. package/dist/docs/skills/debug.html +6 -6
  127. package/dist/docs/skills/debug.md +1 -1
  128. package/dist/docs/skills/evals.html +8 -8
  129. package/dist/docs/skills/evals.md +1 -1
  130. package/dist/docs/skills/framework-map.html +6 -6
  131. package/dist/docs/skills/framework-map.md +4 -2
  132. package/dist/docs/skills/github.html +8 -8
  133. package/dist/docs/skills/github.md +1 -1
  134. package/dist/docs/skills/hillclimb.html +6 -6
  135. package/dist/docs/skills/index.html +5 -5
  136. package/dist/docs/skills/mcp-auth.html +6 -6
  137. package/dist/docs/skills/otel.html +8 -8
  138. package/dist/docs/skills/otel.md +3 -3
  139. package/dist/docs/skills/setup-slack.html +6 -6
  140. package/dist/docs/storage.html +6 -6
  141. package/dist/docs/templates/agentic-owners.html +6 -6
  142. package/dist/docs/templates/agents-md.html +6 -6
  143. package/dist/docs/templates/code-wiki.html +6 -6
  144. package/dist/docs/templates/demo.html +6 -6
  145. package/dist/docs/templates/grokbot-agents.html +6 -6
  146. package/dist/docs/templates/pr-autofixer.html +6 -6
  147. package/dist/docs/templates/security-help.html +6 -6
  148. package/dist/docs/templates/security-reviewer.html +6 -6
  149. package/dist/docs/templates/triage.html +6 -6
  150. package/dist/docs/troubleshooting.html +6 -6
  151. package/dist/docs/troubleshooting.md +1 -1
  152. package/dist/extensions/improve/extension.d.ts +46 -0
  153. package/dist/extensions/improve/extension.d.ts.map +1 -0
  154. package/dist/extensions/improve/extension.js +41 -0
  155. package/dist/extensions/improve/skills/yourself.d.ts +4 -0
  156. package/dist/extensions/improve/skills/yourself.d.ts.map +1 -0
  157. package/dist/extensions/improve/skills/yourself.js +43 -0
  158. package/dist/index.d.ts +4 -5
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +3 -4
  161. package/dist/internal/builtin-tools/artifacts.d.ts.map +1 -1
  162. package/dist/internal/builtin-tools/artifacts.js +2 -3
  163. package/dist/internal/channel-route-dispatch.d.ts +13 -0
  164. package/dist/internal/channel-route-dispatch.d.ts.map +1 -0
  165. package/dist/internal/channel-route-dispatch.js +62 -0
  166. package/dist/internal/channel-state.d.ts +17 -0
  167. package/dist/internal/channel-state.d.ts.map +1 -0
  168. package/dist/internal/channel-state.js +78 -0
  169. package/dist/internal/cli-ax.d.ts +7 -0
  170. package/dist/internal/cli-ax.d.ts.map +1 -1
  171. package/dist/internal/cli-ax.js +99 -1
  172. package/dist/internal/cli-cursor.d.ts.map +1 -1
  173. package/dist/internal/cli-cursor.js +2 -0
  174. package/dist/internal/cli-deploy.d.ts.map +1 -1
  175. package/dist/internal/cli-deploy.js +61 -25
  176. package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
  177. package/dist/internal/cli-mcp-oauth.js +15 -0
  178. package/dist/internal/cli-mcp.d.ts.map +1 -1
  179. package/dist/internal/cli-mcp.js +12 -0
  180. package/dist/internal/cli-slack.d.ts.map +1 -1
  181. package/dist/internal/cli-slack.js +8 -2
  182. package/dist/internal/cursor/backend-client.d.ts +25 -0
  183. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  184. package/dist/internal/cursor/backend-client.js +57 -2
  185. package/dist/internal/cursor/credentials.d.ts +8 -2
  186. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  187. package/dist/internal/cursor/credentials.js +27 -5
  188. package/dist/internal/deploy-client.d.ts +35 -0
  189. package/dist/internal/deploy-client.d.ts.map +1 -1
  190. package/dist/internal/deploy-client.js +46 -0
  191. package/dist/internal/deploy-manifest.d.ts +26 -0
  192. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  193. package/dist/internal/deploy-manifest.js +99 -13
  194. package/dist/internal/describe-error.d.ts +1 -0
  195. package/dist/internal/describe-error.d.ts.map +1 -1
  196. package/dist/internal/describe-error.js +25 -0
  197. package/dist/internal/discovery/agent.d.ts.map +1 -1
  198. package/dist/internal/discovery/agent.js +1 -0
  199. package/dist/internal/discovery/info.d.ts.map +1 -1
  200. package/dist/internal/discovery/info.js +7 -3
  201. package/dist/internal/discovery/modules.d.ts +1 -1
  202. package/dist/internal/discovery/modules.d.ts.map +1 -1
  203. package/dist/internal/discovery/modules.js +1 -0
  204. package/dist/internal/discovery/project.d.ts.map +1 -1
  205. package/dist/internal/discovery/project.js +3 -0
  206. package/dist/internal/discovery/reminders.d.ts +7 -0
  207. package/dist/internal/discovery/reminders.d.ts.map +1 -0
  208. package/dist/internal/discovery/reminders.js +65 -0
  209. package/dist/internal/discovery/subagent.js +1 -0
  210. package/dist/internal/distribution.d.ts +5 -0
  211. package/dist/internal/distribution.d.ts.map +1 -1
  212. package/dist/internal/distribution.js +17 -0
  213. package/dist/internal/framework-storage-selection.d.ts +14 -3
  214. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  215. package/dist/internal/framework-storage-selection.js +36 -6
  216. package/dist/internal/guest-network.d.ts +4 -10
  217. package/dist/internal/guest-network.d.ts.map +1 -1
  218. package/dist/internal/guest-network.js +44 -26
  219. package/dist/internal/hosted-admission-adapter.d.ts +2 -0
  220. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  221. package/dist/internal/hosted-catch-protocol.d.ts +51 -0
  222. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -0
  223. package/dist/internal/hosted-catch-protocol.js +103 -0
  224. package/dist/internal/hosted-catch.d.ts +40 -0
  225. package/dist/internal/hosted-catch.d.ts.map +1 -0
  226. package/dist/internal/hosted-catch.js +149 -0
  227. package/dist/internal/hosted-delivery-protocol.d.ts +89 -0
  228. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  229. package/dist/internal/hosted-delivery-protocol.js +309 -0
  230. package/dist/internal/hosted-delivery.d.ts +20 -1
  231. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  232. package/dist/internal/hosted-delivery.js +179 -36
  233. package/dist/internal/hosted-execution-diag.d.ts +4 -1
  234. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  235. package/dist/internal/hosted-execution-diag.js +13 -4
  236. package/dist/internal/hosted-execution-flush.d.ts +3 -0
  237. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  238. package/dist/internal/hosted-execution-flush.js +2 -4
  239. package/dist/internal/http-control-plane-session.d.ts +30 -0
  240. package/dist/internal/http-control-plane-session.d.ts.map +1 -0
  241. package/dist/internal/http-control-plane-session.js +83 -0
  242. package/dist/internal/legacy-command-guard.d.ts +22 -0
  243. package/dist/internal/legacy-command-guard.d.ts.map +1 -0
  244. package/dist/internal/legacy-command-guard.js +51 -0
  245. package/dist/internal/local-control-plane.d.ts +18 -2
  246. package/dist/internal/local-control-plane.d.ts.map +1 -1
  247. package/dist/internal/local-control-plane.js +199 -17
  248. package/dist/internal/platform-timers.d.ts +7 -0
  249. package/dist/internal/platform-timers.d.ts.map +1 -1
  250. package/dist/internal/platform-timers.js +139 -0
  251. package/dist/internal/reminder-control-plane-protocol.d.ts +189 -0
  252. package/dist/internal/reminder-control-plane-protocol.d.ts.map +1 -0
  253. package/dist/internal/reminder-control-plane-protocol.js +251 -0
  254. package/dist/internal/reminder-runner.d.ts +56 -6
  255. package/dist/internal/reminder-runner.d.ts.map +1 -1
  256. package/dist/internal/reminder-runner.js +372 -57
  257. package/dist/internal/reminder-schedule.d.ts +5 -2
  258. package/dist/internal/reminder-schedule.d.ts.map +1 -1
  259. package/dist/internal/reminder-schedule.js +8 -6
  260. package/dist/internal/reminder-store.d.ts +24 -7
  261. package/dist/internal/reminder-store.d.ts.map +1 -1
  262. package/dist/internal/reminder-store.js +6 -5
  263. package/dist/internal/request-error-status.d.ts +2 -0
  264. package/dist/internal/request-error-status.d.ts.map +1 -1
  265. package/dist/internal/request-error-status.js +22 -3
  266. package/dist/internal/resolve-prod-target.d.ts +2 -0
  267. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  268. package/dist/internal/resolve-prod-target.js +13 -0
  269. package/dist/internal/scm/pr-url.d.ts +40 -0
  270. package/dist/internal/scm/pr-url.d.ts.map +1 -1
  271. package/dist/internal/scm/pr-url.js +93 -14
  272. package/dist/internal/sdk-runner.d.ts.map +1 -1
  273. package/dist/internal/sdk-runner.js +4 -3
  274. package/dist/internal/server.d.ts.map +1 -1
  275. package/dist/internal/server.js +118 -77
  276. package/dist/internal/session-engine.d.ts +6 -6
  277. package/dist/internal/session-engine.d.ts.map +1 -1
  278. package/dist/internal/session-engine.js +100 -67
  279. package/dist/playground/assets/{index-BaQzjaNK.js → index-BMDqAeXu.js} +34 -34
  280. package/dist/playground/assets/index-LUgJoWdL.css +1 -0
  281. package/dist/playground/index.html +2 -2
  282. package/dist/reminders.d.ts +24 -5
  283. package/dist/reminders.d.ts.map +1 -1
  284. package/dist/reminders.js +28 -5
  285. package/dist/storage-backends/cursor-hosted.d.ts +6 -0
  286. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  287. package/dist/storage-backends/cursor-hosted.js +29 -1
  288. package/dist/types.d.ts +122 -25
  289. package/dist/types.d.ts.map +1 -1
  290. package/docs/README.md +4 -0
  291. package/docs/deployment.md +7 -2
  292. package/docs/evals.md +3 -2
  293. package/docs/guides/cloud-agents.md +4 -3
  294. package/docs/guides/github.md +2 -1
  295. package/docs/guides/grokbot-agents.md +2 -2
  296. package/docs/guides/improve.md +96 -0
  297. package/docs/guides/opentelemetry.md +3 -4
  298. package/docs/guides/slack.md +2 -1
  299. package/docs/reference/agent-config.md +5 -2
  300. package/docs/reference/channels.md +11 -19
  301. package/docs/reference/cli.md +23 -13
  302. package/docs/reference/connections.md +2 -1
  303. package/docs/reference/extensions.md +2 -0
  304. package/docs/scaffolding-agents.md +2 -1
  305. package/docs/troubleshooting.md +1 -1
  306. package/package.json +10 -3
  307. package/skills/create-agent/SKILL.md +1 -1
  308. package/skills/debug/SKILL.md +1 -1
  309. package/skills/evals/SKILL.md +1 -1
  310. package/skills/framework-map/SKILL.md +4 -2
  311. package/skills/github/SKILL.md +1 -1
  312. package/skills/otel/SKILL.md +3 -3
  313. package/src/bin/agent-serve.ts +28 -11
  314. package/src/channels/bitbucket/types.ts +2 -4
  315. package/src/channels/deployments/types.ts +5 -8
  316. package/src/channels/github/github-channel.ts +8 -8
  317. package/src/channels/github/types.ts +7 -4
  318. package/src/channels/gitlab/types.ts +2 -5
  319. package/src/channels/origin/origin-channel.ts +29 -13
  320. package/src/channels/origin/types.ts +7 -3
  321. package/src/channels/slack/defaults.ts +3 -0
  322. package/src/channels/slack/dispatch.ts +1 -0
  323. package/src/channels/slack/live-delivery.ts +53 -12
  324. package/src/channels/slack/types.ts +4 -3
  325. package/src/channels.ts +157 -10
  326. package/src/connections.ts +2 -1
  327. package/src/extensions/improve/extension.ts +70 -0
  328. package/src/extensions/improve/skills/yourself.ts +50 -0
  329. package/src/index.ts +6 -3
  330. package/src/internal/builtin-tools/artifacts.ts +2 -3
  331. package/src/internal/channel-route-dispatch.ts +66 -0
  332. package/src/internal/channel-state.ts +96 -0
  333. package/src/internal/cli-ax.ts +110 -1
  334. package/src/internal/cli-cursor.ts +4 -1
  335. package/src/internal/cli-deploy.ts +80 -22
  336. package/src/internal/cli-mcp-oauth.ts +18 -0
  337. package/src/internal/cli-mcp.ts +11 -0
  338. package/src/internal/cli-slack.ts +15 -2
  339. package/src/internal/cursor/backend-client.ts +90 -2
  340. package/src/internal/cursor/credentials.ts +35 -7
  341. package/src/internal/deploy-client.ts +70 -0
  342. package/src/internal/deploy-manifest.ts +131 -12
  343. package/src/internal/describe-error.ts +28 -0
  344. package/src/internal/discovery/agent.ts +1 -0
  345. package/src/internal/discovery/info.ts +6 -0
  346. package/src/internal/discovery/modules.ts +2 -4
  347. package/src/internal/discovery/project.ts +3 -0
  348. package/src/internal/discovery/reminders.ts +65 -0
  349. package/src/internal/discovery/subagent.ts +1 -0
  350. package/src/internal/distribution.ts +20 -0
  351. package/src/internal/framework-storage-selection.ts +43 -6
  352. package/src/internal/guest-network.ts +46 -29
  353. package/src/internal/hosted-admission-adapter.ts +2 -0
  354. package/src/internal/hosted-catch-protocol.ts +130 -0
  355. package/src/internal/hosted-catch.ts +192 -0
  356. package/src/internal/hosted-delivery-protocol.ts +483 -0
  357. package/src/internal/hosted-delivery.ts +303 -43
  358. package/src/internal/hosted-execution-diag.ts +21 -3
  359. package/src/internal/hosted-execution-flush.ts +6 -3
  360. package/src/internal/http-control-plane-session.ts +104 -0
  361. package/src/internal/legacy-command-guard.ts +59 -0
  362. package/src/internal/local-control-plane.ts +281 -22
  363. package/src/internal/platform-timers.ts +191 -0
  364. package/src/internal/reminder-control-plane-protocol.ts +512 -0
  365. package/src/internal/reminder-runner.ts +481 -57
  366. package/src/internal/reminder-schedule.ts +11 -6
  367. package/src/internal/reminder-store.ts +27 -7
  368. package/src/internal/request-error-status.ts +27 -3
  369. package/src/internal/resolve-prod-target.ts +15 -0
  370. package/src/internal/scm/pr-url.ts +167 -20
  371. package/src/internal/sdk-runner.ts +2 -1
  372. package/src/internal/server.ts +151 -88
  373. package/src/internal/session-engine.ts +146 -83
  374. package/src/reminders.ts +35 -4
  375. package/src/storage-backends/cursor-hosted.ts +40 -1
  376. package/src/types.ts +134 -26
  377. package/dist/docs/assets/chunks/@localSearchIndexroot.CJxMklAy.js +0 -1
  378. package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +0 -9
  379. package/dist/docs/assets/index.md.BW_6tOgR.js +0 -5
  380. package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +0 -1
  381. package/dist/docs/assets/troubleshooting.md.Cus_YZga.js +0 -1
  382. package/dist/playground/assets/index-CceqnLTX.css +0 -1
  383. /package/dist/docs/assets/{evals.md.CbMoebP1.lean.js → evals.md.C1ekS3k2.lean.js} +0 -0
  384. /package/dist/docs/assets/{guides_github.md.c0gdGJ-D.lean.js → guides_github.md.BH33UEBJ.lean.js} +0 -0
  385. /package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.lean.js → guides_grokbot-agents.md.DyV-WArv.lean.js} +0 -0
  386. /package/dist/docs/assets/{index.md.BW_6tOgR.lean.js → index.md.BjH1w2ZW.lean.js} +0 -0
  387. /package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.lean.js → reference_agent-config.md.CvoL6pof.lean.js} +0 -0
  388. /package/dist/docs/assets/{reference_connections.md.Di6jJAXF.lean.js → reference_connections.md.BojkC6c5.lean.js} +0 -0
  389. /package/dist/docs/assets/{reference_extensions.md.CGmMLblt.lean.js → reference_extensions.md.CPWt00ds.lean.js} +0 -0
  390. /package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.lean.js → scaffolding-agents.md.Kctn3OVb.lean.js} +0 -0
  391. /package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.lean.js → skills_create-agent.md.Q3h6Je-e.lean.js} +0 -0
  392. /package/dist/docs/assets/{skills_evals.md.723kpUmA.lean.js → skills_evals.md.BhovOvrl.lean.js} +0 -0
  393. /package/dist/docs/assets/{skills_github.md.D0JahM8c.lean.js → skills_github.md.hgFX_oKY.lean.js} +0 -0
  394. /package/dist/docs/assets/{skills_otel.md.CqhobH3B.lean.js → skills_otel.md.B5Ddv1xH.lean.js} +0 -0
  395. /package/dist/docs/assets/{troubleshooting.md.Cus_YZga.lean.js → troubleshooting.md.CYEAO9bM.lean.js} +0 -0
@@ -66,6 +66,7 @@ import type {
66
66
  ReminderInfo,
67
67
  ServeOptions,
68
68
  } from "../types.js";
69
+ import { invokeChannelRoute } from "./channel-route-dispatch.js";
69
70
  import { selectConversationMirror } from "./conversation-mirror.js";
70
71
  import {
71
72
  type CursorAccountConnectionRef,
@@ -129,6 +130,12 @@ import {
129
130
  } from "./handleAgentServeTrigger.js";
130
131
  import { createHostPlatforms, warmupHostGitHubAuth } from "./host-platforms.js";
131
132
  import { registerHostedDeliveryRoute } from "./hosted-delivery.js";
133
+ import type { HostedReminderFireDescriptorPayload } from "./hosted-delivery-protocol.js";
134
+ import {
135
+ HOSTED_DELIVERY_HEADER,
136
+ HOSTED_GUEST_RETRY_TERMINAL,
137
+ hostedGuestErrorResponse,
138
+ } from "./hosted-delivery-protocol.js";
132
139
  import { hostedErrorStackSnippet } from "./hosted-execution-diag.js";
133
140
  import { flushHostedExecutionProcessDeath } from "./hosted-execution-flush.js";
134
141
  import {
@@ -138,7 +145,6 @@ import {
138
145
  readJsonObject,
139
146
  requireSessionOwner,
140
147
  } from "./http-channel.js";
141
- import { validateToolInput } from "./json-schema.js";
142
148
  import { DEFAULT_SERVE_PORT, listenHttpServer } from "./listen-port.js";
143
149
  import {
144
150
  createLocalControlPlane,
@@ -171,7 +177,10 @@ import {
171
177
  PLATFORM_SCHEDULE_CATALOG_FILENAME,
172
178
  syncHostedPlatformSchedules,
173
179
  } from "./platform-schedule-sync.js";
174
- import { createCursorHostedPlatformTimers } from "./platform-timers.js";
180
+ import {
181
+ createCursorHostedPlatformTimers,
182
+ createCursorHostedReminderControlPlane,
183
+ } from "./platform-timers.js";
175
184
  import {
176
185
  type AgentIndexEntry,
177
186
  renderAgentsIndexHtml,
@@ -188,9 +197,15 @@ import {
188
197
  collectMemoryHealthFields,
189
198
  sumEventLogStats,
190
199
  } from "./process-memory-telemetry.js";
200
+ import {
201
+ claimFromDescriptor,
202
+ type ReminderControlPlane,
203
+ type ReminderFireDescriptor,
204
+ } from "./reminder-control-plane-protocol.js";
191
205
  import {
192
206
  ReminderRunner,
193
207
  ReminderValidationError,
208
+ rejectAnonymousReminderHandlers,
194
209
  UnknownReminderError,
195
210
  } from "./reminder-runner.js";
196
211
  import { mapThrownRequestError } from "./request-error-status.js";
@@ -204,6 +219,7 @@ import { RuntimeDispatchingRunner } from "./runtime-dispatch-runner.js";
204
219
  import { ScheduleRunner, UnknownScheduleError } from "./schedule-runner.js";
205
220
  import { type AgentRunner, CursorSdkRunner } from "./sdk-runner.js";
206
221
  import {
222
+ HTTP_CHANNEL_ID,
207
223
  InvalidContinuationTokenError,
208
224
  SessionEngine,
209
225
  ToolInputError,
@@ -246,6 +262,11 @@ interface MountedRuntime {
246
262
  scheduleRunner: ScheduleRunner;
247
263
  reminderRunner: ReminderRunner;
248
264
  controlPlane?: LocalControlPlane;
265
+ /**
266
+ * Hosted (or local) reminder CP client for architecture v2 descriptor
267
+ * execution. Undefined when the project is not on the CP protocol.
268
+ */
269
+ reminderControlPlane?: ReminderControlPlane;
249
270
  /** Playground eval batches (`/v1/dev/evals`); loopbackUrl set after listen. */
250
271
  evalRuns: EvalRunStore;
251
272
  }
@@ -368,13 +389,15 @@ export async function startServer(
368
389
  // One resolution for every Cursor credential consumer (SDK runner, account
369
390
  // MCP bridge, SCM event relay, GitHub credentials): explicit option →
370
391
  // CURSOR_API_KEY → CURSOR_API_KEY_FILE (or the hosted default path) →
371
- // stored `agent-sdk login`. SDK / GitHub / account MCP re-read later;
372
- // Slack and deployment-event relays capture the key at start.
392
+ // CURSOR_SERVICE_ACCOUNT_KEY → stored `agent-sdk login`. SDK / GitHub /
393
+ // account MCP re-read later; Slack and deployment-event relays capture
394
+ // the key at start.
373
395
  const accountKey = await resolveApiKey(
374
396
  options.apiKey === undefined ? {} : { apiKey: options.apiKey }
375
397
  );
376
398
  // First present source wins (we define the order): option → env → file →
377
- // stored login. Re-read so bind can drop env or file onto a listening process.
399
+ // service account → stored login. Re-read so bind can drop env or file
400
+ // onto a listening process.
378
401
  const liveCursorApiKey = (): string | undefined =>
379
402
  resolveApiKeySync(
380
403
  options.apiKey === undefined ? {} : { apiKey: options.apiKey }
@@ -846,12 +869,23 @@ export async function startServer(
846
869
  }
847
870
  const scheduleRunner = new ScheduleRunner(engine, project, logger);
848
871
  let reminderRunner!: ReminderRunner;
872
+ const architecture = project.agent.architecture;
873
+ const useReminderCpProtocol = architecture === "v2";
849
874
  const localControlPlane = noControlPlane
850
875
  ? undefined
851
876
  : await createLocalControlPlane({
852
877
  fireSchedule: (name) => scheduleRunner.dispatch(name),
853
- fireReminder: (id, fireCount) =>
854
- reminderRunner.dispatch(id, { expectedFireCount: fireCount }),
878
+ ...(useReminderCpProtocol
879
+ ? {
880
+ executeReminder: (descriptor) =>
881
+ reminderRunner.executeFire(descriptor),
882
+ }
883
+ : {
884
+ fireReminder: (id, fireCount) =>
885
+ reminderRunner.dispatch(id, {
886
+ expectedFireCount: fireCount,
887
+ }),
888
+ }),
855
889
  stateDir: join(stateRoot, "control-plane"),
856
890
  armReminderClocks: runReminders,
857
891
  logger,
@@ -859,7 +893,23 @@ export async function startServer(
859
893
  const timerClient = noControlPlane
860
894
  ? createCursorHostedPlatformTimers()
861
895
  : localControlPlane;
862
- reminderRunner = new ReminderRunner(engine, logger, timerClient);
896
+ const hostedReminderControlPlane =
897
+ noControlPlane && useReminderCpProtocol
898
+ ? createCursorHostedReminderControlPlane()
899
+ : undefined;
900
+ const reminderControlPlane = useReminderCpProtocol
901
+ ? (localControlPlane ?? hostedReminderControlPlane)
902
+ : undefined;
903
+ reminderRunner = new ReminderRunner(engine, logger, timerClient, {
904
+ namedHandlers: project.reminders ?? [],
905
+ // Architecture v2 rejects anonymous run/until everywhere (local + hosted).
906
+ rejectAnonymousHandlers: rejectAnonymousReminderHandlers({
907
+ noControlPlane,
908
+ architecture,
909
+ }),
910
+ architecture,
911
+ controlPlane: reminderControlPlane,
912
+ });
863
913
  const evalRuns = new EvalRunStore(
864
914
  project.rootDir,
865
915
  logger,
@@ -897,6 +947,7 @@ export async function startServer(
897
947
  ...(localControlPlane === undefined
898
948
  ? {}
899
949
  : { controlPlane: localControlPlane }),
950
+ ...(reminderControlPlane === undefined ? {} : { reminderControlPlane }),
900
951
  };
901
952
  runtimes.push(runtime);
902
953
  const accountRefs = accountRefsBySlug.get(slug);
@@ -935,6 +986,7 @@ export async function startServer(
935
986
  const startArgs: ChannelStartArgs = {
936
987
  send: (message, sendOptions) =>
937
988
  engine.send(channel.id, message, sendOptions),
989
+ architecture: project.agent.architecture,
938
990
  getSession: (sessionId) =>
939
991
  engine.getChannelSession(channel.id, sessionId),
940
992
  receive: (target, input) => engine.receive(target, input),
@@ -1455,7 +1507,14 @@ function mountAgentRoutes(
1455
1507
  evictSdkSession?: (sessionId: string) => void;
1456
1508
  }
1457
1509
  ): void {
1458
- const { slug, project, engine, scheduleRunner, reminderRunner } = runtime;
1510
+ const {
1511
+ slug,
1512
+ project,
1513
+ engine,
1514
+ scheduleRunner,
1515
+ reminderRunner,
1516
+ reminderControlPlane,
1517
+ } = runtime;
1459
1518
  const {
1460
1519
  dev,
1461
1520
  playground,
@@ -1514,13 +1573,47 @@ function mountAgentRoutes(
1514
1573
  registerHostedDeliveryRoute({
1515
1574
  router,
1516
1575
  base,
1517
- channels: project.channels,
1576
+ // The built-in http channel is not in `project.channels`; the control
1577
+ // plane's session start (`agentsdk.session`) is delivered to it.
1578
+ channels: [
1579
+ ...project.channels,
1580
+ { id: HTTP_CHANNEL_ID, definition: project.httpChannel },
1581
+ ],
1518
1582
  buildHandlerArgs: (channelId, hostedSessionId) =>
1519
1583
  buildChannelHandlerArgs({
1520
1584
  runtime,
1521
1585
  channelId,
1522
1586
  hostedSessionId,
1523
1587
  }),
1588
+ fireReminder: (reminderId, fireCount) =>
1589
+ reminderRunner.dispatch(reminderId, { expectedFireCount: fireCount }),
1590
+ executeReminderDescriptor: async (descriptor) => {
1591
+ if (reminderControlPlane === undefined) {
1592
+ throw new Error("hosted reminder CP client is not configured");
1593
+ }
1594
+ const fireDescriptor = descriptor as unknown as ReminderFireDescriptor;
1595
+ const outcome = await reminderRunner.executeFire(fireDescriptor);
1596
+ // applyReminderOutcome is idempotent and internally retries transient
1597
+ // CP failures. Handler execution is at-least-once across Temporal
1598
+ // re-admission if apply ultimately fails.
1599
+ const apply = await reminderControlPlane.applyReminderOutcome(
1600
+ claimFromDescriptor(fireDescriptor),
1601
+ outcome
1602
+ );
1603
+ // Cancel/rekey winning the race is a successful no-op from the guest's
1604
+ // perspective (fired work may have run; lifecycle authority stayed CP).
1605
+ if (!apply.applied && apply.reason === "missing") {
1606
+ return {
1607
+ reminderId: descriptor.id,
1608
+ outcome: "noop" as const,
1609
+ reason: apply.reason,
1610
+ };
1611
+ }
1612
+ return {
1613
+ reminderId: descriptor.id,
1614
+ outcome: "fired" as const,
1615
+ };
1616
+ },
1524
1617
  drainSessionDurability: (sessionId) =>
1525
1618
  engine.drainSessionDurability(sessionId),
1526
1619
  flushOtel: args.flushOtel,
@@ -2334,75 +2427,18 @@ function mountAgentRoutes(
2334
2427
  method: channelRoute.method,
2335
2428
  pattern: `${base}/v1/channels/${channel.id}${channelRoute.path}`,
2336
2429
  auth: channelAuth,
2337
- handler: async (request, ctx) => {
2338
- const handlerArgs = buildChannelHandlerArgs({
2339
- runtime,
2340
- channelId: channel.id,
2341
- params: ctx.params,
2342
- requestIp: ctx.requestIp,
2343
- auth: ctx.auth,
2344
- });
2345
-
2346
- if (channelRoute.querySchema !== undefined) {
2347
- const rawQuery = Object.fromEntries(
2348
- new URL(request.url).searchParams.entries()
2349
- );
2350
- const queryValidation = validateToolInput(
2351
- channelRoute.querySchema,
2352
- rawQuery
2353
- );
2354
- if (!queryValidation.ok) {
2355
- return jsonResponse(
2356
- { error: queryValidation.message },
2357
- { status: 400 }
2358
- );
2359
- }
2360
- handlerArgs.query = queryValidation.value;
2361
- }
2362
-
2363
- if (channelRoute.bodySchema !== undefined) {
2364
- // Buffer once so handlers that need the raw body (e.g. GitHub
2365
- // HMAC) can still read `request.text()` / `request.json()`.
2366
- let bodyText: string;
2367
- try {
2368
- bodyText = await request.text();
2369
- } catch {
2370
- return jsonResponse(
2371
- { error: "Failed to read request body" },
2372
- { status: 400 }
2373
- );
2374
- }
2375
- let rawBody: unknown;
2376
- try {
2377
- rawBody = bodyText === "" ? {} : JSON.parse(bodyText);
2378
- } catch {
2379
- return jsonResponse(
2380
- { error: "Request body must be valid JSON" },
2381
- { status: 400 }
2382
- );
2383
- }
2384
- const bodyValidation = validateToolInput(
2385
- channelRoute.bodySchema,
2386
- rawBody
2387
- );
2388
- if (!bodyValidation.ok) {
2389
- return jsonResponse(
2390
- { error: bodyValidation.message },
2391
- { status: 400 }
2392
- );
2393
- }
2394
- handlerArgs.body = bodyValidation.value;
2395
- request = new Request(request.url, {
2396
- method: request.method,
2397
- headers: request.headers,
2398
- body: bodyText === "" ? undefined : bodyText,
2399
- // node: undici / fetch may require duplex for streamed bodies;
2400
- // a string body does not.
2401
- });
2402
- }
2403
-
2404
- return channelRoute.handler(request, handlerArgs);
2405
- },
2430
+ handler: (request, ctx) =>
2431
+ invokeChannelRoute({
2432
+ route: channelRoute,
2433
+ request,
2434
+ handlerArgs: buildChannelHandlerArgs({
2435
+ runtime,
2436
+ channelId: channel.id,
2437
+ params: ctx.params,
2438
+ requestIp: ctx.requestIp,
2439
+ auth: ctx.auth,
2440
+ }),
2441
+ }),
2406
2442
  });
2407
2443
  }
2408
2444
  }
@@ -2985,19 +3021,34 @@ async function handleRequest(
2985
3021
  logger: (line: string) => void
2986
3022
  ): Promise<void> {
2987
3023
  let response: Response;
3024
+ let hostedDeliveryRequest = false;
2988
3025
  const method = req.method ?? "GET";
2989
3026
  try {
2990
3027
  const request = await toFetchRequest(req);
3028
+ hostedDeliveryRequest = request.headers.get(HOSTED_DELIVERY_HEADER) === "1";
3029
+ const requestErrorResponse = (
3030
+ status: number,
3031
+ error: string,
3032
+ message: string
3033
+ ) =>
3034
+ hostedDeliveryRequest
3035
+ ? hostedGuestErrorResponse({
3036
+ status,
3037
+ error,
3038
+ retry: HOSTED_GUEST_RETRY_TERMINAL,
3039
+ message,
3040
+ })
3041
+ : errorResponse(status, error, message);
2991
3042
  const url = new URL(request.url);
2992
3043
  const match = router.match(request.method, url.pathname);
2993
3044
  if (match === undefined) {
2994
3045
  response = router.hasPath(url.pathname)
2995
- ? errorResponse(
3046
+ ? requestErrorResponse(
2996
3047
  405,
2997
3048
  "method_not_allowed",
2998
3049
  `${request.method} is not supported on ${url.pathname}.`
2999
3050
  )
3000
- : errorResponse(
3051
+ : requestErrorResponse(
3001
3052
  404,
3002
3053
  "not_found",
3003
3054
  `No route for ${request.method} ${url.pathname}.`
@@ -3011,7 +3062,7 @@ async function handleRequest(
3011
3062
  unauthorized = auth === null;
3012
3063
  }
3013
3064
  response = unauthorized
3014
- ? errorResponse(
3065
+ ? requestErrorResponse(
3015
3066
  401,
3016
3067
  "unauthorized",
3017
3068
  "No auth policy admitted this request. In production, configure channel auth (e.g. bearerAuth) — the default localDevStrict() policy only admits loopback callers with a loopback Host."
@@ -3025,7 +3076,14 @@ async function handleRequest(
3025
3076
  } catch (error) {
3026
3077
  const mapped = mapThrownRequestError(error);
3027
3078
  if (mapped !== undefined) {
3028
- response = errorResponse(mapped.status, mapped.code, mapped.message);
3079
+ response = hostedDeliveryRequest
3080
+ ? hostedGuestErrorResponse({
3081
+ status: mapped.status,
3082
+ error: mapped.code,
3083
+ retry: mapped.retry,
3084
+ message: mapped.message,
3085
+ })
3086
+ : errorResponse(mapped.status, mapped.code, mapped.message);
3029
3087
  } else {
3030
3088
  logger(
3031
3089
  `[agent-sdk] request failed: ${
@@ -3035,13 +3093,18 @@ async function handleRequest(
3035
3093
  }`
3036
3094
  );
3037
3095
  const snippet = hostedErrorStackSnippet(error);
3038
- response = errorResponse(
3039
- 500,
3040
- "internal_error",
3096
+ const message =
3041
3097
  snippet.length > 0
3042
3098
  ? `Internal server error: ${snippet}`
3043
- : "Internal server error."
3044
- );
3099
+ : "Internal server error.";
3100
+ response = hostedDeliveryRequest
3101
+ ? hostedGuestErrorResponse({
3102
+ status: 500,
3103
+ error: "internal_error",
3104
+ retry: HOSTED_GUEST_RETRY_TERMINAL,
3105
+ message,
3106
+ })
3107
+ : errorResponse(500, "internal_error", message);
3045
3108
  }
3046
3109
  }
3047
3110