@cursor/july 0.1.108 → 0.1.109

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 (343) hide show
  1. package/AGENTS.md +2 -6
  2. package/README.md +3 -6
  3. package/dist/channels/bitbucket/api.d.ts +41 -0
  4. package/dist/channels/bitbucket/api.d.ts.map +1 -1
  5. package/dist/channels/bitbucket/api.js +260 -0
  6. package/dist/channels/bitbucket/binding.d.ts +4 -0
  7. package/dist/channels/bitbucket/binding.d.ts.map +1 -1
  8. package/dist/channels/bitbucket/binding.js +16 -0
  9. package/dist/channels/bitbucket/index.d.ts +1 -1
  10. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  11. package/dist/channels/bitbucket/index.js +1 -1
  12. package/dist/channels/gitlab/api.d.ts +27 -0
  13. package/dist/channels/gitlab/api.d.ts.map +1 -1
  14. package/dist/channels/gitlab/api.js +88 -0
  15. package/dist/channels/gitlab/binding.d.ts +5 -0
  16. package/dist/channels/gitlab/binding.d.ts.map +1 -1
  17. package/dist/channels/gitlab/binding.js +10 -0
  18. package/dist/channels/gitlab/index.d.ts +1 -1
  19. package/dist/channels/gitlab/index.d.ts.map +1 -1
  20. package/dist/channels/gitlab/index.js +1 -1
  21. package/dist/channels/slack/dispatch.d.ts +10 -0
  22. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  23. package/dist/channels/slack/dispatch.js +20 -3
  24. package/dist/channels/slack/slack-channel.d.ts +12 -5
  25. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  26. package/dist/channels/slack/slack-channel.js +59 -8
  27. package/dist/docs/404.html +2 -2
  28. package/dist/docs/assets/{app.BASKM3M4.js → app.Cr-wVbnB.js} +1 -1
  29. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.js → building-with-agents.md.D0KbSkJn.js} +2 -2
  30. package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.lean.js → building-with-agents.md.D0KbSkJn.lean.js} +1 -1
  31. package/dist/docs/assets/chunks/@localSearchIndexroot.CFVQ4S17.js +1 -0
  32. package/dist/docs/assets/chunks/{VPLocalSearchBox.BOKxlYGP.js → VPLocalSearchBox.CVQERt56.js} +1 -1
  33. package/dist/docs/assets/chunks/{theme.DbDZW-zb.js → theme.Dnsd3XOn.js} +2 -2
  34. package/dist/docs/assets/concepts.md.B4o63Gul.js +1 -0
  35. package/dist/docs/assets/evals.md.C7JLjoEP.js +211 -0
  36. package/dist/docs/assets/evals.md.C7JLjoEP.lean.js +1 -0
  37. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.js +10 -0
  38. package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.lean.js +1 -0
  39. package/dist/docs/assets/{guides_github.md.BH33UEBJ.js → guides_github.md.TZaTZlfz.js} +13 -3
  40. package/dist/docs/assets/{guides_github.md.BH33UEBJ.lean.js → guides_github.md.TZaTZlfz.lean.js} +1 -1
  41. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.js +14 -0
  42. package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.lean.js +1 -0
  43. package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.js → guides_webhooks.md.CJK484ex.js} +2 -2
  44. package/dist/docs/assets/{hillclimbing.md.CpTGTCle.js → hillclimbing.md.BOiVo1tf.js} +1 -1
  45. package/dist/docs/assets/index.md.DD9Q2XuJ.js +5 -0
  46. package/dist/docs/assets/{index.md.BjH1w2ZW.lean.js → index.md.DD9Q2XuJ.lean.js} +1 -1
  47. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.js → reference_channels.md.CAo-iK4j.js} +2 -2
  48. package/dist/docs/assets/{reference_channels.md.D-qTqwcq.lean.js → reference_channels.md.CAo-iK4j.lean.js} +1 -1
  49. package/dist/docs/assets/{reference_cli.md.Ca26u0Es.js → reference_cli.md.Deg7849l.js} +1 -1
  50. package/dist/docs/assets/{reference_extensions.md.CPWt00ds.js → reference_extensions.md.ZAVUyuEX.js} +2 -2
  51. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.js → reference_hooks.md.BlM_bOg6.js} +3 -3
  52. package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.lean.js → reference_hooks.md.BlM_bOg6.lean.js} +1 -1
  53. package/dist/docs/assets/{reference_http-api.md.oySXBO8o.js → reference_http-api.md.BwaCo-VO.js} +1 -1
  54. package/dist/docs/assets/{reference_playground.md.4myJPxrf.js → reference_playground.md.DLnoaczX.js} +1 -1
  55. package/dist/docs/assets/{reference_playground.md.4myJPxrf.lean.js → reference_playground.md.DLnoaczX.lean.js} +1 -1
  56. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.js → reference_project-layout.md.BEU8MtQV.js} +3 -3
  57. package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.lean.js → reference_project-layout.md.BEU8MtQV.lean.js} +1 -1
  58. package/dist/docs/assets/reference_sessions.md.CyXV1MUw.js +1 -0
  59. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.js +35 -0
  60. package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.lean.js +1 -0
  61. package/dist/docs/assets/{skills_evals.md.BhovOvrl.js → skills_evals.md.DFxYPErF.js} +3 -3
  62. package/dist/docs/assets/skills_evals.md.DFxYPErF.lean.js +1 -0
  63. package/dist/docs/assets/{skills_framework-map.md.D-tFZhFS.js → skills_framework-map.md.BxLSOhSY.js} +1 -1
  64. package/dist/docs/assets/skills_index.md.DL7EHaQ-.js +1 -0
  65. package/dist/docs/assets/skills_index.md.DL7EHaQ-.lean.js +1 -0
  66. package/dist/docs/assets/{storage.md.BOHeqk2M.js → storage.md.BUrhJ-Zz.js} +4 -4
  67. package/dist/docs/assets/{storage.md.BOHeqk2M.lean.js → storage.md.BUrhJ-Zz.lean.js} +1 -1
  68. package/dist/docs/building-with-agents.html +5 -5
  69. package/dist/docs/building-with-agents.md +3 -2
  70. package/dist/docs/concepts.html +5 -5
  71. package/dist/docs/concepts.md +2 -4
  72. package/dist/docs/deployment.html +4 -4
  73. package/dist/docs/evals.html +161 -35
  74. package/dist/docs/evals.md +612 -297
  75. package/dist/docs/guides/agent-to-agent.html +4 -4
  76. package/dist/docs/guides/bitbucket.html +36 -0
  77. package/dist/docs/guides/bitbucket.md +84 -0
  78. package/dist/docs/guides/cloud-agents.html +4 -4
  79. package/dist/docs/guides/convert-automation.html +4 -4
  80. package/dist/docs/guides/github.html +17 -7
  81. package/dist/docs/guides/github.md +31 -0
  82. package/dist/docs/guides/gitlab.html +40 -0
  83. package/dist/docs/guides/gitlab.md +92 -0
  84. package/dist/docs/guides/grokbot-agents.html +4 -4
  85. package/dist/docs/guides/human-in-the-loop.html +4 -4
  86. package/dist/docs/guides/improve.html +4 -4
  87. package/dist/docs/guides/mcp-oauth.html +4 -4
  88. package/dist/docs/guides/opentelemetry.html +4 -4
  89. package/dist/docs/guides/slack.html +5 -5
  90. package/dist/docs/guides/webhooks.html +6 -6
  91. package/dist/docs/guides/webhooks.md +4 -2
  92. package/dist/docs/hashmap.json +1 -1
  93. package/dist/docs/hillclimbing.html +6 -6
  94. package/dist/docs/hillclimbing.md +2 -2
  95. package/dist/docs/index.html +6 -6
  96. package/dist/docs/index.md +10 -6
  97. package/dist/docs/llms-full.txt +1113 -778
  98. package/dist/docs/llms.txt +6 -5
  99. package/dist/docs/quickstart.html +4 -4
  100. package/dist/docs/reference/agent-config.html +4 -4
  101. package/dist/docs/reference/artifacts.html +4 -4
  102. package/dist/docs/reference/channels.html +6 -6
  103. package/dist/docs/reference/channels.md +16 -3
  104. package/dist/docs/reference/cli.html +6 -6
  105. package/dist/docs/reference/cli.md +6 -4
  106. package/dist/docs/reference/connections.html +4 -4
  107. package/dist/docs/reference/extensions.html +7 -7
  108. package/dist/docs/reference/extensions.md +0 -3
  109. package/dist/docs/reference/hooks.html +7 -7
  110. package/dist/docs/reference/hooks.md +9 -12
  111. package/dist/docs/reference/http-api.html +6 -6
  112. package/dist/docs/reference/http-api.md +2 -3
  113. package/dist/docs/reference/instructions.html +4 -4
  114. package/dist/docs/reference/playground.html +5 -5
  115. package/dist/docs/reference/playground.md +0 -4
  116. package/dist/docs/reference/project-layout.html +7 -7
  117. package/dist/docs/reference/project-layout.md +1 -8
  118. package/dist/docs/reference/prompt.html +4 -4
  119. package/dist/docs/reference/result.html +4 -4
  120. package/dist/docs/reference/schedules.html +4 -4
  121. package/dist/docs/reference/sessions.html +5 -5
  122. package/dist/docs/reference/sessions.md +1 -2
  123. package/dist/docs/reference/skills.html +4 -4
  124. package/dist/docs/reference/subagents.html +4 -4
  125. package/dist/docs/reference/tools.html +4 -4
  126. package/dist/docs/scaffolding-agents.html +4 -4
  127. package/dist/docs/skills/create-agent.html +4 -4
  128. package/dist/docs/skills/debug.html +4 -4
  129. package/dist/docs/skills/deploy.html +61 -0
  130. package/dist/docs/skills/deploy.md +161 -0
  131. package/dist/docs/skills/evals.html +8 -8
  132. package/dist/docs/skills/evals.md +44 -6
  133. package/dist/docs/skills/framework-map.html +5 -5
  134. package/dist/docs/skills/framework-map.md +1 -2
  135. package/dist/docs/skills/github.html +4 -4
  136. package/dist/docs/skills/hillclimb.html +4 -4
  137. package/dist/docs/skills/index.html +6 -6
  138. package/dist/docs/skills/index.md +1 -1
  139. package/dist/docs/skills/mcp-auth.html +4 -4
  140. package/dist/docs/skills/otel.html +4 -4
  141. package/dist/docs/skills/setup-slack.html +4 -4
  142. package/dist/docs/storage.html +8 -8
  143. package/dist/docs/storage.md +15 -24
  144. package/dist/docs/templates/agentic-owners.html +4 -4
  145. package/dist/docs/templates/agents-md.html +4 -4
  146. package/dist/docs/templates/code-wiki.html +4 -4
  147. package/dist/docs/templates/demo.html +4 -4
  148. package/dist/docs/templates/grokbot-agents.html +4 -4
  149. package/dist/docs/templates/pr-autofixer.html +4 -4
  150. package/dist/docs/templates/security-help.html +4 -4
  151. package/dist/docs/templates/security-reviewer.html +4 -4
  152. package/dist/docs/templates/triage.html +4 -4
  153. package/dist/docs/troubleshooting.html +4 -4
  154. package/dist/extensions.d.ts +2 -3
  155. package/dist/extensions.d.ts.map +1 -1
  156. package/dist/extensions.js +2 -5
  157. package/dist/index.d.ts +2 -3
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +1 -2
  160. package/dist/internal/authored-alias-hooks.d.ts +5 -0
  161. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  162. package/dist/internal/authored-alias-hooks.js +17 -0
  163. package/dist/internal/authored-loaders.d.ts +4 -0
  164. package/dist/internal/authored-loaders.d.ts.map +1 -1
  165. package/dist/internal/authored-loaders.js +21 -2
  166. package/dist/internal/cli-ax.d.ts +1 -2
  167. package/dist/internal/cli-ax.d.ts.map +1 -1
  168. package/dist/internal/cli-ax.js +1 -2
  169. package/dist/internal/continuation-channel.d.ts.map +1 -1
  170. package/dist/internal/continuation-channel.js +2 -2
  171. package/dist/internal/continuation-identity.js +8 -3
  172. package/dist/internal/discovery/agent.d.ts +1 -1
  173. package/dist/internal/discovery/agent.d.ts.map +1 -1
  174. package/dist/internal/discovery/agent.js +0 -5
  175. package/dist/internal/discovery/extension-overlay.d.ts +1 -2
  176. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -1
  177. package/dist/internal/discovery/extension-overlay.js +0 -14
  178. package/dist/internal/discovery/extensions.d.ts +1 -2
  179. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  180. package/dist/internal/discovery/extensions.js +4 -22
  181. package/dist/internal/discovery/info.d.ts.map +1 -1
  182. package/dist/internal/discovery/info.js +42 -24
  183. package/dist/internal/discovery/modules.js +0 -1
  184. package/dist/internal/discovery/project.d.ts.map +1 -1
  185. package/dist/internal/discovery/project.js +0 -16
  186. package/dist/internal/eval-runner.js +0 -1
  187. package/dist/internal/framework-file-storage.d.ts +4 -5
  188. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  189. package/dist/internal/framework-file-storage.js +4 -5
  190. package/dist/internal/framework-storage-selection.d.ts +2 -2
  191. package/dist/internal/framework-storage-selection.js +2 -2
  192. package/dist/internal/init-scaffold.d.ts.map +1 -1
  193. package/dist/internal/init-scaffold.js +1 -2
  194. package/dist/internal/install-cursor-skills.d.ts +5 -2
  195. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  196. package/dist/internal/install-cursor-skills.js +25 -5
  197. package/dist/internal/run-client.d.ts +1 -1
  198. package/dist/internal/sdk-runner.js +1 -1
  199. package/dist/internal/server.js +0 -14
  200. package/dist/internal/session-engine.d.ts +5 -35
  201. package/dist/internal/session-engine.d.ts.map +1 -1
  202. package/dist/internal/session-engine.js +17 -162
  203. package/dist/internal/storage-coordinator.d.ts +5 -19
  204. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  205. package/dist/internal/storage-coordinator.js +3 -62
  206. package/dist/internal/storage-roles.d.ts +4 -9
  207. package/dist/internal/storage-roles.d.ts.map +1 -1
  208. package/dist/internal/storage-roles.js +2 -2
  209. package/dist/playground/assets/index-Bhxzrcf6.css +1 -0
  210. package/dist/playground/assets/index-CqLX5uF3.js +67 -0
  211. package/dist/playground/index.html +2 -2
  212. package/dist/storage-backends/cursor-hosted-v2.d.ts +4 -5
  213. package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
  214. package/dist/storage-backends/cursor-hosted-v2.js +4 -5
  215. package/dist/storage-backends/cursor-hosted.d.ts +1 -2
  216. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  217. package/dist/storage-backends/cursor-hosted.js +0 -30
  218. package/dist/storage-backends/file-kv.d.ts +9 -12
  219. package/dist/storage-backends/file-kv.d.ts.map +1 -1
  220. package/dist/storage-backends/file-kv.js +11 -47
  221. package/dist/storage-protocol.d.ts +3 -11
  222. package/dist/storage-protocol.d.ts.map +1 -1
  223. package/dist/storage-protocol.js +3 -11
  224. package/dist/storage.d.ts +8 -36
  225. package/dist/storage.d.ts.map +1 -1
  226. package/dist/storage.js +8 -44
  227. package/dist/types.d.ts +20 -57
  228. package/dist/types.d.ts.map +1 -1
  229. package/docs/README.md +10 -6
  230. package/docs/building-with-agents.md +3 -2
  231. package/docs/concepts.md +2 -4
  232. package/docs/evals.md +613 -298
  233. package/docs/guides/bitbucket.md +89 -0
  234. package/docs/guides/github.md +31 -0
  235. package/docs/guides/gitlab.md +97 -0
  236. package/docs/guides/webhooks.md +4 -2
  237. package/docs/hillclimbing.md +2 -2
  238. package/docs/reference/channels.md +16 -3
  239. package/docs/reference/cli.md +6 -4
  240. package/docs/reference/extensions.md +0 -3
  241. package/docs/reference/hooks.md +9 -12
  242. package/docs/reference/http-api.md +2 -3
  243. package/docs/reference/playground.md +0 -4
  244. package/docs/reference/project-layout.md +1 -8
  245. package/docs/reference/sessions.md +1 -2
  246. package/docs/skills/index.md +2 -2
  247. package/docs/storage.md +15 -24
  248. package/package.json +1 -7
  249. package/skills/deploy/SKILL.md +169 -0
  250. package/skills/evals/SKILL.md +45 -8
  251. package/skills/framework-map/SKILL.md +1 -2
  252. package/src/channels/bitbucket/api.ts +341 -0
  253. package/src/channels/bitbucket/binding.ts +25 -0
  254. package/src/channels/bitbucket/index.ts +2 -0
  255. package/src/channels/gitlab/api.ts +123 -0
  256. package/src/channels/gitlab/binding.ts +12 -0
  257. package/src/channels/gitlab/index.ts +1 -0
  258. package/src/channels/slack/dispatch.ts +30 -0
  259. package/src/channels/slack/slack-channel.ts +69 -7
  260. package/src/extensions.ts +2 -6
  261. package/src/index.ts +0 -3
  262. package/src/internal/authored-alias-hooks.ts +32 -0
  263. package/src/internal/authored-loaders.ts +26 -2
  264. package/src/internal/cli-ax.ts +1 -2
  265. package/src/internal/continuation-channel.ts +2 -1
  266. package/src/internal/continuation-identity.ts +10 -2
  267. package/src/internal/discovery/agent.ts +1 -7
  268. package/src/internal/discovery/extension-overlay.ts +0 -18
  269. package/src/internal/discovery/extensions.ts +2 -26
  270. package/src/internal/discovery/info.ts +3 -13
  271. package/src/internal/discovery/modules.ts +0 -1
  272. package/src/internal/discovery/project.ts +0 -16
  273. package/src/internal/eval-runner.ts +0 -1
  274. package/src/internal/framework-file-storage.ts +4 -5
  275. package/src/internal/framework-storage-selection.ts +2 -2
  276. package/src/internal/init-scaffold.ts +1 -2
  277. package/src/internal/install-cursor-skills.ts +38 -5
  278. package/src/internal/run-client.ts +1 -1
  279. package/src/internal/sdk-runner.ts +1 -1
  280. package/src/internal/server.ts +0 -16
  281. package/src/internal/session-engine.ts +14 -202
  282. package/src/internal/storage-coordinator.ts +5 -76
  283. package/src/internal/storage-roles.ts +4 -9
  284. package/src/storage-backends/cursor-hosted-v2.ts +4 -7
  285. package/src/storage-backends/cursor-hosted.ts +0 -37
  286. package/src/storage-backends/file-kv.ts +10 -51
  287. package/src/storage-protocol.ts +3 -17
  288. package/src/storage.ts +10 -101
  289. package/src/types.ts +19 -56
  290. package/templates/demo/README.md +10 -6
  291. package/templates/demo/agent/channels/github.ts +2 -0
  292. package/templates/demo/agent/channels/queue.ts +6 -2
  293. package/templates/demo/agent/lib/repos.ts +5 -0
  294. package/templates/demo/init.json +25 -0
  295. package/dist/ab.d.ts +0 -209
  296. package/dist/ab.d.ts.map +0 -1
  297. package/dist/ab.js +0 -246
  298. package/dist/docs/ab.html +0 -80
  299. package/dist/docs/ab.md +0 -332
  300. package/dist/docs/assets/ab.md.mlVgqvSk.js +0 -54
  301. package/dist/docs/assets/ab.md.mlVgqvSk.lean.js +0 -1
  302. package/dist/docs/assets/chunks/@localSearchIndexroot.BHZYsNVi.js +0 -1
  303. package/dist/docs/assets/concepts.md.DgEcZOfT.js +0 -1
  304. package/dist/docs/assets/evals.md.C1ekS3k2.js +0 -85
  305. package/dist/docs/assets/evals.md.C1ekS3k2.lean.js +0 -1
  306. package/dist/docs/assets/index.md.BjH1w2ZW.js +0 -5
  307. package/dist/docs/assets/reference_sessions.md.CueyOHSL.js +0 -1
  308. package/dist/docs/assets/skills_ab.md.CsFNatVx.js +0 -26
  309. package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +0 -1
  310. package/dist/docs/assets/skills_evals.md.BhovOvrl.lean.js +0 -1
  311. package/dist/docs/assets/skills_index.md.DKwIxzGg.js +0 -1
  312. package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +0 -1
  313. package/dist/docs/skills/ab.html +0 -52
  314. package/dist/docs/skills/ab.md +0 -50
  315. package/dist/internal/ab-collector.d.ts +0 -44
  316. package/dist/internal/ab-collector.d.ts.map +0 -1
  317. package/dist/internal/ab-collector.js +0 -142
  318. package/dist/internal/ab-fold.d.ts +0 -36
  319. package/dist/internal/ab-fold.d.ts.map +0 -1
  320. package/dist/internal/ab-fold.js +0 -175
  321. package/dist/internal/ab-snapshot.d.ts +0 -68
  322. package/dist/internal/ab-snapshot.d.ts.map +0 -1
  323. package/dist/internal/ab-snapshot.js +0 -208
  324. package/dist/internal/discovery/ab.d.ts +0 -9
  325. package/dist/internal/discovery/ab.d.ts.map +0 -1
  326. package/dist/internal/discovery/ab.js +0 -113
  327. package/dist/playground/assets/index-BMDqAeXu.js +0 -67
  328. package/dist/playground/assets/index-LUgJoWdL.css +0 -1
  329. package/docs/ab.md +0 -337
  330. package/skills/ab/SKILL.md +0 -58
  331. package/src/ab.ts +0 -430
  332. package/src/internal/ab-collector.ts +0 -200
  333. package/src/internal/ab-fold.ts +0 -232
  334. package/src/internal/ab-snapshot.ts +0 -331
  335. package/src/internal/discovery/ab.ts +0 -131
  336. /package/dist/docs/assets/{concepts.md.DgEcZOfT.lean.js → concepts.md.B4o63Gul.lean.js} +0 -0
  337. /package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.lean.js → guides_webhooks.md.CJK484ex.lean.js} +0 -0
  338. /package/dist/docs/assets/{hillclimbing.md.CpTGTCle.lean.js → hillclimbing.md.BOiVo1tf.lean.js} +0 -0
  339. /package/dist/docs/assets/{reference_cli.md.Ca26u0Es.lean.js → reference_cli.md.Deg7849l.lean.js} +0 -0
  340. /package/dist/docs/assets/{reference_extensions.md.CPWt00ds.lean.js → reference_extensions.md.ZAVUyuEX.lean.js} +0 -0
  341. /package/dist/docs/assets/{reference_http-api.md.oySXBO8o.lean.js → reference_http-api.md.BwaCo-VO.lean.js} +0 -0
  342. /package/dist/docs/assets/{reference_sessions.md.CueyOHSL.lean.js → reference_sessions.md.CyXV1MUw.lean.js} +0 -0
  343. /package/dist/docs/assets/{skills_framework-map.md.D-tFZhFS.lean.js → skills_framework-map.md.BxLSOhSY.lean.js} +0 -0
