@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
package/AGENTS.md CHANGED
@@ -139,6 +139,13 @@ export default defineEvalConfig({
139
139
  (schema-validated, in-process, no model). `--session <id>` runs it inside
140
140
  an existing session and records it on that session's event stream.
141
141
  - `init` with no directory prints this setup guide (does not scaffold).
142
+ `init <dir>` scaffolds (skipping existing files), runs `npm install`,
143
+ offers to install/update package skills into
144
+ `~/.cursor/skills/agentkit/` (TTY only; always overwrites with the
145
+ package copy), runs `login` and waits when unsigned, then prints `cd`
146
+ (when needed) and bare `dev`. `--json` still installs but never blocks
147
+ on login or skill install; it prints
148
+ `{ ok, directory, created, skipped, installed, installError, next }`.
142
149
  - `chat --json --message "..."` talks to a running server and prints a trajectory.
143
150
 
144
151
  ## Agent-to-agent (MCP endpoint + peer MCP connections)
@@ -168,7 +175,7 @@ instructions so A→B→A recursion cannot happen (e.g. a parent agent that
168
175
  delegates *only* weather questions to a `weather-agent` peer).
169
176
 
170
177
  ```bash
171
- agent-serve serve --dir ./agents --dev
178
+ agent-serve dev ./agents
172
179
  agent-serve chat --url http://127.0.0.1:3000/concierge --message "Weather in Paris?"
173
180
  ```
174
181
 
@@ -177,7 +184,10 @@ agent-serve chat --url http://127.0.0.1:3000/concierge --message "Weather in Par
177
184
  The Cursor Slack connection is the zero-setup default
178
185
  (`slackChannel({ cursorAccount: true, agentName: "…" })`). Sign the host
179
186
  in (`agent-serve login` / `CURSOR_API_KEY`), then `@Cursor <agentName> …`
180
- in Slack; thread replies stay with that agent. Import from
187
+ in Slack; thread replies stay with that agent. `agentName` must be a
188
+ **single token** (no whitespace) — prefer PascalCase (`ApprovalBuddy`);
189
+ multi-word names fail typecheck for string literals and throw at
190
+ construction / serve time. Import from
181
191
  `@cursor/july/channels/slack`.
182
192
 
183
193
  Dedicated Socket Mode apps (no public Request URL) live in a second
@@ -189,7 +199,7 @@ agent-serve slack setup
189
199
  agent-serve slack init --dir ./my-agent --name "My Agent" --channel-posts
190
200
  # writes envPrefix from the directory name (MY_AGENT_SLACK_*)
191
201
  agent-serve slack doctor --prefix MY_AGENT
192
- agent-serve serve --dir ./my-agent --dev
202
+ agent-serve dev ./my-agent
193
203
  ```
194
204
 
195
205
  Multi-agent Socket Mode needs **one Slack app (and token pair) per agent**:
@@ -215,8 +225,8 @@ The web playground is a Vite + React SPA under `playground/` (entry
215
225
 
216
226
  - If `dist/playground/` is missing and the local vite toolchain is present,
217
227
  serve auto-runs `vite build` before listening.
218
- - `serve --dev` also starts Vite HMR (default `:5273`) and prints
219
- `playground (HMR): …`. Single-agent proxies `/v1` to the serve URL;
228
+ - `serve --dev` / `dev` also starts Vite HMR (default `:5273`) and prints
229
+ that URL as `playground`. Single-agent proxies `/v1` to the serve URL;
220
230
  multi-agent serves the agents index at `/` and each SPA at
221
231
  `/<slug>/playground` (pin one slug with `AGENT_SERVE_BASE=/<slug>`).
222
232
 
@@ -234,7 +244,12 @@ or pinned via `webhookEvents`) as `meta.githubWebhookEvents`. Auth default: with
234
244
  a secret → `allowAll()` + signature check; without one → `localDevStrict()`,
235
245
  except under `serve --dev` which admits unsigned loopback deliveries (so
236
246
  `gh webhook forward` and fixtures work with no secret). Outbound GitHub API
237
- calls prefer App installation tokens (`GITHUB_APP_ID` +
247
+ calls can reuse the signed-in Cursor connection with
248
+ `githubChannel({ cursorAccount: { repos: ["owner/repo"] } })`; this supplies
249
+ events plus a refreshing repo-scoped credential to `ctx.github`,
250
+ `ctx.host.github`, and child `gh` commands in dev and hosted deployments.
251
+ Default `permissions: "pr-write"`; opt up to `"contents-write"` only to push.
252
+ Without `cursorAccount`, calls prefer App installation tokens (`GITHUB_APP_ID` +
238
253
  `GITHUB_APP_PRIVATE_KEY` + webhook `installation.id` or
239
254
  `GITHUB_APP_INSTALLATION_ID`); serve warmup also exports that token as
240
255
  `GH_TOKEN` for tools that shell out to `gh`. For local testing, omit App
@@ -253,7 +268,7 @@ agent-serve github events --dir ./agents --json
253
268
 
254
269
  # forward live deliveries to a served agent (no secret needed against --dev;
255
270
  # set GITHUB_WEBHOOK_SECRET to verify signatures)
256
- agent-serve serve --dir ./my-agent --dev &
271
+ agent-serve dev ./my-agent &
257
272
  agent-serve github forward --dir ./my-agent
258
273
  ```
259
274
 
@@ -283,8 +298,26 @@ Fixtures still work for offline replay: `POST` a saved payload with an
283
298
 
284
299
  ## Do not
285
300
 
301
+ - Proactively add or update documentation (`docs/`, READMEs, this file) as
302
+ part of a code change. Docs are written intentionally, on explicit request
303
+ only — never as a side effect of a feature or fix. If a change makes docs
304
+ stale, say so in the PR description instead of editing them unprompted.
286
305
  - Put durable `--state-root` inside a large monorepo if you care about
287
306
  ambient `AGENTS.md` / `.cursor` rules leaking into the agent workspace.
288
307
  Prefer `defineAgent({ local: { cwd } })` pointing outside the monorepo
289
308
  (session harnesses land at `<cwd>/<sessionId>`), or a temp `--state-root`.
290
309
  - Expect `agent/evals/` to be loaded — evals live at the **project root** `evals/`.
310
+ - Build optional object fields with a conditional empty-object spread.
311
+ Assign the property directly; `undefined` is fine on optional keys.
312
+
313
+ ```ts
314
+ // ❌ BAD
315
+ { ...(x === undefined ? {} : { x }) }
316
+ { ...(cond && { x }) }
317
+
318
+ // ✅ GOOD
319
+ { x } // may be undefined
320
+ ```
321
+
322
+ Only use a conditional spread when merging a real partial object
323
+ (`...overrides`), not to omit an optional key.
package/README.md CHANGED
@@ -53,9 +53,10 @@ my-agent/
53
53
  ```
54
54
 
55
55
  Scaffold a starter project with `agent-serve init ./my-agent` — a minimal
56
- agent (`package.json`, `agent/agent.ts`, `agent/instructions.md`, and a demo
57
- `agent/tools/echo.ts`) that serves immediately. From there, grow it folder by
58
- folder; the [docs](./docs/README.md) walk a weather agent from a single
56
+ agent (`package.json`, `tsconfig.json`, `agent/agent.ts`,
57
+ `agent/instructions.md`, and a demo `agent/tools/echo.ts`) that serves
58
+ immediately and type-checks with `npm run check`. From there, grow it folder
59
+ by folder; the [docs](./docs/README.md) walk a weather agent from a single
59
60
  `get_weather` tool through skills, channels, evals, and deployment.
60
61
 
61
62
  Serve one project with `agent-serve serve --dir ./my-agent --dev`, or point
@@ -79,10 +80,8 @@ one port, each under its own slug (its directory name):
79
80
 
80
81
  ```bash
81
82
  agent-serve serve --dir ./agents --dev
82
- # 2 agents listening on http://127.0.0.1:3000
83
- # index: http://127.0.0.1:3000/
84
- # /weather-agent → /weather-agent/playground, /weather-agent/v1/*
85
- # /concierge → /concierge/playground, /concierge/v1/*
83
+ # 2 agents listening
84
+ # playground http://127.0.0.1:5273
86
85
  ```
87
86
 
88
87
  `serve` always uses multi-agent layout by default: agents are mounted under
@@ -377,8 +376,8 @@ own playground at `/<slug>/playground` and `/` is an index of them all (see
377
376
 
378
377
  ### Developing the playground
379
378
 
380
- `serve --dev` also starts Vite HMR (default `:5273`) and prints
381
- `playground (HMR): …`. Single-agent proxies `/v1` to the serve URL; multi-agent
379
+ `serve --dev` / `dev` also starts Vite HMR (default `:5273`) and prints that
380
+ URL as `playground`. Single-agent proxies `/v1` to the serve URL; multi-agent
382
381
  serves the agents index at `/` and each SPA at `/<slug>/playground`:
383
382
 
384
383
  ```bash
@@ -927,19 +926,22 @@ Approve/Deny cards and routes Socket Mode `interactive` clicks to
927
926
  (App-Level Token with `connections:write`).
928
927
 
929
928
  Most demos under `examples/` use the Cursor Slack connection
930
- (`cursorAccount: true`) with a unique `agentName` — `@Cursor Benny …`,
931
- `@Cursor Bugbot …`, etc. Sign the host in, then mention the agent; no
932
- per-agent Slack app required for chat. Agents that need channel watch or
933
- tool approvals keep a Socket Mode app in a second channel file (e.g.
934
- `slack-app.ts`) with their own env prefix (`<PREFIX>_SLACK_BOT_TOKEN` +
935
- `<PREFIX>_SLACK_APP_TOKEN`, derived from the directory name by `slack init`).
929
+ (`cursorAccount: true`) with a unique single-token `agentName` —
930
+ `@Cursor Benny …`, `@Cursor Bugbot …`, `@Cursor ApprovalBuddy …`, etc.
931
+ Sign the host in, then mention the agent; no per-agent Slack app required
932
+ for chat. Agents that need channel watch or tool approvals keep a Socket
933
+ Mode app in a second channel file (e.g. `slack-app.ts`) with their own env
934
+ prefix (`<PREFIX>_SLACK_BOT_TOKEN` + `<PREFIX>_SLACK_APP_TOKEN`, derived
935
+ from the directory name by `slack init`).
936
936
 
937
937
  | Agent | `@Cursor` name | Optional Socket Mode app |
938
938
  | --- | --- | --- |
939
939
  | `weather-agent` | Weather | `slack-app.ts` (`WEATHER_AGENT_SLACK_*`, tool approvals) |
940
- | `slack-agent` | Slack Agent | — |
940
+ | `slack-agent` | SlackAgent | — |
941
941
  | `bugbot` | Bugbot | — |
942
942
  | `fsd` | FSD | — |
943
+ | `benny` | Benny | `slack-app.ts` (`BENNY_SLACK_*`, channel watch) |
944
+ | `approval-buddy` | ApprovalBuddy | — |
943
945
 
944
946
  PR-oriented demos (`bugbot`, `fsd`) extract a GitHub PR URL / `owner/repo#N`
945
947
  from the mention and run the same host path as their HTTP channels.
@@ -970,7 +972,10 @@ import { defaultGitHubAuth, githubChannel } from "@cursor/july/channels/github";
970
972
 
971
973
  export default githubChannel({
972
974
  botName: "my-agent", // or GITHUB_APP_SLUG
973
- credentials: { webhookSecret: () => process.env.GITHUB_WEBHOOK_SECRET },
975
+ cursorAccount: {
976
+ repos: ["owner/repo"],
977
+ // permissions?: "read" | "pr-write" | "contents-write" (default pr-write)
978
+ },
974
979
  onPullRequest: (ctx, pr) =>
975
980
  pr.action === "opened" ? { auth: defaultGitHubAuth(ctx) } : null,
976
981
  onCheckSuite: (ctx, suite) =>
@@ -986,13 +991,17 @@ under `serve --dev`, which admits unsigned loopback deliveries so
986
991
  `{ auth }` to start a model turn as the actor, `{ task }` for host-side work
987
992
  (202 ACK, runs past GitHub's ~10s timeout), or `null` to skip.
988
993
 
989
- **Testing GitHub agents locally.** API auth prefers GitHub App installation
990
- tokens when `GITHUB_APP_ID` / `GITHUB_APP_PRIVATE_KEY` (and an installation id)
991
- are set; for local testing you can omit those and use `GITHUB_TOKEN` /
992
- `GH_TOKEN` or `gh auth login` instead. The channel publishes the webhook events
993
- it dispatches on (derived from the declared hooks, or pinned via
994
- `webhookEvents`), so `agent-serve github …` can forward live deliveries with
995
- zero hand-listing it wraps [`gh webhook
994
+ **Testing GitHub agents locally.** `cursorAccount` reuses `agent-serve login`
995
+ for both Cursor SCM events and a refreshing repo-scoped GitHub credential used
996
+ by `ctx.github`, `ctx.host.github`, and child `gh` commands. Default
997
+ `permissions: "pr-write"` covers comments without `contents:write`; opt up to
998
+ `"contents-write"` only when the agent must push. Without `cursorAccount`, API
999
+ auth prefers GitHub App installation tokens when `GITHUB_APP_ID` /
1000
+ `GITHUB_APP_PRIVATE_KEY` (and an installation id) are set, then falls back to
1001
+ `GITHUB_TOKEN` / `GH_TOKEN` or `gh auth login`. The channel publishes the
1002
+ webhook events it dispatches on (derived from the declared hooks, or pinned
1003
+ via `webhookEvents`), so `agent-serve github …` can forward live
1004
+ deliveries with zero hand-listing — it wraps [`gh webhook
996
1005
  forward`](https://docs.github.com/en/webhooks/testing-and-troubleshooting-webhooks/using-the-github-cli-to-forward-webhooks-for-testing):
997
1006
 
998
1007
  ```bash
@@ -3,10 +3,12 @@
3
3
  * agent-serve CLI.
4
4
  *
5
5
  * agent-serve serve [--dir .] [--port 3000] [--host 127.0.0.1] [--dev]
6
+ * agent-serve dev [path] [--port 3000] [--host 127.0.0.1]
6
7
  * agent-serve chat [--url http://127.0.0.1:3000] [--message "..."] [--json]
8
+ * agent-serve resume <sessionId> [--url | --prod] [--message "..."]
7
9
  * agent-serve run [--dir .] [--message "..."] [--json|--text]
8
10
  * agent-serve trajectory --events <file.ndjson>
9
- * agent-serve init [dir]
11
+ * agent-serve init [dir] [--json]
10
12
  * agent-serve eval [--dir .] [evalId...]
11
13
  * agent-serve validate [--dir .]
12
14
  * agent-serve slack <subcommand>
@@ -1 +1 @@
1
- {"version":3,"file":"agent-serve.d.ts","sourceRoot":"","sources":["../../src/bin/agent-serve.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
1
+ {"version":3,"file":"agent-serve.d.ts","sourceRoot":"","sources":["../../src/bin/agent-serve.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG"}