@cursor/july 0.1.1

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 (623) hide show
  1. package/AGENTS.md +290 -0
  2. package/LICENSE.md +3 -0
  3. package/README.md +1233 -0
  4. package/dist/ab.d.ts +290 -0
  5. package/dist/ab.d.ts.map +1 -0
  6. package/dist/ab.js +386 -0
  7. package/dist/bin/agent-serve.d.ts +15 -0
  8. package/dist/bin/agent-serve.d.ts.map +1 -0
  9. package/dist/bin/agent-serve.js +754 -0
  10. package/dist/channels/github/api.d.ts +101 -0
  11. package/dist/channels/github/api.d.ts.map +1 -0
  12. package/dist/channels/github/api.js +229 -0
  13. package/dist/channels/github/auth.d.ts +67 -0
  14. package/dist/channels/github/auth.d.ts.map +1 -0
  15. package/dist/channels/github/auth.js +239 -0
  16. package/dist/channels/github/binding.d.ts +73 -0
  17. package/dist/channels/github/binding.d.ts.map +1 -0
  18. package/dist/channels/github/binding.js +114 -0
  19. package/dist/channels/github/defaults.d.ts +24 -0
  20. package/dist/channels/github/defaults.d.ts.map +1 -0
  21. package/dist/channels/github/defaults.js +100 -0
  22. package/dist/channels/github/events.d.ts +18 -0
  23. package/dist/channels/github/events.d.ts.map +1 -0
  24. package/dist/channels/github/events.js +59 -0
  25. package/dist/channels/github/forward.d.ts +137 -0
  26. package/dist/channels/github/forward.d.ts.map +1 -0
  27. package/dist/channels/github/forward.js +271 -0
  28. package/dist/channels/github/github-channel.d.ts +127 -0
  29. package/dist/channels/github/github-channel.d.ts.map +1 -0
  30. package/dist/channels/github/github-channel.js +1688 -0
  31. package/dist/channels/github/index.d.ts +52 -0
  32. package/dist/channels/github/index.d.ts.map +1 -0
  33. package/dist/channels/github/index.js +51 -0
  34. package/dist/channels/github/replay.d.ts +115 -0
  35. package/dist/channels/github/replay.d.ts.map +1 -0
  36. package/dist/channels/github/replay.js +282 -0
  37. package/dist/channels/github/state.d.ts +26 -0
  38. package/dist/channels/github/state.d.ts.map +1 -0
  39. package/dist/channels/github/state.js +50 -0
  40. package/dist/channels/github/types.d.ts +385 -0
  41. package/dist/channels/github/types.d.ts.map +1 -0
  42. package/dist/channels/github/types.js +1 -0
  43. package/dist/channels/slack/api.d.ts +117 -0
  44. package/dist/channels/slack/api.d.ts.map +1 -0
  45. package/dist/channels/slack/api.js +437 -0
  46. package/dist/channels/slack/approvals.d.ts +32 -0
  47. package/dist/channels/slack/approvals.d.ts.map +1 -0
  48. package/dist/channels/slack/approvals.js +157 -0
  49. package/dist/channels/slack/assistant.d.ts +23 -0
  50. package/dist/channels/slack/assistant.d.ts.map +1 -0
  51. package/dist/channels/slack/assistant.js +67 -0
  52. package/dist/channels/slack/auth.d.ts +40 -0
  53. package/dist/channels/slack/auth.d.ts.map +1 -0
  54. package/dist/channels/slack/auth.js +71 -0
  55. package/dist/channels/slack/channel-watch.d.ts +46 -0
  56. package/dist/channels/slack/channel-watch.d.ts.map +1 -0
  57. package/dist/channels/slack/channel-watch.js +180 -0
  58. package/dist/channels/slack/constants.d.ts +17 -0
  59. package/dist/channels/slack/constants.d.ts.map +1 -0
  60. package/dist/channels/slack/constants.js +27 -0
  61. package/dist/channels/slack/credentials.d.ts +35 -0
  62. package/dist/channels/slack/credentials.d.ts.map +1 -0
  63. package/dist/channels/slack/credentials.js +88 -0
  64. package/dist/channels/slack/cursor-account.d.ts +76 -0
  65. package/dist/channels/slack/cursor-account.d.ts.map +1 -0
  66. package/dist/channels/slack/cursor-account.js +88 -0
  67. package/dist/channels/slack/defaults.d.ts +32 -0
  68. package/dist/channels/slack/defaults.d.ts.map +1 -0
  69. package/dist/channels/slack/defaults.js +380 -0
  70. package/dist/channels/slack/dispatch.d.ts +43 -0
  71. package/dist/channels/slack/dispatch.d.ts.map +1 -0
  72. package/dist/channels/slack/dispatch.js +185 -0
  73. package/dist/channels/slack/doctor.d.ts +24 -0
  74. package/dist/channels/slack/doctor.d.ts.map +1 -0
  75. package/dist/channels/slack/doctor.js +115 -0
  76. package/dist/channels/slack/event-id-dedupe.d.ts +10 -0
  77. package/dist/channels/slack/event-id-dedupe.d.ts.map +1 -0
  78. package/dist/channels/slack/event-id-dedupe.js +23 -0
  79. package/dist/channels/slack/inbound.d.ts +41 -0
  80. package/dist/channels/slack/inbound.d.ts.map +1 -0
  81. package/dist/channels/slack/inbound.js +166 -0
  82. package/dist/channels/slack/index.d.ts +45 -0
  83. package/dist/channels/slack/index.d.ts.map +1 -0
  84. package/dist/channels/slack/index.js +44 -0
  85. package/dist/channels/slack/init.d.ts +32 -0
  86. package/dist/channels/slack/init.d.ts.map +1 -0
  87. package/dist/channels/slack/init.js +82 -0
  88. package/dist/channels/slack/interactive.d.ts +19 -0
  89. package/dist/channels/slack/interactive.d.ts.map +1 -0
  90. package/dist/channels/slack/interactive.js +142 -0
  91. package/dist/channels/slack/links.d.ts +10 -0
  92. package/dist/channels/slack/links.d.ts.map +1 -0
  93. package/dist/channels/slack/links.js +19 -0
  94. package/dist/channels/slack/live-delivery.d.ts +75 -0
  95. package/dist/channels/slack/live-delivery.d.ts.map +1 -0
  96. package/dist/channels/slack/live-delivery.js +143 -0
  97. package/dist/channels/slack/log.d.ts +25 -0
  98. package/dist/channels/slack/log.d.ts.map +1 -0
  99. package/dist/channels/slack/log.js +47 -0
  100. package/dist/channels/slack/manifest.d.ts +57 -0
  101. package/dist/channels/slack/manifest.d.ts.map +1 -0
  102. package/dist/channels/slack/manifest.js +110 -0
  103. package/dist/channels/slack/pr-ref.d.ts +18 -0
  104. package/dist/channels/slack/pr-ref.d.ts.map +1 -0
  105. package/dist/channels/slack/pr-ref.js +36 -0
  106. package/dist/channels/slack/setup.d.ts +14 -0
  107. package/dist/channels/slack/setup.d.ts.map +1 -0
  108. package/dist/channels/slack/setup.js +86 -0
  109. package/dist/channels/slack/slack-channel.d.ts +15 -0
  110. package/dist/channels/slack/slack-channel.d.ts.map +1 -0
  111. package/dist/channels/slack/slack-channel.js +281 -0
  112. package/dist/channels/slack/socket-mode.d.ts +26 -0
  113. package/dist/channels/slack/socket-mode.d.ts.map +1 -0
  114. package/dist/channels/slack/socket-mode.js +116 -0
  115. package/dist/channels/slack/stream.d.ts +26 -0
  116. package/dist/channels/slack/stream.d.ts.map +1 -0
  117. package/dist/channels/slack/stream.js +39 -0
  118. package/dist/channels/slack/tool-approval-events.d.ts +33 -0
  119. package/dist/channels/slack/tool-approval-events.d.ts.map +1 -0
  120. package/dist/channels/slack/tool-approval-events.js +129 -0
  121. package/dist/channels/slack/types.d.ts +326 -0
  122. package/dist/channels/slack/types.d.ts.map +1 -0
  123. package/dist/channels/slack/types.js +4 -0
  124. package/dist/channels.d.ts +116 -0
  125. package/dist/channels.d.ts.map +1 -0
  126. package/dist/channels.js +294 -0
  127. package/dist/connections.d.ts +75 -0
  128. package/dist/connections.d.ts.map +1 -0
  129. package/dist/connections.js +75 -0
  130. package/dist/docs/404.html +22 -0
  131. package/dist/docs/ab.html +87 -0
  132. package/dist/docs/assets/ab.md.COdXkces.js +63 -0
  133. package/dist/docs/assets/ab.md.COdXkces.lean.js +1 -0
  134. package/dist/docs/assets/app.DqfFEmJd.js +1 -0
  135. package/dist/docs/assets/building-with-agents.md.CJCtZCyi.js +13 -0
  136. package/dist/docs/assets/building-with-agents.md.CJCtZCyi.lean.js +1 -0
  137. package/dist/docs/assets/chunks/@localSearchIndexroot.CcVk1uKq.js +1 -0
  138. package/dist/docs/assets/chunks/VPLocalSearchBox.BaLEdS15.js +9 -0
  139. package/dist/docs/assets/chunks/framework.CAZyNGu9.js +19 -0
  140. package/dist/docs/assets/chunks/theme.CZRvu_0q.js +2 -0
  141. package/dist/docs/assets/concepts.md.Cfb9b-k1.js +4 -0
  142. package/dist/docs/assets/concepts.md.Cfb9b-k1.lean.js +1 -0
  143. package/dist/docs/assets/deployment.md.Dx1TYNk5.js +14 -0
  144. package/dist/docs/assets/deployment.md.Dx1TYNk5.lean.js +1 -0
  145. package/dist/docs/assets/evals.md.DPZ_MAnI.js +85 -0
  146. package/dist/docs/assets/evals.md.DPZ_MAnI.lean.js +1 -0
  147. package/dist/docs/assets/guides_agent-to-agent.md.CrtrsySy.js +10 -0
  148. package/dist/docs/assets/guides_agent-to-agent.md.CrtrsySy.lean.js +1 -0
  149. package/dist/docs/assets/guides_cloud-runtime.md.CYlNMTNp.js +9 -0
  150. package/dist/docs/assets/guides_cloud-runtime.md.CYlNMTNp.lean.js +1 -0
  151. package/dist/docs/assets/guides_github.md.DwbKhCeS.js +20 -0
  152. package/dist/docs/assets/guides_github.md.DwbKhCeS.lean.js +1 -0
  153. package/dist/docs/assets/guides_human-in-the-loop.md.Dvuctx7s.js +28 -0
  154. package/dist/docs/assets/guides_human-in-the-loop.md.Dvuctx7s.lean.js +1 -0
  155. package/dist/docs/assets/guides_slack.md.bv41fHfW.js +37 -0
  156. package/dist/docs/assets/guides_slack.md.bv41fHfW.lean.js +1 -0
  157. package/dist/docs/assets/guides_webhooks.md.hFTik3lf.js +50 -0
  158. package/dist/docs/assets/guides_webhooks.md.hFTik3lf.lean.js +1 -0
  159. package/dist/docs/assets/hillclimbing.md.DHNast08.js +4 -0
  160. package/dist/docs/assets/hillclimbing.md.DHNast08.lean.js +1 -0
  161. package/dist/docs/assets/index.md.BPKcj5AI.js +20 -0
  162. package/dist/docs/assets/index.md.BPKcj5AI.lean.js +1 -0
  163. package/dist/docs/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  164. package/dist/docs/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  165. package/dist/docs/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  166. package/dist/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  167. package/dist/docs/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  168. package/dist/docs/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  169. package/dist/docs/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  170. package/dist/docs/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  171. package/dist/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  172. package/dist/docs/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  173. package/dist/docs/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  174. package/dist/docs/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  175. package/dist/docs/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  176. package/dist/docs/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  177. package/dist/docs/assets/quickstart.md.tVPiGK_L.js +35 -0
  178. package/dist/docs/assets/quickstart.md.tVPiGK_L.lean.js +1 -0
  179. package/dist/docs/assets/reference_agent-config.md.Bpd7HQwf.js +34 -0
  180. package/dist/docs/assets/reference_agent-config.md.Bpd7HQwf.lean.js +1 -0
  181. package/dist/docs/assets/reference_channels.md.D7JTR03W.js +53 -0
  182. package/dist/docs/assets/reference_channels.md.D7JTR03W.lean.js +1 -0
  183. package/dist/docs/assets/reference_cli.md.DA730zCu.js +33 -0
  184. package/dist/docs/assets/reference_cli.md.DA730zCu.lean.js +1 -0
  185. package/dist/docs/assets/reference_connections.md.C3vNH_DE.js +26 -0
  186. package/dist/docs/assets/reference_connections.md.C3vNH_DE.lean.js +1 -0
  187. package/dist/docs/assets/reference_hooks.md.BCEc3MyM.js +12 -0
  188. package/dist/docs/assets/reference_hooks.md.BCEc3MyM.lean.js +1 -0
  189. package/dist/docs/assets/reference_http-api.md.DBAahtdz.js +11 -0
  190. package/dist/docs/assets/reference_http-api.md.DBAahtdz.lean.js +1 -0
  191. package/dist/docs/assets/reference_instructions.md.BC05LEQ8.js +12 -0
  192. package/dist/docs/assets/reference_instructions.md.BC05LEQ8.lean.js +1 -0
  193. package/dist/docs/assets/reference_playground.md.CPZhfYaO.js +1 -0
  194. package/dist/docs/assets/reference_playground.md.CPZhfYaO.lean.js +1 -0
  195. package/dist/docs/assets/reference_project-layout.md.Bd_CKtNS.js +31 -0
  196. package/dist/docs/assets/reference_project-layout.md.Bd_CKtNS.lean.js +1 -0
  197. package/dist/docs/assets/reference_schedules.md.D7qijxLk.js +82 -0
  198. package/dist/docs/assets/reference_schedules.md.D7qijxLk.lean.js +1 -0
  199. package/dist/docs/assets/reference_sessions.md.DdjWabnN.js +8 -0
  200. package/dist/docs/assets/reference_sessions.md.DdjWabnN.lean.js +1 -0
  201. package/dist/docs/assets/reference_skills.md.VQnlBT3Q.js +15 -0
  202. package/dist/docs/assets/reference_skills.md.VQnlBT3Q.lean.js +1 -0
  203. package/dist/docs/assets/reference_subagents.md.CIRAVcPK.js +10 -0
  204. package/dist/docs/assets/reference_subagents.md.CIRAVcPK.lean.js +1 -0
  205. package/dist/docs/assets/reference_tools.md.DF5kwlt0.js +46 -0
  206. package/dist/docs/assets/reference_tools.md.DF5kwlt0.lean.js +1 -0
  207. package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.js +1 -0
  208. package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.lean.js +1 -0
  209. package/dist/docs/assets/style.Bj-IXa5W.css +1 -0
  210. package/dist/docs/assets/troubleshooting.md.DkovjS7h.js +1 -0
  211. package/dist/docs/assets/troubleshooting.md.DkovjS7h.lean.js +1 -0
  212. package/dist/docs/building-with-agents.html +37 -0
  213. package/dist/docs/concepts.html +28 -0
  214. package/dist/docs/deployment.html +38 -0
  215. package/dist/docs/evals.html +109 -0
  216. package/dist/docs/guides/agent-to-agent.html +34 -0
  217. package/dist/docs/guides/cloud-runtime.html +33 -0
  218. package/dist/docs/guides/github.html +44 -0
  219. package/dist/docs/guides/human-in-the-loop.html +52 -0
  220. package/dist/docs/guides/slack.html +61 -0
  221. package/dist/docs/guides/webhooks.html +74 -0
  222. package/dist/docs/hashmap.json +1 -0
  223. package/dist/docs/hillclimbing.html +28 -0
  224. package/dist/docs/index.html +44 -0
  225. package/dist/docs/quickstart.html +59 -0
  226. package/dist/docs/reference/agent-config.html +58 -0
  227. package/dist/docs/reference/channels.html +77 -0
  228. package/dist/docs/reference/cli.html +57 -0
  229. package/dist/docs/reference/connections.html +50 -0
  230. package/dist/docs/reference/hooks.html +36 -0
  231. package/dist/docs/reference/http-api.html +35 -0
  232. package/dist/docs/reference/instructions.html +36 -0
  233. package/dist/docs/reference/playground.html +25 -0
  234. package/dist/docs/reference/project-layout.html +55 -0
  235. package/dist/docs/reference/schedules.html +106 -0
  236. package/dist/docs/reference/sessions.html +32 -0
  237. package/dist/docs/reference/skills.html +39 -0
  238. package/dist/docs/reference/subagents.html +34 -0
  239. package/dist/docs/reference/tools.html +70 -0
  240. package/dist/docs/scaffolding-agents.html +25 -0
  241. package/dist/docs/troubleshooting.html +25 -0
  242. package/dist/docs/vp-icons.css +0 -0
  243. package/dist/evals.d.ts +312 -0
  244. package/dist/evals.d.ts.map +1 -0
  245. package/dist/evals.js +254 -0
  246. package/dist/hooks.d.ts +23 -0
  247. package/dist/hooks.d.ts.map +1 -0
  248. package/dist/hooks.js +23 -0
  249. package/dist/index.d.ts +71 -0
  250. package/dist/index.d.ts.map +1 -0
  251. package/dist/index.js +101 -0
  252. package/dist/internal/ab-collector.d.ts +42 -0
  253. package/dist/internal/ab-collector.d.ts.map +1 -0
  254. package/dist/internal/ab-collector.js +153 -0
  255. package/dist/internal/ab-fold.d.ts +36 -0
  256. package/dist/internal/ab-fold.d.ts.map +1 -0
  257. package/dist/internal/ab-fold.js +171 -0
  258. package/dist/internal/ab-snapshot.d.ts +70 -0
  259. package/dist/internal/ab-snapshot.d.ts.map +1 -0
  260. package/dist/internal/ab-snapshot.js +208 -0
  261. package/dist/internal/approval-gate.d.ts +34 -0
  262. package/dist/internal/approval-gate.d.ts.map +1 -0
  263. package/dist/internal/approval-gate.js +85 -0
  264. package/dist/internal/auth.d.ts +8 -0
  265. package/dist/internal/auth.d.ts.map +1 -0
  266. package/dist/internal/auth.js +27 -0
  267. package/dist/internal/authored-alias-hooks.d.ts +31 -0
  268. package/dist/internal/authored-alias-hooks.d.ts.map +1 -0
  269. package/dist/internal/authored-alias-hooks.js +43 -0
  270. package/dist/internal/authored-loaders.d.ts +25 -0
  271. package/dist/internal/authored-loaders.d.ts.map +1 -0
  272. package/dist/internal/authored-loaders.js +129 -0
  273. package/dist/internal/bounded-int.d.ts +11 -0
  274. package/dist/internal/bounded-int.d.ts.map +1 -0
  275. package/dist/internal/bounded-int.js +13 -0
  276. package/dist/internal/brand.d.ts +6 -0
  277. package/dist/internal/brand.d.ts.map +1 -0
  278. package/dist/internal/brand.js +17 -0
  279. package/dist/internal/chat-client.d.ts +19 -0
  280. package/dist/internal/chat-client.d.ts.map +1 -0
  281. package/dist/internal/chat-client.js +327 -0
  282. package/dist/internal/cli-ax.d.ts +58 -0
  283. package/dist/internal/cli-ax.d.ts.map +1 -0
  284. package/dist/internal/cli-ax.js +345 -0
  285. package/dist/internal/cli-cursor.d.ts +20 -0
  286. package/dist/internal/cli-cursor.d.ts.map +1 -0
  287. package/dist/internal/cli-cursor.js +227 -0
  288. package/dist/internal/cli-github.d.ts +47 -0
  289. package/dist/internal/cli-github.d.ts.map +1 -0
  290. package/dist/internal/cli-github.js +644 -0
  291. package/dist/internal/cli-slack.d.ts +18 -0
  292. package/dist/internal/cli-slack.d.ts.map +1 -0
  293. package/dist/internal/cli-slack.js +144 -0
  294. package/dist/internal/cloud-merge.d.ts +23 -0
  295. package/dist/internal/cloud-merge.d.ts.map +1 -0
  296. package/dist/internal/cloud-merge.js +28 -0
  297. package/dist/internal/cron.d.ts +17 -0
  298. package/dist/internal/cron.d.ts.map +1 -0
  299. package/dist/internal/cron.js +60 -0
  300. package/dist/internal/cursor/account-mcp.d.ts +95 -0
  301. package/dist/internal/cursor/account-mcp.d.ts.map +1 -0
  302. package/dist/internal/cursor/account-mcp.js +342 -0
  303. package/dist/internal/cursor/backend-client.d.ts +118 -0
  304. package/dist/internal/cursor/backend-client.d.ts.map +1 -0
  305. package/dist/internal/cursor/backend-client.js +477 -0
  306. package/dist/internal/cursor/credentials.d.ts +112 -0
  307. package/dist/internal/cursor/credentials.d.ts.map +1 -0
  308. package/dist/internal/cursor/credentials.js +329 -0
  309. package/dist/internal/cursor-event-relay.d.ts +111 -0
  310. package/dist/internal/cursor-event-relay.d.ts.map +1 -0
  311. package/dist/internal/cursor-event-relay.js +181 -0
  312. package/dist/internal/cursor-relay-core.d.ts +113 -0
  313. package/dist/internal/cursor-relay-core.d.ts.map +1 -0
  314. package/dist/internal/cursor-relay-core.js +364 -0
  315. package/dist/internal/cursor-slack-relay.d.ts +94 -0
  316. package/dist/internal/cursor-slack-relay.d.ts.map +1 -0
  317. package/dist/internal/cursor-slack-relay.js +171 -0
  318. package/dist/internal/describe-error.d.ts +3 -0
  319. package/dist/internal/describe-error.d.ts.map +1 -0
  320. package/dist/internal/describe-error.js +4 -0
  321. package/dist/internal/dev-mode.d.ts +13 -0
  322. package/dist/internal/dev-mode.d.ts.map +1 -0
  323. package/dist/internal/dev-mode.js +17 -0
  324. package/dist/internal/discovery.d.ts +55 -0
  325. package/dist/internal/discovery.d.ts.map +1 -0
  326. package/dist/internal/discovery.js +1427 -0
  327. package/dist/internal/distribution.d.ts +47 -0
  328. package/dist/internal/distribution.d.ts.map +1 -0
  329. package/dist/internal/distribution.js +82 -0
  330. package/dist/internal/docs-site.d.ts +28 -0
  331. package/dist/internal/docs-site.d.ts.map +1 -0
  332. package/dist/internal/docs-site.js +169 -0
  333. package/dist/internal/duration.d.ts +8 -0
  334. package/dist/internal/duration.d.ts.map +1 -0
  335. package/dist/internal/duration.js +35 -0
  336. package/dist/internal/eval-run-store.d.ts +81 -0
  337. package/dist/internal/eval-run-store.d.ts.map +1 -0
  338. package/dist/internal/eval-run-store.js +396 -0
  339. package/dist/internal/eval-runner.d.ts +76 -0
  340. package/dist/internal/eval-runner.d.ts.map +1 -0
  341. package/dist/internal/eval-runner.js +336 -0
  342. package/dist/internal/event-log.d.ts +51 -0
  343. package/dist/internal/event-log.d.ts.map +1 -0
  344. package/dist/internal/event-log.js +167 -0
  345. package/dist/internal/event-mapper.d.ts +46 -0
  346. package/dist/internal/event-mapper.d.ts.map +1 -0
  347. package/dist/internal/event-mapper.js +226 -0
  348. package/dist/internal/frontmatter.d.ts +12 -0
  349. package/dist/internal/frontmatter.d.ts.map +1 -0
  350. package/dist/internal/frontmatter.js +61 -0
  351. package/dist/internal/github-fanout.d.ts +32 -0
  352. package/dist/internal/github-fanout.d.ts.map +1 -0
  353. package/dist/internal/github-fanout.js +122 -0
  354. package/dist/internal/handleAgentServeTrigger.d.ts +59 -0
  355. package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -0
  356. package/dist/internal/handleAgentServeTrigger.js +115 -0
  357. package/dist/internal/host-platforms.d.ts +40 -0
  358. package/dist/internal/host-platforms.d.ts.map +1 -0
  359. package/dist/internal/host-platforms.js +113 -0
  360. package/dist/internal/http-channel.d.ts +54 -0
  361. package/dist/internal/http-channel.d.ts.map +1 -0
  362. package/dist/internal/http-channel.js +382 -0
  363. package/dist/internal/ids.d.ts +19 -0
  364. package/dist/internal/ids.d.ts.map +1 -0
  365. package/dist/internal/ids.js +34 -0
  366. package/dist/internal/init-project.d.ts +22 -0
  367. package/dist/internal/init-project.d.ts.map +1 -0
  368. package/dist/internal/init-project.js +125 -0
  369. package/dist/internal/json-dir-store.d.ts +32 -0
  370. package/dist/internal/json-dir-store.d.ts.map +1 -0
  371. package/dist/internal/json-dir-store.js +100 -0
  372. package/dist/internal/json-schema.d.ts +18 -0
  373. package/dist/internal/json-schema.d.ts.map +1 -0
  374. package/dist/internal/json-schema.js +53 -0
  375. package/dist/internal/log-ring.d.ts +23 -0
  376. package/dist/internal/log-ring.d.ts.map +1 -0
  377. package/dist/internal/log-ring.js +42 -0
  378. package/dist/internal/map-pool.d.ts +6 -0
  379. package/dist/internal/map-pool.d.ts.map +1 -0
  380. package/dist/internal/map-pool.js +41 -0
  381. package/dist/internal/mcp-endpoint.d.ts +59 -0
  382. package/dist/internal/mcp-endpoint.d.ts.map +1 -0
  383. package/dist/internal/mcp-endpoint.js +355 -0
  384. package/dist/internal/mcp-host.d.ts +28 -0
  385. package/dist/internal/mcp-host.d.ts.map +1 -0
  386. package/dist/internal/mcp-host.js +162 -0
  387. package/dist/internal/net.d.ts +5 -0
  388. package/dist/internal/net.d.ts.map +1 -0
  389. package/dist/internal/net.js +30 -0
  390. package/dist/internal/peer-connections.d.ts +44 -0
  391. package/dist/internal/peer-connections.d.ts.map +1 -0
  392. package/dist/internal/peer-connections.js +67 -0
  393. package/dist/internal/playground/static.d.ts +35 -0
  394. package/dist/internal/playground/static.d.ts.map +1 -0
  395. package/dist/internal/playground/static.js +162 -0
  396. package/dist/internal/playground/toolchain.d.ts +57 -0
  397. package/dist/internal/playground/toolchain.d.ts.map +1 -0
  398. package/dist/internal/playground/toolchain.js +226 -0
  399. package/dist/internal/reminder-runner.d.ts +62 -0
  400. package/dist/internal/reminder-runner.d.ts.map +1 -0
  401. package/dist/internal/reminder-runner.js +582 -0
  402. package/dist/internal/reminder-schedule.d.ts +22 -0
  403. package/dist/internal/reminder-schedule.d.ts.map +1 -0
  404. package/dist/internal/reminder-schedule.js +82 -0
  405. package/dist/internal/reminder-store.d.ts +58 -0
  406. package/dist/internal/reminder-store.d.ts.map +1 -0
  407. package/dist/internal/reminder-store.js +106 -0
  408. package/dist/internal/resolved-connections.d.ts +41 -0
  409. package/dist/internal/resolved-connections.d.ts.map +1 -0
  410. package/dist/internal/resolved-connections.js +73 -0
  411. package/dist/internal/review-comments.d.ts +50 -0
  412. package/dist/internal/review-comments.d.ts.map +1 -0
  413. package/dist/internal/review-comments.js +194 -0
  414. package/dist/internal/router.d.ts +33 -0
  415. package/dist/internal/router.d.ts.map +1 -0
  416. package/dist/internal/router.js +93 -0
  417. package/dist/internal/run-client.d.ts +49 -0
  418. package/dist/internal/run-client.d.ts.map +1 -0
  419. package/dist/internal/run-client.js +208 -0
  420. package/dist/internal/schedule-runner.d.ts +31 -0
  421. package/dist/internal/schedule-runner.d.ts.map +1 -0
  422. package/dist/internal/schedule-runner.js +126 -0
  423. package/dist/internal/sdk-runner.d.ts +41 -0
  424. package/dist/internal/sdk-runner.d.ts.map +1 -0
  425. package/dist/internal/sdk-runner.js +221 -0
  426. package/dist/internal/server.d.ts +25 -0
  427. package/dist/internal/server.d.ts.map +1 -0
  428. package/dist/internal/server.js +1374 -0
  429. package/dist/internal/session-engine.d.ts +287 -0
  430. package/dist/internal/session-engine.d.ts.map +1 -0
  431. package/dist/internal/session-engine.js +1377 -0
  432. package/dist/internal/session-store.d.ts +29 -0
  433. package/dist/internal/session-store.d.ts.map +1 -0
  434. package/dist/internal/session-store.js +140 -0
  435. package/dist/internal/session-urls.d.ts +10 -0
  436. package/dist/internal/session-urls.d.ts.map +1 -0
  437. package/dist/internal/session-urls.js +25 -0
  438. package/dist/internal/stream-progress.d.ts +14 -0
  439. package/dist/internal/stream-progress.d.ts.map +1 -0
  440. package/dist/internal/stream-progress.js +195 -0
  441. package/dist/internal/tool-result.d.ts +20 -0
  442. package/dist/internal/tool-result.d.ts.map +1 -0
  443. package/dist/internal/tool-result.js +45 -0
  444. package/dist/internal/trajectory.d.ts +56 -0
  445. package/dist/internal/trajectory.d.ts.map +1 -0
  446. package/dist/internal/trajectory.js +248 -0
  447. package/dist/internal/workspace.d.ts +42 -0
  448. package/dist/internal/workspace.d.ts.map +1 -0
  449. package/dist/internal/workspace.js +199 -0
  450. package/dist/playground/assets/cursor-icons-outline-oY2V_mvK.woff2 +0 -0
  451. package/dist/playground/assets/index-1K-hG-7p.css +1 -0
  452. package/dist/playground/assets/index-FlWjhg3x.js +79 -0
  453. package/dist/playground/index.html +17 -0
  454. package/dist/reminders.d.ts +23 -0
  455. package/dist/reminders.d.ts.map +1 -0
  456. package/dist/reminders.js +22 -0
  457. package/dist/schedules.d.ts +23 -0
  458. package/dist/schedules.d.ts.map +1 -0
  459. package/dist/schedules.js +26 -0
  460. package/dist/skills.d.ts +22 -0
  461. package/dist/skills.d.ts.map +1 -0
  462. package/dist/skills.js +22 -0
  463. package/dist/tools.d.ts +92 -0
  464. package/dist/tools.d.ts.map +1 -0
  465. package/dist/tools.js +68 -0
  466. package/dist/types.d.ts +1609 -0
  467. package/dist/types.d.ts.map +1 -0
  468. package/dist/types.js +80 -0
  469. package/docs/README.md +174 -0
  470. package/docs/ab.md +355 -0
  471. package/docs/building-with-agents.md +129 -0
  472. package/docs/concepts.md +177 -0
  473. package/docs/deployment.md +218 -0
  474. package/docs/evals.md +383 -0
  475. package/docs/guides/agent-to-agent.md +118 -0
  476. package/docs/guides/cloud-runtime.md +122 -0
  477. package/docs/guides/github.md +172 -0
  478. package/docs/guides/human-in-the-loop.md +131 -0
  479. package/docs/guides/slack.md +245 -0
  480. package/docs/guides/webhooks.md +201 -0
  481. package/docs/hillclimbing.md +93 -0
  482. package/docs/quickstart.md +183 -0
  483. package/docs/reference/agent-config.md +154 -0
  484. package/docs/reference/channels.md +206 -0
  485. package/docs/reference/cli.md +257 -0
  486. package/docs/reference/connections.md +137 -0
  487. package/docs/reference/hooks.md +74 -0
  488. package/docs/reference/http-api.md +219 -0
  489. package/docs/reference/instructions.md +77 -0
  490. package/docs/reference/playground.md +67 -0
  491. package/docs/reference/project-layout.md +119 -0
  492. package/docs/reference/schedules.md +220 -0
  493. package/docs/reference/sessions.md +165 -0
  494. package/docs/reference/skills.md +79 -0
  495. package/docs/reference/subagents.md +74 -0
  496. package/docs/reference/tools.md +203 -0
  497. package/docs/scaffolding-agents.md +113 -0
  498. package/docs/troubleshooting.md +95 -0
  499. package/package.json +185 -0
  500. package/skills/ab/SKILL.md +139 -0
  501. package/skills/create-agent/SKILL.md +219 -0
  502. package/skills/debug/SKILL.md +71 -0
  503. package/skills/evals/SKILL.md +217 -0
  504. package/skills/framework-map/SKILL.md +142 -0
  505. package/skills/github/SKILL.md +144 -0
  506. package/skills/hillclimb/SKILL.md +162 -0
  507. package/skills/setup-slack/SKILL.md +180 -0
  508. package/src/ab.ts +675 -0
  509. package/src/bin/agent-serve.ts +949 -0
  510. package/src/channels/github/api.ts +374 -0
  511. package/src/channels/github/auth.ts +275 -0
  512. package/src/channels/github/binding.ts +223 -0
  513. package/src/channels/github/defaults.ts +111 -0
  514. package/src/channels/github/events.ts +72 -0
  515. package/src/channels/github/forward.ts +381 -0
  516. package/src/channels/github/github-channel.ts +2270 -0
  517. package/src/channels/github/index.ts +52 -0
  518. package/src/channels/github/replay.ts +387 -0
  519. package/src/channels/github/state.ts +95 -0
  520. package/src/channels/github/types.ts +490 -0
  521. package/src/channels/slack/api.ts +580 -0
  522. package/src/channels/slack/approvals.ts +198 -0
  523. package/src/channels/slack/assistant.ts +76 -0
  524. package/src/channels/slack/auth.ts +112 -0
  525. package/src/channels/slack/channel-watch.ts +219 -0
  526. package/src/channels/slack/constants.ts +30 -0
  527. package/src/channels/slack/credentials.ts +90 -0
  528. package/src/channels/slack/cursor-account.ts +166 -0
  529. package/src/channels/slack/defaults.ts +450 -0
  530. package/src/channels/slack/dispatch.ts +293 -0
  531. package/src/channels/slack/doctor.ts +135 -0
  532. package/src/channels/slack/event-id-dedupe.ts +30 -0
  533. package/src/channels/slack/inbound.ts +219 -0
  534. package/src/channels/slack/index.ts +45 -0
  535. package/src/channels/slack/init.ts +133 -0
  536. package/src/channels/slack/interactive.ts +194 -0
  537. package/src/channels/slack/links.ts +23 -0
  538. package/src/channels/slack/live-delivery.ts +201 -0
  539. package/src/channels/slack/log.ts +83 -0
  540. package/src/channels/slack/manifest.ts +179 -0
  541. package/src/channels/slack/pr-ref.ts +50 -0
  542. package/src/channels/slack/setup.ts +97 -0
  543. package/src/channels/slack/slack-channel.ts +374 -0
  544. package/src/channels/slack/socket-mode.ts +154 -0
  545. package/src/channels/slack/stream.ts +63 -0
  546. package/src/channels/slack/tool-approval-events.ts +136 -0
  547. package/src/channels/slack/types.ts +349 -0
  548. package/src/channels.ts +385 -0
  549. package/src/connections.ts +89 -0
  550. package/src/evals.ts +501 -0
  551. package/src/hooks.ts +33 -0
  552. package/src/index.ts +184 -0
  553. package/src/internal/ab-collector.ts +210 -0
  554. package/src/internal/ab-fold.ts +228 -0
  555. package/src/internal/ab-snapshot.ts +335 -0
  556. package/src/internal/approval-gate.ts +115 -0
  557. package/src/internal/auth.ts +39 -0
  558. package/src/internal/authored-alias-hooks.ts +69 -0
  559. package/src/internal/authored-loaders.ts +138 -0
  560. package/src/internal/bounded-int.ts +27 -0
  561. package/src/internal/brand.ts +29 -0
  562. package/src/internal/chat-client.ts +407 -0
  563. package/src/internal/cli-ax.ts +474 -0
  564. package/src/internal/cli-cursor.ts +275 -0
  565. package/src/internal/cli-github.ts +849 -0
  566. package/src/internal/cli-slack.ts +175 -0
  567. package/src/internal/cloud-merge.ts +41 -0
  568. package/src/internal/cron.ts +78 -0
  569. package/src/internal/cursor/account-mcp.ts +472 -0
  570. package/src/internal/cursor/backend-client.ts +614 -0
  571. package/src/internal/cursor/credentials.ts +401 -0
  572. package/src/internal/cursor-event-relay.ts +281 -0
  573. package/src/internal/cursor-relay-core.ts +444 -0
  574. package/src/internal/cursor-slack-relay.ts +242 -0
  575. package/src/internal/describe-error.ts +4 -0
  576. package/src/internal/dev-mode.ts +20 -0
  577. package/src/internal/discovery.ts +1709 -0
  578. package/src/internal/distribution.ts +97 -0
  579. package/src/internal/docs-site.ts +191 -0
  580. package/src/internal/duration.ts +39 -0
  581. package/src/internal/eval-run-store.ts +519 -0
  582. package/src/internal/eval-runner.ts +522 -0
  583. package/src/internal/event-log.ts +175 -0
  584. package/src/internal/event-mapper.ts +272 -0
  585. package/src/internal/frontmatter.ts +77 -0
  586. package/src/internal/github-fanout.ts +159 -0
  587. package/src/internal/handleAgentServeTrigger.ts +156 -0
  588. package/src/internal/host-platforms.ts +144 -0
  589. package/src/internal/http-channel.ts +546 -0
  590. package/src/internal/ids.ts +44 -0
  591. package/src/internal/init-project.ts +165 -0
  592. package/src/internal/json-dir-store.ts +109 -0
  593. package/src/internal/json-schema.ts +69 -0
  594. package/src/internal/log-ring.ts +59 -0
  595. package/src/internal/map-pool.ts +32 -0
  596. package/src/internal/mcp-endpoint.ts +518 -0
  597. package/src/internal/mcp-host.ts +211 -0
  598. package/src/internal/net.ts +31 -0
  599. package/src/internal/peer-connections.ts +100 -0
  600. package/src/internal/playground/static.ts +189 -0
  601. package/src/internal/playground/toolchain.ts +277 -0
  602. package/src/internal/reminder-runner.ts +756 -0
  603. package/src/internal/reminder-schedule.ts +106 -0
  604. package/src/internal/reminder-store.ts +145 -0
  605. package/src/internal/resolved-connections.ts +145 -0
  606. package/src/internal/review-comments.ts +268 -0
  607. package/src/internal/router.ts +145 -0
  608. package/src/internal/run-client.ts +320 -0
  609. package/src/internal/schedule-runner.ts +161 -0
  610. package/src/internal/sdk-runner.ts +315 -0
  611. package/src/internal/server.ts +1737 -0
  612. package/src/internal/session-engine.ts +1810 -0
  613. package/src/internal/session-store.ts +147 -0
  614. package/src/internal/session-urls.ts +40 -0
  615. package/src/internal/stream-progress.ts +254 -0
  616. package/src/internal/tool-result.ts +54 -0
  617. package/src/internal/trajectory.ts +306 -0
  618. package/src/internal/workspace.ts +223 -0
  619. package/src/reminders.ts +35 -0
  620. package/src/schedules.ts +37 -0
  621. package/src/skills.ts +27 -0
  622. package/src/tools.ts +127 -0
  623. package/src/types.ts +1848 -0
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Tiny path router: literal segments, `:param` captures, and a trailing
3
+ * `*param` catch-all, compiled once at server startup.
4
+ */
5
+ export class Router {
6
+ constructor() {
7
+ this.routes = [];
8
+ }
9
+ add(route) {
10
+ this.routes.push({ route, segments: compilePattern(route.pattern) });
11
+ }
12
+ match(method, pathname) {
13
+ const direct = this.matchExact(method, pathname);
14
+ if (direct !== undefined) {
15
+ return direct;
16
+ }
17
+ // HTTP: HEAD may be served by the corresponding GET handler (wget --spider,
18
+ // some load-balancer probes). Without this, GET-only routes return 405.
19
+ if (method === "HEAD") {
20
+ return this.matchExact("GET", pathname);
21
+ }
22
+ return undefined;
23
+ }
24
+ matchExact(method, pathname) {
25
+ const pathSegments = splitPath(pathname);
26
+ for (const { route, segments } of this.routes) {
27
+ if (route.method !== method) {
28
+ continue;
29
+ }
30
+ const params = matchSegments(segments, pathSegments);
31
+ if (params !== undefined) {
32
+ return { route, params };
33
+ }
34
+ }
35
+ return undefined;
36
+ }
37
+ /** True when the path matches some route with a different method. */
38
+ hasPath(pathname) {
39
+ const pathSegments = splitPath(pathname);
40
+ return this.routes.some(({ segments }) => matchSegments(segments, pathSegments) !== undefined);
41
+ }
42
+ }
43
+ function compilePattern(pattern) {
44
+ const segments = splitPath(pattern).map((part) => part.startsWith(":")
45
+ ? { kind: "param", name: part.slice(1) }
46
+ : part.startsWith("*")
47
+ ? { kind: "rest", name: part.slice(1) }
48
+ : { kind: "literal", value: part });
49
+ const restIndex = segments.findIndex((segment) => segment.kind === "rest");
50
+ if (restIndex !== -1 && restIndex !== segments.length - 1) {
51
+ throw new Error(`Route pattern "${pattern}" may only use a catch-all (*name) as the last segment.`);
52
+ }
53
+ return segments;
54
+ }
55
+ function splitPath(path) {
56
+ return path.split("/").filter((part) => part !== "");
57
+ }
58
+ function matchSegments(segments, pathSegments) {
59
+ const last = segments[segments.length - 1];
60
+ const hasRest = last !== undefined && last.kind === "rest";
61
+ if (hasRest) {
62
+ if (pathSegments.length < segments.length - 1) {
63
+ return undefined;
64
+ }
65
+ }
66
+ else if (segments.length !== pathSegments.length) {
67
+ return undefined;
68
+ }
69
+ const params = {};
70
+ const fixedCount = hasRest ? segments.length - 1 : segments.length;
71
+ for (let i = 0; i < fixedCount; i++) {
72
+ const segment = segments[i];
73
+ const value = pathSegments[i];
74
+ if (segment === undefined || value === undefined) {
75
+ return undefined;
76
+ }
77
+ if (segment.kind === "literal") {
78
+ if (segment.value !== value) {
79
+ return undefined;
80
+ }
81
+ }
82
+ else if (segment.kind === "param") {
83
+ params[segment.name] = decodeURIComponent(value);
84
+ }
85
+ }
86
+ if (hasRest) {
87
+ params[last.name] = pathSegments
88
+ .slice(fixedCount)
89
+ .map((value) => decodeURIComponent(value))
90
+ .join("/");
91
+ }
92
+ return params;
93
+ }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Programmatic HTTP client for agent-serve sessions.
3
+ *
4
+ * Used by `agent-serve run` and `chat --json`: create/follow a
5
+ * session, collect the NDJSON stream until the turn parks, and return a
6
+ * compact {@link Trajectory} plus the continuation token for follow-ups.
7
+ */
8
+ import type { SessionEvent, SessionPurpose } from "../types.js";
9
+ import { type Trajectory } from "./trajectory.js";
10
+ /** Thrown when a turn stream exceeds `timeoutMs`; carries the session id. */
11
+ export declare class RunSessionTimeoutError extends Error {
12
+ readonly sessionId: string;
13
+ constructor(message: string, sessionId: string);
14
+ }
15
+ export interface RunClientOptions {
16
+ baseUrl: string;
17
+ bearerToken?: string;
18
+ /** Abort a hung turn. */
19
+ timeoutMs?: number;
20
+ /** Called for each stream event as it arrives (for CLI progress). */
21
+ onEvent?: (event: SessionEvent) => void;
22
+ /**
23
+ * Create-time session purpose. Pass `"eval"` from the eval harness so
24
+ * live `defineAB` enrollment is skipped. Default `"live"`.
25
+ */
26
+ purpose?: SessionPurpose;
27
+ }
28
+ export interface RunSessionResult {
29
+ sessionId: string;
30
+ continuationToken?: string;
31
+ baseUrl: string;
32
+ events: SessionEvent[];
33
+ trajectory: Trajectory;
34
+ ok: boolean;
35
+ }
36
+ /**
37
+ * Run one or more messages against a live agent-serve base URL
38
+ * (e.g. `http://127.0.0.1:3000/weather-agent`).
39
+ */
40
+ export declare function runSession(options: RunClientOptions & {
41
+ messages: string[];
42
+ sessionId?: string;
43
+ continuationToken?: string;
44
+ /** Applied only when creating a new session (first message). */
45
+ workspaceDir?: string;
46
+ /** Applied only when creating a new session (first message). */
47
+ workspaceFiles?: Record<string, string>;
48
+ }): Promise<RunSessionResult>;
49
+ //# sourceMappingURL=run-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-client.d.ts","sourceRoot":"","sources":["../../src/internal/run-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnE,6EAA6E;AAC7E,qBAAa,sBAAuB,SAAQ,KAAK;IAG7C,QAAQ,CAAC,SAAS,EAAE,MAAM;IAF5B,YACE,OAAO,EAAE,MAAM,EACN,SAAS,EAAE,MAAM,EAI3B;CACF;AACD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,EAAE,EAAE,OAAO,CAAC;CACb;AAQD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,gBAAgB,GAAG;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,GACA,OAAO,CAAC,gBAAgB,CAAC,CAuD3B"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Programmatic HTTP client for agent-serve sessions.
3
+ *
4
+ * Used by `agent-serve run` and `chat --json`: create/follow a
5
+ * session, collect the NDJSON stream until the turn parks, and return a
6
+ * compact {@link Trajectory} plus the continuation token for follow-ups.
7
+ */
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ import { buildTrajectory } from "./trajectory.js";
18
+ /** Thrown when a turn stream exceeds `timeoutMs`; carries the session id. */
19
+ export class RunSessionTimeoutError extends Error {
20
+ constructor(message, sessionId) {
21
+ super(message);
22
+ this.sessionId = sessionId;
23
+ this.name = "RunSessionTimeoutError";
24
+ }
25
+ }
26
+ const TERMINAL_TYPES = new Set([
27
+ "session.waiting",
28
+ "session.completed",
29
+ "session.failed",
30
+ ]);
31
+ /**
32
+ * Run one or more messages against a live agent-serve base URL
33
+ * (e.g. `http://127.0.0.1:3000/weather-agent`).
34
+ */
35
+ export function runSession(options) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ if (options.messages.length === 0) {
38
+ throw new Error("runSession requires at least one message");
39
+ }
40
+ const baseUrl = options.baseUrl.replace(/\/$/, "");
41
+ let sessionId = options.sessionId;
42
+ let continuationToken = options.continuationToken;
43
+ const allEvents = [];
44
+ let nextEventIndex = 0;
45
+ for (const message of options.messages) {
46
+ const turn = yield runOneTurn(Object.assign(Object.assign(Object.assign({ baseUrl,
47
+ message,
48
+ sessionId,
49
+ continuationToken, startIndex: sessionId === undefined ? 0 : nextEventIndex, bearerToken: options.bearerToken, timeoutMs: options.timeoutMs, onEvent: options.onEvent }, (sessionId === undefined && options.purpose !== undefined
50
+ ? { purpose: options.purpose }
51
+ : {})), (sessionId === undefined && options.workspaceDir !== undefined
52
+ ? { workspaceDir: options.workspaceDir }
53
+ : {})), (sessionId === undefined && options.workspaceFiles !== undefined
54
+ ? { workspaceFiles: options.workspaceFiles }
55
+ : {})));
56
+ sessionId = turn.sessionId;
57
+ continuationToken = turn.continuationToken;
58
+ allEvents.push(...turn.events);
59
+ if (turn.events.length > 0) {
60
+ const last = turn.events[turn.events.length - 1];
61
+ nextEventIndex = last.index + 1;
62
+ }
63
+ if (!turn.ok) {
64
+ break;
65
+ }
66
+ }
67
+ if (sessionId === undefined) {
68
+ throw new Error("server did not return a session id");
69
+ }
70
+ const trajectory = buildTrajectory(allEvents);
71
+ return Object.assign(Object.assign({ sessionId }, (continuationToken === undefined ? {} : { continuationToken })), { baseUrl, events: allEvents, trajectory, ok: trajectory.ok });
72
+ });
73
+ }
74
+ function runOneTurn(args) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ var _a, _b, _c, _d, _e;
77
+ let sessionId = args.sessionId;
78
+ let continuationToken = args.continuationToken;
79
+ if (sessionId === undefined) {
80
+ const created = yield postJson(args.baseUrl, "/v1/session", Object.assign(Object.assign(Object.assign({ message: args.message }, (args.purpose === undefined ? {} : { purpose: args.purpose })), (args.workspaceDir === undefined
81
+ ? {}
82
+ : { workspaceDir: args.workspaceDir })), (args.workspaceFiles === undefined
83
+ ? {}
84
+ : { workspaceFiles: args.workspaceFiles })), args.bearerToken);
85
+ if (created.status >= 400 || created.body.ok === false) {
86
+ throw new Error(`POST /v1/session failed: ${(_a = str(created.body.error)) !== null && _a !== void 0 ? _a : created.status} ${(_b = str(created.body.message)) !== null && _b !== void 0 ? _b : ""}`.trim());
87
+ }
88
+ sessionId = str(created.body.sessionId);
89
+ continuationToken = str(created.body.continuationToken);
90
+ }
91
+ else {
92
+ const resp = yield postJson(args.baseUrl, `/v1/session/${sessionId}`, { message: args.message, continuationToken }, args.bearerToken);
93
+ if (resp.status >= 400 || resp.body.ok === false) {
94
+ throw new Error(`follow-up failed: ${(_c = str(resp.body.error)) !== null && _c !== void 0 ? _c : resp.status}: ${(_d = str(resp.body.message)) !== null && _d !== void 0 ? _d : ""}`.trim());
95
+ }
96
+ continuationToken = (_e = str(resp.body.continuationToken)) !== null && _e !== void 0 ? _e : continuationToken;
97
+ }
98
+ if (sessionId === undefined) {
99
+ throw new Error("server did not return a session id");
100
+ }
101
+ const events = yield collectStream({
102
+ baseUrl: args.baseUrl,
103
+ sessionId,
104
+ startIndex: args.startIndex,
105
+ bearerToken: args.bearerToken,
106
+ timeoutMs: args.timeoutMs,
107
+ onEvent: args.onEvent,
108
+ });
109
+ const turnFailed = events.some((e) => e.type === "turn.failed");
110
+ const sessionFailed = events.some((e) => e.type === "session.failed");
111
+ return Object.assign(Object.assign({ sessionId }, (continuationToken === undefined ? {} : { continuationToken })), { events, ok: !turnFailed && !sessionFailed });
112
+ });
113
+ }
114
+ function collectStream(args) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ var _a;
117
+ var _b, _c;
118
+ const controller = new AbortController();
119
+ const timer = args.timeoutMs === undefined
120
+ ? undefined
121
+ : setTimeout(() => controller.abort(), args.timeoutMs);
122
+ try {
123
+ const resp = yield fetch(`${args.baseUrl}/v1/session/${args.sessionId}/stream?startIndex=${args.startIndex}`, {
124
+ headers: authHeaders(args.bearerToken),
125
+ signal: controller.signal,
126
+ });
127
+ if (!resp.ok || resp.body === null) {
128
+ throw new Error(`stream failed (${resp.status})`);
129
+ }
130
+ const reader = resp.body.getReader();
131
+ const decoder = new TextDecoder();
132
+ let buffer = "";
133
+ const events = [];
134
+ for (;;) {
135
+ const chunk = yield reader.read();
136
+ if (chunk.done) {
137
+ break;
138
+ }
139
+ buffer += decoder.decode(chunk.value, { stream: true });
140
+ const lines = buffer.split("\n");
141
+ buffer = (_b = lines.pop()) !== null && _b !== void 0 ? _b : "";
142
+ let stop = false;
143
+ for (const line of lines) {
144
+ if (line.trim() === "") {
145
+ continue;
146
+ }
147
+ let event;
148
+ try {
149
+ event = JSON.parse(line);
150
+ }
151
+ catch (_d) {
152
+ continue;
153
+ }
154
+ events.push(event);
155
+ (_a = args.onEvent) === null || _a === void 0 ? void 0 : _a.call(args, event);
156
+ if (TERMINAL_TYPES.has(event.type)) {
157
+ stop = true;
158
+ break;
159
+ }
160
+ }
161
+ if (stop) {
162
+ break;
163
+ }
164
+ }
165
+ yield reader.cancel().catch(() => { });
166
+ return events;
167
+ }
168
+ catch (error) {
169
+ if (error instanceof Error && error.name === "AbortError") {
170
+ throw new RunSessionTimeoutError(`turn timed out after ${(_c = args.timeoutMs) !== null && _c !== void 0 ? _c : "?"}ms (session ${args.sessionId})`, args.sessionId);
171
+ }
172
+ throw error;
173
+ }
174
+ finally {
175
+ if (timer !== undefined) {
176
+ clearTimeout(timer);
177
+ }
178
+ }
179
+ });
180
+ }
181
+ function authHeaders(bearerToken) {
182
+ return bearerToken === undefined
183
+ ? {}
184
+ : { authorization: `Bearer ${bearerToken}` };
185
+ }
186
+ function postJson(baseUrl, path, body, bearerToken) {
187
+ return __awaiter(this, void 0, void 0, function* () {
188
+ const resp = yield fetch(`${baseUrl}${path}`, {
189
+ method: "POST",
190
+ headers: Object.assign({ "content-type": "application/json" }, authHeaders(bearerToken)),
191
+ body: JSON.stringify(body),
192
+ });
193
+ const text = yield resp.text();
194
+ let parsed = {};
195
+ if (text) {
196
+ try {
197
+ parsed = JSON.parse(text);
198
+ }
199
+ catch (_a) {
200
+ parsed = { message: text };
201
+ }
202
+ }
203
+ return { status: resp.status, body: parsed };
204
+ });
205
+ }
206
+ function str(value) {
207
+ return typeof value === "string" ? value : undefined;
208
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Cron dispatch for `agent/schedules/`. In production mode a minute-aligned
3
+ * ticker fires matching schedules (UTC evaluation); in dev mode nothing
4
+ * fires automatically and `POST /v1/dev/schedules/:scheduleId` dispatches a
5
+ * schedule by hand, exactly once, through the same path.
6
+ */
7
+ import type { AgentProject, AuthContext } from "../types.js";
8
+ import { type SessionEngine } from "./session-engine.js";
9
+ export declare const APP_AUTH: AuthContext;
10
+ export declare class UnknownScheduleError extends Error {
11
+ readonly availableScheduleIds: string[];
12
+ constructor(scheduleId: string, availableScheduleIds: string[]);
13
+ }
14
+ export declare class ScheduleRunner {
15
+ private readonly engine;
16
+ private readonly logger;
17
+ private readonly schedules;
18
+ private timer;
19
+ private lastFiredMinute;
20
+ constructor(engine: SessionEngine, project: AgentProject, logger?: (line: string) => void);
21
+ get scheduleIds(): string[];
22
+ start(): void;
23
+ stop(): void;
24
+ private arm;
25
+ private tick;
26
+ /** Fire a schedule by name, exactly once. Returns the started sessions. */
27
+ dispatch(scheduleId: string): Promise<{
28
+ sessionIds: string[];
29
+ }>;
30
+ }
31
+ //# sourceMappingURL=schedule-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-runner.d.ts","sourceRoot":"","sources":["../../src/internal/schedule-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EAGZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,QAAQ,EAAE,WAItB,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,KAAK;IAG3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE;IAFzC,YACE,UAAU,EAAE,MAAM,EACT,oBAAoB,EAAE,MAAM,EAAE,EAIxC;CACF;AAQD,qBAAa,cAAc;IAMvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,eAAe,CAAM;IAE7B,YACmB,MAAM,EAAE,aAAa,EACtC,OAAO,EAAE,YAAY,EACJ,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EAO3D;IAED,IAAI,WAAW,IAAI,MAAM,EAAE,CAE1B;IAED,KAAK,IAAI,IAAI,CAKZ;IAED,IAAI,IAAI,IAAI,CAKX;IAED,OAAO,CAAC,GAAG;IAOX,OAAO,CAAC,IAAI;IAoBZ,2EAA2E;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAuDpE;CACF"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Cron dispatch for `agent/schedules/`. In production mode a minute-aligned
3
+ * ticker fires matching schedules (UTC evaluation); in dev mode nothing
4
+ * fires automatically and `POST /v1/dev/schedules/:scheduleId` dispatches a
5
+ * schedule by hand, exactly once, through the same path.
6
+ */
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ import { parseCron } from "./cron.js";
17
+ import { SCHEDULE_CHANNEL_PREFIX, } from "./session-engine.js";
18
+ export const APP_AUTH = {
19
+ authenticator: "app",
20
+ principalId: "agent-serve:app",
21
+ principalType: "runtime",
22
+ };
23
+ export class UnknownScheduleError extends Error {
24
+ constructor(scheduleId, availableScheduleIds) {
25
+ super(`Unknown schedule "${scheduleId}"`);
26
+ this.availableScheduleIds = availableScheduleIds;
27
+ this.name = "UnknownScheduleError";
28
+ }
29
+ }
30
+ export class ScheduleRunner {
31
+ constructor(engine, project, logger = () => { }) {
32
+ this.engine = engine;
33
+ this.logger = logger;
34
+ this.lastFiredMinute = -1;
35
+ this.schedules = project.schedules.map((schedule) => ({
36
+ name: schedule.name,
37
+ cron: parseCron(schedule.cron),
38
+ discovered: schedule,
39
+ }));
40
+ }
41
+ get scheduleIds() {
42
+ return this.schedules.map((schedule) => schedule.name);
43
+ }
44
+ start() {
45
+ if (this.timer !== undefined || this.schedules.length === 0) {
46
+ return;
47
+ }
48
+ this.arm();
49
+ }
50
+ stop() {
51
+ if (this.timer !== undefined) {
52
+ clearTimeout(this.timer);
53
+ this.timer = undefined;
54
+ }
55
+ }
56
+ arm() {
57
+ var _a, _b;
58
+ const now = Date.now();
59
+ const nextMinute = (Math.floor(now / 60000) + 1) * 60000;
60
+ this.timer = setTimeout(() => this.tick(), nextMinute - now + 250);
61
+ (_b = (_a = this.timer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);
62
+ }
63
+ tick() {
64
+ const now = new Date();
65
+ const minute = Math.floor(now.getTime() / 60000);
66
+ if (minute !== this.lastFiredMinute) {
67
+ this.lastFiredMinute = minute;
68
+ for (const schedule of this.schedules) {
69
+ if (schedule.cron.matches(now)) {
70
+ void this.dispatch(schedule.name).catch((error) => {
71
+ this.logger(`[agent-serve] schedule "${schedule.name}" dispatch failed: ${error instanceof Error ? error.message : String(error)}`);
72
+ });
73
+ }
74
+ }
75
+ }
76
+ this.arm();
77
+ }
78
+ /** Fire a schedule by name, exactly once. Returns the started sessions. */
79
+ dispatch(scheduleId) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ const schedule = this.schedules.find((s) => s.name === scheduleId);
82
+ if (schedule === undefined) {
83
+ throw new UnknownScheduleError(scheduleId, this.scheduleIds);
84
+ }
85
+ const definition = schedule.discovered.definition;
86
+ const channelId = `${SCHEDULE_CHANNEL_PREFIX}${schedule.name}`;
87
+ if (definition.markdown !== undefined) {
88
+ const { sessionId, done } = yield this.engine.runTask({
89
+ channelId,
90
+ prompt: definition.markdown,
91
+ auth: APP_AUTH,
92
+ title: `Schedule ${schedule.name}`,
93
+ });
94
+ this.engine.trackBackground(done);
95
+ return { sessionIds: [sessionId] };
96
+ }
97
+ if (definition.run === undefined) {
98
+ throw new Error(`Schedule "${scheduleId}" has no markdown or run form`);
99
+ }
100
+ const sessionIds = [];
101
+ const receivePromises = [];
102
+ const receive = (channel, input) => {
103
+ const promise = this.engine.receive(channel, input).then((session) => {
104
+ sessionIds.push(session.id);
105
+ return session;
106
+ });
107
+ receivePromises.push(promise.catch(() => { }));
108
+ return promise;
109
+ };
110
+ yield definition.run({
111
+ receive,
112
+ callTool: (toolName, input, callOptions) => this.engine.callTool(toolName, input, Object.assign({ auth: APP_AUTH }, callOptions)),
113
+ waitUntil: (promise) => {
114
+ this.engine.trackBackground(promise);
115
+ },
116
+ appAuth: APP_AUTH,
117
+ host: this.engine.host,
118
+ });
119
+ // Collect ids from receive() calls the handler chose not to await
120
+ // (commonly wrapped in waitUntil); receive resolves at message accept,
121
+ // not turn completion, so this settles fast.
122
+ yield Promise.allSettled(receivePromises);
123
+ return { sessionIds };
124
+ });
125
+ }
126
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Executes turns on the Cursor harness through `@cursor/sdk`.
3
+ * Each framework session maps 1:1 to an SDK agent. Local agents use the
4
+ * session id as the SDK agent id and materialize a workspace for project
5
+ * settings; cloud agents use Cursor cloud (`bc-…` ids) with optional
6
+ * `cloud` options from `defineAgent`.
7
+ */
8
+ import { type LocalAgentStore, type ModelSelection } from "@cursor/sdk";
9
+ import { type ModelSetting, type RunnerTurnRequest, type TurnOutcome } from "../types.js";
10
+ /** Internal seam between the session engine and the Cursor SDK harness. */
11
+ export interface AgentRunner {
12
+ runTurn(request: RunnerTurnRequest): Promise<TurnOutcome>;
13
+ dispose?(): Promise<void>;
14
+ }
15
+ export interface CursorSdkRunnerOptions {
16
+ /** Cursor API key. Defaults to the `CURSOR_API_KEY` environment variable. */
17
+ apiKey?: string;
18
+ /**
19
+ * Conversation store override. Defaults to a JSONL store under the
20
+ * engine's state root; install `sqlite3` and pass an SQLite-backed
21
+ * `LocalAgentStore` for heavy multi-session concurrency.
22
+ */
23
+ store?: LocalAgentStore;
24
+ }
25
+ export declare class CursorSdkRunner implements AgentRunner {
26
+ private readonly options;
27
+ private readonly agents;
28
+ private readonly stores;
29
+ constructor(options?: CursorSdkRunnerOptions);
30
+ runTurn(request: RunnerTurnRequest): Promise<TurnOutcome>;
31
+ dispose(): Promise<void>;
32
+ private getAgent;
33
+ private openAgent;
34
+ private openLocalAgent;
35
+ private openCloudAgent;
36
+ private getStore;
37
+ }
38
+ /** Cloud agent ids minted by the server are `bc-…`; those always resume. */
39
+ export declare function isServerMintedCloudAgentId(id: string): boolean;
40
+ export declare function toModelSelection(model: ModelSetting): ModelSelection;
41
+ //# sourceMappingURL=sdk-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-runner.d.ts","sourceRoot":"","sources":["../../src/internal/sdk-runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAErB,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,qBAAa,eAAgB,YAAW,WAAW;IAIrC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IAEtE,YAA6B,OAAO,GAAE,sBAA2B,EAAI;IAE/D,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0D9D;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ7B;IAED,OAAO,CAAC,QAAQ;YAYF,SAAS;YA2BT,cAAc;YAwBd,cAAc;IAqC5B,OAAO,CAAC,QAAQ;CAUjB;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAQpE"}