@cursor/july 0.1.95 → 0.1.97

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 (424) hide show
  1. package/AGENTS.md +3 -4
  2. package/README.md +3 -2
  3. package/dist/bin/agent-serve.js +14 -3
  4. package/dist/channels/deployments/types.d.ts +1 -1
  5. package/dist/channels/deployments/types.d.ts.map +1 -1
  6. package/dist/channels/deployments/types.js +1 -0
  7. package/dist/channels/origin/api.d.ts +72 -15
  8. package/dist/channels/origin/api.d.ts.map +1 -1
  9. package/dist/channels/origin/api.js +185 -28
  10. package/dist/channels/origin/binding.d.ts +13 -2
  11. package/dist/channels/origin/binding.d.ts.map +1 -1
  12. package/dist/channels/origin/binding.js +41 -25
  13. package/dist/channels/origin/checks.d.ts +6 -6
  14. package/dist/channels/origin/checks.js +6 -6
  15. package/dist/channels/origin/cursor-account.d.ts +5 -3
  16. package/dist/channels/origin/cursor-account.d.ts.map +1 -1
  17. package/dist/channels/origin/cursor-account.js +5 -3
  18. package/dist/channels/origin/index.d.ts +1 -0
  19. package/dist/channels/origin/index.d.ts.map +1 -1
  20. package/dist/channels/origin/index.js +1 -0
  21. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  22. package/dist/channels/origin/origin-channel.js +3 -0
  23. package/dist/channels/origin/reactions.d.ts +56 -0
  24. package/dist/channels/origin/reactions.d.ts.map +1 -0
  25. package/dist/channels/origin/reactions.js +67 -0
  26. package/dist/channels/origin/types.d.ts +11 -0
  27. package/dist/channels/origin/types.d.ts.map +1 -1
  28. package/dist/channels/slack/api.d.ts +9 -0
  29. package/dist/channels/slack/api.d.ts.map +1 -1
  30. package/dist/channels/slack/api.js +36 -5
  31. package/dist/channels/slack/approvals.d.ts +16 -0
  32. package/dist/channels/slack/approvals.d.ts.map +1 -1
  33. package/dist/channels/slack/approvals.js +86 -0
  34. package/dist/channels/slack/cli-project.d.ts +19 -0
  35. package/dist/channels/slack/cli-project.d.ts.map +1 -0
  36. package/dist/channels/slack/cli-project.js +234 -0
  37. package/dist/channels/slack/defaults.d.ts.map +1 -1
  38. package/dist/channels/slack/defaults.js +110 -81
  39. package/dist/channels/slack/dispatch.d.ts +7 -1
  40. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  41. package/dist/channels/slack/dispatch.js +47 -23
  42. package/dist/channels/slack/inbound.d.ts +8 -0
  43. package/dist/channels/slack/inbound.d.ts.map +1 -1
  44. package/dist/channels/slack/inbound.js +32 -0
  45. package/dist/channels/slack/init.d.ts +3 -2
  46. package/dist/channels/slack/init.d.ts.map +1 -1
  47. package/dist/channels/slack/init.js +5 -5
  48. package/dist/channels/slack/interactive.d.ts +2 -1
  49. package/dist/channels/slack/interactive.d.ts.map +1 -1
  50. package/dist/channels/slack/interactive.js +15 -4
  51. package/dist/channels/slack/live-delivery.d.ts +26 -29
  52. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  53. package/dist/channels/slack/live-delivery.js +172 -73
  54. package/dist/channels/slack/manifest.d.ts +1 -1
  55. package/dist/channels/slack/manifest.d.ts.map +1 -1
  56. package/dist/channels/slack/manifest.js +6 -2
  57. package/dist/channels/slack/nudge-carrier.d.ts +2 -0
  58. package/dist/channels/slack/nudge-carrier.d.ts.map +1 -1
  59. package/dist/channels/slack/nudge-carrier.js +48 -1
  60. package/dist/channels/slack/setup.d.ts +1 -1
  61. package/dist/channels/slack/setup.d.ts.map +1 -1
  62. package/dist/channels/slack/setup.js +10 -6
  63. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  64. package/dist/channels/slack/slack-channel.js +3 -2
  65. package/dist/channels/slack/tool-approval-events.d.ts.map +1 -1
  66. package/dist/channels/slack/tool-approval-events.js +91 -1
  67. package/dist/docs/404.html +2 -2
  68. package/dist/docs/ab.html +4 -4
  69. package/dist/docs/assets/{app.BBj0klBO.js → app.B3rWNYE1.js} +1 -1
  70. package/dist/docs/assets/chunks/@localSearchIndexroot.BU9nHdnQ.js +1 -0
  71. package/dist/docs/assets/chunks/{VPLocalSearchBox.CUEXpL78.js → VPLocalSearchBox.C1lhqJJR.js} +1 -1
  72. package/dist/docs/assets/chunks/{theme.DabmQnia.js → theme.B40_SXuv.js} +2 -2
  73. package/dist/docs/assets/{deployment.md.D9msOFOW.js → deployment.md.MFPKqsqI.js} +2 -2
  74. package/dist/docs/assets/{guides_mcp-oauth.md.DPYmBCbV.js → guides_mcp-oauth.md.CN-6YmTJ.js} +4 -4
  75. package/dist/docs/assets/{guides_mcp-oauth.md.DPYmBCbV.lean.js → guides_mcp-oauth.md.CN-6YmTJ.lean.js} +1 -1
  76. package/dist/docs/assets/guides_slack.md.VDXQV3ja.js +22 -0
  77. package/dist/docs/assets/guides_slack.md.VDXQV3ja.lean.js +1 -0
  78. package/dist/docs/assets/index.md.CVeRUOeZ.js +5 -0
  79. package/dist/docs/assets/{index.md.BoHaMdeZ.lean.js → index.md.CVeRUOeZ.lean.js} +1 -1
  80. package/dist/docs/assets/{reference_agent-config.md.Cp_x38Nl.js → reference_agent-config.md.BHeYMgme.js} +1 -1
  81. package/dist/docs/assets/{reference_cli.md.BsMOxDvh.js → reference_cli.md.RyZf5OTE.js} +10 -6
  82. package/dist/docs/assets/{reference_cli.md.BsMOxDvh.lean.js → reference_cli.md.RyZf5OTE.lean.js} +1 -1
  83. package/dist/docs/assets/{reference_connections.md.BH8Oc0D0.js → reference_connections.md.DxldvyIB.js} +4 -3
  84. package/dist/docs/assets/{reference_http-api.md.D89k1mdm.js → reference_http-api.md.5zOAbV86.js} +1 -1
  85. package/dist/docs/assets/reference_sessions.md.NxFP_CAC.js +1 -0
  86. package/dist/docs/assets/{reference_tools.md.BHeXn2id.js → reference_tools.md.B84gw9Ii.js} +1 -1
  87. package/dist/docs/assets/templates_agents-md.md.CXSMZljE.js +2 -0
  88. package/dist/docs/assets/templates_agents-md.md.CXSMZljE.lean.js +1 -0
  89. package/dist/docs/assets/templates_code-wiki.md.CDYZIBFN.js +2 -0
  90. package/dist/docs/assets/templates_code-wiki.md.CDYZIBFN.lean.js +1 -0
  91. package/dist/docs/assets/troubleshooting.md.DCiPBhYs.js +1 -0
  92. package/dist/docs/building-with-agents.html +4 -4
  93. package/dist/docs/concepts.html +4 -4
  94. package/dist/docs/deployment.html +7 -7
  95. package/dist/docs/deployment.md +5 -4
  96. package/dist/docs/evals.html +4 -4
  97. package/dist/docs/guides/agent-to-agent.html +4 -4
  98. package/dist/docs/guides/cloud-runtime.html +4 -4
  99. package/dist/docs/guides/convert-automation.html +4 -4
  100. package/dist/docs/guides/github.html +4 -4
  101. package/dist/docs/guides/human-in-the-loop.html +4 -4
  102. package/dist/docs/guides/mcp-oauth.html +8 -8
  103. package/dist/docs/guides/mcp-oauth.md +26 -8
  104. package/dist/docs/guides/opentelemetry.html +4 -4
  105. package/dist/docs/guides/slack.html +17 -33
  106. package/dist/docs/guides/slack.md +92 -201
  107. package/dist/docs/guides/webhooks.html +4 -4
  108. package/dist/docs/hashmap.json +1 -1
  109. package/dist/docs/hillclimbing.html +4 -4
  110. package/dist/docs/index.html +6 -6
  111. package/dist/docs/index.md +7 -3
  112. package/dist/docs/llms-full.txt +398 -653
  113. package/dist/docs/llms.txt +3 -2
  114. package/dist/docs/quickstart.html +4 -4
  115. package/dist/docs/reference/agent-config.html +6 -6
  116. package/dist/docs/reference/agent-config.md +2 -2
  117. package/dist/docs/reference/artifacts.html +4 -4
  118. package/dist/docs/reference/channels.html +4 -4
  119. package/dist/docs/reference/cli.html +14 -10
  120. package/dist/docs/reference/cli.md +39 -16
  121. package/dist/docs/reference/connections.html +9 -8
  122. package/dist/docs/reference/connections.md +6 -3
  123. package/dist/docs/reference/hooks.html +4 -4
  124. package/dist/docs/reference/http-api.html +6 -6
  125. package/dist/docs/reference/http-api.md +2 -1
  126. package/dist/docs/reference/instructions.html +4 -4
  127. package/dist/docs/reference/playground.html +4 -4
  128. package/dist/docs/reference/project-layout.html +4 -4
  129. package/dist/docs/reference/prompt.html +4 -4
  130. package/dist/docs/reference/schedules.html +4 -4
  131. package/dist/docs/reference/sessions.html +5 -5
  132. package/dist/docs/reference/sessions.md +4 -2
  133. package/dist/docs/reference/skills.html +4 -4
  134. package/dist/docs/reference/subagents.html +4 -4
  135. package/dist/docs/reference/tools.html +6 -6
  136. package/dist/docs/reference/tools.md +9 -2
  137. package/dist/docs/scaffolding-agents.html +4 -4
  138. package/dist/docs/storage.html +4 -4
  139. package/dist/docs/templates/agentic-owners.html +4 -4
  140. package/dist/docs/templates/agents-md.html +28 -0
  141. package/dist/docs/templates/agents-md.md +105 -0
  142. package/dist/docs/templates/code-wiki.html +28 -0
  143. package/dist/docs/templates/code-wiki.md +91 -0
  144. package/dist/docs/templates/demo.html +5 -5
  145. package/dist/docs/templates/pr-autofixer.html +4 -4
  146. package/dist/docs/templates/security-help.html +4 -4
  147. package/dist/docs/templates/security-reviewer.html +5 -5
  148. package/dist/docs/templates/triage.html +4 -4
  149. package/dist/docs/troubleshooting.html +5 -5
  150. package/dist/docs/troubleshooting.md +2 -2
  151. package/dist/evals/run-facts.d.ts.map +1 -1
  152. package/dist/evals/run-facts.js +27 -0
  153. package/dist/files-backends/cursor-hosted.d.ts +26 -4
  154. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  155. package/dist/files-backends/cursor-hosted.js +32 -4
  156. package/dist/internal/advertise-tools.d.ts +2 -0
  157. package/dist/internal/advertise-tools.d.ts.map +1 -1
  158. package/dist/internal/advertise-tools.js +30 -10
  159. package/dist/internal/approval-gate.d.ts +12 -13
  160. package/dist/internal/approval-gate.d.ts.map +1 -1
  161. package/dist/internal/approval-gate.js +16 -21
  162. package/dist/internal/bounded.d.ts +7 -0
  163. package/dist/internal/bounded.d.ts.map +1 -0
  164. package/dist/internal/bounded.js +32 -0
  165. package/dist/internal/chat-client.js +10 -0
  166. package/dist/internal/cli-deploy.d.ts +5 -0
  167. package/dist/internal/cli-deploy.d.ts.map +1 -1
  168. package/dist/internal/cli-deploy.js +57 -18
  169. package/dist/internal/cli-mcp-oauth.js +8 -18
  170. package/dist/internal/cli-slack-manual.d.ts +24 -2
  171. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  172. package/dist/internal/cli-slack-manual.js +251 -20
  173. package/dist/internal/cli-slack.d.ts +9 -2
  174. package/dist/internal/cli-slack.d.ts.map +1 -1
  175. package/dist/internal/cli-slack.js +29 -82
  176. package/dist/internal/conversation-mirror.d.ts +11 -8
  177. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  178. package/dist/internal/conversation-mirror.js +116 -55
  179. package/dist/internal/cursor/account-mcp.d.ts +1 -0
  180. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  181. package/dist/internal/cursor/account-mcp.js +17 -0
  182. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  183. package/dist/internal/cursor/backend-client.js +22 -48
  184. package/dist/internal/cursor/session-token.d.ts +45 -0
  185. package/dist/internal/cursor/session-token.d.ts.map +1 -0
  186. package/dist/internal/cursor/session-token.js +99 -0
  187. package/dist/internal/cursor-agent-template.d.ts +1 -1
  188. package/dist/internal/cursor-agent-template.d.ts.map +1 -1
  189. package/dist/internal/cursor-agent-template.js +2 -0
  190. package/dist/internal/deploy-client.d.ts +17 -0
  191. package/dist/internal/deploy-client.d.ts.map +1 -1
  192. package/dist/internal/deploy-client.js +31 -10
  193. package/dist/internal/env-file.d.ts +19 -0
  194. package/dist/internal/env-file.d.ts.map +1 -0
  195. package/dist/internal/env-file.js +90 -0
  196. package/dist/internal/framework-file-storage.d.ts +61 -0
  197. package/dist/internal/framework-file-storage.d.ts.map +1 -0
  198. package/dist/internal/framework-file-storage.js +210 -0
  199. package/dist/internal/framework-storage-selection.d.ts +11 -5
  200. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  201. package/dist/internal/framework-storage-selection.js +38 -11
  202. package/dist/internal/hosted-delivery-protocol.d.ts +7 -0
  203. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  204. package/dist/internal/hosted-delivery-protocol.js +7 -0
  205. package/dist/internal/hosted-delivery.d.ts +13 -0
  206. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  207. package/dist/internal/hosted-delivery.js +64 -19
  208. package/dist/internal/hosted-execution-diag.d.ts +48 -0
  209. package/dist/internal/hosted-execution-diag.d.ts.map +1 -0
  210. package/dist/internal/hosted-execution-diag.js +150 -0
  211. package/dist/internal/http-channel.d.ts.map +1 -1
  212. package/dist/internal/http-channel.js +81 -1
  213. package/dist/internal/init-project.d.ts.map +1 -1
  214. package/dist/internal/init-project.js +4 -0
  215. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  216. package/dist/internal/install-cursor-skills.js +1 -3
  217. package/dist/internal/logs-client.d.ts +5 -0
  218. package/dist/internal/logs-client.d.ts.map +1 -1
  219. package/dist/internal/logs-client.js +5 -0
  220. package/dist/internal/managed-delivery.d.ts +80 -0
  221. package/dist/internal/managed-delivery.d.ts.map +1 -0
  222. package/dist/internal/managed-delivery.js +86 -0
  223. package/dist/internal/mcp-endpoint.js +2 -3
  224. package/dist/internal/mcp-host.d.ts +10 -0
  225. package/dist/internal/mcp-host.d.ts.map +1 -1
  226. package/dist/internal/mcp-host.js +57 -8
  227. package/dist/internal/mcp-oauth-on-demand.d.ts +68 -0
  228. package/dist/internal/mcp-oauth-on-demand.d.ts.map +1 -0
  229. package/dist/internal/mcp-oauth-on-demand.js +287 -0
  230. package/dist/internal/mcp-oauth-persist.d.ts +42 -0
  231. package/dist/internal/mcp-oauth-persist.d.ts.map +1 -0
  232. package/dist/internal/mcp-oauth-persist.js +92 -0
  233. package/dist/internal/mcp-oauth.d.ts +1 -0
  234. package/dist/internal/mcp-oauth.d.ts.map +1 -1
  235. package/dist/internal/mcp-oauth.js +10 -2
  236. package/dist/internal/otel/collector.d.ts.map +1 -1
  237. package/dist/internal/otel/collector.js +22 -9
  238. package/dist/internal/runtime-dispatch-runner.d.ts +5 -1
  239. package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
  240. package/dist/internal/runtime-dispatch-runner.js +7 -0
  241. package/dist/internal/sdk-runner.d.ts +11 -0
  242. package/dist/internal/sdk-runner.d.ts.map +1 -1
  243. package/dist/internal/sdk-runner.js +39 -8
  244. package/dist/internal/server.d.ts +3 -0
  245. package/dist/internal/server.d.ts.map +1 -1
  246. package/dist/internal/server.js +49 -21
  247. package/dist/internal/session-engine.d.ts +101 -3
  248. package/dist/internal/session-engine.d.ts.map +1 -1
  249. package/dist/internal/session-engine.js +577 -46
  250. package/dist/internal/sessions-client.d.ts +9 -7
  251. package/dist/internal/sessions-client.d.ts.map +1 -1
  252. package/dist/internal/sessions-client.js +3 -1
  253. package/dist/internal/steering.d.ts +15 -0
  254. package/dist/internal/steering.d.ts.map +1 -0
  255. package/dist/internal/steering.js +18 -0
  256. package/dist/internal/storage-coordinator.d.ts +7 -0
  257. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  258. package/dist/internal/storage-coordinator.js +28 -5
  259. package/dist/internal/storage-roles.d.ts +5 -0
  260. package/dist/internal/storage-roles.d.ts.map +1 -1
  261. package/dist/internal/stream-progress.d.ts.map +1 -1
  262. package/dist/internal/stream-progress.js +10 -0
  263. package/dist/internal/tool-policy.d.ts +9 -1
  264. package/dist/internal/tool-policy.d.ts.map +1 -1
  265. package/dist/internal/tool-policy.js +13 -0
  266. package/dist/internal/trajectory.d.ts.map +1 -1
  267. package/dist/internal/trajectory.js +10 -0
  268. package/dist/internal/turn-outbox.d.ts +24 -0
  269. package/dist/internal/turn-outbox.d.ts.map +1 -0
  270. package/dist/internal/turn-outbox.js +80 -0
  271. package/dist/playground/assets/{index-CZA1uEWA.js → index-DrkI6y5O.js} +51 -51
  272. package/dist/playground/assets/index-DzNGwm7q.css +1 -0
  273. package/dist/playground/index.html +2 -2
  274. package/dist/storage-backends/cursor-hosted.d.ts +9 -6
  275. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  276. package/dist/storage-backends/cursor-hosted.js +16 -3
  277. package/dist/storage.d.ts +8 -0
  278. package/dist/storage.d.ts.map +1 -1
  279. package/dist/types.d.ts +65 -8
  280. package/dist/types.d.ts.map +1 -1
  281. package/docs/README.md +7 -3
  282. package/docs/deployment.md +5 -4
  283. package/docs/guides/mcp-oauth.md +26 -8
  284. package/docs/guides/slack.md +93 -202
  285. package/docs/reference/agent-config.md +2 -2
  286. package/docs/reference/cli.md +39 -16
  287. package/docs/reference/connections.md +6 -3
  288. package/docs/reference/http-api.md +2 -1
  289. package/docs/reference/sessions.md +4 -2
  290. package/docs/reference/tools.md +9 -2
  291. package/docs/templates/agents-md.md +110 -0
  292. package/docs/templates/code-wiki.md +96 -0
  293. package/docs/troubleshooting.md +2 -2
  294. package/package.json +2 -2
  295. package/skills/ab/SKILL.md +13 -97
  296. package/skills/create-agent/SKILL.md +124 -223
  297. package/skills/debug/SKILL.md +34 -68
  298. package/skills/evals/SKILL.md +55 -180
  299. package/skills/framework-map/SKILL.md +83 -145
  300. package/skills/github/SKILL.md +53 -111
  301. package/skills/hillclimb/SKILL.md +40 -163
  302. package/skills/mcp-auth/SKILL.md +51 -107
  303. package/skills/otel/SKILL.md +22 -68
  304. package/skills/setup-slack/SKILL.md +91 -212
  305. package/src/bin/agent-serve.ts +13 -1
  306. package/src/channels/deployments/types.ts +1 -0
  307. package/src/channels/origin/api.ts +264 -33
  308. package/src/channels/origin/binding.ts +57 -28
  309. package/src/channels/origin/checks.ts +6 -6
  310. package/src/channels/origin/cursor-account.ts +5 -3
  311. package/src/channels/origin/index.ts +1 -0
  312. package/src/channels/origin/origin-channel.ts +4 -0
  313. package/src/channels/origin/reactions.ts +82 -0
  314. package/src/channels/origin/types.ts +11 -0
  315. package/src/channels/slack/api.ts +41 -5
  316. package/src/channels/slack/approvals.ts +105 -0
  317. package/src/channels/slack/cli-project.ts +267 -0
  318. package/src/channels/slack/defaults.ts +122 -93
  319. package/src/channels/slack/dispatch.ts +56 -22
  320. package/src/channels/slack/inbound.ts +43 -0
  321. package/src/channels/slack/init.ts +10 -5
  322. package/src/channels/slack/interactive.ts +35 -9
  323. package/src/channels/slack/live-delivery.ts +235 -114
  324. package/src/channels/slack/manifest.ts +6 -2
  325. package/src/channels/slack/nudge-carrier.ts +48 -1
  326. package/src/channels/slack/setup.ts +10 -6
  327. package/src/channels/slack/slack-channel.ts +3 -0
  328. package/src/channels/slack/tool-approval-events.ts +93 -0
  329. package/src/evals/run-facts.ts +32 -0
  330. package/src/files-backends/cursor-hosted.ts +40 -7
  331. package/src/internal/advertise-tools.ts +49 -12
  332. package/src/internal/approval-gate.ts +20 -29
  333. package/src/internal/bounded.ts +28 -0
  334. package/src/internal/chat-client.ts +19 -0
  335. package/src/internal/cli-deploy.ts +91 -9
  336. package/src/internal/cli-mcp-oauth.ts +7 -21
  337. package/src/internal/cli-slack-manual.ts +350 -18
  338. package/src/internal/cli-slack.ts +40 -84
  339. package/src/internal/conversation-mirror.ts +145 -69
  340. package/src/internal/cursor/account-mcp.ts +21 -0
  341. package/src/internal/cursor/backend-client.ts +34 -58
  342. package/src/internal/cursor/session-token.ts +115 -0
  343. package/src/internal/cursor-agent-template.ts +2 -0
  344. package/src/internal/deploy-client.ts +43 -0
  345. package/src/internal/env-file.ts +84 -0
  346. package/src/internal/framework-file-storage.ts +228 -0
  347. package/src/internal/framework-storage-selection.ts +51 -11
  348. package/src/internal/hosted-delivery-protocol.ts +7 -0
  349. package/src/internal/hosted-delivery.ts +107 -24
  350. package/src/internal/hosted-execution-diag.ts +207 -0
  351. package/src/internal/http-channel.ts +99 -0
  352. package/src/internal/init-project.ts +4 -0
  353. package/src/internal/install-cursor-skills.ts +1 -4
  354. package/src/internal/logs-client.ts +5 -0
  355. package/src/internal/managed-delivery.ts +125 -0
  356. package/src/internal/mcp-endpoint.ts +13 -4
  357. package/src/internal/mcp-host.ts +77 -11
  358. package/src/internal/mcp-oauth-on-demand.ts +352 -0
  359. package/src/internal/mcp-oauth-persist.ts +127 -0
  360. package/src/internal/mcp-oauth.ts +17 -1
  361. package/src/internal/otel/collector.ts +30 -0
  362. package/src/internal/runtime-dispatch-runner.ts +10 -0
  363. package/src/internal/sdk-runner.ts +56 -8
  364. package/src/internal/server.ts +61 -9
  365. package/src/internal/session-engine.ts +723 -60
  366. package/src/internal/sessions-client.ts +17 -8
  367. package/src/internal/steering.ts +17 -0
  368. package/src/internal/storage-coordinator.ts +38 -8
  369. package/src/internal/storage-roles.ts +7 -0
  370. package/src/internal/stream-progress.ts +19 -0
  371. package/src/internal/tool-policy.ts +18 -0
  372. package/src/internal/trajectory.ts +10 -0
  373. package/src/internal/turn-outbox.ts +85 -0
  374. package/src/storage-backends/cursor-hosted.ts +22 -8
  375. package/src/storage.ts +12 -0
  376. package/src/types.ts +70 -9
  377. package/templates/agents-md/README.md +39 -0
  378. package/templates/agents-md/agent/agent.ts +8 -0
  379. package/templates/agents-md/agent/channels/github.ts +10 -0
  380. package/templates/agents-md/agent/channels/queue.ts +28 -0
  381. package/templates/agents-md/agent/channels/slack.ts +9 -0
  382. package/templates/agents-md/agent/instructions.md +39 -0
  383. package/templates/agents-md/agent/lib/collect.ts +439 -0
  384. package/templates/agents-md/agent/lib/config.ts +8 -0
  385. package/templates/agents-md/agent/lib/paths.ts +51 -0
  386. package/templates/agents-md/agent/schedules/weekly.ts +17 -0
  387. package/templates/agents-md/agent/tools/apply_agents.ts +226 -0
  388. package/templates/agents-md/evals/agents.eval.ts +135 -0
  389. package/templates/agents-md/evals/evals.config.ts +5 -0
  390. package/templates/agents-md/init.json +38 -0
  391. package/templates/agents-md/package.json +18 -0
  392. package/templates/agents-md/tsconfig.json +12 -0
  393. package/templates/code-wiki/README.md +34 -0
  394. package/templates/code-wiki/agent/agent.ts +8 -0
  395. package/templates/code-wiki/agent/channels/github.ts +144 -0
  396. package/templates/code-wiki/agent/instructions.md +39 -0
  397. package/templates/code-wiki/agent/lib/repos.ts +5 -0
  398. package/templates/code-wiki/agent/lib/wiki.ts +22 -0
  399. package/templates/code-wiki/agent/tools/apply_wiki.ts +219 -0
  400. package/templates/code-wiki/evals/evals.config.ts +5 -0
  401. package/templates/code-wiki/evals/wiki.eval.ts +132 -0
  402. package/templates/code-wiki/init.json +25 -0
  403. package/templates/code-wiki/package.json +18 -0
  404. package/templates/code-wiki/tsconfig.json +12 -0
  405. package/dist/docs/assets/chunks/@localSearchIndexroot.oqPawjiD.js +0 -1
  406. package/dist/docs/assets/guides_slack.md.C32HsdKk.js +0 -38
  407. package/dist/docs/assets/guides_slack.md.C32HsdKk.lean.js +0 -1
  408. package/dist/docs/assets/index.md.BoHaMdeZ.js +0 -5
  409. package/dist/docs/assets/reference_sessions.md.D0mIh4KK.js +0 -1
  410. package/dist/docs/assets/troubleshooting.md.Ctv3T8C2.js +0 -1
  411. package/dist/docs/design/agsh.md +0 -406
  412. package/dist/internal/deployment-scm-event-stream.d.ts +0 -116
  413. package/dist/internal/deployment-scm-event-stream.d.ts.map +0 -1
  414. package/dist/internal/deployment-scm-event-stream.js +0 -474
  415. package/dist/playground/assets/index-CF7hUDnQ.css +0 -1
  416. package/docs/design/agsh.md +0 -406
  417. package/src/internal/deployment-scm-event-stream.ts +0 -593
  418. /package/dist/docs/assets/{deployment.md.D9msOFOW.lean.js → deployment.md.MFPKqsqI.lean.js} +0 -0
  419. /package/dist/docs/assets/{reference_agent-config.md.Cp_x38Nl.lean.js → reference_agent-config.md.BHeYMgme.lean.js} +0 -0
  420. /package/dist/docs/assets/{reference_connections.md.BH8Oc0D0.lean.js → reference_connections.md.DxldvyIB.lean.js} +0 -0
  421. /package/dist/docs/assets/{reference_http-api.md.D89k1mdm.lean.js → reference_http-api.md.5zOAbV86.lean.js} +0 -0
  422. /package/dist/docs/assets/{reference_sessions.md.D0mIh4KK.lean.js → reference_sessions.md.NxFP_CAC.lean.js} +0 -0
  423. /package/dist/docs/assets/{reference_tools.md.BHeXn2id.lean.js → reference_tools.md.B84gw9Ii.lean.js} +0 -0
  424. /package/dist/docs/assets/{troubleshooting.md.Ctv3T8C2.lean.js → troubleshooting.md.DCiPBhYs.lean.js} +0 -0
