@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
package/dist/evals.js ADDED
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Filesystem-first evals for agent-serve projects.
3
+ *
4
+ * Author cases under evals/ as `*.eval.ts` files with {@link defineEval}.
5
+ * One file may hold a single datapoint (`test`) or many (`cases`). Drive the
6
+ * agent with `t.send(...)` and assert with `t.succeeded()`, `t.calledTool()`,
7
+ * `t.messageIncludes(...)`, or `t.check(value, includes(...))`.
8
+ *
9
+ * ```ts
10
+ * import { defineEval, includes } from "@anysphere/agent-serve/evals";
11
+ *
12
+ * // One datapoint — id is the file path (evals/weather/nyc.eval.ts → weather/nyc)
13
+ * export default defineEval({
14
+ * description: "Weather tool is used for temperature questions.",
15
+ * async test(t) {
16
+ * await t.send("What's the temperature in NYC?");
17
+ * t.succeeded();
18
+ * t.calledTool("get_weather");
19
+ * t.check(t.reply, includes(/°|F|C/));
20
+ * },
21
+ * });
22
+ *
23
+ * // Many datapoints in one file — ids are <fileId>/<case.id>
24
+ * // evals/weather.eval.ts → weather/nyc, weather/paris
25
+ * export default defineEval({
26
+ * tags: ["smoke", "weather"],
27
+ * cases: [
28
+ * {
29
+ * id: "nyc",
30
+ * async test(t) {
31
+ * await t.send("What's the temperature in NYC?");
32
+ * t.succeeded();
33
+ * t.calledTool("get_weather");
34
+ * },
35
+ * },
36
+ * {
37
+ * id: "paris",
38
+ * async test(t) {
39
+ * await t.send("What's the weather in Paris?");
40
+ * t.succeeded();
41
+ * t.calledTool("get_weather");
42
+ * },
43
+ * },
44
+ * ],
45
+ * });
46
+ * ```
47
+ */
48
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
49
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
50
+ return new (P || (P = Promise))(function (resolve, reject) {
51
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
52
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
53
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
54
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
55
+ });
56
+ };
57
+ import { normalizePositiveInt } from "./internal/bounded-int.js";
58
+ import { brandDefinition } from "./internal/brand.js";
59
+ import { assertNonEmptyDir, deleteFileInDir, readJsonDir, resolveProjectRelativeDir, writeJsonFile, } from "./internal/json-dir-store.js";
60
+ export function includes(value) {
61
+ return { kind: "includes", value };
62
+ }
63
+ export function equals(value) {
64
+ return { kind: "equals", value };
65
+ }
66
+ export function satisfies(predicate, label) {
67
+ return { kind: "satisfies", predicate, label };
68
+ }
69
+ /**
70
+ * Author an eval file. The path under `evals/` is the file id:
71
+ * `evals/weather.eval.ts` → `weather`. With a single `test`, that is also
72
+ * the case id. With `cases`, each datapoint is `<fileId>/<case.id>`.
73
+ */
74
+ export function defineEval(config) {
75
+ const hasTest = typeof config.test === "function";
76
+ const hasCases = config.cases !== undefined;
77
+ if (hasTest && hasCases) {
78
+ throw new Error("defineEval: set either test or cases, not both");
79
+ }
80
+ if (!hasTest && !hasCases) {
81
+ throw new Error("defineEval requires test(t) or a non-empty cases array");
82
+ }
83
+ if (hasCases) {
84
+ if (!Array.isArray(config.cases) || config.cases.length === 0) {
85
+ throw new Error("defineEval: cases must be a non-empty array");
86
+ }
87
+ const seen = new Set();
88
+ for (const datapoint of config.cases) {
89
+ validateDatapointId(datapoint.id);
90
+ if (seen.has(datapoint.id)) {
91
+ throw new Error(`defineEval: duplicate case id ${JSON.stringify(datapoint.id)}`);
92
+ }
93
+ seen.add(datapoint.id);
94
+ if (typeof datapoint.test !== "function") {
95
+ throw new Error(`defineEval: cases[${JSON.stringify(datapoint.id)}] requires test(t)`);
96
+ }
97
+ }
98
+ }
99
+ return brandDefinition("eval", config);
100
+ }
101
+ function validateDatapointId(id) {
102
+ if (typeof id !== "string" || id.length === 0) {
103
+ throw new Error("defineEval: each case needs a non-empty string id");
104
+ }
105
+ if (id.includes("/") || id.includes("\\") || id.includes("..")) {
106
+ throw new Error(`defineEval: case id must be a single path segment (got ${JSON.stringify(id)})`);
107
+ }
108
+ }
109
+ /**
110
+ * Expand a file-level definition into runnable datapoints.
111
+ * Exported for tests and tooling.
112
+ */
113
+ export function expandEvalDefinition(fileId, definition) {
114
+ if (definition.cases !== undefined) {
115
+ return definition.cases.map((datapoint) => {
116
+ var _a, _b, _c;
117
+ const description = (_a = datapoint.description) !== null && _a !== void 0 ? _a : definition.description;
118
+ const timeoutMs = (_b = datapoint.timeoutMs) !== null && _b !== void 0 ? _b : definition.timeoutMs;
119
+ return {
120
+ id: `${fileId}/${datapoint.id}`,
121
+ definition: brandDefinition("eval", Object.assign(Object.assign(Object.assign(Object.assign({}, (description !== undefined ? { description } : {})), { tags: (_c = datapoint.tags) !== null && _c !== void 0 ? _c : definition.tags }), (timeoutMs !== undefined ? { timeoutMs } : {})), { test: datapoint.test })),
122
+ };
123
+ });
124
+ }
125
+ if (typeof definition.test !== "function") {
126
+ throw new Error(`defineEval(${fileId}): missing test(t)`);
127
+ }
128
+ return [
129
+ {
130
+ id: fileId,
131
+ definition: brandDefinition("eval", Object.assign(Object.assign(Object.assign(Object.assign({}, (definition.description !== undefined
132
+ ? { description: definition.description }
133
+ : {})), (definition.tags !== undefined ? { tags: definition.tags } : {})), (definition.timeoutMs !== undefined
134
+ ? { timeoutMs: definition.timeoutMs }
135
+ : {})), { test: definition.test })),
136
+ },
137
+ ];
138
+ }
139
+ /**
140
+ * Whether a discovered case id matches a CLI filter.
141
+ * - exact datapoint: `weather/nyc`
142
+ * - whole file / prefix: `weather` selects `weather`, `weather/nyc`, …
143
+ * - multiple filters: OR
144
+ */
145
+ export function matchesEvalIdFilter(caseId, filter) {
146
+ return caseId === filter || caseId.startsWith(`${filter}/`);
147
+ }
148
+ /**
149
+ * Hard ceiling for concurrent eval cases.
150
+ *
151
+ * Each case issues model provider requests; unbounded parallelism would
152
+ * overwhelm provider rate limits and exhaust local API quota.
153
+ */
154
+ export const EVAL_MAX_CONCURRENCY_LIMIT = 200;
155
+ /** Default playground batches kept in the serve process when `maxPlaygroundRuns` is omitted. */
156
+ export const EVAL_DEFAULT_MAX_PLAYGROUND_RUNS = 20;
157
+ /** Hard ceiling for {@link EvalConfigFile.maxPlaygroundRuns}. */
158
+ export const EVAL_MAX_PLAYGROUND_RUNS = 500;
159
+ /**
160
+ * Defaults for every eval under `evals/` (`evals/evals.config.ts`).
161
+ * `maxConcurrency` is required (1–{@link EVAL_MAX_CONCURRENCY_LIMIT}).
162
+ *
163
+ * Playground batches default to **in-memory only** (see {@link maxPlaygroundRuns} /
164
+ * {@link persistRuns}).
165
+ */
166
+ export function defineEvalConfig(config) {
167
+ var _a;
168
+ const persistRuns = normalizePersistRuns(config.persistRuns);
169
+ return Object.assign(Object.assign(Object.assign({}, (config.timeoutMs === undefined ? {} : { timeoutMs: config.timeoutMs })), { maxConcurrency: normalizeEvalMaxConcurrency(config.maxConcurrency), maxPlaygroundRuns: normalizeEvalMaxPlaygroundRuns((_a = config.maxPlaygroundRuns) !== null && _a !== void 0 ? _a : EVAL_DEFAULT_MAX_PLAYGROUND_RUNS) }), (persistRuns === undefined ? {} : { persistRuns }));
170
+ }
171
+ /**
172
+ * Validate and enforce the hard concurrency ceiling.
173
+ */
174
+ export function normalizeEvalMaxConcurrency(value) {
175
+ return normalizePositiveInt(value, {
176
+ label: "evals.config.ts: maxConcurrency",
177
+ max: EVAL_MAX_CONCURRENCY_LIMIT,
178
+ maxMessage: `evals.config.ts: maxConcurrency ${String(value)} exceeds the hard limit of ${EVAL_MAX_CONCURRENCY_LIMIT} (model provider request limits)`,
179
+ });
180
+ }
181
+ /** Validate {@link EvalConfigFile.maxPlaygroundRuns}. */
182
+ export function normalizeEvalMaxPlaygroundRuns(value) {
183
+ return normalizePositiveInt(value, {
184
+ label: "evals.config.ts: maxPlaygroundRuns",
185
+ max: EVAL_MAX_PLAYGROUND_RUNS,
186
+ });
187
+ }
188
+ /**
189
+ * Effective playground history window. Invalid values fall back to
190
+ * {@link EVAL_DEFAULT_MAX_PLAYGROUND_RUNS} (same as a missing field).
191
+ */
192
+ export function resolveEvalMaxPlaygroundRuns(value) {
193
+ if (value === undefined) {
194
+ return EVAL_DEFAULT_MAX_PLAYGROUND_RUNS;
195
+ }
196
+ try {
197
+ return normalizeEvalMaxPlaygroundRuns(value);
198
+ }
199
+ catch (_a) {
200
+ return EVAL_DEFAULT_MAX_PLAYGROUND_RUNS;
201
+ }
202
+ }
203
+ function normalizePersistRuns(value) {
204
+ if (value === undefined) {
205
+ return undefined;
206
+ }
207
+ if (typeof value !== "object" ||
208
+ value === null ||
209
+ typeof value.load !== "function" ||
210
+ typeof value.save !== "function" ||
211
+ typeof value.delete !== "function") {
212
+ throw new Error("evals.config.ts: persistRuns must define load(ctx), save(run, ctx), and delete(runId, ctx)");
213
+ }
214
+ return value;
215
+ }
216
+ /**
217
+ * Filesystem {@link EvalRunPersistence}: one JSON file per run under `dir`
218
+ * (relative paths resolve against the agent project root).
219
+ *
220
+ * ```ts
221
+ * export default defineEvalConfig({
222
+ * maxConcurrency: 20,
223
+ * persistRuns: persistEvalRunsToDir(".agent-serve/eval-runs"),
224
+ * });
225
+ * ```
226
+ */
227
+ export function persistEvalRunsToDir(dir) {
228
+ const relativeDir = assertNonEmptyDir(dir, "persistEvalRunsToDir");
229
+ const resolveDir = (projectRoot) => resolveProjectRelativeDir({ dir: relativeDir, projectRoot });
230
+ return {
231
+ load(ctx) {
232
+ return __awaiter(this, void 0, void 0, function* () {
233
+ return readJsonDir(resolveDir(ctx.projectRoot));
234
+ });
235
+ },
236
+ save(run, ctx) {
237
+ return __awaiter(this, void 0, void 0, function* () {
238
+ yield writeJsonFile({
239
+ root: resolveDir(ctx.projectRoot),
240
+ fileName: `${run.runId}.json`,
241
+ value: run,
242
+ });
243
+ });
244
+ },
245
+ delete(runId, ctx) {
246
+ return __awaiter(this, void 0, void 0, function* () {
247
+ yield deleteFileInDir({
248
+ root: resolveDir(ctx.projectRoot),
249
+ fileName: `${runId}.json`,
250
+ });
251
+ });
252
+ },
253
+ };
254
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `defineHook` — authored at `agent/hooks/<slug>.ts`.
3
+ *
4
+ * Hooks subscribe to the session event stream and run side effects after
5
+ * each event is durably recorded (audit logging, metrics, persisting
6
+ * transcripts to your own database). Handlers are observe-only.
7
+ *
8
+ * ```ts
9
+ * import { defineHook } from "@anysphere/agent-serve/hooks";
10
+ *
11
+ * export default defineHook({
12
+ * events: {
13
+ * async "turn.completed"(event, ctx) {
14
+ * console.log("turn done", ctx.session.id, event.data.usage);
15
+ * },
16
+ * },
17
+ * });
18
+ * ```
19
+ */
20
+ import type { HookConfig, HookDefinition } from "./types.js";
21
+ export type { HookConfig, HookContext, HookDefinition, HookHandler, } from "./types.js";
22
+ export declare function defineHook(config: HookConfig): HookDefinition;
23
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,YAAY,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAE7D"}
package/dist/hooks.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `defineHook` — authored at `agent/hooks/<slug>.ts`.
3
+ *
4
+ * Hooks subscribe to the session event stream and run side effects after
5
+ * each event is durably recorded (audit logging, metrics, persisting
6
+ * transcripts to your own database). Handlers are observe-only.
7
+ *
8
+ * ```ts
9
+ * import { defineHook } from "@anysphere/agent-serve/hooks";
10
+ *
11
+ * export default defineHook({
12
+ * events: {
13
+ * async "turn.completed"(event, ctx) {
14
+ * console.log("turn done", ctx.session.id, event.data.usage);
15
+ * },
16
+ * },
17
+ * });
18
+ * ```
19
+ */
20
+ import { brandDefinition } from "./internal/brand.js";
21
+ export function defineHook(config) {
22
+ return brandDefinition("hook", config);
23
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @anysphere/agent-serve
3
+ *
4
+ * Filesystem-first framework for Cursor agents: define an agent as markdown
5
+ * and TypeScript files under an `agent/` directory, and serve it over
6
+ * channels with the Cursor SDK as the execution harness.
7
+ *
8
+ * ```ts
9
+ * import { serve } from "@anysphere/agent-serve";
10
+ *
11
+ * const handle = await serve(".", { port: 3000 });
12
+ * console.log(`agent listening on ${handle.url}`);
13
+ * ```
14
+ */
15
+ import { type LoadAgentProjectOptions } from "./internal/discovery.js";
16
+ import type { AgentConfig, AgentConfigDefinition, AgentProject, AgentServeHandle, InstructionsConfig, InstructionsDefinition, ServeOptions } from "./types.js";
17
+ export { defineAB } from "./ab.js";
18
+ export { allowAll, bearerAuth, DELETE, defineChannel, GET, httpChannel, localDev, localDevStrict, loopbackGitHubDev, loopbackOnly, PATCH, POST, PUT, } from "./channels.js";
19
+ export { defineConnection } from "./connections.js";
20
+ export { defineHook } from "./hooks.js";
21
+ export type { LoadAgentProjectOptions } from "./internal/discovery.js";
22
+ export { formatDiagnostics, hasErrorDiagnostics, isAgentProjectDir, loadAgentProject, loadAgentProjects, projectInfo, resolveAgentMounts, } from "./internal/discovery.js";
23
+ export type { AgentServeGitHubTriggerEvent, AgentServeGitHubTriggerTarget, AgentServeTriggerEvent, AgentServeTriggerResult, AgentServeTriggerTargetResult, } from "./internal/handleAgentServeTrigger.js";
24
+ export { collectGitHubTriggerTargets, handleAgentServeTrigger, } from "./internal/handleAgentServeTrigger.js";
25
+ export { MCP_CHANNEL_ID, MCP_ENDPOINT_PATH, mcpEndpointToolNames, } from "./internal/mcp-endpoint.js";
26
+ export { ReminderValidationError, UnknownReminderError, } from "./internal/reminder-runner.js";
27
+ export type { AgentMount } from "./internal/server.js";
28
+ export { SessionBusyError, ToolInputError, ToolNotDirectlyCallableError, UnknownChannelError, UnknownSessionError, UnknownToolError, } from "./internal/session-engine.js";
29
+ export type { ReminderBusyPolicy, ReminderCreateInput, ReminderFireContext, ReminderFireResult, ReminderHostApi, ReminderInfo, ReminderReschedule, ReminderScheduleKind, ReminderStatus, ReminderTarget, ReminderUntilContext, } from "./reminders.js";
30
+ export { defineSchedule } from "./schedules.js";
31
+ export { defineSkill } from "./skills.js";
32
+ export { defineTool } from "./tools.js";
33
+ export type * from "./types.js";
34
+ export { DEFAULT_MODEL, DIRECT_TOOL_CALL_CHANNEL_ID, isCursorAccountTransport, isPeerConnectionTransport, isSymbolicConnectionTransport, } from "./types.js";
35
+ /**
36
+ * Runtime config for an agent — authored at `agent/agent.ts` (the root
37
+ * agent) or `agent/subagents/<id>/agent.ts` (a subagent).
38
+ */
39
+ export declare function defineAgent(config: AgentConfig): AgentConfigDefinition;
40
+ /**
41
+ * Programmatic instructions — authored at `agent/instructions.ts` when the
42
+ * system prompt needs to be generated rather than written as markdown.
43
+ */
44
+ export declare function defineInstructions(config: InstructionsConfig): InstructionsDefinition;
45
+ /**
46
+ * Discover and serve one or more agents over HTTP.
47
+ *
48
+ * Defaults to multi-agent layout: each agent is mounted under `/<slug>/v1/*`
49
+ * and `/<slug>/playground`, with an index at `/`.
50
+ *
51
+ * - Given a directory that is itself an agent project, mounts it under its
52
+ * directory name as the slug.
53
+ * - Given a directory whose immediate children are agent projects, mounts
54
+ * each under its directory name.
55
+ * - Pass `mode: "single"` (or an {@link AgentProject}) for the unslugged
56
+ * `/v1/*` surface.
57
+ *
58
+ * The built-in session channel lives under `/v1/session*`, custom channels
59
+ * under `/v1/channels/<id>`, plus `/v1/health` and `/v1/info`. Schedules run
60
+ * on their cron cadence unless dev mode or `schedules: false` disables them.
61
+ */
62
+ export declare function serve(projectOrDir: string | AgentProject, options?: ServeOptions & {
63
+ discovery?: LoadAgentProjectOptions;
64
+ /**
65
+ * Mount layout. Defaults to `"multi"` (slugged routes + index).
66
+ * `"single"` serves one agent at `/v1/*` with an empty slug. Ignored when
67
+ * an {@link AgentProject} is passed (always single-mount).
68
+ */
69
+ mode?: "single" | "multi";
70
+ }): Promise<AgentServeHandle>;
71
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EACL,QAAQ,EACR,UAAU,EACV,MAAM,EACN,aAAa,EACb,GAAG,EACH,WAAW,EACX,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,GAAG,GACJ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,mBAAmB,YAAY,CAAC;AAChC,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,qBAAqB,CAEtE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,GACzB,sBAAsB,CAExB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,KAAK,CACzB,YAAY,EAAE,MAAM,GAAG,YAAY,EACnC,OAAO,GAAE,YAAY,GAAG;IACtB,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,gBAAgB,CAAC,CAqB3B"}
package/dist/index.js ADDED
@@ -0,0 +1,101 @@
1
+ /**
2
+ * @anysphere/agent-serve
3
+ *
4
+ * Filesystem-first framework for Cursor agents: define an agent as markdown
5
+ * and TypeScript files under an `agent/` directory, and serve it over
6
+ * channels with the Cursor SDK as the execution harness.
7
+ *
8
+ * ```ts
9
+ * import { serve } from "@anysphere/agent-serve";
10
+ *
11
+ * const handle = await serve(".", { port: 3000 });
12
+ * console.log(`agent listening on ${handle.url}`);
13
+ * ```
14
+ */
15
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
16
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17
+ return new (P || (P = Promise))(function (resolve, reject) {
18
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
19
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
20
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
21
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
22
+ });
23
+ };
24
+ var __rest = (this && this.__rest) || function (s, e) {
25
+ var t = {};
26
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
27
+ t[p] = s[p];
28
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
29
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
30
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
31
+ t[p[i]] = s[p[i]];
32
+ }
33
+ return t;
34
+ };
35
+ import { registerAuthoredModuleLoaders } from "./internal/authored-loaders.js";
36
+ import { brandDefinition } from "./internal/brand.js";
37
+ import { setDevMode } from "./internal/dev-mode.js";
38
+ import { resolveAgentMounts, } from "./internal/discovery.js";
39
+ import { startServer } from "./internal/server.js";
40
+ export { defineAB } from "./ab.js";
41
+ // Authoring helpers (also available on their focused subpath exports).
42
+ export { allowAll, bearerAuth, DELETE, defineChannel, GET, httpChannel, localDev, localDevStrict, loopbackGitHubDev, loopbackOnly, PATCH, POST, PUT, } from "./channels.js";
43
+ export { defineConnection } from "./connections.js";
44
+ export { defineHook } from "./hooks.js";
45
+ export { formatDiagnostics, hasErrorDiagnostics, isAgentProjectDir, loadAgentProject, loadAgentProjects, projectInfo, resolveAgentMounts, } from "./internal/discovery.js";
46
+ export { collectGitHubTriggerTargets, handleAgentServeTrigger, } from "./internal/handleAgentServeTrigger.js";
47
+ export { MCP_CHANNEL_ID, MCP_ENDPOINT_PATH, mcpEndpointToolNames, } from "./internal/mcp-endpoint.js";
48
+ export { ReminderValidationError, UnknownReminderError, } from "./internal/reminder-runner.js";
49
+ export { SessionBusyError, ToolInputError, ToolNotDirectlyCallableError, UnknownChannelError, UnknownSessionError, UnknownToolError, } from "./internal/session-engine.js";
50
+ export { defineSchedule } from "./schedules.js";
51
+ export { defineSkill } from "./skills.js";
52
+ export { defineTool } from "./tools.js";
53
+ export { DEFAULT_MODEL, DIRECT_TOOL_CALL_CHANNEL_ID, isCursorAccountTransport, isPeerConnectionTransport, isSymbolicConnectionTransport, } from "./types.js";
54
+ /**
55
+ * Runtime config for an agent — authored at `agent/agent.ts` (the root
56
+ * agent) or `agent/subagents/<id>/agent.ts` (a subagent).
57
+ */
58
+ export function defineAgent(config) {
59
+ return brandDefinition("agent", config);
60
+ }
61
+ /**
62
+ * Programmatic instructions — authored at `agent/instructions.ts` when the
63
+ * system prompt needs to be generated rather than written as markdown.
64
+ */
65
+ export function defineInstructions(config) {
66
+ return brandDefinition("instructions", config);
67
+ }
68
+ /**
69
+ * Discover and serve one or more agents over HTTP.
70
+ *
71
+ * Defaults to multi-agent layout: each agent is mounted under `/<slug>/v1/*`
72
+ * and `/<slug>/playground`, with an index at `/`.
73
+ *
74
+ * - Given a directory that is itself an agent project, mounts it under its
75
+ * directory name as the slug.
76
+ * - Given a directory whose immediate children are agent projects, mounts
77
+ * each under its directory name.
78
+ * - Pass `mode: "single"` (or an {@link AgentProject}) for the unslugged
79
+ * `/v1/*` surface.
80
+ *
81
+ * The built-in session channel lives under `/v1/session*`, custom channels
82
+ * under `/v1/channels/<id>`, plus `/v1/health` and `/v1/info`. Schedules run
83
+ * on their cron cadence unless dev mode or `schedules: false` disables them.
84
+ */
85
+ export function serve(projectOrDir_1) {
86
+ return __awaiter(this, arguments, void 0, function* (projectOrDir, options = {}) {
87
+ const { discovery, mode } = options, serveOptions = __rest(options, ["discovery", "mode"]);
88
+ // Programmatic embedders get the same authored-TypeScript loading as the
89
+ // CLI (idempotent; the bin registers earlier, source runs are a no-op).
90
+ yield registerAuthoredModuleLoaders();
91
+ // Set before discovery so channel factories (constructed at import time) can
92
+ // relax dev-only defaults — e.g. the GitHub channel accepting unsigned
93
+ // loopback-forwarded deliveries. No-op outside dev.
94
+ setDevMode(serveOptions.dev === true);
95
+ if (typeof projectOrDir !== "string") {
96
+ return startServer([{ slug: "", project: projectOrDir }], serveOptions);
97
+ }
98
+ const mounts = yield resolveAgentMounts(projectOrDir, Object.assign(Object.assign({}, discovery), (mode === undefined ? {} : { mode })));
99
+ return startServer(mounts, serveOptions);
100
+ });
101
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Stream-native collector for {@link defineAB} experiments.
3
+ *
4
+ * Pure fold over the session event log:
5
+ * - sticky arm = last `ab.assigned` for that experiment
6
+ * - metrics accumulate from the stream; `onSample` on turn complete/fail
7
+ *
8
+ * Enrollment is written by the engine at session creation (not here).
9
+ * In-memory state is a cache: on cold start (or after park eviction) the
10
+ * collector replays `events.ndjson` so counters survive restart.
11
+ *
12
+ * Hydration note: the engine appends before dispatch, so the first-touch
13
+ * replay already includes the current event — after rebuild we return
14
+ * without folding it again (and without re-firing `onSample`).
15
+ */
16
+ import { type ABSamplePersistence } from "../ab.js";
17
+ import type { DiscoveredAB, SessionEvent, SessionInfo } from "../types.js";
18
+ export type { DiscoveredAB };
19
+ export interface ABCollectorOptions {
20
+ projectRoot: string;
21
+ persistSamples?: ABSamplePersistence;
22
+ }
23
+ export declare class ABCollector {
24
+ private readonly experiments;
25
+ private readonly logger;
26
+ private readonly loadEvents;
27
+ private readonly state;
28
+ private readonly hydrated;
29
+ private readonly projectRoot;
30
+ private readonly persistSamples;
31
+ constructor(experiments: readonly DiscoveredAB[], logger: (line: string) => void, loadEvents: (sessionId: string) => Promise<SessionEvent[]>, options?: ABCollectorOptions);
32
+ get enabled(): boolean;
33
+ /**
34
+ * Fold one live event. On first touch (or after eviction), replays the
35
+ * durable log first so enrollment + metrics match disk.
36
+ */
37
+ onEvent(event: SessionEvent, sessionInfo: SessionInfo, agentName: string): Promise<void>;
38
+ private drop;
39
+ private fold;
40
+ private sessionAccum;
41
+ }
42
+ //# sourceMappingURL=ab-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ab-collector.d.ts","sourceRoot":"","sources":["../../src/internal/ab-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EAGzB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU3E,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC;AASD,qBAAa,WAAW;IAOpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAR7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;IAEjE,YACmB,WAAW,EAAE,SAAS,YAAY,EAAE,EACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,EAC3E,OAAO,CAAC,EAAE,kBAAkB,EAI7B;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACG,OAAO,CACX,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAuBf;IAED,OAAO,CAAC,IAAI;YAKE,IAAI;IA0FlB,OAAO,CAAC,YAAY;CAQrB"}