@@ -18,7 +18,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
18
18
  import { AsyncLocalStorage } from "node:async_hooks";
19
19
  import { mkdir, rm, writeFile } from "node:fs/promises";
20
20
  import { dirname, join } from "node:path";
21
- import { mergeABInstructions, resolveABMaxPlaygroundSessions, resolveABSplit, } from "../ab.js";
22
21
  import { SLACK_CHANNEL_ID } from "../channels/slack/constants.js";
23
22
  import { materializeSlackNudgeCarrier } from "../channels/slack/nudge-carrier.js";
24
23
  import { SlackAskDedupeStore, SlackNudgeStore, } from "../channels/slack/nudge-store.js";
@@ -28,9 +27,6 @@ import { cursorHostedFiles, isCursorHostedFilesAvailable, isCursorUserStoreFiles
28
27
  import { isFileSystemToolAlias, isMutatingFileSystemTool, localFileSystem, resolveFileSystemTools, resolveHostHarnessToolOptions, tempFs, unionFs, writeWorkspaceFilesToRoot, } from "../filesystem.js";
29
28
  import { storageKeysForArchitecture } from "../storage.js";
30
29
  import { DEFAULT_MODEL, DIRECT_TOOL_CALL_CHANNEL_ID, isCursorAccountTransport, isHostOauthConnectionTransport, isSymbolicConnectionTransport, } from "../types.js";
31
- import { ABCollector } from "./ab-collector.js";
32
- import { foldABStream } from "./ab-fold.js";
33
- import { buildABSnapshot } from "./ab-snapshot.js";
34
30
  import { resolveAdvertisedTools, } from "./advertise-tools.js";
35
31
  import { ApprovalGate } from "./approval-gate.js";
36
32
  import { ArtifactsStore } from "./artifacts-store.js";
@@ -287,9 +283,6 @@ export class SessionEngine {
287
283
  config: options.project.artifacts,
288
284
  sink: managedV2Files === null || managedV2Files === void 0 ? void 0 : managedV2Files(),
289
285
  });