@@ -0,0 +1,110 @@
1
+ ---
2
+ title: "Keep AGENTS.md current from last week's work"
3
+ description: "Scaffold the agent, pick a repo and Slack channels, dispatch the weekly job, and deploy."
4
+ ---
5
+
6
+ # Keep AGENTS.md current from last week's work
7
+
8
+ This agent runs every Monday at 09:00 UTC. It reads last week's merged
9
+ pull requests and the Slack channels you list. When a durable rule
10
+ showed up, `apply_agents` parks the write until a person approves it,
11
+ then opens a draft follow-up pull request against the default branch.
12
+ Chores and rules the file already states stay quiet.
13
+
14
+ This template is one model turn: read the week, then call
15
+ `apply_agents`.
16
+
17
+ Init once per app. Pass a different repo and channel list each time.
18
+
19
+ ## Scaffold
20
+
21
+ ```bash
22
+ npx @cursor/july init ./agents-md --template agents-md
23
+ ```
24
+
25
+ `init` asks which GitHub repo to watch and which Slack channels to
26
+ read. Pass `--var repos=acme/api --var slack=#eng-api,#api-private`
27
+ to skip the prompt. Use `--var slack=none` when Slack is out of
28
+ scope.
29
+
30
+ The answers land in `agent/lib/config.ts`. Edit that file when the
31
+ set changes.
32
+
33
+ ## Connect GitHub and Slack
34
+
35
+ Connect GitHub in Cursor for that repository (Settings or
36
+ [cursor.com/dashboard](https://cursor.com/dashboard)). Sign the host
37
+ in:
38
+
39
+ ```bash
40
+ cd agents-md
41
+ agent-sdk login
42
+ ```
43
+
44
+ `cursorAccount` mints a short-lived, repo-scoped credential with
45
+ `contents-write` so the agent can open the follow-up PR. See the
46
+ [GitHub guide](../guides/github.md).
47
+
48
+ Create the Slack app and invite the bot to each listed channel,
49
+ including private ones:
50
+
51
+ ```bash
52
+ agent-sdk slack create --dir .
53
+ ```
54
+
55
+ See the [Slack guide](../guides/slack.md).
56
+
57
+ ## First weekly run
58
+
59
+ ```bash
60
+ agent-sdk dev
61
+ ```
62
+
63
+ Schedules never fire under `dev`. Dispatch the same path production
64
+ uses:
65
+
66
+ ```bash
67
+ curl -X POST http://127.0.0.1:3000/v1/dev/schedules/weekly
68
+ ```
69
+
70
+ The playground can run `/queue/run` too.
71
+
72
+ The host writes `week/prs.md`, `week/slack.md`, `week/window.txt`,
73
+ and `week/tree/**.txt` snapshots of the current `AGENTS.md` files,
74
+ then starts a model turn. The
75
+ model calls `apply_agents` once. A skip finishes. An update parks in
76
+ the playground until someone approves; then a draft PR opens against
77
+ the repository default branch. Later updates to the same base stack
78
+ on `agents-md/<base>`. Pull requests from those branches are ignored
79
+ so the follow-up cannot feed the next week.
80
+
81
+ Chat replies stay in the playground. `apply_agents` records a skip,
82
+ or parks the write. Approve there or with
83
+ `POST /v1/session/:id/approvals/:callId`.
84
+
85
+ ## What to edit
86
+
87
+ - `agent/lib/config.ts`: repo and Slack channels
88
+ - `agent/instructions.md`: what counts as an update
89
+ - `evals/agents.eval.ts`: smoke cases
90
+
91
+ ## Evals
92
+
93
+ Four smoke cases: a lint-only week, a billing rule that parks the
94
+ write, the same rule already in `AGENTS.md`, and an empty week.
95
+
96
+ ```bash
97
+ agent-sdk eval
98
+ ```
99
+
100
+ Eval sessions skip the GitHub write.
101
+
102
+ ## Deploy
103
+
104
+ ```bash
105
+ agent-sdk deploy
106
+ ```
107
+
108
+ Run it from the agent's git checkout. The command infers repository,
109
+ ref, path, and slug. Production fires the Monday cron. The deployment
110
+ uses the team's Cursor GitHub connection for the watched repo.
@@ -0,0 +1,96 @@
1
+ ---
2
+ title: "Keep a code wiki current after merge"
3
+ description: "Scaffold the agent, pick repos, replay a merged PR, and deploy."
4
+ ---
5
+
6
+ # Keep a code wiki current after merge
7
+
8
+ This agent wakes when a watched pull request merges. It reads the diff
9
+ and the in-repo `wiki/` pages. When a durable fact changed, it opens a
10
+ follow-up pull request with the page edits. Chores, cherry-picks, and
11
+ wiki-only merges stay quiet.
12
+
13
+ This template is one model turn: read the merge, then call `apply_wiki`.
14
+
15
+ ## Scaffold
16
+
17
+ ```bash
18
+ npx @cursor/july init ./code-wiki --template code-wiki
19
+ ```
20
+
21
+ `init` asks which GitHub repos to watch. Every repo must share one
22
+ owner. Pass `--var repos=acme/api,acme/web` to skip the prompt.
23
+
24
+ The list lands in `agent/lib/repos.ts`. The GitHub channel reads it for
25
+ `cursorAccount` and for the wake filter. Edit that file when the set
26
+ changes.
27
+
28
+ Pages live in `wiki/` at the repository root. Keep them flat markdown.
29
+ Add `wiki/_index.md` as the catalog.
30
+
31
+ ## Connect GitHub through Cursor
32
+
33
+ Connect GitHub in Cursor for those repositories (Settings or
34
+ [cursor.com/dashboard](https://cursor.com/dashboard)). Sign the host in:
35
+
36
+ ```bash
37
+ cd code-wiki
38
+ agent-sdk login
39
+ ```
40
+
41
+ `cursorAccount` pulls SCM events from Cursor and mints a short-lived,
42
+ repo-scoped credential with `contents-write` so the agent can open the
43
+ follow-up PR. See the [GitHub guide](../guides/github.md).
44
+
45
+ ## First update
46
+
47
+ ```bash
48
+ agent-sdk dev
49
+ ```
50
+
51
+ `dev` starts the Cursor event relay for the watched repos. To drive a
52
+ known merge without waiting on a live push:
53
+
54
+ ```bash
55
+ agent-sdk github replay https://github.com/acme/api/pull/12 --dir . --action closed
56
+ ```
57
+
58
+ `replay` needs pull access. The payload must be a merged PR (`closed`
59
+ and `merged`). Repos outside `agent/lib/repos.ts`, wiki-only merges,
60
+ and branches named `wiki/*` are ignored so the follow-up PR cannot
61
+ wake the agent again.
62
+
63
+ The channel writes `pr/base.ref`, `pr/files.txt`, `pr/diff.patch`, and
64
+ the current `wiki/` pages, then starts a model turn. The model calls
65
+ `apply_wiki` once. The follow-up PR targets that merge's base. Later
66
+ updates to the same base stack on `wiki/<base>`.
67
+
68
+ Chat replies stay in the playground. `apply_wiki` opens the GitHub
69
+ pull request, or records a skip.
70
+
71
+ ## What to edit
72
+
73
+ - `agent/lib/repos.ts`: watched repos
74
+ - `agent/instructions.md`: what counts as an update
75
+ - `evals/wiki.eval.ts`: smoke cases
76
+
77
+ ## Evals
78
+
79
+ Four smoke cases drawn from a busy merge day: a lint fix, a new
80
+ protobuf contract, a markdown-only change, and a cherry-pick.
81
+
82
+ ```bash
83
+ agent-sdk eval
84
+ ```
85
+
86
+ Eval sessions skip the GitHub write.
87
+
88
+ ## Deploy
89
+
90
+ ```bash
91
+ agent-sdk deploy
92
+ ```
93
+
94
+ Run it from the agent's git checkout. The command infers repository,
95
+ ref, path, and slug. The deployment uses the team's Cursor GitHub
96
+ connection for the same watched repos.
@@ -42,7 +42,7 @@ not on `PATH`, use `npx @cursor/july`.
42
42
  | What you see | What to do |
43
43
  | --- | --- |
44
44
  | `409` on a follow-up message | Refresh the `continuationToken` or confirm the session is a chat session. Task sessions do not accept follow-ups. |
45
- | `409 session_busy` on `call --session` | Wait for the model turn to finish, or omit `--session` for a one-off call. |
45
+ | `409 session_busy` on `call --session` | The tool is a write (or declares no effect) and a model turn is running. Wait for the turn to finish, omit `--session` for a one-off call, or declare `effect: "read"` on a tool that only reads so it runs alongside turns. |
46
46
  | `403` on stream or follow-up | Use the same auth identity that created the session. Off localhost, pass `--bearer-token` and send it on every request. |
47
47
  | Works on localhost; blocked through a tunnel or LAN | Default auth allows only direct loopback callers. Share the host with `--bearer-token <secret>` (or authored `bearerAuth`). Use `--allow-anonymous` only on a trusted private network. |
48
48
  | A channel route fails to compile with a schema type error | `GET` routes need a Zod `querySchema`. `POST` / `PUT` / `PATCH` need a Zod `bodySchema`. Use `z.object({})` or `z.unknown()` for open shapes. |
@@ -70,7 +70,7 @@ not on `PATH`, use `npx @cursor/july`.
70
70
  | What you see | What to do |
71
71
  | --- | --- |
72
72
  | `must be defineConnection({ url, oauth: true })` | The connection file needs `oauth: true`, or you passed the wrong connection name to `agent-sdk mcp oauth`. |
73
- | Local auth works; hosted calls unauthorized | Run `agent-sdk mcp oauth <name> --store`, confirm names with `agent-sdk secrets list <slug>`, then redeploy. |
73
+ | Local auth works; hosted calls unauthorized | Finish Connect on the hosted engine, or run `agent-sdk mcp oauth <name> --store`. Confirm names with `agent-sdk secrets list <slug>`, then redeploy. |
74
74
  | Model asks for `mcp_auth` or IDE MCP for a connector it already has | Attached MCP is behind meta-tools. Set `advertiseTools: true` for named tools on local turns, or call it from a host tool via `ctx.host.mcp`. |
75
75
 
76
76
  See [Host MCP OAuth](./guides/mcp-oauth.md) and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cursor/july",
3
- "version": "0.1.95",
3
+ "version": "0.1.97",
4
4
  "description": "(early alpha) Filesystem-first framework for defining Cursor agents as markdown and TypeScript and serving them over channels with the Cursor SDK.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "repository": {
@@ -30,7 +30,6 @@
30
30
  "!src/**/*.test.ts",
31
31
  "!src/internal/tenant-mcp/**",
32
32
  "skills/**/*",
33
- "!skills/operate/**",
34
33
  "templates/**/*",
35
34
  "docs/**/*.md",
36
35
  "!docs/.cursor/**",
@@ -217,6 +216,7 @@
217
216
  },
218
217
  "scripts": {
219
218
  "build": "tsgo -p tsconfig.build.json && node scripts/bundle-publish-shims.mjs && pnpm run build:playground && pnpm run docs:build",
219
+ "build:dist": "node scripts/build-hosted-dist.mjs",
220
220
  "postinstall": "node -e \"try{const p='./scripts/install-cursor-skills.mjs';if(require('fs').existsSync(p))require('child_process').execFileSync(process.execPath,[p],{stdio:'inherit'})}catch{}\"",
221
221
  "build:playground": "vite build --config playground/vite.config.ts",
222
222
  "build:playground:central": "vite build --mode central --config playground/vite.config.ts",
@@ -1,35 +1,24 @@
1
1
  ---
2
2
  name: agentsdk-ab
3
3
  description: >-
4
- Author defineAB live A/B metrics plug-ins under agent/ab. Splits traffic into
5
- sticky variants and calls onSample with performance metrics as the agent runs
6
- not a test runner. Use when instrumenting production/dev traffic for variant
7
- comparison; use defineEval for regression gates.
4
+ Author defineAB live A/B metrics under agent/ab. Sticky variants
5
+ and onSample on live runs. Not a test runner. Use when comparing
6
+ variants on traffic; use defineEval for regression gates.
8
7
  ---
9
8
 
10
9
  # Agent SDK A/B metrics (`defineAB`)
11
10
 
12
- Public docs index: `node_modules/@cursor/july/dist/docs/llms.txt`. A running
13
- host serves the same index at `/docs/llms.txt`.
14
-
15
- `defineAB` is a **live metrics plug-in**. At session creation the engine runs
16
- `split` and appends durable `ab.assigned` events; the collector folds the
17
- session event stream and calls `onSample`. There is **no** `agent-sdk ab`
18
- CLI and **no** assertion API.
19
-
20
- Human-facing reference: [`docs/ab.md`](../../docs/ab.md).
11
+ Live metrics plug-in. No `agent-sdk ab` CLI. No assertion API.
12
+ Reference: `docs/ab.md`.
21
13
 
22
14
  | | `defineEval` | `defineAB` |
23
15
  | --- | --- | --- |
24
- | Job | Regression gates on frozen fixtures | Collect metrics on live runs |
16
+ | Job | Gates on frozen fixtures | Metrics on live runs |
25
17
  | Location | `evals/**/*.eval.ts` | `agent/ab.ts` or `agent/ab/<name>.ts` |
26
- | How it runs | `agent-sdk eval` | Automatically under `serve` / `run` |
27
- | Driver | `t.send` + gates | `split` → `ab.assigned` + `onSample` |
28
-
29
- ## Authoring
18
+ | How it runs | `agent-sdk eval` | Under `serve` / `run` |
30
19
 
31
20
  ```ts
32
- import { defineAB, splitBySessionHash, splitIf } from "@cursor/july/ab";
21
+ import { defineAB, splitBySessionHash } from "@cursor/july/ab";
33
22
 
34
23
  export default defineAB({
35
24
  name: "concise-instructions",
@@ -37,13 +26,11 @@ export default defineAB({
37
26
  control: { label: "Baseline" },
38
27
  treatment: {
39
28
  label: "Shorter",
40
- // Optional: appended to agent instructions for this arm.
41
29
  instructions: "Keep replies to one short paragraph.",
42
30
  },
43
31
  },
44
32
  split: splitBySessionHash({ holdout: 0.1 }),
45
33
  derive: {
46
- // Keep sync + cheap — runs on every event, including message deltas.
47
34
  weatherCalls: (event) =>
48
35
  event.type === "action.result" && event.data.toolName === "get_weather"
49
36
  ? 1
@@ -55,8 +42,6 @@ export default defineAB({
55
42
  });
56
43
  ```
57
44
 
58
- In tools, read the arm from session context:
59
-
60
45
  ```ts
61
46
  async execute(input, ctx) {
62
47
  if (ctx.session.abs?.["concise-instructions"] === "treatment") {
@@ -65,78 +50,9 @@ async execute(input, ctx) {
65
50
  }
66
51
  ```
67
52
 
53
+ Enrollment is at session creation. Eval sessions skip it. Do not
54
+ use `splitIf` to filter evals. Split helpers and `onSample`
55
+ fields: `docs/ab.md`.
68
56
 
69
- Discovery: `agent/ab.ts` and `agent/ab/*.ts`. Name defaults to file stem or `config.name`.
70
-
71
- Optional project defaults in `agent/ab.config.ts` (retention + persistence):
72
-
73
- ```ts
74
- import {
75
- defineABConfig,
76
- persistABSamplesToDir,
77
- persistABSnapshotsToDir,
78
- } from "@cursor/july/ab";
79
-
80
- export default defineABConfig({
81
- // maxPlaygroundSessions: 200, // optional; default 200; A/Bs tab / GET /v1/abs only
82
- persistSamples: persistABSamplesToDir(".agent-serve/ab-samples"),
83
- persistSnapshots: persistABSnapshotsToDir(".agent-serve/ab-snapshots"),
84
- });
85
- ```
86
-
87
- Session `events.ndjson` remains the assignment/metrics source of truth.
88
- `persistSamples` / `persistSnapshots` are author-controlled exports (like
89
- eval `persistRuns`).
90
-
91
- ### Stream model
92
-
93
- Typical new-session prefix:
94
-
95
- 1. `session.started`
96
- 2. one `ab.assigned` per experiment (`variant` key or `null` skip)
97
- 3. `message.received` / `turn.started` / …
98
-
99
- Enrollment is **at session creation** (before the first turn) so each arm can
100
- vary instructions and tool behavior from a known assignment. Failed/`null`
101
- splits persist as `ab.assigned` with `variant: null` (sticky skip). The
102
- collector is a pure fold over the log. `SessionRecord.abs` is a convenience
103
- mirror, not a metrics store. After park/restart it replays `events.ndjson` to
104
- rebuild counters without re-firing `onSample`.
105
-
106
- **Evals are separate:** the eval harness creates sessions with
107
- `purpose: "eval"` (playground Evals / `agent-sdk eval`). Those skip
108
- enrollment entirely — no `ab.assigned`, no `onSample`, omitted from
109
- `GET /v1/abs`. Ordinary chat / `agent-sdk run` / Slack stay `"live"`.
110
- Do not use `splitIf` to filter evals; the framework already does.
111
-
112
- After enrollment, arms are on `session.abs` (experiment → variant | `null`)
113
- for tools/hooks, and optional per-variant `instructions` are appended to the
114
- agent prompt for that session (a treatment arm can, say, switch `get_weather`
115
- to °C for its sessions).
116
-
117
- ### Split helpers
118
-
119
- | Helper | Behavior |
120
- | --- | --- |
121
- | `splitBySessionHash({ weights?, holdout?, salt? })` | Sticky hash → arm |
122
- | `splitByRandom({ weights?, holdout? })` | Random once, then sticky |
123
- | `splitAlways("control")` | Pin all new sessions |
124
- | `splitNone()` | Skip everyone (pause in place) |
125
- | `splitIf(pred, inner)` | Skip unless `pred` |
126
- | `(ctx) => …` | Custom — variant key or `null` |
127
-
128
- ### Built-in metrics
129
-
130
- `turns`, `turnFailures`, `toolCalls`, `toolErrors`, token fields, `wallTimeMs`,
131
- plus `custom.*` from `derive`. `onSample` fires on `turn.completed` / `turn.failed`.
132
-
133
- Playground **A/Bs** tab and `GET /v1/abs` fold the same durable streams into
134
- per-session assignments and aggregate arm totals (no separate metrics store).
135
-
136
- ### `derive` cost
137
-
138
- `derive` extractors run on **every** session event (same cost model as hooks).
139
- Keep them synchronous and cheap — no network, no disk, no heavy parsing.
140
-
141
- Before wiring: pick experiment name + arm labels, a split helper (and who
142
- to leave out), and a real `onSample` sink — do not invent credentials.
57
+ Pick a name, arm labels, a split, and a real `onSample` sink. Do
58
+ not invent credentials.