@cursor/bdk 0.2.3 → 0.2.4

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 (577) hide show
  1. package/dist/bin/agent-serve.js +9 -1
  2. package/dist/channels/slack/attachments.d.ts +2 -1
  3. package/dist/channels/slack/attachments.d.ts.map +1 -1
  4. package/dist/channels/slack/attachments.js +19 -9
  5. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  6. package/dist/channels/slack/dispatch.js +26 -24
  7. package/dist/channels/slack/thread-context.d.ts +21 -11
  8. package/dist/channels/slack/thread-context.d.ts.map +1 -1
  9. package/dist/channels/slack/thread-context.js +75 -27
  10. package/dist/docs/404.html +2 -2
  11. package/dist/docs/assets/{app.BOIHhrKi.js → app.4kQ8Db_q.js} +4 -4
  12. package/dist/docs/assets/chunks/@localSearchIndexroot.CvuAJ0My.js +1 -0
  13. package/dist/docs/assets/chunks/{VPLocalSearchBox.D49zVZqM.js → VPLocalSearchBox.DY1RwB8Q.js} +1 -1
  14. package/dist/docs/assets/chunks/{arc.hmjb-sc4.js → arc.CxE_fSPK.js} +1 -1
  15. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CxEI1KqM.js → architectureDiagram-Q4EWVU46.CPX426ui.js} +1 -1
  16. package/dist/docs/assets/chunks/{baseUniq.DHHvBWoV.js → baseUniq.CB52JrKG.js} +1 -1
  17. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DnXW-3bu.js → blockDiagram-DXYQGD6D.J0cNaQCL.js} +1 -1
  18. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.e-47O2jM.js → c4Diagram-AHTNJAMY.DJn3vEGT.js} +1 -1
  19. package/dist/docs/assets/chunks/channel.BoNycAoN.js +1 -0
  20. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.3ry4pYXB.js → chunk-4BX2VUAB.Dao618F6.js} +1 -1
  21. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DGIZFRx6.js → chunk-4TB4RGXK.QW8Rhjai.js} +1 -1
  22. package/dist/docs/assets/chunks/{chunk-55IACEB6.DKBnqg9U.js → chunk-55IACEB6.DfRLLKF_.js} +1 -1
  23. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BIU8Ue5k.js → chunk-EDXVE4YY.CIV2ApKQ.js} +1 -1
  24. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DP-TFhjI.js → chunk-FMBD7UC4.BEheSuxp.js} +1 -1
  25. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Ux0OYj5v.js → chunk-OYMX7WX6.CUN88ENB.js} +1 -1
  26. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BzHMwYox.js → chunk-QZHKN3VN.CgqCs8b_.js} +1 -1
  27. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.D4OGAsSP.js → chunk-YZCP3GAM.iCH0nnTJ.js} +1 -1
  28. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C4x07Gkj.js +1 -0
  29. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C4x07Gkj.js +1 -0
  30. package/dist/docs/assets/chunks/clone.Db22cH_-.js +1 -0
  31. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Jq_7BUNx.js → cose-bilkent-S5V4N54A.BLcUxhWE.js} +1 -1
  32. package/dist/docs/assets/chunks/{dagre-KV5264BT.Di-skR2x.js → dagre-KV5264BT.Ep7LofOm.js} +1 -1
  33. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DeREHIdH.js → diagram-5BDNPKRD.Bzf4GSQ4.js} +1 -1
  34. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.C7Kcqxro.js → diagram-G4DWMVQ6.DD6Jh-eM.js} +1 -1
  35. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BK3eohyo.js → diagram-MMDJMWI5.oOIl8bWd.js} +1 -1
  36. package/dist/docs/assets/chunks/{diagram-TYMM5635.C6TyymXT.js → diagram-TYMM5635.DHs85Ade.js} +1 -1
  37. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DYGG-gGx.js → erDiagram-SMLLAGMA.BIb5ghCk.js} +1 -1
  38. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.C9nBcSV4.js → flowDiagram-DWJPFMVM.DV4paY9k.js} +1 -1
  39. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.wAg_ymsp.js → ganttDiagram-T4ZO3ILL.AyEKA6_v.js} +1 -1
  40. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.B87j9Oeg.js → gitGraphDiagram-UUTBAWPF.BltiCDFo.js} +1 -1
  41. package/dist/docs/assets/chunks/{graph.CuFMj31w.js → graph.DzuEYGdC.js} +1 -1
  42. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.P_mLGumP.js → infoDiagram-42DDH7IO.BV2l981J.js} +1 -1
  43. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DyuL_MsT.js → ishikawaDiagram-UXIWVN3A.BA4Izf-m.js} +1 -1
  44. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CtP09IoJ.js → journeyDiagram-VCZTEJTY.DjaFbFS3.js} +1 -1
  45. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BoeSYPZo.js → kanban-definition-6JOO6SKY.CfTFieDs.js} +1 -1
  46. package/dist/docs/assets/chunks/{layout.B0lMMtNo.js → layout.DzfWqTBV.js} +1 -1
  47. package/dist/docs/assets/chunks/{linear.HxRBiAFX.js → linear.BO6mpulV.js} +1 -1
  48. package/dist/docs/assets/chunks/{min.BGlFFHwS.js → min.BGgTadgT.js} +1 -1
  49. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.JyLBD9M8.js → mindmap-definition-QFDTVHPH.DPuIXVWY.js} +1 -1
  50. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DnSmNZF8.js → pieDiagram-DEJITSTG.BOnl3bBg.js} +1 -1
  51. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CUCnbfCa.js → quadrantDiagram-34T5L4WZ.DNB6Ckdc.js} +1 -1
  52. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.py0IVUn5.js → requirementDiagram-MS252O5E.D5-Qo7vb.js} +1 -1
  53. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.Bkc-HWYp.js → sankeyDiagram-XADWPNL6.8t65cesf.js} +1 -1
  54. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Dqn8Mlv2.js → sequenceDiagram-FGHM5R23.CaG07BdS.js} +1 -1
  55. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.JikkoQUU.js → stateDiagram-FHFEXIEX.TKOweTB6.js} +1 -1
  56. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CuqmyQc4.js +1 -0
  57. package/dist/docs/assets/chunks/{theme.b6HQ6zG_.js → theme.Dx-JhpTB.js} +2 -2
  58. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BvpSXiBj.js → timeline-definition-GMOUNBTQ.fE53zQ2s.js} +1 -1
  59. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CU7MVnZx.js → vennDiagram-DHZGUBPP.DJsZZaJg.js} +1 -1
  60. package/dist/docs/assets/chunks/{wardley-RL74JXVD.BKwC4ctG.js → wardley-RL74JXVD.844kyrjl.js} +1 -1
  61. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.BfaF6Uhe.js → wardleyDiagram-NUSXRM2D.CMZ-Ru_t.js} +1 -1
  62. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.Bg5dcpj4.js → xychartDiagram-5P7HB3ND.XXrhBc7a.js} +1 -1
  63. package/dist/docs/assets/{deployment.md.BJ8i7Q6p.js → deployment.md.UhnJIMr-.js} +2 -2
  64. package/dist/docs/assets/{deployment.md.BJ8i7Q6p.lean.js → deployment.md.UhnJIMr-.lean.js} +1 -1
  65. package/dist/docs/assets/{guides_jev.md.BNDm14Gy.js → guides_jev.md.CRcgmjDb.js} +2 -2
  66. package/dist/docs/assets/{guides_jev.md.BNDm14Gy.lean.js → guides_jev.md.CRcgmjDb.lean.js} +1 -1
  67. package/dist/docs/assets/{reference_agent-config.md.DzGI777n.js → reference_agent-config.md.Cj5uBKp4.js} +1 -1
  68. package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.js → reference_extensions.md.pa2tN-e4.js} +4 -3
  69. package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.lean.js → reference_extensions.md.pa2tN-e4.lean.js} +1 -1
  70. package/dist/docs/building-with-agents.html +35 -35
  71. package/dist/docs/deployment.html +37 -37
  72. package/dist/docs/deployment.md +4 -1
  73. package/dist/docs/evals.html +35 -35
  74. package/dist/docs/guides/agent-to-agent.html +35 -35
  75. package/dist/docs/guides/bitbucket.html +35 -35
  76. package/dist/docs/guides/cloud-agents.html +35 -35
  77. package/dist/docs/guides/convert-automation.html +35 -35
  78. package/dist/docs/guides/github.html +35 -35
  79. package/dist/docs/guides/gitlab.html +35 -35
  80. package/dist/docs/guides/grokbot-agents.html +35 -35
  81. package/dist/docs/guides/hooks.html +35 -35
  82. package/dist/docs/guides/improve.html +35 -35
  83. package/dist/docs/guides/jev.html +37 -37
  84. package/dist/docs/guides/jev.md +7 -0
  85. package/dist/docs/guides/mcp-oauth.html +35 -35
  86. package/dist/docs/guides/opentelemetry.html +35 -35
  87. package/dist/docs/guides/slack.html +35 -35
  88. package/dist/docs/guides/webhooks.html +35 -35
  89. package/dist/docs/hashmap.json +1 -1
  90. package/dist/docs/hillclimbing.html +35 -35
  91. package/dist/docs/index.html +35 -35
  92. package/dist/docs/llms-full.txt +25 -2
  93. package/dist/docs/quickstart.html +35 -35
  94. package/dist/docs/reference/agent-config.html +37 -37
  95. package/dist/docs/reference/agent-config.md +1 -1
  96. package/dist/docs/reference/artifacts.html +35 -35
  97. package/dist/docs/reference/channels.html +35 -35
  98. package/dist/docs/reference/cli.html +35 -35
  99. package/dist/docs/reference/connections.html +35 -35
  100. package/dist/docs/reference/evals.html +35 -35
  101. package/dist/docs/reference/extensions.html +39 -38
  102. package/dist/docs/reference/extensions.md +13 -0
  103. package/dist/docs/reference/hooks.html +35 -35
  104. package/dist/docs/reference/http-api.html +35 -35
  105. package/dist/docs/reference/instructions.html +35 -35
  106. package/dist/docs/reference/playground.html +35 -35
  107. package/dist/docs/reference/project-layout.html +35 -35
  108. package/dist/docs/reference/prompt.html +35 -35
  109. package/dist/docs/reference/schedules.html +35 -35
  110. package/dist/docs/reference/sessions.html +35 -35
  111. package/dist/docs/reference/skills.html +35 -35
  112. package/dist/docs/reference/subagents.html +35 -35
  113. package/dist/docs/reference/tools.html +35 -35
  114. package/dist/docs/templates/agentic-owners.html +35 -35
  115. package/dist/docs/templates/security-reviewer.html +35 -35
  116. package/dist/docs/templates/thermo-quality-review.html +35 -35
  117. package/dist/docs/templates/thermo-review.html +35 -35
  118. package/dist/docs/templates/triage.html +35 -35
  119. package/dist/docs/troubleshooting.html +35 -35
  120. package/dist/extensions/jev/extension.d.ts +3 -0
  121. package/dist/extensions/jev/extension.d.ts.map +1 -1
  122. package/dist/extensions/jev/extension.js +10 -1
  123. package/dist/extensions/jev/lib/evaluate.d.ts +4 -0
  124. package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -1
  125. package/dist/extensions/jev/lib/evaluate.js +6 -2
  126. package/dist/extensions.d.ts +4 -2
  127. package/dist/extensions.d.ts.map +1 -1
  128. package/dist/extensions.js +5 -2
  129. package/dist/internal/cli-deploy.d.ts.map +1 -1
  130. package/dist/internal/cli-deploy.js +19 -5
  131. package/dist/internal/discovery/agent-config.d.ts +6 -5
  132. package/dist/internal/discovery/agent-config.d.ts.map +1 -1
  133. package/dist/internal/discovery/agent-config.js +29 -28
  134. package/dist/internal/discovery/agent.js +1 -1
  135. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  136. package/dist/internal/discovery/extensions.js +12 -0
  137. package/dist/internal/hosting.d.ts +8 -0
  138. package/dist/internal/hosting.d.ts.map +1 -1
  139. package/dist/internal/hosting.js +24 -0
  140. package/dist/types.d.ts +18 -2
  141. package/dist/types.d.ts.map +1 -1
  142. package/docs/deployment.md +4 -1
  143. package/docs/guides/jev.md +7 -0
  144. package/docs/reference/agent-config.md +1 -1
  145. package/docs/reference/extensions.md +13 -0
  146. package/package.json +1 -9
  147. package/dist/docs/assets/chunks/@localSearchIndexroot.D5L-b34G.js +0 -1
  148. package/dist/docs/assets/chunks/channel.BbOGaJQP.js +0 -1
  149. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Db58HCb1.js +0 -1
  150. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Db58HCb1.js +0 -1
  151. package/dist/docs/assets/chunks/clone.Co4MBflG.js +0 -1
  152. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CMsKhrW0.js +0 -1
  153. package/src/artifacts.ts +0 -68
  154. package/src/bin/agent-serve.ts +0 -1854
  155. package/src/channels/bitbucket/api.ts +0 -891
  156. package/src/channels/bitbucket/binding.ts +0 -417
  157. package/src/channels/bitbucket/bitbucket-channel.ts +0 -162
  158. package/src/channels/bitbucket/bitbucket-webhook.ts +0 -519
  159. package/src/channels/bitbucket/checks.ts +0 -146
  160. package/src/channels/bitbucket/cursor-account.ts +0 -106
  161. package/src/channels/bitbucket/defaults.ts +0 -100
  162. package/src/channels/bitbucket/events.ts +0 -74
  163. package/src/channels/bitbucket/index.ts +0 -51
  164. package/src/channels/bitbucket/replay.ts +0 -421
  165. package/src/channels/bitbucket/state.ts +0 -59
  166. package/src/channels/bitbucket/types.ts +0 -261
  167. package/src/channels/change-monitors/change-monitors-channel.ts +0 -63
  168. package/src/channels/change-monitors/index.ts +0 -8
  169. package/src/channels/change-monitors/types.ts +0 -42
  170. package/src/channels/checks.ts +0 -185
  171. package/src/channels/deployments/deployments-channel.ts +0 -224
  172. package/src/channels/deployments/index.ts +0 -25
  173. package/src/channels/deployments/types.ts +0 -92
  174. package/src/channels/github/api.ts +0 -526
  175. package/src/channels/github/auth.ts +0 -293
  176. package/src/channels/github/binding.ts +0 -233
  177. package/src/channels/github/checks.ts +0 -145
  178. package/src/channels/github/cursor-account.ts +0 -303
  179. package/src/channels/github/defaults.ts +0 -168
  180. package/src/channels/github/events.ts +0 -67
  181. package/src/channels/github/forward.ts +0 -359
  182. package/src/channels/github/github-channel.ts +0 -2334
  183. package/src/channels/github/index.ts +0 -54
  184. package/src/channels/github/progress.ts +0 -365
  185. package/src/channels/github/replay.ts +0 -372
  186. package/src/channels/github/state.ts +0 -124
  187. package/src/channels/github/types.ts +0 -590
  188. package/src/channels/gitlab/api.ts +0 -329
  189. package/src/channels/gitlab/binding.ts +0 -231
  190. package/src/channels/gitlab/checks.ts +0 -228
  191. package/src/channels/gitlab/cursor-account.ts +0 -105
  192. package/src/channels/gitlab/defaults.ts +0 -80
  193. package/src/channels/gitlab/events.ts +0 -37
  194. package/src/channels/gitlab/gitlab-channel.ts +0 -160
  195. package/src/channels/gitlab/gitlab-webhook.ts +0 -509
  196. package/src/channels/gitlab/index.ts +0 -44
  197. package/src/channels/gitlab/replay.ts +0 -328
  198. package/src/channels/gitlab/state.ts +0 -55
  199. package/src/channels/gitlab/types.ts +0 -247
  200. package/src/channels/issues/index.ts +0 -9
  201. package/src/channels/issues/issues-channel.ts +0 -45
  202. package/src/channels/issues/types.ts +0 -38
  203. package/src/channels/origin/api.ts +0 -507
  204. package/src/channels/origin/binding.ts +0 -114
  205. package/src/channels/origin/checks.ts +0 -250
  206. package/src/channels/origin/cursor-account.ts +0 -58
  207. package/src/channels/origin/defaults.ts +0 -140
  208. package/src/channels/origin/events.ts +0 -35
  209. package/src/channels/origin/index.ts +0 -35
  210. package/src/channels/origin/origin-channel.ts +0 -815
  211. package/src/channels/origin/origin-webhook.ts +0 -296
  212. package/src/channels/origin/reactions.ts +0 -72
  213. package/src/channels/origin/state.ts +0 -54
  214. package/src/channels/origin/types.ts +0 -295
  215. package/src/channels/slack/agentic-delivery.ts +0 -634
  216. package/src/channels/slack/agentic-posted.ts +0 -135
  217. package/src/channels/slack/agentic-signals.ts +0 -231
  218. package/src/channels/slack/api.ts +0 -761
  219. package/src/channels/slack/approvals.ts +0 -279
  220. package/src/channels/slack/assistant.ts +0 -76
  221. package/src/channels/slack/attachments.ts +0 -596
  222. package/src/channels/slack/auth.ts +0 -127
  223. package/src/channels/slack/blocks.ts +0 -131
  224. package/src/channels/slack/bot-mentions.ts +0 -318
  225. package/src/channels/slack/channel-watch.ts +0 -314
  226. package/src/channels/slack/cli-project.ts +0 -249
  227. package/src/channels/slack/code-fences.ts +0 -171
  228. package/src/channels/slack/constants.ts +0 -38
  229. package/src/channels/slack/credentials.ts +0 -88
  230. package/src/channels/slack/defaults.ts +0 -714
  231. package/src/channels/slack/dispatch.ts +0 -1060
  232. package/src/channels/slack/doctor.ts +0 -338
  233. package/src/channels/slack/eval-directive.ts +0 -306
  234. package/src/channels/slack/event-id-dedupe.ts +0 -30
  235. package/src/channels/slack/external-policy.ts +0 -75
  236. package/src/channels/slack/footer.ts +0 -106
  237. package/src/channels/slack/inbound.ts +0 -416
  238. package/src/channels/slack/index.ts +0 -53
  239. package/src/channels/slack/init.ts +0 -169
  240. package/src/channels/slack/interactive.ts +0 -406
  241. package/src/channels/slack/links.ts +0 -23
  242. package/src/channels/slack/live-delivery.ts +0 -489
  243. package/src/channels/slack/log.ts +0 -70
  244. package/src/channels/slack/manifest.ts +0 -240
  245. package/src/channels/slack/message-body.ts +0 -82
  246. package/src/channels/slack/nudge-carrier.ts +0 -224
  247. package/src/channels/slack/nudge-store.ts +0 -334
  248. package/src/channels/slack/paint-start.ts +0 -93
  249. package/src/channels/slack/placeholder.ts +0 -358
  250. package/src/channels/slack/pr-ref.ts +0 -74
  251. package/src/channels/slack/progress-delivery.ts +0 -138
  252. package/src/channels/slack/reasoning-card.ts +0 -125
  253. package/src/channels/slack/reasoning-chip.ts +0 -41
  254. package/src/channels/slack/recording-sink.ts +0 -167
  255. package/src/channels/slack/redact.ts +0 -6
  256. package/src/channels/slack/reply-options.ts +0 -279
  257. package/src/channels/slack/setup.ts +0 -125
  258. package/src/channels/slack/slack-channel.ts +0 -744
  259. package/src/channels/slack/socket-mode.ts +0 -140
  260. package/src/channels/slack/stop.ts +0 -25
  261. package/src/channels/slack/stream.ts +0 -66
  262. package/src/channels/slack/thread-context.ts +0 -485
  263. package/src/channels/slack/tool-approval-events.ts +0 -233
  264. package/src/channels/slack/tool-cards.ts +0 -198
  265. package/src/channels/slack/tool-chip.ts +0 -34
  266. package/src/channels/slack/types.ts +0 -787
  267. package/src/channels/slack/upload.ts +0 -137
  268. package/src/channels.ts +0 -543
  269. package/src/connections.ts +0 -153
  270. package/src/dashboard-session-url.ts +0 -30
  271. package/src/evals/assertions.ts +0 -688
  272. package/src/evals/expect.ts +0 -250
  273. package/src/evals/judge.ts +0 -329
  274. package/src/evals/loaders.ts +0 -111
  275. package/src/evals/matchers.ts +0 -223
  276. package/src/evals/reporters.ts +0 -257
  277. package/src/evals/results.ts +0 -130
  278. package/src/evals/run-facts.ts +0 -306
  279. package/src/evals.ts +0 -709
  280. package/src/extensions/cursor-cloud-agents/extension.ts +0 -131
  281. package/src/extensions/cursor-cloud-agents/lib/backend.ts +0 -386
  282. package/src/extensions/cursor-cloud-agents/lib/channels.ts +0 -11
  283. package/src/extensions/cursor-cloud-agents/lib/fleet.ts +0 -98
  284. package/src/extensions/cursor-cloud-agents/lib/inputs.ts +0 -5
  285. package/src/extensions/cursor-cloud-agents/lib/repos.ts +0 -80
  286. package/src/extensions/cursor-cloud-agents/lib/transcript.ts +0 -19
  287. package/src/extensions/cursor-cloud-agents/skills/handoff.md +0 -37
  288. package/src/extensions/cursor-cloud-agents/tools/cancel.ts +0 -21
  289. package/src/extensions/cursor-cloud-agents/tools/dump.ts +0 -47
  290. package/src/extensions/cursor-cloud-agents/tools/get.ts +0 -18
  291. package/src/extensions/cursor-cloud-agents/tools/launch.ts +0 -62
  292. package/src/extensions/cursor-cloud-agents/tools/list.ts +0 -31
  293. package/src/extensions/cursor-cloud-agents/tools/reply.ts +0 -36
  294. package/src/extensions/cursor-grokbot-agents/extension.ts +0 -132
  295. package/src/extensions/cursor-grokbot-agents/lib/agents.ts +0 -42
  296. package/src/extensions/cursor-grokbot-agents/lib/backend.ts +0 -208
  297. package/src/extensions/cursor-grokbot-agents/lib/contacts.ts +0 -74
  298. package/src/extensions/cursor-grokbot-agents/lib/conversation.ts +0 -260
  299. package/src/extensions/cursor-grokbot-agents/lib/inputs.ts +0 -21
  300. package/src/extensions/cursor-grokbot-agents/lib/lock.ts +0 -26
  301. package/src/extensions/cursor-grokbot-agents/skills/consult.md +0 -40
  302. package/src/extensions/cursor-grokbot-agents/tools/ask.ts +0 -32
  303. package/src/extensions/cursor-grokbot-agents/tools/check.ts +0 -25
  304. package/src/extensions/cursor-grokbot-agents/tools/interrupt.ts +0 -17
  305. package/src/extensions/cursor-grokbot-agents/tools/list.ts +0 -26
  306. package/src/extensions/improve/extension.ts +0 -69
  307. package/src/extensions/improve/skills/yourself.ts +0 -50
  308. package/src/extensions/jev/extension.ts +0 -95
  309. package/src/extensions/jev/lib/evaluate.ts +0 -266
  310. package/src/extensions/jev/skills/gated-write.md +0 -25
  311. package/src/extensions/jev/skills/questions.md +0 -33
  312. package/src/extensions/jev/tools/evaluate.ts +0 -82
  313. package/src/extensions/slack-communication/evals/harness.ts +0 -705
  314. package/src/extensions/slack-communication/evals/slack-communication.eval.ts +0 -830
  315. package/src/extensions/slack-communication/evals/slack-placeholder.eval.ts +0 -172
  316. package/src/extensions/slack-communication/extension.ts +0 -44
  317. package/src/extensions/slack-communication/skills/slack-voice.ts +0 -56
  318. package/src/extensions/slack-communication/tools/delete-message.ts +0 -33
  319. package/src/extensions/slack-communication/tools/edit-message.ts +0 -42
  320. package/src/extensions/slack-communication/tools/post-card.ts +0 -28
  321. package/src/extensions/slack-communication/tools/post-file.ts +0 -82
  322. package/src/extensions/slack-communication/tools/post-update.ts +0 -40
  323. package/src/extensions/slack-communication/tools/react.ts +0 -30
  324. package/src/extensions/slack-communication/tools/set-status.ts +0 -21
  325. package/src/extensions.ts +0 -179
  326. package/src/files-backends/agent-store-presigned-url.ts +0 -11
  327. package/src/files-backends/cursor-hosted.ts +0 -1212
  328. package/src/files-backends/local-fs.ts +0 -163
  329. package/src/files.ts +0 -293
  330. package/src/filesystem.ts +0 -2005
  331. package/src/hooks.ts +0 -30
  332. package/src/index.ts +0 -259
  333. package/src/internal/advertise-tools.ts +0 -370
  334. package/src/internal/approval-gate.ts +0 -103
  335. package/src/internal/artifacts-store.ts +0 -836
  336. package/src/internal/as-of.ts +0 -257
  337. package/src/internal/auth.ts +0 -46
  338. package/src/internal/authored-alias-hooks.ts +0 -138
  339. package/src/internal/authored-loaders.ts +0 -188
  340. package/src/internal/bounded-int.ts +0 -24
  341. package/src/internal/bounded.ts +0 -25
  342. package/src/internal/brand.ts +0 -28
  343. package/src/internal/browser-origin-guard.ts +0 -67
  344. package/src/internal/builtin-tools/artifacts.ts +0 -62
  345. package/src/internal/builtin-tools/index.ts +0 -53
  346. package/src/internal/builtin-tools/reminders.ts +0 -145
  347. package/src/internal/channel-dispatch.ts +0 -129
  348. package/src/internal/channel-route-dispatch.ts +0 -58
  349. package/src/internal/channel-state.ts +0 -83
  350. package/src/internal/chat-client.ts +0 -594
  351. package/src/internal/cli-ax.ts +0 -2318
  352. package/src/internal/cli-bitbucket.ts +0 -438
  353. package/src/internal/cli-convert-automation.ts +0 -335
  354. package/src/internal/cli-cursor.ts +0 -282
  355. package/src/internal/cli-deploy.ts +0 -2519
  356. package/src/internal/cli-docs.ts +0 -192
  357. package/src/internal/cli-github.ts +0 -806
  358. package/src/internal/cli-gitlab.ts +0 -452
  359. package/src/internal/cli-images.ts +0 -672
  360. package/src/internal/cli-manifest.ts +0 -56
  361. package/src/internal/cli-mcp-oauth.ts +0 -396
  362. package/src/internal/cli-mcp.ts +0 -808
  363. package/src/internal/cli-skills.ts +0 -98
  364. package/src/internal/cli-slack-manual.ts +0 -418
  365. package/src/internal/cli-slack.ts +0 -874
  366. package/src/internal/cloud-merge.ts +0 -51
  367. package/src/internal/cloud-turn-cost.ts +0 -159
  368. package/src/internal/connection-env.ts +0 -106
  369. package/src/internal/continuation-channel.ts +0 -233
  370. package/src/internal/continuation-identity.ts +0 -935
  371. package/src/internal/conversation-mirror.ts +0 -423
  372. package/src/internal/convert-automation/convert-workflow.ts +0 -1377
  373. package/src/internal/convert-automation/slug.ts +0 -29
  374. package/src/internal/convert-automation/types.ts +0 -212
  375. package/src/internal/cron.ts +0 -76
  376. package/src/internal/cursor/account-mcp.ts +0 -692
  377. package/src/internal/cursor/backend-client.ts +0 -984
  378. package/src/internal/cursor/bound-secret-file.ts +0 -101
  379. package/src/internal/cursor/credentials.ts +0 -560
  380. package/src/internal/cursor/cursor-api-transport.ts +0 -65
  381. package/src/internal/cursor/github-credentials.ts +0 -228
  382. package/src/internal/cursor/hosted-bound-secrets.ts +0 -71
  383. package/src/internal/cursor/hosted-deployment-secrets.ts +0 -100
  384. package/src/internal/cursor/hosted-store-secrets.ts +0 -152
  385. package/src/internal/cursor/session-token.ts +0 -111
  386. package/src/internal/cursor/store-api-client.ts +0 -323
  387. package/src/internal/cursor-account-mcp-auth.ts +0 -303
  388. package/src/internal/cursor-agent-template.ts +0 -50
  389. package/src/internal/cursor-deployment-relay.ts +0 -315
  390. package/src/internal/cursor-event-relay.ts +0 -675
  391. package/src/internal/cursor-relay-core.ts +0 -563
  392. package/src/internal/deferred-channel-session.ts +0 -61
  393. package/src/internal/deploy-client.ts +0 -1574
  394. package/src/internal/deploy-manifest.ts +0 -361
  395. package/src/internal/deploy-source.ts +0 -144
  396. package/src/internal/describe-error.ts +0 -32
  397. package/src/internal/dev-mode.ts +0 -20
  398. package/src/internal/discovery/agent-config.ts +0 -288
  399. package/src/internal/discovery/agent.ts +0 -381
  400. package/src/internal/discovery/channels.ts +0 -100
  401. package/src/internal/discovery/connections.ts +0 -516
  402. package/src/internal/discovery/context.ts +0 -38
  403. package/src/internal/discovery/cursor-plugin.ts +0 -628
  404. package/src/internal/discovery/extension-overlay.ts +0 -247
  405. package/src/internal/discovery/extensions.ts +0 -490
  406. package/src/internal/discovery/fs.ts +0 -103
  407. package/src/internal/discovery/hooks.ts +0 -63
  408. package/src/internal/discovery/info.ts +0 -174
  409. package/src/internal/discovery/instructions.ts +0 -98
  410. package/src/internal/discovery/modules.ts +0 -107
  411. package/src/internal/discovery/names.ts +0 -45
  412. package/src/internal/discovery/project.ts +0 -319
  413. package/src/internal/discovery/reminders.ts +0 -65
  414. package/src/internal/discovery/runtime.ts +0 -158
  415. package/src/internal/discovery/schedules.ts +0 -120
  416. package/src/internal/discovery/seed-files.ts +0 -34
  417. package/src/internal/discovery/services.ts +0 -151
  418. package/src/internal/discovery/skills.ts +0 -174
  419. package/src/internal/discovery/subagent.ts +0 -138
  420. package/src/internal/discovery/tools.ts +0 -170
  421. package/src/internal/discovery.ts +0 -27
  422. package/src/internal/distribution.ts +0 -126
  423. package/src/internal/docs-site.ts +0 -248
  424. package/src/internal/duration.ts +0 -37
  425. package/src/internal/env-file.ts +0 -83
  426. package/src/internal/eval-judge-model.ts +0 -142
  427. package/src/internal/eval-run-store.ts +0 -585
  428. package/src/internal/eval-runner.ts +0 -823
  429. package/src/internal/evals-client.ts +0 -475
  430. package/src/internal/event-log.ts +0 -342
  431. package/src/internal/event-mapper.ts +0 -811
  432. package/src/internal/expected-delivery-failure.ts +0 -34
  433. package/src/internal/factory-resource-channel.ts +0 -103
  434. package/src/internal/filesystem/errors.ts +0 -207
  435. package/src/internal/filesystem/format.ts +0 -253
  436. package/src/internal/filesystem/merge.ts +0 -192
  437. package/src/internal/filesystem/nearest.ts +0 -112
  438. package/src/internal/filesystem/scratch.ts +0 -239
  439. package/src/internal/filesystem/sdk-schemas.ts +0 -204
  440. package/src/internal/filesystem/tools.ts +0 -804
  441. package/src/internal/filesystem/walk.ts +0 -366
  442. package/src/internal/fixtures/units-server.ts +0 -52
  443. package/src/internal/framework-file-storage.ts +0 -357
  444. package/src/internal/framework-storage-selection.ts +0 -156
  445. package/src/internal/frontmatter.ts +0 -108
  446. package/src/internal/github-fanout.ts +0 -144
  447. package/src/internal/guest-network.ts +0 -391
  448. package/src/internal/handleAgentServeTrigger.ts +0 -286
  449. package/src/internal/host-files.ts +0 -341
  450. package/src/internal/host-kv.ts +0 -81
  451. package/src/internal/host-otel.ts +0 -231
  452. package/src/internal/host-platforms.ts +0 -170
  453. package/src/internal/hosted-admission-adapter.ts +0 -47
  454. package/src/internal/hosted-admission-context.ts +0 -37
  455. package/src/internal/hosted-catch-protocol.ts +0 -112
  456. package/src/internal/hosted-catch.ts +0 -179
  457. package/src/internal/hosted-delivery-protocol.ts +0 -824
  458. package/src/internal/hosted-delivery.ts +0 -1410
  459. package/src/internal/hosted-execution-diag.ts +0 -291
  460. package/src/internal/hosted-execution-flush.ts +0 -136
  461. package/src/internal/hosted-execution-latency.ts +0 -301
  462. package/src/internal/hosted-managed-automation.ts +0 -116
  463. package/src/internal/hosting.ts +0 -114
  464. package/src/internal/http-channel-define.ts +0 -25
  465. package/src/internal/http-channel.ts +0 -669
  466. package/src/internal/http-control-plane-session.ts +0 -110
  467. package/src/internal/ids.ts +0 -39
  468. package/src/internal/incoming-headers-to-fetch.ts +0 -45
  469. package/src/internal/init-interview.ts +0 -360
  470. package/src/internal/init-project.ts +0 -711
  471. package/src/internal/init-scaffold.ts +0 -182
  472. package/src/internal/inline-stdio-define-stub.ts +0 -4
  473. package/src/internal/inline-stdio-mcp.ts +0 -230
  474. package/src/internal/install-cursor-skills.ts +0 -604
  475. package/src/internal/is-record.ts +0 -3
  476. package/src/internal/json-schema.ts +0 -95
  477. package/src/internal/legacy-command-guard.ts +0 -66
  478. package/src/internal/listen-port.ts +0 -85
  479. package/src/internal/local-control-plane.ts +0 -442
  480. package/src/internal/local-env.ts +0 -59
  481. package/src/internal/local-ingress.ts +0 -90
  482. package/src/internal/log-ring.ts +0 -59
  483. package/src/internal/logs-client.ts +0 -477
  484. package/src/internal/map-pool.ts +0 -39
  485. package/src/internal/mcp-endpoint.ts +0 -747
  486. package/src/internal/mcp-host.ts +0 -509
  487. package/src/internal/mcp-oauth-on-demand.ts +0 -337
  488. package/src/internal/mcp-oauth-persist.ts +0 -118
  489. package/src/internal/mcp-oauth.ts +0 -549
  490. package/src/internal/net.ts +0 -29
  491. package/src/internal/open-browser.ts +0 -41
  492. package/src/internal/otel/attrs.ts +0 -16
  493. package/src/internal/otel/collector.ts +0 -937
  494. package/src/internal/otel/config.ts +0 -287
  495. package/src/internal/otel/http.ts +0 -122
  496. package/src/internal/otel/mcp.ts +0 -56
  497. package/src/internal/otel/propagation.ts +0 -17
  498. package/src/internal/otel/runtime.ts +0 -441
  499. package/src/internal/package-inline-stdio.ts +0 -114
  500. package/src/internal/peer-connections.ts +0 -96
  501. package/src/internal/platform-schedule-sync.ts +0 -75
  502. package/src/internal/platform-timers.ts +0 -365
  503. package/src/internal/playground/static.ts +0 -278
  504. package/src/internal/playground/toolchain.ts +0 -270
  505. package/src/internal/playground-proxy.ts +0 -564
  506. package/src/internal/process-memory-telemetry.ts +0 -334
  507. package/src/internal/project-layout.ts +0 -31
  508. package/src/internal/prompt-context.ts +0 -116
  509. package/src/internal/reminder-control-plane-protocol.ts +0 -482
  510. package/src/internal/reminder-runner.ts +0 -1559
  511. package/src/internal/reminder-schedule.ts +0 -104
  512. package/src/internal/reminder-store.ts +0 -176
  513. package/src/internal/request-error-status.ts +0 -95
  514. package/src/internal/request-headers.ts +0 -21
  515. package/src/internal/resolve-prod-target.ts +0 -334
  516. package/src/internal/resolved-connections.ts +0 -190
  517. package/src/internal/router.ts +0 -143
  518. package/src/internal/run-client.ts +0 -354
  519. package/src/internal/runtime-dispatch-runner.ts +0 -50
  520. package/src/internal/sanitize-mcp-tool-name.ts +0 -31
  521. package/src/internal/schedule-runner.ts +0 -154
  522. package/src/internal/scm/pr-url.ts +0 -245
  523. package/src/internal/sdk-runner.ts +0 -959
  524. package/src/internal/serve-restart.ts +0 -113
  525. package/src/internal/server.ts +0 -3147
  526. package/src/internal/session-cost.ts +0 -208
  527. package/src/internal/session-engine.ts +0 -5622
  528. package/src/internal/session-links.ts +0 -84
  529. package/src/internal/session-run-log.ts +0 -535
  530. package/src/internal/session-store.ts +0 -307
  531. package/src/internal/session-urls.ts +0 -32
  532. package/src/internal/sessions-client.ts +0 -239
  533. package/src/internal/skill-catalog.ts +0 -66
  534. package/src/internal/skills-sync.ts +0 -55
  535. package/src/internal/slack-provision-client.ts +0 -544
  536. package/src/internal/slack-thread-key.ts +0 -11
  537. package/src/internal/sleep.ts +0 -3
  538. package/src/internal/start-log-store.ts +0 -164
  539. package/src/internal/steering.ts +0 -17
  540. package/src/internal/storage-coordinator.ts +0 -800
  541. package/src/internal/storage-roles.ts +0 -86
  542. package/src/internal/storage.ts +0 -1
  543. package/src/internal/store-api-protocol.ts +0 -205
  544. package/src/internal/store-mirror.ts +0 -73
  545. package/src/internal/stream-progress.ts +0 -294
  546. package/src/internal/terminal-style.ts +0 -133
  547. package/src/internal/testing/factory-resource-fixtures.ts +0 -84
  548. package/src/internal/testing/scm-continuation-fixtures.ts +0 -285
  549. package/src/internal/tool-catalog.ts +0 -104
  550. package/src/internal/tool-policy.ts +0 -222
  551. package/src/internal/tool-result.ts +0 -50
  552. package/src/internal/trajectory.ts +0 -418
  553. package/src/internal/turn-cost.ts +0 -136
  554. package/src/internal/turn-governor.ts +0 -145
  555. package/src/internal/turn-lease-store.ts +0 -144
  556. package/src/internal/turn-outbox.ts +0 -77
  557. package/src/internal/update-check.ts +0 -517
  558. package/src/internal/v2-hosting.ts +0 -52
  559. package/src/internal/workspace-sync.ts +0 -114
  560. package/src/internal/workspace.ts +0 -505
  561. package/src/kv/memory-kv.ts +0 -94
  562. package/src/kv.ts +0 -18
  563. package/src/memory.ts +0 -487
  564. package/src/otel-public.ts +0 -24
  565. package/src/otel.ts +0 -320
  566. package/src/prompt.ts +0 -80
  567. package/src/reminders.ts +0 -65
  568. package/src/schedules.ts +0 -31
  569. package/src/skills.ts +0 -27
  570. package/src/storage-backends/cursor-hosted-v2.ts +0 -204
  571. package/src/storage-backends/cursor-hosted.ts +0 -388
  572. package/src/storage-backends/file-kv.ts +0 -276
  573. package/src/storage-protocol.ts +0 -261
  574. package/src/storage.ts +0 -408
  575. package/src/tools.ts +0 -166
  576. package/src/types.ts +0 -3776
  577. /package/dist/docs/assets/{reference_agent-config.md.DzGI777n.lean.js → reference_agent-config.md.Cj5uBKp4.lean.js} +0 -0