290
- this.abCollector = new ABCollector(options.project.abs, this.logger, (sessionId) => __awaiter(this, void 0, void 0, function* () { return (yield this.logs.get(sessionId)).snapshot(0); }),
291
- // Samples flow to the defineStorage `abs` table (no-op without one).
292
- { persistSample: (sample) => { var _a; return (_a = this.storage) === null || _a === void 0 ? void 0 : _a.abSample(sample); } });
293
286
  // Peer and Cursor-account transports are symbolic until the serve host
294
287
  // resolves them; the host-side MCP registry starts with the concrete
295
288
  // connections and gains the rest via setResolvedConnections.
@@ -667,7 +660,7 @@ export class SessionEngine {
667
660
  const purpose = sendOptions.purpose === "eval" ? "eval" : "live";
668
661
  const frozenAsOf = normalizeAsOf(sendOptions.asOf);
669
662
  assertTimeArgs(this.project.agent.tools, frozenAsOf);
670
- let record = {
663
+ const record = {
671
664
  sessionId: (_e = sendOptions.hostedSessionId) !== null && _e !== void 0 ? _e : newSessionId(),
672
665
  channelId,
673
666
  mode: (_f = sendOptions.mode) !== null && _f !== void 0 ? _f : "chat",
@@ -696,7 +689,6 @@ export class SessionEngine {
696
689
  dryRun: record.dryRun === true ? true : undefined,
697
690
  },
698
691
  });
699
- record = yield this.enrollABs(record);
700
692
  const since = (yield this.logs.get(record.sessionId)).count;
701
693
  yield this.startTurn(record.sessionId, message, Object.assign({ admission: (_h = sendOptions.admission) !== null && _h !== void 0 ? _h : "preempt" }, (sendOptions.coalesceSourceTs === undefined
702
694
  ? {}
@@ -754,85 +746,6 @@ export class SessionEngine {
754
746
  return existing !== undefined;
755
747
  });
756
748
  }
757
- /**
758
- * Sticky A/B enrollment at session creation — before the first turn, so
759
- * variants are in the durable stream (and on {@link SessionRecord.abs})
760
- * ahead of model/instructions work. Failures persist as `variant: null`
761
- * (sticky skip). Eval harness sessions (`purpose: "eval"`) are never
762
- * enrolled.
763
- */
764
- enrollABs(record) {
765
- return __awaiter(this, void 0, void 0, function* () {
766
- if (!this.abCollector.enabled || record.purpose === "eval") {
767
- return record;
768
- }
769
- const sessionInfo = this.sessionInfo(record);
770
- const abs = {};
771
- for (const experiment of this.project.abs) {
772
- const def = experiment.definition;
773
- const variantKeys = Object.keys(def.variants);
774
- let variant = null;
775
- try {
776
- variant = yield resolveABSplit(def.split, {
777
- agent: { name: this.project.name },
778
- channel: { id: record.channelId },
779
- session: sessionInfo,
780
- experiment: experiment.name,
781
- variants: variantKeys,
782
- });
783
- if (variant !== null && !(variant in def.variants)) {
784
- throw new Error(`split resolved to ${JSON.stringify(variant)}; expected one of ${variantKeys.join(", ")} or null to skip`);
785
- }
786
- }
787
- catch (error) {
788
- this.logger(`[agent-sdk] ab "${experiment.name}" enrollment failed (sticky skip): ${describeError(error)}`);
789
- variant = null;
790
- }
791
- abs[experiment.name] = variant;
792
- yield this.appendEvent(record.sessionId, {
793
- type: "ab.assigned",
794
- data: { experiment: experiment.name, variant },
795
- });
796
- }
797
- return this.updateRecord(record.sessionId, (current) => (Object.assign(Object.assign({}, current), { abs })));
798
- });
799
- }
800
- /**
801
- * Ensure {@link SessionRecord.abs} is populated (hydrate from the durable
802
- * `ab.assigned` stream when missing — e.g. older sessions after upgrade).
803
- */
804
- ensureAbs(record) {
805
- return __awaiter(this, void 0, void 0, function* () {
806
- if (record.abs !== undefined || record.purpose === "eval") {
807
- return record;
808
- }
809
- if (!this.abCollector.enabled) {
810
- return record;
811
- }
812
- const events = yield this.listEvents(record.sessionId, 0);
813
- const folded = foldABStream(events);
814
- if (folded.arms.size === 0) {
815
- return record;
816
- }
817
- const abs = Object.fromEntries(folded.arms);
818
- return this.updateRecord(record.sessionId, (current) => (Object.assign(Object.assign({}, current), { abs })));
819
- });
820
- }
821
- /**
822
- * Agent config for this session: base project agent plus any per-variant
823
- * `instructions` overlays from enrolled A/B arms.
824
- */
825
- agentForSession(record) {
826
- const base = this.project.agent;
827
- const instructions = mergeABInstructions(base.instructions, record.abs, this.project.abs.map((experiment) => ({
828
- name: experiment.name,
829
- definition: experiment.definition,
830
- })));
831
- if (instructions === base.instructions) {
832
- return base;
833
- }
834
- return Object.assign(Object.assign({}, base), { instructions });
835
- }
836
749
  /** Look up a session as a channel-scoped handle. */
837
750
  getChannelSession(channelId, sessionId) {
838
751
  return __awaiter(this, void 0, void 0, function* () {
@@ -1107,9 +1020,7 @@ export class SessionEngine {
1107
1020
  this.pendingTurns.add(sessionId);
1108
1021
  let lifecycleInstalled = false;
1109
1022
  try {
1110
- let record = yield this.updateRecord(sessionId, (current) => (Object.assign(Object.assign({}, current), { turnCount: current.turnCount + 1 })));
1111
- // Arms must be on the record before tools/instructions see SessionInfo.
1112
- record = yield this.ensureAbs(record);
1023
+ const record = yield this.updateRecord(sessionId, (current) => (Object.assign(Object.assign({}, current), { turnCount: current.turnCount + 1 })));
1113
1024
  const turnId = `turn_${record.turnCount}`;
1114
1025
  const isFirstTurn = record.turnCount === 1;
1115
1026
  yield this.appendEvent(sessionId, {
@@ -1630,12 +1541,10 @@ export class SessionEngine {
1630
1541
  emit({ type: "turn.started", data: {} });
1631
1542
  try {
1632
1543
  // Scaffold agent files into the session workspace even when the harness
1633
- // cwd is overridden (e.g. a PR worktree). A/B variant instruction
1634
- // overlays are applied via agentForSession.
1635
- const agent = this.agentForSession(record);
1544
+ // cwd is overridden (e.g. a PR worktree).
1636
1545
  if (!this.hasRootOverride()) {
1637
1546
  yield materializeWorkspace({
1638
- agent,
1547
+ agent: this.project.agent,
1639
1548
  workspaceDir,
1640
1549
  seed: isFirstTurn,
1641
1550
  stateRoot: this.stateRoot,
@@ -1657,7 +1566,7 @@ export class SessionEngine {
1657
1566
  const pendingFiles = record.pendingWorkspaceFiles;
1658
1567
  const pendingImages = record.pendingImages;
1659
1568
  const runtime = resolveSessionRuntime({
1660
- agentRuntime: agent.runtime,
1569
+ agentRuntime: this.project.agent.runtime,
1661
1570
  cloudOverride: record.cloudOverride,
1662
1571
  });
1663
1572
  const hasPendingFiles = pendingFiles !== undefined && Object.keys(pendingFiles).length > 0;
@@ -1688,7 +1597,7 @@ export class SessionEngine {
1688
1597
  const instructionsInvisibleToHarness = isFirstTurn &&
1689
1598
  (this.hasBorrowedWorkspace(record) ||
1690
1599
  (yield isNestedInGitRepo(harnessCwd)));
1691
- const request = yield this.buildTurnRequest(record, agent, turnId, message, isFirstTurn, instructionsInvisibleToHarness, emit, eventContext, (update) => __awaiter(this, void 0, void 0, function* () {
1600
+ const request = yield this.buildTurnRequest(record, turnId, message, isFirstTurn, instructionsInvisibleToHarness, emit, eventContext, (update) => __awaiter(this, void 0, void 0, function* () {
1692
1601
  const turn = this.turnRoots.get(sessionId);
1693
1602
  if (turn !== undefined) {
1694
1603
  update = yield applyWebScratchUpdate({
@@ -1983,10 +1892,11 @@ export class SessionEngine {
1983
1892
  }
1984
1893
  return undefined;
1985
1894
  }
1986
- buildTurnRequest(record, agent, turnId, prompt, isFirstTurn, instructionsInvisibleToHarness, emit, eventContext, onUpdate, signal, images) {
1895
+ buildTurnRequest(record, turnId, prompt, isFirstTurn, instructionsInvisibleToHarness, emit, eventContext, onUpdate, signal, images) {
1987
1896
  return __awaiter(this, void 0, void 0, function* () {
1988
1897
  var _a, _b, _c;
1989
1898
  var _d;
1899
+ const agent = this.project.agent;
1990
1900
  // Per-session cloud attach (channel/tool handoff) forces cloud runtime
1991
1901
  // even when the agent defaults to local for chat server tools.
1992
1902
  const runtime = resolveSessionRuntime({
@@ -2155,9 +2065,7 @@ export class SessionEngine {
2155
2065
  }
2156
2066
  return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ sessionId: record.sessionId }, (record.sdkAgentId === undefined
2157
2067
  ? {}
2158
- : { sdkAgentId: record.sdkAgentId })), { workspaceDir: this.harnessCwd(record), sandbox: authoredRoot
2159
- ? false
2160
- : ((_c = this.project.agent.local) === null || _c === void 0 ? void 0 : _c.sandbox) === true }), (runtime === "local" && harnessTools !== undefined
2068
+ : { sdkAgentId: record.sdkAgentId })), { workspaceDir: this.harnessCwd(record), sandbox: authoredRoot ? false : ((_c = agent.local) === null || _c === void 0 ? void 0 : _c.sandbox) === true }), (runtime === "local" && harnessTools !== undefined
2161
2069
  ? Object.assign(Object.assign({}, (harnessTools.tools === undefined
2162
2070
  ? {}
2163
2071
  : { tools: harnessTools.tools })), (harnessTools.disallowedTools === undefined
@@ -2173,7 +2081,7 @@ export class SessionEngine {
2173
2081
  : undefined }), (runtime === "cloud" && !isCursorHostedFilesAvailable()
2174
2082
  ? { agentServeAgent: this.project.name }
2175
2083
  : {})), { customTools: runtime === "local"
2176
- ? yield this.buildCustomTools(record, agent, turnId, emit, synthesized)
2084
+ ? yield this.buildCustomTools(record, turnId, emit, synthesized)
2177
2085
  : {}, mcpServers: this.buildMcpServers(runtime, record.sessionId, yield this.evaluateConnectionAuth(record)) }), (runtime === "local" && this.hasAttachedAuthedConnections()
2178
2086
  ? { perSendMcpServers: true }
2179
2087
  : {})), { subagents: buildRunnerSubagents(agent), onUpdate,
@@ -2397,8 +2305,9 @@ export class SessionEngine {
2397
2305
  return evaluated;
2398
2306
  });
2399
2307
  }
2400
- buildCustomTools(record_1, agent_1, turnId_1, emit_1) {
2401
- return __awaiter(this, arguments, void 0, function* (record, agent, turnId, emit, extraTools = []) {
2308
+ buildCustomTools(record_1, turnId_1, emit_1) {
2309
+ return __awaiter(this, arguments, void 0, function* (record, turnId, emit, extraTools = []) {
2310
+ const agent = this.project.agent;
2402
2311
  const tools = {};
2403
2312
  const register = (tool) => {
2404
2313
  tools[tool.name] = Object.assign(Object.assign(Object.assign({ description: tool.description, inputSchema: tool.inputSchema }, (tool.outputSchema === undefined
@@ -3529,9 +3438,6 @@ export class SessionEngine {
3529
3438
  }
3530
3439
  }
3531
3440
  }
3532
- if (this.abCollector.enabled) {
3533
- yield this.abCollector.onEvent(event, sessionCtx.session, this.project.name);
3534
- }
3535
3441
  (_a = this.otel) === null || _a === void 0 ? void 0 : _a.onEvent(event, sessionCtx.session);
3536
3442
  });
3537
3443
  }
@@ -3808,57 +3714,6 @@ export class SessionEngine {
3808
3714
  };
3809
3715
  });
3810
3716
  }
3811
- /**
3812
- * Fold durable session streams into per-session A/B assignments and
3813
- * aggregate arm metrics (`GET /v1/abs`). Collector-independent: always
3814
- * reads `events.ndjson`.
3815
- */
3816
- abSnapshot(caller, options) {
3817
- return __awaiter(this, void 0, void 0, function* () {
3818
- var _a, _b;
3819
- var _c;
3820
- const sessions = yield this.listSessions(caller, options);
3821
- const abConfig = this.project.abConfig;
3822
- const maxPlaygroundSessions = resolveABMaxPlaygroundSessions(abConfig === null || abConfig === void 0 ? void 0 : abConfig.maxPlaygroundSessions);
3823
- const foldedSessions = sessions.slice(0, maxPlaygroundSessions);
3824
- // Backfill for a replacement host with nothing local to fold (e.g.
3825
- // lazy-only restore before any session resumed): serve the persisted
3826
- // aggregate instead of an empty surface. Gated on the host having no
3827
- // sessions AT ALL — the persisted snapshot spans every principal, so a
3828
- // caller who merely owns no sessions must not see it. Loaded once per
3829
- // process (playground polls this route ~every 4s); skip the persist
3830
- // side effect below — re-saving a restored snapshot would echo stale
3831
- // data back into the store.
3832
- if (foldedSessions.length === 0 &&
3833
- this.storage !== undefined &&
3834
- (yield this.sessions.list()).length === 0) {
3835
- (_c = this.restoredAbSnapshot) !== null && _c !== void 0 ? _c : (this.restoredAbSnapshot = this.storage.getLatestAbSnapshot());
3836
- const restoredSnapshot = yield this.restoredAbSnapshot;
3837
- if (restoredSnapshot !== undefined) {
3838
- return restoredSnapshot;
3839
- }
3840
- }
3841
- const abTable = (_a = this.project.storage) === null || _a === void 0 ? void 0 : _a.abs;
3842
- const snapshot = yield buildABSnapshot({
3843
- experiments: this.project.abs,
3844
- agentName: this.project.name,
3845
- sessions: foldedSessions,
3846
- loadRecord: (sessionId) => this.sessions.get(sessionId),
3847
- loadEvents: (sessionId) => this.listEvents(sessionId, 0),
3848
- sessionInfo: (record) => this.sessionInfo(record),
3849
- logger: this.logger,
3850
- config: {
3851
- maxPlaygroundSessions,
3852
- durableSamples: abTable !== undefined,
3853
- durableSnapshots: (abTable === null || abTable === void 0 ? void 0 : abTable.putSnapshot) !== undefined,
3854
- },
3855
- });
3856
- // Side effect on the read path: playground polls GET /v1/abs ~every 4s;
3857
- // the coordinator throttles the actual table write.
3858
- (_b = this.storage) === null || _b === void 0 ? void 0 : _b.abSnapshot(snapshot);
3859
- return snapshot;
3860
- });
3861
- }
3862
3717
  eventStream(sessionId_1) {
3863
3718
  return __awaiter(this, arguments, void 0, function* (sessionId, startIndex = 0) {
3864
3719
  // Playground Trace replays this stream; backfill before the snapshot
@@ -4069,7 +3924,7 @@ export class SessionEngine {
4069
3924
  this.coalesceDrains.has(sessionId));
4070
3925
  }
4071
3926
  sessionInfo(record) {
4072
- return Object.assign(Object.assign(Object.assign({ id: record.sessionId, channelId: record.channelId, mode: record.mode, purpose: record.purpose === "eval" ? "eval" : "live", dryRun: record.dryRun === true ? true : undefined, asOf: record.asOf, auth: record.auth, continuationKey: record.continuationKey }, (record.abs === undefined ? {} : { abs: record.abs })), (record.title === undefined ? {} : { title: record.title })), (record.sdkAgentId === undefined
3927
+ return Object.assign(Object.assign({ id: record.sessionId, channelId: record.channelId, mode: record.mode, purpose: record.purpose === "eval" ? "eval" : "live", dryRun: record.dryRun === true ? true : undefined, asOf: record.asOf, auth: record.auth, continuationKey: record.continuationKey }, (record.title === undefined ? {} : { title: record.title })), (record.sdkAgentId === undefined
4073
3928
  ? {}
4074
3929
  : { sdkAgentId: record.sdkAgentId }));
4075
3930
  }
@@ -4131,9 +3986,9 @@ export class SessionEngine {
4131
3986
  * serve start, before channels accept traffic: any persisted session
4132
3987
  * missing from the local `--state-root` is materialized there — events
4133
3988
  * as `events.ndjson`, record as `session.json` — after which every
4134
- * existing read path (continuation lookup, event replay/streams, A/B
4135
- * fold hydration) works unchanged. Local state always wins over the
4136
- * sink, so restarts on the same host are no-ops.
3989
+ * existing read path (continuation lookup, event replay/streams) works
3990
+ * unchanged. Local state always wins over the sink, so restarts on the
3991
+ * same host are no-ops.
4137
3992
  *
4138
3993
  * Failures are logged and skipped; a broken store (including rows that
4139
3994
  * violate the SessionRecord shape) never blocks serve start.
@@ -11,23 +11,20 @@
11
11
  * must never stall or fail a turn.
12
12
  *
13
13
  * Scaling shape: sessions reduce to keyed puts on the KV sink; eval runs
14
- * and A/B metrics go to their dedicated tables (`evals` / `abs`).
15
- * Reminder documents live on the control plane. Everything shares one
16
- * bounded, serialized queue.
14
+ * go to their dedicated `evals` table. Reminder documents live on the
15
+ * control plane. Everything shares one bounded, serialized queue.
17
16
  *
18
17
  * It does three unrelated jobs, declared separately as
19
18
  * {@link FrameworkSessionStore}, {@link AuthorKvStore}, and
20
- * {@link EvalAbStore} — see `storage-roles.ts` for why they differ and where
19
+ * {@link EvalStore} — see `storage-roles.ts` for why they differ and where
21
20
  * each is headed. The queue stays shared: it is one bounded, serialized chain
22
21
  * per agent, and splitting it would change backpressure behavior, which this
23
22
  * seam deliberately does not touch.
24
23
  */
25
- import type { ABMetricSample } from "../ab.js";
26
24
  import { type ResolvedStoragePolicy, type StorageContext, type StorageDefinition, type StorageKeys } from "../storage.js";
27
25
  import type { JsonValue, SessionEvent, SessionRecord } from "../types.js";
28
- import type { ABSnapshot } from "./ab-snapshot.js";
29
26
  import type { EvalRunStorage } from "./eval-run-store.js";
30
- import type { AuthorKvStore, EvalAbStore, FrameworkSessionStore } from "./storage-roles.js";
27
+ import type { AuthorKvStore, EvalStore, FrameworkSessionStore } from "./storage-roles.js";
31
28
  export interface StorageCoordinatorOptions {
32
29
  definition: StorageDefinition;
33
30
  agentName: string;
@@ -36,7 +33,7 @@ export interface StorageCoordinatorOptions {
36
33
  /** Defaults to the architecture-v1 key contract. */
37
34
  keys?: StorageKeys;
38
35
  }
39
- export declare class StorageCoordinator implements FrameworkSessionStore, AuthorKvStore, EvalAbStore {
36
+ export declare class StorageCoordinator implements FrameworkSessionStore, AuthorKvStore, EvalStore {
40
37
  readonly policy: ResolvedStoragePolicy;
41
38
  private readonly definition;
42
39
  private readonly keys;
@@ -56,7 +53,6 @@ export declare class StorageCoordinator implements FrameworkSessionStore, Author
56
53
  private pending;
57
54
  /** Ops dropped because the queue was full. */
58
55
  private dropped;
59
- private lastAbSnapshotAt;
60
56
  private closed;
61
57
  constructor(options: StorageCoordinatorOptions);
62
58
  /** Durable session-record update (engine calls after every store save). */
@@ -154,16 +150,6 @@ export declare class StorageCoordinator implements FrameworkSessionStore, Author
154
150
  * history then stays in process memory.
155
151
  */
156
152
  evalRuns(): EvalRunStorage | undefined;
157
- /** Append one metric sample to the `abs` table (no-op without it). */
158
- abSample(sample: ABMetricSample): void;
159
- /**
160
- * Refresh the persisted aggregate A/B snapshot, throttled to once per
161
- * {@link AB_SNAPSHOT_MIN_INTERVAL_MS} (the playground recomputes the
162
- * fold on every `GET /v1/abs` poll). No-op without `abs.putSnapshot`.
163
- */
164
- abSnapshot(snapshot: ABSnapshot): void;
165
- /** Latest persisted aggregate A/B snapshot; errors read as absent. */
166
- getLatestAbSnapshot(): Promise<ABSnapshot | undefined>;
167
153
  /**
168
154
  * Flush all buffers and drain the queue, giving the sink at most
169
155
  * {@link CLOSE_DRAIN_TIMEOUT_MS} — a hung sink must not stall shutdown
@@ -1 +1 @@
1
- {"version":3,"file":"storage-coordinator.d.ts","sourceRoot":"","sources":["../../src/internal/storage-coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-coordinator.d.ts","sourceRoot":"","sources":["../../src/internal/storage-coordinator.ts"],"names":[],"mappings":"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"}
@@ -11,13 +11,12 @@
11
11
  * must never stall or fail a turn.
12
12
  *
13
13
  * Scaling shape: sessions reduce to keyed puts on the KV sink; eval runs
14
- * and A/B metrics go to their dedicated tables (`evals` / `abs`).
15
- * Reminder documents live on the control plane. Everything shares one
16
- * bounded, serialized queue.
14
+ * go to their dedicated `evals` table. Reminder documents live on the
15
+ * control plane. Everything shares one bounded, serialized queue.
17
16
  *
18
17
  * It does three unrelated jobs, declared separately as
19
18
  * {@link FrameworkSessionStore}, {@link AuthorKvStore}, and
20
- * {@link EvalAbStore} — see `storage-roles.ts` for why they differ and where
19
+ * {@link EvalStore} — see `storage-roles.ts` for why they differ and where
21
20
  * each is headed. The queue stays shared: it is one bounded, serialized chain
22
21
  * per agent, and splitting it would change backpressure behavior, which this
23
22
  * seam deliberately does not touch.
@@ -56,12 +55,6 @@ const MAX_PENDING_OPS = 1000;
56
55
  const CLOSE_DRAIN_TIMEOUT_MS = 10000;
57
56
  /** Debounced event batching flushes early past this many buffered events. */
58
57
  const DEBOUNCE_MAX_BATCH = 200;
59
- /**
60
- * Aggregate A/B snapshots are refreshed at most this often — the
61
- * playground polls `GET /v1/abs` every few seconds, and the snapshot is a
62
- * convenience backfill, not a source of truth.
63
- */
64
- const AB_SNAPSHOT_MIN_INTERVAL_MS = 60000;
65
58
  /** Session records out of raw sink entries; rows without a usable id are dropped. */
66
59
  function sessionRecordsOf(entries) {
67
60
  return entries
@@ -86,7 +79,6 @@ export class StorageCoordinator {
86
79
  this.pending = 0;
87
80
  /** Ops dropped because the queue was full. */
88
81
  this.dropped = 0;
89
- this.lastAbSnapshotAt = 0;
90
82
  this.closed = false;
91
83
  this.definition = options.definition;
92
84
  this.keys = (_a = options.keys) !== null && _a !== void 0 ? _a : storageKeys;
@@ -441,57 +433,6 @@ export class StorageCoordinator {
441
433
  };
442
434
  }
443
435
  // ==========================================================================
444
- // A/Bs (dedicated `abs` table)
445
- // ==========================================================================
446
- /** Append one metric sample to the `abs` table (no-op without it). */
447
- abSample(sample) {
448
- const table = this.definition.abs;
449
- if (this.closed || table === undefined) {
450
- return;
451
- }
452
- this.enqueue([
453
- {
454
- label: `abs.putSample(${sample.sessionId})`,
455
- run: (ctx) => table.putSample(sample, ctx),
456
- },
457
- ], "policy");
458
- }
459
- /**
460
- * Refresh the persisted aggregate A/B snapshot, throttled to once per
461
- * {@link AB_SNAPSHOT_MIN_INTERVAL_MS} (the playground recomputes the
462
- * fold on every `GET /v1/abs` poll). No-op without `abs.putSnapshot`.
463
- */
464
- abSnapshot(snapshot) {
465
- var _a;
466
- const putSnapshot = (_a = this.definition.abs) === null || _a === void 0 ? void 0 : _a.putSnapshot;
467
- const now = Date.now();
468
- if (this.closed ||
469
- putSnapshot === undefined ||
470
- now - this.lastAbSnapshotAt < AB_SNAPSHOT_MIN_INTERVAL_MS) {
471
- return;
472
- }
473
- this.lastAbSnapshotAt = now;
474
- this.enqueue([{ label: "abs.putSnapshot", run: (ctx) => putSnapshot(snapshot, ctx) }], "policy");
475
- }
476
- /** Latest persisted aggregate A/B snapshot; errors read as absent. */
477
- getLatestAbSnapshot() {
478
- return __awaiter(this, void 0, void 0, function* () {
479
- var _a;
480
- const getSnapshot = (_a = this.definition.abs) === null || _a === void 0 ? void 0 : _a.getSnapshot;
481
- if (getSnapshot === undefined) {
482
- return undefined;
483
- }
484
- try {
485
- const value = yield getSnapshot(this.context("restore"));
486
- return value !== null && value !== void 0 ? value : undefined;
487
- }
488
- catch (error) {
489
- this.logger(`[agent-sdk] storage abs.getSnapshot() failed: ${describeError(error)}`);
490
- return undefined;
491
- }
492
- });
493
- }
494
- // ==========================================================================
495
436
  // Delivery
496
437
  // ==========================================================================
497
438
  /**
@@ -14,17 +14,15 @@
14
14
  * - {@link AuthorKvStore} is author state: whatever `ctx.host.kv` was handed.
15
15
  * It converges onto the author file plane, which is a different destination
16
16
  * from the one above.
17
- * - {@link EvalAbStore} is playground/experiment bookkeeping with its own
18
- * dedicated tables, and follows neither.
17
+ * - {@link EvalStore} is playground eval bookkeeping with its own dedicated
18
+ * table, and follows neither.
19
19
  *
20
20
  * Consumers should depend on the narrowest role they use. That is what keeps a
21
21
  * later change to framework persistence from silently reaching author KV, and
22
22
  * it is why these are interfaces rather than a comment on one class.
23
23
  */
24
- import type { ABMetricSample } from "../ab.js";
25
24
  import type { StorageContext } from "../storage.js";
26
25
  import type { JsonValue, SessionEvent, SessionRecord } from "../types.js";
27
- import type { ABSnapshot } from "./ab-snapshot.js";
28
26
  import type { EvalRunStorage } from "./eval-run-store.js";
29
27
  /**
30
28
  * Framework-owned session durability: what has to be true for a session to
@@ -73,11 +71,8 @@ export interface AuthorKvStore {
73
71
  kvPut(authorKey: string, value: JsonValue): Promise<void>;
74
72
  kvDelete(authorKey: string): Promise<void>;
75
73
  }
76
- /** Playground eval batches and live A/B metrics, on their own tables. */
77
- export interface EvalAbStore {
74
+ /** Playground eval batches, on their own table. */
75
+ export interface EvalStore {
78
76
  evalRuns(): EvalRunStorage | undefined;
79
- abSample(sample: ABMetricSample): void;
80
- abSnapshot(snapshot: ABSnapshot): void;
81
- getLatestAbSnapshot(): Promise<ABSnapshot | undefined>;
82
77
  }
83
78
  //# sourceMappingURL=storage-roles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-roles.d.ts","sourceRoot":"","sources":["../../src/internal/storage-roles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3C,uEAAuE;IACvE,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,kEAAkE;IAClE,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,2EAA2E;IAC3E,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEzE,qEAAqE;IACrE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IAEjC,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACzC,oBAAoB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACjD;;;OAGG;IACH,0BAA0B,CACxB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC;IACxC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IACtE,wBAAwB,CACtB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CACvC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IACzD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,QAAQ,IAAI,cAAc,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,UAAU,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC,mBAAmB,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;CACxD"}
1
+ {"version":3,"file":"storage-roles.d.ts","sourceRoot":"","sources":["../../src/internal/storage-roles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3C,uEAAuE;IACvE,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,kEAAkE;IAClE,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,2EAA2E;IAC3E,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEzE,qEAAqE;IACrE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IAEjC,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACzC,oBAAoB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACjD;;;OAGG;IACH,0BAA0B,CACxB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC;IACxC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IACtE,wBAAwB,CACtB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CACvC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IACzD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,QAAQ,IAAI,cAAc,GAAG,SAAS,CAAC;CACxC"}
@@ -14,8 +14,8 @@
14
14
  * - {@link AuthorKvStore} is author state: whatever `ctx.host.kv` was handed.
15
15
  * It converges onto the author file plane, which is a different destination
16
16
  * from the one above.
17
- * - {@link EvalAbStore} is playground/experiment bookkeeping with its own
18
- * dedicated tables, and follows neither.
17
+ * - {@link EvalStore} is playground eval bookkeeping with its own dedicated
18
+ * table, and follows neither.
19
19
  *
20
20
  * Consumers should depend on the narrowest role they use. That is what keeps a
21
21
  * later change to framework persistence from silently reaching author KV, and