package/src/evals.ts DELETED
@@ -1,709 +0,0 @@
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 "@cursor/bdk/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
- * ## Severity: gates and scores
49
- *
50
- * Every assertion returns a chainable handle, so severity rides on the
51
- * assertion instead of a separate thresholds map. Gates are hard (a miss fails
52
- * the eval and `eval` exits non-zero); soft assertions are tracked scores that
53
- * mark the eval `scored` and only fail the build under `--strict`:
54
- *
55
- * ```ts
56
- * t.succeeded(); // gate (default)
57
- * t.calledTool("get_weather").soft(); // tracked, no gate
58
- * t.check(t.reply, similarity("Sunny, 72F")).atLeast(0.8);
59
- * t.judge.closedQA("cites a source").atLeast(0.6); // LLM-graded
60
- * ```
61
- *
62
- * Matchers narrow tool assertions (`{ input, output, status, count }` accept a
63
- * literal, a RegExp, or a predicate), and each turn returned by `t.send(...)`
64
- * carries the same vocabulary scoped to that turn.
65
- */
66
-
67
- import type { EvalAssertionResult, EvalAssertions, EvalVerdict } from "./evals/assertions.js";
68
- import type { Expectation } from "./evals/expect.js";
69
- import type { EvalJudge, EvalJudgeConfig } from "./evals/judge.js";
70
- import type { EvalReporter } from "./evals/results.js";
71
- import { normalizePositiveInt } from "./internal/bounded-int.js";
72
- import { brandDefinition } from "./internal/brand.js";
73
- import type { AgentCloudOptions, SessionEvent } from "./types.js";
74
-
75
- // Assertion severity, the scoped assertion vocabulary, value assertion
76
- // builders, the judge surface, and result/reporter types are all part of the
77
- // authoring surface: one import (`@cursor/bdk/evals`) covers a whole eval file.
78
- export type {
79
- EvalAssertionHandle,
80
- EvalAssertionResult,
81
- EvalAssertionSeverity,
82
- EvalAssertions,
83
- EvalTaggedArtifactFact,
84
- EvalVerdict,
85
- } from "./evals/assertions.js";
86
- export { computeVerdict, verdictFailsRun } from "./evals/assertions.js";
87
- export type { EvalSchemaLike, Expectation } from "./evals/expect.js";
88
- export {
89
- equals,
90
- includes,
91
- matches,
92
- normalizedSimilarity,
93
- satisfies,
94
- similarity,
95
- } from "./evals/expect.js";
96
- export type {
97
- EvalJudge,
98
- EvalJudgeCallOptions,
99
- EvalJudgeConfig,
100
- EvalJudgeGraderName,
101
- } from "./evals/judge.js";
102
- // A custom judge built on `t.judge.model` embeds the same attacker-controlled
103
- // agent output the built-in graders do, so it needs the same two protections.
104
- export { EVAL_JUDGE_INJECTION_GUARD, fenceUntrusted } from "./evals/judge.js";
105
- export type {
106
- EvalCountMatcher,
107
- EvalEventMatcher,
108
- EvalEventOrderMatcher,
109
- EvalMatcher,
110
- EvalSubagentMatcher,
111
- EvalToolCallMatcher,
112
- EvalToolCallStatus,
113
- } from "./evals/matchers.js";
114
- export type {
115
- EvalReporter,
116
- EvalReporterEvalInfo,
117
- EvalReporterTarget,
118
- EvalRunResult,
119
- EvalRunSummary,
120
- } from "./evals/results.js";
121
- export type {
122
- EvalInputRequestFact,
123
- EvalRunFacts,
124
- EvalSubagentFact,
125
- EvalToolCallFact,
126
- } from "./evals/run-facts.js";
127
- export { deriveRunFacts } from "./evals/run-facts.js";
128
-
129
- /**
130
- * One settled turn. Carries the same assertion vocabulary as `t`, narrowed to
131
- * this turn's events, so an intermediate turn can be graded before the next
132
- * `send` overwrites `t.reply`:
133
- *
134
- * ```ts
135
- * const draft = await t.send("Draft the summary.");
136
- * draft.calledTool("read_file");
137
- * t.check(draft.message, includes("Summary"));
138
- * ```
139
- */
140
- export interface EvalTurnResult extends EvalAssertions {
141
- message: string;
142
- sessionId: string;
143
- events: SessionEvent[];
144
- /** Tool names requested during this turn, in order. */
145
- toolCalls: string[];
146
- ok: boolean;
147
- /** 1-based turn index within the case. */
148
- index: number;
149
- /** Throws when this turn failed. Only needed when later steps depend on it. */
150
- expectOk(): EvalTurnResult;
151
- }
152
-
153
- export interface EvalSendOptions {
154
- /** Absolute harness `cwd` for a new session (`SendMessageOptions.workspaceDir`). */
155
- workspaceDir?: string;
156
- /** Files seeded into the session workspace before the first turn. */
157
- workspaceFiles?: Record<string, string>;
158
- /**
159
- * Per-session cloud options merged over the agent's static `cloud` config
160
- * (create only). Use this to attach a pinned fixture repo for cloud evals
161
- * without putting it on the agent's default `cloud.repos`.
162
- */
163
- cloud?: AgentCloudOptions;
164
- }
165
-
166
- /**
167
- * The eval driver and assertion surface.
168
- *
169
- * `t` both drives the agent and grades it. Assertions on `t` read the whole run
170
- * once `test` finishes; assertions on the turn returned by `t.send(...)` read
171
- * only that turn. Recorded assertions never throw, so one run reports every
172
- * failure rather than dying on the first.
173
- */
174
- export interface EvalTestContext extends EvalAssertions {
175
- /** Send a turn and wait until the session parks (or fails). */
176
- send(message: string, options?: EvalSendOptions): Promise<EvalTurnResult>;
177
- /** Last assistant text, or null before the first send. */
178
- readonly reply: string | null;
179
- readonly sessionId: string | undefined;
180
- /** All events captured so far across turns. */
181
- readonly events: SessionEvent[];
182
- /** Turns settled so far, oldest first. */
183
- readonly turns: readonly EvalTurnResult[];
184
- /**
185
- * 1-based index of this run when {@link EvalConfig.iterations} /
186
- * {@link EvalDatapoint.iterations} expands a datapoint. Always `1` when
187
- * iterations is unset or `1`.
188
- */
189
- readonly iteration: number;
190
- /** Total iterations for this datapoint (default `1`). */
191
- readonly iterations: number;
192
- /** Aborts when the case hits its timeout. */
193
- readonly signal: AbortSignal;
194
- /**
195
- * LLM-as-judge assertions. Soft by default (tracked, never fatal); add a bar
196
- * with `.atLeast(0.7)` or promote with `.gate(0.8)`. Requires a judge model
197
- * from `defineEvalConfig({ judge })`, `defineEval({ judge })`, or the call.
198
- */
199
- readonly judge: EvalJudge;
200
- /**
201
- * Record a gate that must pass before the script can safely continue.
202
- * Returns `value` when it passes and stops the test body when it does not,
203
- * without adding a duplicate execution error.
204
- */
205
- require<T>(value: T, assertion: Expectation): Promise<T>;
206
- /**
207
- * End the case as skipped. Skipped cases are reported separately and never
208
- * change the exit code. Call it before sending messages.
209
- */
210
- skip(reason: string): never;
211
- /** Debug line (surfaced under `agent-sdk eval --verbose`). */
212
- log(message: string): void;
213
- /**
214
- * Structured score for the playground (and CLI). Values appear on the
215
- * case card; agents can further customize rendering via
216
- * `agent/playground/evals.tsx`.
217
- */
218
- metric(name: string, value: string | number): void;
219
- }
220
-
221
- /** Hard ceiling for {@link EvalConfig.iterations} / case `iterations`. */
222
- export const EVAL_MAX_ITERATIONS = 100;
223
-
224
- /** One runnable datapoint inside a multi-case {@link defineEval} file. */
225
- export interface EvalDatapoint {
226
- /**
227
- * Path segment under the file id. Must be a single segment (no `/`).
228
- * Full case id = `<fileId>/<id>` (e.g. file `weather.eval.ts` + `nyc` →
229
- * `weather/nyc`).
230
- */
231
- id: string;
232
- description?: string;
233
- tags?: string[];
234
- timeoutMs?: number;
235
- /**
236
- * How many times to run this datapoint (default `1`, or the file-level
237
- * {@link EvalConfig.iterations}). When greater than 1, discovery expands
238
- * to `<fileId>/<id>/1` … `<fileId>/<id>/<n>` so each iteration is its own
239
- * concurrent case.
240
- */
241
- iterations?: number;
242
- /** Free-form data carried onto the result and every reporter. */
243
- metadata?: Record<string, unknown>;
244
- /** Judge model for this datapoint (overrides `evals.config.ts`). */
245
- judge?: EvalJudgeConfig;
246
- /** Destinations for just this datapoint, in addition to config reporters. */
247
- reporters?: EvalReporter[];
248
- test: (t: EvalTestContext) => Promise<void>;
249
- }
250
-
251
- /**
252
- * Eval file config. Provide either a single {@link test} or a {@link cases}
253
- * array — not both.
254
- */
255
- export interface EvalConfig {
256
- description?: string;
257
- tags?: string[];
258
- timeoutMs?: number;
259
- /**
260
- * Default iterations for every datapoint in this file (default `1`).
261
- * Case-level {@link EvalDatapoint.iterations} overrides this.
262
- */
263
- iterations?: number;
264
- /** Free-form data carried onto every result in this file and to reporters. */
265
- metadata?: Record<string, unknown>;
266
- /** Judge model for this file (overrides `evals.config.ts`). */
267
- judge?: EvalJudgeConfig;
268
- /** Destinations for this file, in addition to config reporters. */
269
- reporters?: EvalReporter[];
270
- /** Single-datapoint shorthand. Case id = file path under `evals/`. */
271
- test?: (t: EvalTestContext) => Promise<void>;
272
- /** Multiple datapoints in this file. Each id = `<fileId>/<case.id>`. */
273
- cases?: EvalDatapoint[];
274
- }
275
-
276
- /** Normalized single datapoint used by the runner after discovery. */
277
- export interface EvalCaseDefinition {
278
- description?: string;
279
- tags?: string[];
280
- timeoutMs?: number;
281
- /** Total iterations configured for the authored datapoint. */
282
- iterations?: number;
283
- /** 1-based iteration index for this expanded runnable case. */
284
- iteration?: number;
285
- metadata?: Record<string, unknown>;
286
- judge?: EvalJudgeConfig;
287
- reporters?: EvalReporter[];
288
- test: (t: EvalTestContext) => Promise<void>;
289
- readonly __agentServe: "eval";
290
- }
291
-
292
- export type EvalDefinition = EvalConfig & { readonly __agentServe: "eval" };
293
-
294
- /**
295
- * Author an eval file. The path under `evals/` is the file id:
296
- * `evals/weather.eval.ts` → `weather`. With a single `test`, that is also
297
- * the case id. With `cases`, each datapoint is `<fileId>/<case.id>`.
298
- */
299
- export function normalizeEvalIterations(value: unknown): number {
300
- return normalizePositiveInt(value, {
301
- label: "defineEval: iterations",
302
- max: EVAL_MAX_ITERATIONS,
303
- });
304
- }
305
-
306
- export function defineEval(config: EvalConfig): EvalDefinition {
307
- const hasTest = typeof config.test === "function";
308
- const hasCases = config.cases !== undefined;
309
- if (hasTest && hasCases) {
310
- throw new Error("defineEval: set either test or cases, not both");
311
- }
312
- if (!hasTest && !hasCases) {
313
- throw new Error("defineEval requires test(t) or a non-empty cases array");
314
- }
315
- if (config.iterations !== undefined) {
316
- normalizeEvalIterations(config.iterations);
317
- }
318
- if (hasCases) {
319
- if (!Array.isArray(config.cases) || config.cases.length === 0) {
320
- throw new Error("defineEval: cases must be a non-empty array");
321
- }
322
- const seen = new Set<string>();
323
- for (const datapoint of config.cases) {
324
- validateDatapointId(datapoint.id);
325
- if (seen.has(datapoint.id)) {
326
- throw new Error(`defineEval: duplicate case id ${JSON.stringify(datapoint.id)}`);
327
- }
328
- seen.add(datapoint.id);
329
- if (typeof datapoint.test !== "function") {
330
- throw new Error(`defineEval: cases[${JSON.stringify(datapoint.id)}] requires test(t)`);
331
- }
332
- if (datapoint.iterations !== undefined) {
333
- normalizeEvalIterations(datapoint.iterations);
334
- }
335
- }
336
- }
337
- return brandDefinition("eval", config);
338
- }
339
-
340
- function validateDatapointId(id: unknown): asserts id is string {
341
- if (typeof id !== "string" || id.length === 0) {
342
- throw new Error("defineEval: each case needs a non-empty string id");
343
- }
344
- if (id.includes("/") || id.includes("\\") || id.includes("..")) {
345
- throw new Error(
346
- `defineEval: case id must be a single path segment (got ${JSON.stringify(id)})`,
347
- );
348
- }
349
- }
350
-
351
- /**
352
- * Expand a file-level definition into runnable datapoints.
353
- * Exported for tests and tooling.
354
- *
355
- * When `iterations` > 1, each authored datapoint expands to
356
- * `<fileId>/<case.id>/1` … `<fileId>/<case.id>/<n>` (single-test files
357
- * expand to `<fileId>/1` … `<fileId>/<n>`).
358
- */
359
- export function expandEvalDefinition(
360
- fileId: string,
361
- definition: EvalDefinition,
362
- ): Array<{ id: string; definition: EvalCaseDefinition }> {
363
- if (definition.cases !== undefined) {
364
- return definition.cases.flatMap(datapoint => {
365
- const description = datapoint.description ?? definition.description;
366
- const timeoutMs = datapoint.timeoutMs ?? definition.timeoutMs;
367
- const iterations = normalizeEvalIterations(
368
- datapoint.iterations ?? definition.iterations ?? 1,
369
- );
370
- const metadata =
371
- datapoint.metadata === undefined && definition.metadata === undefined
372
- ? undefined
373
- : { ...definition.metadata, ...datapoint.metadata };
374
- return expandIterations({
375
- baseId: `${fileId}/${datapoint.id}`,
376
- description,
377
- tags: datapoint.tags ?? definition.tags,
378
- timeoutMs,
379
- iterations,
380
- metadata,
381
- judge: datapoint.judge ?? definition.judge,
382
- reporters: mergeReporters(definition.reporters, datapoint.reporters),
383
- test: datapoint.test,
384
- });
385
- });
386
- }
387
- if (typeof definition.test !== "function") {
388
- throw new Error(`defineEval(${fileId}): missing test(t)`);
389
- }
390
- const iterations = normalizeEvalIterations(definition.iterations ?? 1);
391
- return expandIterations({
392
- baseId: fileId,
393
- description: definition.description,
394
- tags: definition.tags,
395
- timeoutMs: definition.timeoutMs,
396
- iterations,
397
- metadata: definition.metadata,
398
- judge: definition.judge,
399
- reporters: definition.reporters,
400
- test: definition.test,
401
- });
402
- }
403
-
404
- /** Union file-level and case-level reporters, keeping each instance once. */
405
- function mergeReporters(
406
- fileLevel: EvalReporter[] | undefined,
407
- caseLevel: EvalReporter[] | undefined,
408
- ): EvalReporter[] | undefined {
409
- if (fileLevel === undefined) {
410
- return caseLevel;
411
- }
412
- if (caseLevel === undefined) {
413
- return fileLevel;
414
- }
415
- return [...new Set([...fileLevel, ...caseLevel])];
416
- }
417
-
418
- function expandIterations(args: {
419
- baseId: string;
420
- description?: string;
421
- tags?: string[];
422
- timeoutMs?: number;
423
- iterations: number;
424
- metadata?: Record<string, unknown>;
425
- judge?: EvalJudgeConfig;
426
- reporters?: EvalReporter[];
427
- test: (t: EvalTestContext) => Promise<void>;
428
- }): Array<{ id: string; definition: EvalCaseDefinition }> {
429
- const out: Array<{ id: string; definition: EvalCaseDefinition }> = [];
430
- for (let iteration = 1; iteration <= args.iterations; iteration++) {
431
- const id = args.iterations === 1 ? args.baseId : `${args.baseId}/${iteration}`;
432
- const description =
433
- args.iterations === 1 || args.description === undefined
434
- ? args.description
435
- : `${args.description} (iteration ${iteration}/${args.iterations})`;
436
- out.push({
437
- id,
438
- definition: brandDefinition("eval", {
439
- ...(description !== undefined ? { description } : {}),
440
- ...(args.tags !== undefined ? { tags: args.tags } : {}),
441
- ...(args.timeoutMs !== undefined ? { timeoutMs: args.timeoutMs } : {}),
442
- metadata: args.metadata,
443
- judge: args.judge,
444
- reporters: args.reporters,
445
- iterations: args.iterations,
446
- iteration,
447
- test: args.test,
448
- }),
449
- });
450
- }
451
- return out;
452
- }
453
-
454
- /**
455
- * Whether a discovered case id matches a CLI filter.
456
- * - exact datapoint: `weather/nyc`
457
- * - whole file / prefix: `weather` selects `weather`, `weather/nyc`, …
458
- * - multiple filters: OR
459
- */
460
- export function matchesEvalIdFilter(caseId: string, filter: string): boolean {
461
- return caseId === filter || caseId.startsWith(`${filter}/`);
462
- }
463
-
464
- /**
465
- * Tag for suite-aggregator datapoints that wait on sibling cases from the
466
- * same eval file (e.g. `deepsec-recall/overall`). Selecting a summary case
467
- * alone expands the batch to the whole file via
468
- * {@link expandSummarySuiteSelection}.
469
- */
470
- export const EVAL_SUMMARY_TAG = "summary";
471
-
472
- /** True when `tags` marks a suite-aggregator case. */
473
- export function isEvalSummaryCase(tags: readonly string[] | undefined): boolean {
474
- return tags?.includes(EVAL_SUMMARY_TAG) ?? false;
475
- }
476
-
477
- /**
478
- * If `selected` includes any summary-tagged suite aggregator, pull in every
479
- * other datapoint from the same `fileId` so the aggregator is not run alone.
480
- * Preserves discovery order from `all`.
481
- */
482
- export function expandSummarySuiteSelection<T extends { id: string; fileId: string }>(
483
- all: readonly T[],
484
- selected: readonly T[],
485
- isSummary: (item: T) => boolean,
486
- ): T[] {
487
- const fileIdsNeedingSuite = new Set(
488
- selected.filter(item => isSummary(item)).map(item => item.fileId),
489
- );
490
- if (fileIdsNeedingSuite.size === 0) {
491
- return [...selected];
492
- }
493
- const selectedIds = new Set(selected.map(item => item.id));
494
- const extras = all.filter(
495
- item => fileIdsNeedingSuite.has(item.fileId) && !selectedIds.has(item.id),
496
- );
497
- if (extras.length === 0) {
498
- return [...selected];
499
- }
500
- const want = new Set([...selectedIds, ...extras.map(item => item.id)]);
501
- return all.filter(item => want.has(item.id));
502
- }
503
-
504
- /**
505
- * Hard ceiling for concurrent eval cases.
506
- *
507
- * Each case issues model provider requests; unbounded parallelism would
508
- * overwhelm provider rate limits and exhaust local API quota.
509
- */
510
- export const EVAL_MAX_CONCURRENCY_LIMIT = 200;
511
-
512
- /** Default playground batches kept in the serve process when `maxPlaygroundRuns` is omitted. */
513
- export const EVAL_DEFAULT_MAX_PLAYGROUND_RUNS = 20;
514
-
515
- /** Hard ceiling for {@link EvalConfigFile.maxPlaygroundRuns}. */
516
- export const EVAL_MAX_PLAYGROUND_RUNS = 500;
517
-
518
- export type EvalCaseRunStatus = "pending" | "running" | "done";
519
- export type EvalBatchStatus = "running" | "completed" | "failed" | "cancelled";
520
-
521
- /** One case inside a playground / HTTP eval batch snapshot. */
522
- export interface EvalCaseSnapshot {
523
- id: string;
524
- fileId: string;
525
- description?: string;
526
- tags?: string[];
527
- status: EvalCaseRunStatus;
528
- ok?: boolean;
529
- /** Full grade, including `scored` (soft threshold miss) and `skipped`. */
530
- verdict?: EvalVerdict;
531
- /** Reason passed to `t.skip(...)`. */
532
- skipReason?: string;
533
- assertions?: EvalAssertionResult[];
534
- sessionId?: string;
535
- durationMs?: number;
536
- error?: string;
537
- logs?: string[];
538
- /** Structured scores from {@link EvalTestContext.metric}. */
539
- metrics?: Record<string, string | number>;
540
- /** Author-supplied metadata from `defineEval({ metadata })`. */
541
- metadata?: Record<string, unknown>;
542
- inputs?: string[];
543
- finalText?: string;
544
- tools?: string[];
545
- toolCalls?: Array<{
546
- toolName: string;
547
- args?: unknown;
548
- output?: unknown;
549
- isError: boolean;
550
- }>;
551
- }
552
-
553
- /** Playground / HTTP snapshot of one eval batch (`POST /v1/dev/evals/runs`). */
554
- export interface EvalRunSnapshot {
555
- runId: string;
556
- status: EvalBatchStatus;
557
- startedAt: string;
558
- finishedAt?: string;
559
- error?: string;
560
- summary: {
561
- passed: number;
562
- failed: number;
563
- /**
564
- * Cases that only missed a soft threshold (fatal only under `--strict`).
565
- * Optional: a batch persisted by an older serve process has no such count.
566
- */
567
- scored?: number;
568
- /** Cases ended by `t.skip(...)`; they never change the exit code. */
569
- skipped?: number;
570
- total: number;
571
- done: number;
572
- };
573
- cases: EvalCaseSnapshot[];
574
- config: {
575
- maxConcurrency?: number;
576
- timeoutMs?: number;
577
- maxPlaygroundRuns?: number;
578
- durableRuns?: boolean;
579
- };
580
- }
581
-
582
- /** One discovered eval datapoint as returned by {@link HostEvalsApi.list}. */
583
- export interface HostEvalListItem {
584
- id: string;
585
- fileId: string;
586
- description?: string;
587
- tags?: string[];
588
- }
589
-
590
- /** Config slice returned with {@link HostEvalsApi.list}. */
591
- export interface HostEvalListConfig {
592
- maxConcurrency?: number;
593
- timeoutMs?: number;
594
- maxPlaygroundRuns: number;
595
- /** True when `agent/storage.ts` declares an `evals` table. */
596
- durableRuns: boolean;
597
- }
598
-
599
- /** Input for {@link HostEvalsApi.start} (same filters as `POST /v1/dev/evals/runs`). */
600
- export interface HostStartEvalRunInput {
601
- filterIds?: string[];
602
- tags?: string[];
603
- /** Per-case timeout override (same semantics as CLI `--timeout-ms`). */
604
- timeoutMs?: number;
605
- }
606
-
607
- /**
608
- * Host-facing playground eval batches — the same surface as
609
- * `/v1/dev/evals*` and `agent-sdk eval --prod`. Attached to
610
- * {@link import("./types.js").HostContext.evals} by `serve`.
611
- */
612
- export interface HostEvalsApi {
613
- list(): Promise<{
614
- evals: HostEvalListItem[];
615
- config: HostEvalListConfig;
616
- }>;
617
- get(runId: string): Promise<EvalRunSnapshot | undefined>;
618
- listRunsWithActive(): Promise<{
619
- runs: EvalRunSnapshot[];
620
- activeRunId?: string;
621
- }>;
622
- start(input?: HostStartEvalRunInput): Promise<EvalRunSnapshot>;
623
- /** Cancel a running batch by Eval ID (`runId`). */
624
- cancel(runId: string): Promise<EvalRunSnapshot>;
625
- }
626
-
627
- export interface EvalConfigFile {
628
- timeoutMs?: number;
629
- /**
630
- * Max number of eval cases to run in parallel. Required.
631
- * Hard-capped at {@link EVAL_MAX_CONCURRENCY_LIMIT} due to model provider
632
- * request limits.
633
- */
634
- maxConcurrency: number;
635
- /**
636
- * Default judge model for `t.judge.*` across this tree. Optional: a tree of
637
- * fully deterministic evals never needs one.
638
- */
639
- judge?: EvalJudgeConfig;
640
- /**
641
- * Destinations that observe **every** case in the run — the right place for a
642
- * shared one, so you do not repeat it in each eval file. `--skip-report`
643
- * suppresses them for a local iteration loop.
644
- */
645
- reporters?: EvalReporter[];
646
- /**
647
- * Optional. Max batches kept in the **playground / `/v1/dev/evals*`**
648
- * history window (in-memory, and pruned from the `defineStorage` evals
649
- * table when one is configured). Includes server-side batches started by
650
- * `agent-sdk eval --prod` or `--url` (not the default local harness).
651
- *
652
- * Default {@link EVAL_DEFAULT_MAX_PLAYGROUND_RUNS}; hard-capped at
653
- * {@link EVAL_MAX_PLAYGROUND_RUNS}. Newest batches win.
654
- */
655
- maxPlaygroundRuns?: number;
656
- }
657
-
658
- /**
659
- * Defaults for every eval under `evals/` (`evals/evals.config.ts`).
660
- * `maxConcurrency` is required (1–{@link EVAL_MAX_CONCURRENCY_LIMIT}).
661
- *
662
- * Playground batches default to **in-memory only**; author an `evals`
663
- * table in `agent/storage.ts` (`defineStorage`) to survive serve restart.
664
- */
665
- export function defineEvalConfig(config: EvalConfigFile): EvalConfigFile {
666
- return {
667
- ...(config.timeoutMs === undefined ? {} : { timeoutMs: config.timeoutMs }),
668
- maxConcurrency: normalizeEvalMaxConcurrency(config.maxConcurrency),
669
- maxPlaygroundRuns: normalizeEvalMaxPlaygroundRuns(
670
- config.maxPlaygroundRuns ?? EVAL_DEFAULT_MAX_PLAYGROUND_RUNS,
671
- ),
672
- judge: config.judge,
673
- reporters: config.reporters,
674
- };
675
- }
676
-
677
- /**
678
- * Validate and enforce the hard concurrency ceiling.
679
- */
680
- export function normalizeEvalMaxConcurrency(value: unknown): number {
681
- return normalizePositiveInt(value, {
682
- label: "evals.config.ts: maxConcurrency",
683
- max: EVAL_MAX_CONCURRENCY_LIMIT,
684
- maxMessage: `evals.config.ts: maxConcurrency ${String(value)} exceeds the hard limit of ${EVAL_MAX_CONCURRENCY_LIMIT} (model provider request limits)`,
685
- });
686
- }
687
-
688
- /** Validate {@link EvalConfigFile.maxPlaygroundRuns}. */
689
- export function normalizeEvalMaxPlaygroundRuns(value: unknown): number {
690
- return normalizePositiveInt(value, {
691
- label: "evals.config.ts: maxPlaygroundRuns",
692
- max: EVAL_MAX_PLAYGROUND_RUNS,
693
- });
694
- }
695
-
696
- /**
697
- * Effective playground history window. Invalid values fall back to
698
- * {@link EVAL_DEFAULT_MAX_PLAYGROUND_RUNS} (same as a missing field).
699
- */
700
- export function resolveEvalMaxPlaygroundRuns(value: unknown): number {
701
- if (value === undefined) {
702
- return EVAL_DEFAULT_MAX_PLAYGROUND_RUNS;
703
- }
704
- try {
705
- return normalizeEvalMaxPlaygroundRuns(value);
706
- } catch {
707
- return EVAL_DEFAULT_MAX_PLAYGROUND_RUNS;
708
- }
709
- }