@cursor/july 0.1.102 → 0.1.104

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 (789) hide show
  1. package/AGENTS.md +34 -32
  2. package/README.md +10 -12
  3. package/dist/ab.d.ts +1 -1
  4. package/dist/ab.js +1 -1
  5. package/dist/bin/agent-serve.d.ts +12 -12
  6. package/dist/bin/agent-serve.js +114 -36
  7. package/dist/channels/bitbucket/api.d.ts +176 -0
  8. package/dist/channels/bitbucket/api.d.ts.map +1 -0
  9. package/dist/channels/bitbucket/api.js +419 -0
  10. package/dist/channels/bitbucket/binding.d.ts +71 -0
  11. package/dist/channels/bitbucket/binding.d.ts.map +1 -0
  12. package/dist/channels/bitbucket/binding.js +269 -0
  13. package/dist/channels/bitbucket/bitbucket-channel.d.ts +33 -0
  14. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -0
  15. package/dist/channels/bitbucket/bitbucket-channel.js +120 -0
  16. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +61 -0
  17. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -0
  18. package/dist/channels/bitbucket/bitbucket-webhook.js +394 -0
  19. package/dist/channels/bitbucket/checks.d.ts +67 -0
  20. package/dist/channels/bitbucket/checks.d.ts.map +1 -0
  21. package/dist/channels/bitbucket/checks.js +102 -0
  22. package/dist/channels/bitbucket/cursor-account.d.ts +37 -0
  23. package/dist/channels/bitbucket/cursor-account.d.ts.map +1 -0
  24. package/dist/channels/bitbucket/cursor-account.js +65 -0
  25. package/dist/channels/bitbucket/defaults.d.ts +26 -0
  26. package/dist/channels/bitbucket/defaults.d.ts.map +1 -0
  27. package/dist/channels/bitbucket/defaults.js +73 -0
  28. package/dist/channels/bitbucket/events.d.ts +22 -0
  29. package/dist/channels/bitbucket/events.d.ts.map +1 -0
  30. package/dist/channels/bitbucket/events.js +64 -0
  31. package/dist/channels/bitbucket/index.d.ts +34 -0
  32. package/dist/channels/bitbucket/index.d.ts.map +1 -0
  33. package/dist/channels/bitbucket/index.js +33 -0
  34. package/dist/channels/bitbucket/replay.d.ts +63 -0
  35. package/dist/channels/bitbucket/replay.d.ts.map +1 -0
  36. package/dist/channels/bitbucket/replay.js +304 -0
  37. package/dist/channels/bitbucket/state.d.ts +35 -0
  38. package/dist/channels/bitbucket/state.d.ts.map +1 -0
  39. package/dist/channels/bitbucket/state.js +21 -0
  40. package/dist/channels/bitbucket/types.d.ts +229 -0
  41. package/dist/channels/bitbucket/types.d.ts.map +1 -0
  42. package/dist/channels/bitbucket/types.js +1 -0
  43. package/dist/channels/change-monitors/change-monitors-channel.d.ts +5 -0
  44. package/dist/channels/change-monitors/change-monitors-channel.d.ts.map +1 -0
  45. package/dist/channels/change-monitors/change-monitors-channel.js +41 -0
  46. package/dist/channels/change-monitors/index.d.ts +4 -0
  47. package/dist/channels/change-monitors/index.d.ts.map +1 -0
  48. package/dist/channels/change-monitors/index.js +2 -0
  49. package/dist/channels/change-monitors/types.d.ts +39 -0
  50. package/dist/channels/change-monitors/types.d.ts.map +1 -0
  51. package/dist/channels/change-monitors/types.js +1 -0
  52. package/dist/channels/deployments/deployments-channel.d.ts +22 -14
  53. package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
  54. package/dist/channels/deployments/deployments-channel.js +25 -27
  55. package/dist/channels/deployments/types.d.ts +12 -6
  56. package/dist/channels/deployments/types.d.ts.map +1 -1
  57. package/dist/channels/github/binding.d.ts +6 -0
  58. package/dist/channels/github/binding.d.ts.map +1 -1
  59. package/dist/channels/github/binding.js +3 -3
  60. package/dist/channels/github/cursor-account.d.ts +7 -3
  61. package/dist/channels/github/cursor-account.d.ts.map +1 -1
  62. package/dist/channels/github/cursor-account.js +10 -6
  63. package/dist/channels/github/defaults.d.ts.map +1 -1
  64. package/dist/channels/github/defaults.js +4 -0
  65. package/dist/channels/github/events.d.ts +1 -1
  66. package/dist/channels/github/events.js +1 -1
  67. package/dist/channels/github/forward.d.ts +1 -1
  68. package/dist/channels/github/forward.d.ts.map +1 -1
  69. package/dist/channels/github/forward.js +3 -2
  70. package/dist/channels/github/github-channel.d.ts +29 -39
  71. package/dist/channels/github/github-channel.d.ts.map +1 -1
  72. package/dist/channels/github/github-channel.js +68 -101
  73. package/dist/channels/github/progress.d.ts +22 -0
  74. package/dist/channels/github/progress.d.ts.map +1 -1
  75. package/dist/channels/github/progress.js +32 -5
  76. package/dist/channels/github/replay.d.ts +1 -1
  77. package/dist/channels/github/replay.js +1 -1
  78. package/dist/channels/github/state.d.ts +2 -0
  79. package/dist/channels/github/state.d.ts.map +1 -1
  80. package/dist/channels/github/state.js +14 -11
  81. package/dist/channels/github/types.d.ts +2 -4
  82. package/dist/channels/github/types.d.ts.map +1 -1
  83. package/dist/channels/gitlab/api.d.ts +91 -0
  84. package/dist/channels/gitlab/api.d.ts.map +1 -0
  85. package/dist/channels/gitlab/api.js +150 -0
  86. package/dist/channels/gitlab/binding.d.ts +58 -0
  87. package/dist/channels/gitlab/binding.d.ts.map +1 -0
  88. package/dist/channels/gitlab/binding.js +139 -0
  89. package/dist/channels/gitlab/checks.d.ts +110 -0
  90. package/dist/channels/gitlab/checks.d.ts.map +1 -0
  91. package/dist/channels/gitlab/checks.js +126 -0
  92. package/dist/channels/gitlab/cursor-account.d.ts +36 -0
  93. package/dist/channels/gitlab/cursor-account.d.ts.map +1 -0
  94. package/dist/channels/gitlab/cursor-account.js +65 -0
  95. package/dist/channels/gitlab/defaults.d.ts +25 -0
  96. package/dist/channels/gitlab/defaults.d.ts.map +1 -0
  97. package/dist/channels/gitlab/defaults.js +60 -0
  98. package/dist/channels/gitlab/events.d.ts +12 -0
  99. package/dist/channels/gitlab/events.d.ts.map +1 -0
  100. package/dist/channels/gitlab/events.js +28 -0
  101. package/dist/channels/gitlab/gitlab-channel.d.ts +33 -0
  102. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -0
  103. package/dist/channels/gitlab/gitlab-channel.js +120 -0
  104. package/dist/channels/gitlab/gitlab-webhook.d.ts +45 -0
  105. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -0
  106. package/dist/channels/gitlab/gitlab-webhook.js +397 -0
  107. package/dist/channels/gitlab/index.d.ts +31 -0
  108. package/dist/channels/gitlab/index.d.ts.map +1 -0
  109. package/dist/channels/gitlab/index.js +30 -0
  110. package/dist/channels/gitlab/replay.d.ts +105 -0
  111. package/dist/channels/gitlab/replay.d.ts.map +1 -0
  112. package/dist/channels/gitlab/replay.js +206 -0
  113. package/dist/channels/gitlab/state.d.ts +33 -0
  114. package/dist/channels/gitlab/state.d.ts.map +1 -0
  115. package/dist/channels/gitlab/state.js +23 -0
  116. package/dist/channels/gitlab/types.d.ts +214 -0
  117. package/dist/channels/gitlab/types.d.ts.map +1 -0
  118. package/dist/channels/gitlab/types.js +1 -0
  119. package/dist/channels/issues/index.d.ts +4 -0
  120. package/dist/channels/issues/index.d.ts.map +1 -0
  121. package/dist/channels/issues/index.js +2 -0
  122. package/dist/channels/issues/issues-channel.d.ts +5 -0
  123. package/dist/channels/issues/issues-channel.d.ts.map +1 -0
  124. package/dist/channels/issues/issues-channel.js +37 -0
  125. package/dist/channels/issues/types.d.ts +33 -0
  126. package/dist/channels/issues/types.d.ts.map +1 -0
  127. package/dist/channels/issues/types.js +1 -0
  128. package/dist/channels/origin/api.d.ts.map +1 -1
  129. package/dist/channels/origin/api.js +4 -2
  130. package/dist/channels/origin/origin-channel.d.ts +4 -9
  131. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  132. package/dist/channels/origin/origin-channel.js +8 -48
  133. package/dist/channels/origin/types.d.ts +20 -2
  134. package/dist/channels/origin/types.d.ts.map +1 -1
  135. package/dist/channels/slack/eval-directive.d.ts.map +1 -1
  136. package/dist/channels/slack/eval-directive.js +1 -7
  137. package/dist/channels/slack/init.d.ts.map +1 -1
  138. package/dist/channels/slack/init.js +3 -3
  139. package/dist/channels/slack/setup.d.ts +1 -1
  140. package/dist/channels/slack/setup.d.ts.map +1 -1
  141. package/dist/channels/slack/setup.js +6 -13
  142. package/dist/channels/slack/types.d.ts +1 -1
  143. package/dist/channels/slack/types.d.ts.map +1 -1
  144. package/dist/channels.d.ts +1 -1
  145. package/dist/channels.d.ts.map +1 -1
  146. package/dist/client.d.ts +1 -1
  147. package/dist/client.js +1 -1
  148. package/dist/connections.d.ts +1 -1
  149. package/dist/connections.js +1 -1
  150. package/dist/docs/404.html +2 -2
  151. package/dist/docs/ab.html +4 -4
  152. package/dist/docs/assets/{app.CLA03RCz.js → app.DbMWUyGb.js} +1 -1
  153. package/dist/docs/assets/chunks/@localSearchIndexroot.Bqsulb9K.js +1 -0
  154. package/dist/docs/assets/chunks/{VPLocalSearchBox.ifxv-cJV.js → VPLocalSearchBox.DcNeTh9o.js} +1 -1
  155. package/dist/docs/assets/chunks/{theme.DWCwM6p-.js → theme.DMjhY3gl.js} +2 -2
  156. package/dist/docs/assets/concepts.md.DgEcZOfT.js +1 -0
  157. package/dist/docs/assets/{concepts.md.rPzW2HZN.lean.js → concepts.md.DgEcZOfT.lean.js} +1 -1
  158. package/dist/docs/assets/{evals.md.CPzDAwoH.js → evals.md.CbMoebP1.js} +1 -1
  159. package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +9 -0
  160. package/dist/docs/assets/{guides_github.md.BtPr9GaP.js → guides_github.md.c0gdGJ-D.js} +1 -1
  161. package/dist/docs/assets/{guides_github.md.BtPr9GaP.lean.js → guides_github.md.c0gdGJ-D.lean.js} +1 -1
  162. package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.js → guides_opentelemetry.md.COh9jFVg.js} +7 -8
  163. package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.lean.js → guides_opentelemetry.md.COh9jFVg.lean.js} +1 -1
  164. package/dist/docs/assets/{index.md.Kiht7ell.js → index.md.D75GWhPl.js} +1 -1
  165. package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.js → reference_agent-config.md.CHNpiyp4.js} +3 -3
  166. package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.js → reference_channels.md.DBGcaB7m.js} +2 -2
  167. package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.lean.js → reference_channels.md.DBGcaB7m.lean.js} +1 -1
  168. package/dist/docs/assets/{reference_cli.md.DfoeyvL0.js → reference_cli.md.CJNc_xYK.js} +1 -1
  169. package/dist/docs/assets/{reference_extensions.md.9WQMZe1l.js → reference_extensions.md.DykHW3qL.js} +11 -5
  170. package/dist/docs/assets/reference_extensions.md.DykHW3qL.lean.js +1 -0
  171. package/dist/docs/assets/reference_hooks.md.Ddt5DdgJ.js +73 -0
  172. package/dist/docs/assets/{reference_hooks.md.a8BJxMR5.lean.js → reference_hooks.md.Ddt5DdgJ.lean.js} +1 -1
  173. package/dist/docs/assets/{reference_playground.md.DnX5nL-B.js → reference_playground.md.4myJPxrf.js} +1 -1
  174. package/dist/docs/assets/{reference_project-layout.md.CA6QP6Lw.js → reference_project-layout.md.DuBu9a96.js} +2 -2
  175. package/dist/docs/assets/reference_result.md.BK5SxDrf.js +19 -0
  176. package/dist/docs/assets/reference_result.md.BK5SxDrf.lean.js +1 -0
  177. package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.js → reference_sessions.md.CueyOHSL.js} +1 -1
  178. package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.lean.js → reference_sessions.md.CueyOHSL.lean.js} +1 -1
  179. package/dist/docs/assets/{reference_tools.md.B1up2r9W.js → reference_tools.md.aGrn99hP.js} +1 -1
  180. package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +1 -0
  181. package/dist/docs/assets/{skills_otel.md.CgiZryR3.js → skills_otel.md.CqhobH3B.js} +3 -3
  182. package/dist/docs/assets/{skills_otel.md.CgiZryR3.lean.js → skills_otel.md.CqhobH3B.lean.js} +1 -1
  183. package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.js → templates_pr-autofixer.md.Bds_XWcV.js} +2 -2
  184. package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.lean.js → templates_pr-autofixer.md.Bds_XWcV.lean.js} +1 -1
  185. package/dist/docs/building-with-agents.html +4 -4
  186. package/dist/docs/concepts.html +5 -5
  187. package/dist/docs/concepts.md +2 -4
  188. package/dist/docs/deployment.html +4 -4
  189. package/dist/docs/design/filesystem.md +376 -0
  190. package/dist/docs/design/runtime-abstraction.md +2 -3
  191. package/dist/docs/evals.html +6 -6
  192. package/dist/docs/evals.md +9 -7
  193. package/dist/docs/guides/agent-to-agent.html +4 -4
  194. package/dist/docs/guides/cloud-agents.html +6 -6
  195. package/dist/docs/guides/cloud-agents.md +4 -6
  196. package/dist/docs/guides/convert-automation.html +4 -4
  197. package/dist/docs/guides/github.html +6 -6
  198. package/dist/docs/guides/github.md +5 -1
  199. package/dist/docs/guides/human-in-the-loop.html +4 -4
  200. package/dist/docs/guides/mcp-oauth.html +5 -5
  201. package/dist/docs/guides/opentelemetry.html +10 -11
  202. package/dist/docs/guides/opentelemetry.md +41 -17
  203. package/dist/docs/guides/slack.html +4 -4
  204. package/dist/docs/guides/webhooks.html +4 -4
  205. package/dist/docs/hashmap.json +1 -1
  206. package/dist/docs/hillclimbing.html +4 -4
  207. package/dist/docs/index.html +6 -6
  208. package/dist/docs/index.md +2 -2
  209. package/dist/docs/llms-full.txt +907 -262
  210. package/dist/docs/llms.txt +3 -2
  211. package/dist/docs/quickstart.html +4 -4
  212. package/dist/docs/reference/agent-config.html +8 -8
  213. package/dist/docs/reference/agent-config.md +6 -10
  214. package/dist/docs/reference/artifacts.html +5 -5
  215. package/dist/docs/reference/channels.html +6 -6
  216. package/dist/docs/reference/channels.md +38 -8
  217. package/dist/docs/reference/cli.html +5 -5
  218. package/dist/docs/reference/cli.md +3 -4
  219. package/dist/docs/reference/connections.html +4 -4
  220. package/dist/docs/reference/extensions.html +16 -10
  221. package/dist/docs/reference/extensions.md +86 -22
  222. package/dist/docs/reference/hooks.html +69 -10
  223. package/dist/docs/reference/hooks.md +215 -46
  224. package/dist/docs/reference/http-api.html +4 -4
  225. package/dist/docs/reference/instructions.html +4 -4
  226. package/dist/docs/reference/playground.html +5 -5
  227. package/dist/docs/reference/playground.md +3 -0
  228. package/dist/docs/reference/project-layout.html +6 -6
  229. package/dist/docs/reference/project-layout.md +2 -1
  230. package/dist/docs/reference/prompt.html +4 -4
  231. package/dist/docs/reference/result.html +45 -0
  232. package/dist/docs/reference/result.md +89 -0
  233. package/dist/docs/reference/schedules.html +4 -4
  234. package/dist/docs/reference/sessions.html +5 -5
  235. package/dist/docs/reference/sessions.md +3 -1
  236. package/dist/docs/reference/skills.html +4 -4
  237. package/dist/docs/reference/subagents.html +4 -4
  238. package/dist/docs/reference/tools.html +5 -5
  239. package/dist/docs/reference/tools.md +1 -2
  240. package/dist/docs/scaffolding-agents.html +4 -4
  241. package/dist/docs/skills/ab.html +4 -4
  242. package/dist/docs/skills/create-agent.html +4 -4
  243. package/dist/docs/skills/debug.html +4 -4
  244. package/dist/docs/skills/evals.html +4 -4
  245. package/dist/docs/skills/framework-map.html +5 -5
  246. package/dist/docs/skills/framework-map.md +3 -1
  247. package/dist/docs/skills/github.html +4 -4
  248. package/dist/docs/skills/hillclimb.html +4 -4
  249. package/dist/docs/skills/index.html +4 -4
  250. package/dist/docs/skills/mcp-auth.html +4 -4
  251. package/dist/docs/skills/otel.html +7 -7
  252. package/dist/docs/skills/otel.md +8 -3
  253. package/dist/docs/skills/setup-slack.html +4 -4
  254. package/dist/docs/storage.html +4 -4
  255. package/dist/docs/templates/agentic-owners.html +4 -4
  256. package/dist/docs/templates/agents-md.html +4 -4
  257. package/dist/docs/templates/code-wiki.html +4 -4
  258. package/dist/docs/templates/demo.html +4 -4
  259. package/dist/docs/templates/pr-autofixer.html +6 -6
  260. package/dist/docs/templates/pr-autofixer.md +0 -3
  261. package/dist/docs/templates/security-help.html +4 -4
  262. package/dist/docs/templates/security-reviewer.html +4 -4
  263. package/dist/docs/templates/triage.html +4 -4
  264. package/dist/docs/troubleshooting.html +4 -4
  265. package/dist/evals.d.ts +1 -1
  266. package/dist/evals.d.ts.map +1 -1
  267. package/dist/extensions.d.ts +20 -7
  268. package/dist/extensions.d.ts.map +1 -1
  269. package/dist/extensions.js +36 -5
  270. package/dist/files.d.ts +16 -3
  271. package/dist/files.d.ts.map +1 -1
  272. package/dist/files.js +16 -3
  273. package/dist/filesystem.d.ts +440 -0
  274. package/dist/filesystem.d.ts.map +1 -0
  275. package/dist/filesystem.js +1694 -0
  276. package/dist/index.d.ts +6 -4
  277. package/dist/index.d.ts.map +1 -1
  278. package/dist/index.js +4 -3
  279. package/dist/internal/ab-snapshot.d.ts.map +1 -1
  280. package/dist/internal/ab-snapshot.js +0 -1
  281. package/dist/internal/advertise-tools.d.ts.map +1 -1
  282. package/dist/internal/advertise-tools.js +1 -3
  283. package/dist/internal/authored-alias-hooks.d.ts +4 -13
  284. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  285. package/dist/internal/authored-alias-hooks.js +4 -20
  286. package/dist/internal/authored-loaders.d.ts +2 -3
  287. package/dist/internal/authored-loaders.d.ts.map +1 -1
  288. package/dist/internal/authored-loaders.js +6 -20
  289. package/dist/internal/channel-dispatch.d.ts +43 -0
  290. package/dist/internal/channel-dispatch.d.ts.map +1 -0
  291. package/dist/internal/channel-dispatch.js +77 -0
  292. package/dist/internal/chat-client.d.ts +1 -1
  293. package/dist/internal/chat-client.js +1 -1
  294. package/dist/internal/cli-ax.d.ts +5 -5
  295. package/dist/internal/cli-ax.d.ts.map +1 -1
  296. package/dist/internal/cli-ax.js +5 -5
  297. package/dist/internal/cli-bitbucket.d.ts +33 -0
  298. package/dist/internal/cli-bitbucket.d.ts.map +1 -0
  299. package/dist/internal/cli-bitbucket.js +359 -0
  300. package/dist/internal/cli-convert-automation.d.ts +1 -1
  301. package/dist/internal/cli-convert-automation.js +2 -2
  302. package/dist/internal/cli-cursor.d.ts +1 -1
  303. package/dist/internal/cli-cursor.d.ts.map +1 -1
  304. package/dist/internal/cli-cursor.js +2 -4
  305. package/dist/internal/cli-deploy.d.ts.map +1 -1
  306. package/dist/internal/cli-deploy.js +2 -6
  307. package/dist/internal/cli-github.d.ts +1 -1
  308. package/dist/internal/cli-github.js +3 -3
  309. package/dist/internal/cli-gitlab.d.ts +37 -0
  310. package/dist/internal/cli-gitlab.d.ts.map +1 -0
  311. package/dist/internal/cli-gitlab.js +380 -0
  312. package/dist/internal/cli-mcp.d.ts.map +1 -1
  313. package/dist/internal/cli-mcp.js +2 -6
  314. package/dist/internal/cli-slack.d.ts +1 -1
  315. package/dist/internal/cli-slack.d.ts.map +1 -1
  316. package/dist/internal/cli-slack.js +2 -4
  317. package/dist/internal/continuation-channel.d.ts +18 -2
  318. package/dist/internal/continuation-channel.d.ts.map +1 -1
  319. package/dist/internal/continuation-channel.js +67 -5
  320. package/dist/internal/continuation-identity.d.ts +24 -17
  321. package/dist/internal/continuation-identity.d.ts.map +1 -1
  322. package/dist/internal/continuation-identity.js +246 -32
  323. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  324. package/dist/internal/conversation-mirror.js +4 -3
  325. package/dist/internal/convert-automation/types.d.ts +1 -1
  326. package/dist/internal/convert-automation/types.js +1 -1
  327. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  328. package/dist/internal/cursor/account-mcp.js +1 -3
  329. package/dist/internal/cursor/backend-client.d.ts +5 -4
  330. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  331. package/dist/internal/cursor/backend-client.js +5 -6
  332. package/dist/internal/cursor/bound-secret-file.d.ts +56 -0
  333. package/dist/internal/cursor/bound-secret-file.d.ts.map +1 -0
  334. package/dist/internal/cursor/bound-secret-file.js +88 -0
  335. package/dist/internal/cursor/credentials.d.ts +39 -5
  336. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  337. package/dist/internal/cursor/credentials.js +58 -8
  338. package/dist/internal/cursor/hosted-bound-secrets.d.ts +41 -0
  339. package/dist/internal/cursor/hosted-bound-secrets.d.ts.map +1 -0
  340. package/dist/internal/cursor/hosted-bound-secrets.js +54 -0
  341. package/dist/internal/cursor/hosted-deployment-secrets.d.ts +19 -5
  342. package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -1
  343. package/dist/internal/cursor/hosted-deployment-secrets.js +29 -9
  344. package/dist/internal/cursor/hosted-store-secrets.d.ts +1 -1
  345. package/dist/internal/cursor/hosted-store-secrets.js +1 -1
  346. package/dist/internal/cursor-account-mcp-auth.d.ts.map +1 -1
  347. package/dist/internal/cursor-account-mcp-auth.js +2 -4
  348. package/dist/internal/cursor-deployment-relay.d.ts +6 -2
  349. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  350. package/dist/internal/cursor-deployment-relay.js +13 -9
  351. package/dist/internal/deploy-manifest.d.ts +1 -1
  352. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  353. package/dist/internal/deploy-manifest.js +1 -1
  354. package/dist/internal/discovery/ab.d.ts +1 -1
  355. package/dist/internal/discovery/ab.d.ts.map +1 -1
  356. package/dist/internal/discovery/ab.js +21 -9
  357. package/dist/internal/discovery/agent.d.ts +6 -1
  358. package/dist/internal/discovery/agent.d.ts.map +1 -1
  359. package/dist/internal/discovery/agent.js +141 -120
  360. package/dist/internal/discovery/channels.d.ts +1 -1
  361. package/dist/internal/discovery/channels.d.ts.map +1 -1
  362. package/dist/internal/discovery/channels.js +14 -14
  363. package/dist/internal/discovery/connections.d.ts +1 -5
  364. package/dist/internal/discovery/connections.d.ts.map +1 -1
  365. package/dist/internal/discovery/connections.js +30 -44
  366. package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -1
  367. package/dist/internal/discovery/cursor-plugin.js +1 -3
  368. package/dist/internal/discovery/extension-overlay.d.ts +32 -0
  369. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -0
  370. package/dist/internal/discovery/extension-overlay.js +191 -0
  371. package/dist/internal/discovery/extensions.d.ts +11 -2
  372. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  373. package/dist/internal/discovery/extensions.js +211 -74
  374. package/dist/internal/discovery/hooks.d.ts +1 -1
  375. package/dist/internal/discovery/hooks.d.ts.map +1 -1
  376. package/dist/internal/discovery/hooks.js +15 -2
  377. package/dist/internal/discovery/info.d.ts.map +1 -1
  378. package/dist/internal/discovery/info.js +10 -1
  379. package/dist/internal/discovery/modules.d.ts.map +1 -1
  380. package/dist/internal/discovery/modules.js +8 -2
  381. package/dist/internal/discovery/names.d.ts +1 -1
  382. package/dist/internal/discovery/names.d.ts.map +1 -1
  383. package/dist/internal/discovery/names.js +1 -0
  384. package/dist/internal/discovery/project.d.ts +0 -2
  385. package/dist/internal/discovery/project.d.ts.map +1 -1
  386. package/dist/internal/discovery/project.js +64 -10
  387. package/dist/internal/discovery/runtime.d.ts.map +1 -1
  388. package/dist/internal/discovery/runtime.js +1 -2
  389. package/dist/internal/discovery/schedules.d.ts +1 -1
  390. package/dist/internal/discovery/schedules.d.ts.map +1 -1
  391. package/dist/internal/discovery/schedules.js +23 -2
  392. package/dist/internal/discovery/services.d.ts +6 -2
  393. package/dist/internal/discovery/services.d.ts.map +1 -1
  394. package/dist/internal/discovery/services.js +31 -1
  395. package/dist/internal/discovery/skills.d.ts +1 -6
  396. package/dist/internal/discovery/skills.d.ts.map +1 -1
  397. package/dist/internal/discovery/skills.js +8 -3
  398. package/dist/internal/discovery/subagent.d.ts +3 -0
  399. package/dist/internal/discovery/subagent.d.ts.map +1 -1
  400. package/dist/internal/discovery/subagent.js +109 -0
  401. package/dist/internal/discovery.d.ts +1 -2
  402. package/dist/internal/discovery.d.ts.map +1 -1
  403. package/dist/internal/discovery.js +1 -2
  404. package/dist/internal/distribution.d.ts +10 -27
  405. package/dist/internal/distribution.d.ts.map +1 -1
  406. package/dist/internal/distribution.js +25 -73
  407. package/dist/internal/docs-site.js +1 -1
  408. package/dist/internal/eval-run-store.d.ts +0 -1
  409. package/dist/internal/eval-run-store.d.ts.map +1 -1
  410. package/dist/internal/eval-runner.d.ts.map +1 -1
  411. package/dist/internal/factory-resource-channel.d.ts +33 -0
  412. package/dist/internal/factory-resource-channel.d.ts.map +1 -0
  413. package/dist/internal/factory-resource-channel.js +77 -0
  414. package/dist/internal/filesystem/errors.d.ts +64 -0
  415. package/dist/internal/filesystem/errors.d.ts.map +1 -0
  416. package/dist/internal/filesystem/errors.js +175 -0
  417. package/dist/internal/filesystem/format.d.ts +28 -0
  418. package/dist/internal/filesystem/format.d.ts.map +1 -0
  419. package/dist/internal/filesystem/format.js +213 -0
  420. package/dist/internal/filesystem/merge.d.ts +34 -0
  421. package/dist/internal/filesystem/merge.d.ts.map +1 -0
  422. package/dist/internal/filesystem/merge.js +196 -0
  423. package/dist/internal/filesystem/scratch.d.ts +59 -0
  424. package/dist/internal/filesystem/scratch.d.ts.map +1 -0
  425. package/dist/internal/filesystem/scratch.js +212 -0
  426. package/dist/internal/filesystem/sdk-schemas.d.ts +29 -0
  427. package/dist/internal/filesystem/sdk-schemas.d.ts.map +1 -0
  428. package/dist/internal/filesystem/sdk-schemas.js +153 -0
  429. package/dist/internal/filesystem/tools.d.ts +42 -0
  430. package/dist/internal/filesystem/tools.d.ts.map +1 -0
  431. package/dist/internal/filesystem/tools.js +618 -0
  432. package/dist/internal/filesystem/walk.d.ts +74 -0
  433. package/dist/internal/filesystem/walk.d.ts.map +1 -0
  434. package/dist/internal/filesystem/walk.js +339 -0
  435. package/dist/internal/framework-file-storage.d.ts +8 -0
  436. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  437. package/dist/internal/framework-file-storage.js +8 -8
  438. package/dist/internal/github-fanout.d.ts +1 -1
  439. package/dist/internal/github-fanout.js +1 -1
  440. package/dist/internal/guest-network.d.ts +104 -0
  441. package/dist/internal/guest-network.d.ts.map +1 -0
  442. package/dist/internal/guest-network.js +309 -0
  443. package/dist/internal/host-otel.d.ts +3 -3
  444. package/dist/internal/host-otel.d.ts.map +1 -1
  445. package/dist/internal/host-otel.js +8 -4
  446. package/dist/internal/hosted-admission-adapter.d.ts +8 -7
  447. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  448. package/dist/internal/hosted-delivery-protocol.d.ts +6 -0
  449. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  450. package/dist/internal/hosted-delivery-protocol.js +18 -5
  451. package/dist/internal/hosted-delivery.d.ts +18 -0
  452. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  453. package/dist/internal/hosted-delivery.js +258 -118
  454. package/dist/internal/http-channel.d.ts.map +1 -1
  455. package/dist/internal/http-channel.js +1 -3
  456. package/dist/internal/init-interview.d.ts.map +1 -1
  457. package/dist/internal/init-interview.js +1 -3
  458. package/dist/internal/init-project.d.ts +2 -2
  459. package/dist/internal/init-project.js +2 -2
  460. package/dist/internal/inline-stdio-define-stub.d.ts +1 -1
  461. package/dist/internal/inline-stdio-define-stub.d.ts.map +1 -1
  462. package/dist/internal/inline-stdio-define-stub.js +1 -1
  463. package/dist/internal/is-record.d.ts +2 -0
  464. package/dist/internal/is-record.d.ts.map +1 -0
  465. package/dist/internal/is-record.js +3 -0
  466. package/dist/internal/json-schema.d.ts.map +1 -1
  467. package/dist/internal/json-schema.js +18 -10
  468. package/dist/internal/local-control-plane.d.ts +1 -2
  469. package/dist/internal/local-control-plane.d.ts.map +1 -1
  470. package/dist/internal/local-control-plane.js +3 -20
  471. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  472. package/dist/internal/mcp-endpoint.js +1 -3
  473. package/dist/internal/otel/collector.d.ts +12 -3
  474. package/dist/internal/otel/collector.d.ts.map +1 -1
  475. package/dist/internal/otel/collector.js +77 -125
  476. package/dist/internal/otel/config.d.ts +0 -2
  477. package/dist/internal/otel/config.d.ts.map +1 -1
  478. package/dist/internal/otel/config.js +17 -20
  479. package/dist/internal/otel/http.d.ts +2 -0
  480. package/dist/internal/otel/http.d.ts.map +1 -1
  481. package/dist/internal/otel/http.js +7 -1
  482. package/dist/internal/otel/mcp.d.ts.map +1 -1
  483. package/dist/internal/otel/mcp.js +3 -16
  484. package/dist/internal/otel/runtime.d.ts +26 -1
  485. package/dist/internal/otel/runtime.d.ts.map +1 -1
  486. package/dist/internal/otel/runtime.js +164 -15
  487. package/dist/internal/package-inline-stdio.d.ts.map +1 -1
  488. package/dist/internal/package-inline-stdio.js +3 -11
  489. package/dist/internal/playground/toolchain.d.ts +1 -1
  490. package/dist/internal/playground/toolchain.d.ts.map +1 -1
  491. package/dist/internal/playground/toolchain.js +1 -1
  492. package/dist/internal/request-error-status.d.ts +12 -0
  493. package/dist/internal/request-error-status.d.ts.map +1 -0
  494. package/dist/internal/request-error-status.js +52 -0
  495. package/dist/internal/resolve-prod-target.d.ts +1 -1
  496. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  497. package/dist/internal/resolve-prod-target.js +3 -7
  498. package/dist/internal/result-output.d.ts +18 -0
  499. package/dist/internal/result-output.d.ts.map +1 -0
  500. package/dist/internal/result-output.js +33 -0
  501. package/dist/internal/run-client.d.ts +2 -2
  502. package/dist/internal/run-client.js +2 -2
  503. package/dist/internal/runtime-dispatch-runner.d.ts +1 -11
  504. package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
  505. package/dist/internal/runtime-dispatch-runner.js +2 -15
  506. package/dist/internal/sdk-runner.d.ts +1 -1
  507. package/dist/internal/sdk-runner.d.ts.map +1 -1
  508. package/dist/internal/sdk-runner.js +6 -7
  509. package/dist/internal/server.d.ts.map +1 -1
  510. package/dist/internal/server.js +110 -35
  511. package/dist/internal/session-cost.d.ts +3 -3
  512. package/dist/internal/session-cost.d.ts.map +1 -1
  513. package/dist/internal/session-cost.js +3 -3
  514. package/dist/internal/session-engine.d.ts +48 -11
  515. package/dist/internal/session-engine.d.ts.map +1 -1
  516. package/dist/internal/session-engine.js +507 -115
  517. package/dist/internal/session-run-log.d.ts.map +1 -1
  518. package/dist/internal/session-run-log.js +1 -3
  519. package/dist/internal/skills-sync.d.ts +1 -4
  520. package/dist/internal/skills-sync.d.ts.map +1 -1
  521. package/dist/internal/skills-sync.js +10 -50
  522. package/dist/internal/sleep.d.ts +2 -0
  523. package/dist/internal/sleep.d.ts.map +1 -0
  524. package/dist/internal/sleep.js +3 -0
  525. package/dist/internal/store-mirror.d.ts +29 -0
  526. package/dist/internal/store-mirror.d.ts.map +1 -0
  527. package/dist/internal/store-mirror.js +70 -0
  528. package/dist/internal/tenant-slack/relay.d.ts +73 -0
  529. package/dist/internal/tenant-slack/relay.d.ts.map +1 -0
  530. package/dist/internal/tenant-slack/relay.js +138 -0
  531. package/dist/internal/testing/factory-resource-fixtures.d.ts +48 -0
  532. package/dist/internal/testing/factory-resource-fixtures.d.ts.map +1 -0
  533. package/dist/internal/testing/factory-resource-fixtures.js +41 -0
  534. package/dist/internal/testing/scm-continuation-fixtures.d.ts +33 -0
  535. package/dist/internal/testing/scm-continuation-fixtures.d.ts.map +1 -0
  536. package/dist/internal/testing/scm-continuation-fixtures.js +253 -0
  537. package/dist/internal/workspace-sync.d.ts +22 -0
  538. package/dist/internal/workspace-sync.d.ts.map +1 -0
  539. package/dist/internal/workspace-sync.js +49 -0
  540. package/dist/internal/workspace.d.ts +7 -0
  541. package/dist/internal/workspace.d.ts.map +1 -1
  542. package/dist/internal/workspace.js +13 -0
  543. package/dist/otel.d.ts +23 -1
  544. package/dist/otel.d.ts.map +1 -1
  545. package/dist/otel.js +93 -2
  546. package/dist/playground/assets/index-8YiozU89.js +67 -0
  547. package/dist/playground/assets/index-MbMxXg-y.css +1 -0
  548. package/dist/playground/index.html +2 -2
  549. package/dist/result.d.ts +24 -0
  550. package/dist/result.d.ts.map +1 -0
  551. package/dist/result.js +27 -0
  552. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  553. package/dist/storage-backends/cursor-hosted.js +7 -4
  554. package/dist/storage-protocol.d.ts.map +1 -1
  555. package/dist/storage-protocol.js +1 -3
  556. package/dist/types.d.ts +141 -26
  557. package/dist/types.d.ts.map +1 -1
  558. package/docs/README.md +2 -2
  559. package/docs/concepts.md +2 -4
  560. package/docs/design/filesystem.md +376 -0
  561. package/docs/design/runtime-abstraction.md +2 -3
  562. package/docs/evals.md +9 -7
  563. package/docs/guides/cloud-agents.md +4 -6
  564. package/docs/guides/github.md +5 -1
  565. package/docs/guides/opentelemetry.md +41 -17
  566. package/docs/reference/agent-config.md +6 -10
  567. package/docs/reference/channels.md +38 -8
  568. package/docs/reference/cli.md +3 -4
  569. package/docs/reference/extensions.md +87 -23
  570. package/docs/reference/hooks.md +215 -46
  571. package/docs/reference/playground.md +3 -0
  572. package/docs/reference/project-layout.md +2 -1
  573. package/docs/reference/result.md +94 -0
  574. package/docs/reference/sessions.md +3 -1
  575. package/docs/reference/tools.md +1 -2
  576. package/docs/templates/pr-autofixer.md +0 -3
  577. package/package.json +42 -9
  578. package/skills/framework-map/SKILL.md +3 -1
  579. package/skills/otel/SKILL.md +8 -3
  580. package/src/ab.ts +1 -1
  581. package/src/bin/agent-serve.ts +121 -21
  582. package/src/channels/bitbucket/api.ts +623 -0
  583. package/src/channels/bitbucket/binding.ts +414 -0
  584. package/src/channels/bitbucket/bitbucket-channel.ts +182 -0
  585. package/src/channels/bitbucket/bitbucket-webhook.ts +576 -0
  586. package/src/channels/bitbucket/checks.ts +154 -0
  587. package/src/channels/bitbucket/cursor-account.ts +117 -0
  588. package/src/channels/bitbucket/defaults.ts +110 -0
  589. package/src/channels/bitbucket/events.ts +84 -0
  590. package/src/channels/bitbucket/index.ts +49 -0
  591. package/src/channels/bitbucket/replay.ts +439 -0
  592. package/src/channels/bitbucket/state.ts +59 -0
  593. package/src/channels/bitbucket/types.ts +266 -0
  594. package/src/channels/change-monitors/change-monitors-channel.ts +62 -0
  595. package/src/channels/change-monitors/index.ts +8 -0
  596. package/src/channels/change-monitors/types.ts +44 -0
  597. package/src/channels/deployments/deployments-channel.ts +25 -43
  598. package/src/channels/deployments/types.ts +12 -6
  599. package/src/channels/github/binding.ts +8 -1
  600. package/src/channels/github/cursor-account.ts +17 -6
  601. package/src/channels/github/defaults.ts +4 -0
  602. package/src/channels/github/events.ts +1 -1
  603. package/src/channels/github/forward.ts +3 -2
  604. package/src/channels/github/github-channel.ts +74 -221
  605. package/src/channels/github/progress.ts +76 -10
  606. package/src/channels/github/replay.ts +1 -1
  607. package/src/channels/github/state.ts +6 -0
  608. package/src/channels/github/types.ts +2 -5
  609. package/src/channels/gitlab/api.ts +228 -0
  610. package/src/channels/gitlab/binding.ts +233 -0
  611. package/src/channels/gitlab/checks.ts +243 -0
  612. package/src/channels/gitlab/cursor-account.ts +114 -0
  613. package/src/channels/gitlab/defaults.ts +93 -0
  614. package/src/channels/gitlab/events.ts +44 -0
  615. package/src/channels/gitlab/gitlab-channel.ts +176 -0
  616. package/src/channels/gitlab/gitlab-webhook.ts +555 -0
  617. package/src/channels/gitlab/index.ts +43 -0
  618. package/src/channels/gitlab/replay.ts +347 -0
  619. package/src/channels/gitlab/state.ts +55 -0
  620. package/src/channels/gitlab/types.ts +263 -0
  621. package/src/channels/issues/index.ts +9 -0
  622. package/src/channels/issues/issues-channel.ts +51 -0
  623. package/src/channels/issues/types.ts +41 -0
  624. package/src/channels/origin/api.ts +4 -2
  625. package/src/channels/origin/origin-channel.ts +19 -94
  626. package/src/channels/origin/types.ts +23 -2
  627. package/src/channels/slack/eval-directive.ts +1 -6
  628. package/src/channels/slack/init.ts +6 -3
  629. package/src/channels/slack/setup.ts +7 -6
  630. package/src/channels/slack/types.ts +1 -1
  631. package/src/channels.ts +0 -1
  632. package/src/client.ts +1 -1
  633. package/src/connections.ts +1 -1
  634. package/src/evals.ts +1 -1
  635. package/src/extensions.ts +47 -5
  636. package/src/files.ts +21 -3
  637. package/src/filesystem.ts +2074 -0
  638. package/src/index.ts +48 -28
  639. package/src/internal/ab-snapshot.ts +0 -3
  640. package/src/internal/advertise-tools.ts +1 -4
  641. package/src/internal/authored-alias-hooks.ts +4 -21
  642. package/src/internal/authored-loaders.ts +6 -23
  643. package/src/internal/channel-dispatch.ts +160 -0
  644. package/src/internal/chat-client.ts +1 -1
  645. package/src/internal/cli-ax.ts +5 -5
  646. package/src/internal/cli-bitbucket.ts +477 -0
  647. package/src/internal/cli-convert-automation.ts +7 -7
  648. package/src/internal/cli-cursor.ts +2 -5
  649. package/src/internal/cli-deploy.ts +2 -8
  650. package/src/internal/cli-github.ts +3 -3
  651. package/src/internal/cli-gitlab.ts +485 -0
  652. package/src/internal/cli-mcp.ts +2 -7
  653. package/src/internal/cli-slack.ts +2 -5
  654. package/src/internal/continuation-channel.ts +102 -4
  655. package/src/internal/continuation-identity.ts +338 -35
  656. package/src/internal/conversation-mirror.ts +4 -3
  657. package/src/internal/convert-automation/types.ts +1 -1
  658. package/src/internal/cursor/account-mcp.ts +1 -4
  659. package/src/internal/cursor/backend-client.ts +9 -10
  660. package/src/internal/cursor/bound-secret-file.ts +108 -0
  661. package/src/internal/cursor/credentials.ts +75 -10
  662. package/src/internal/cursor/hosted-bound-secrets.ts +75 -0
  663. package/src/internal/cursor/hosted-deployment-secrets.ts +42 -11
  664. package/src/internal/cursor/hosted-store-secrets.ts +1 -1
  665. package/src/internal/cursor-account-mcp-auth.ts +2 -5
  666. package/src/internal/cursor-deployment-relay.ts +11 -7
  667. package/src/internal/deploy-manifest.ts +4 -2
  668. package/src/internal/discovery/ab.ts +29 -9
  669. package/src/internal/discovery/agent.ts +181 -136
  670. package/src/internal/discovery/channels.ts +15 -13
  671. package/src/internal/discovery/connections.ts +55 -50
  672. package/src/internal/discovery/cursor-plugin.ts +1 -4
  673. package/src/internal/discovery/extension-overlay.ts +274 -0
  674. package/src/internal/discovery/extensions.ts +330 -105
  675. package/src/internal/discovery/hooks.ts +20 -2
  676. package/src/internal/discovery/info.ts +10 -0
  677. package/src/internal/discovery/modules.ts +8 -2
  678. package/src/internal/discovery/names.ts +2 -1
  679. package/src/internal/discovery/project.ts +80 -9
  680. package/src/internal/discovery/runtime.ts +1 -2
  681. package/src/internal/discovery/schedules.ts +28 -2
  682. package/src/internal/discovery/services.ts +37 -1
  683. package/src/internal/discovery/skills.ts +13 -3
  684. package/src/internal/discovery/subagent.ts +107 -0
  685. package/src/internal/discovery.ts +0 -2
  686. package/src/internal/distribution.ts +35 -83
  687. package/src/internal/docs-site.ts +1 -1
  688. package/src/internal/eval-run-store.ts +0 -7
  689. package/src/internal/eval-runner.ts +0 -1
  690. package/src/internal/factory-resource-channel.ts +122 -0
  691. package/src/internal/filesystem/errors.ts +220 -0
  692. package/src/internal/filesystem/format.ts +276 -0
  693. package/src/internal/filesystem/merge.ts +195 -0
  694. package/src/internal/filesystem/scratch.ts +255 -0
  695. package/src/internal/filesystem/sdk-schemas.ts +204 -0
  696. package/src/internal/filesystem/tools.ts +821 -0
  697. package/src/internal/filesystem/walk.ts +369 -0
  698. package/src/internal/framework-file-storage.ts +8 -8
  699. package/src/internal/github-fanout.ts +1 -1
  700. package/src/internal/guest-network.ts +389 -0
  701. package/src/internal/host-otel.ts +8 -4
  702. package/src/internal/hosted-admission-adapter.ts +8 -8
  703. package/src/internal/hosted-delivery-protocol.ts +26 -1
  704. package/src/internal/hosted-delivery.ts +393 -192
  705. package/src/internal/http-channel.ts +1 -4
  706. package/src/internal/init-interview.ts +1 -4
  707. package/src/internal/init-project.ts +2 -2
  708. package/src/internal/inline-stdio-define-stub.ts +1 -1
  709. package/src/internal/is-record.ts +3 -0
  710. package/src/internal/json-schema.ts +19 -10
  711. package/src/internal/local-control-plane.ts +5 -24
  712. package/src/internal/mcp-endpoint.ts +1 -4
  713. package/src/internal/otel/collector.ts +94 -159
  714. package/src/internal/otel/config.ts +10 -14
  715. package/src/internal/otel/http.ts +14 -1
  716. package/src/internal/otel/mcp.ts +3 -16
  717. package/src/internal/otel/runtime.ts +240 -25
  718. package/src/internal/package-inline-stdio.ts +3 -12
  719. package/src/internal/playground/toolchain.ts +1 -1
  720. package/src/internal/request-error-status.ts +72 -0
  721. package/src/internal/resolve-prod-target.ts +3 -8
  722. package/src/internal/result-output.ts +34 -0
  723. package/src/internal/run-client.ts +2 -2
  724. package/src/internal/runtime-dispatch-runner.ts +3 -21
  725. package/src/internal/sdk-runner.ts +7 -7
  726. package/src/internal/server.ts +153 -44
  727. package/src/internal/session-cost.ts +3 -3
  728. package/src/internal/session-engine.ts +621 -103
  729. package/src/internal/session-run-log.ts +1 -4
  730. package/src/internal/skills-sync.ts +13 -63
  731. package/src/internal/sleep.ts +3 -0
  732. package/src/internal/store-mirror.ts +86 -0
  733. package/src/internal/tenant-slack/relay.ts +179 -0
  734. package/src/internal/testing/factory-resource-fixtures.ts +85 -0
  735. package/src/internal/testing/scm-continuation-fixtures.ts +286 -0
  736. package/src/internal/workspace-sync.ts +55 -0
  737. package/src/internal/workspace.ts +14 -0
  738. package/src/otel.ts +143 -3
  739. package/src/result.ts +36 -0
  740. package/src/storage-backends/cursor-hosted.ts +7 -4
  741. package/src/storage-protocol.ts +1 -4
  742. package/src/types.ts +154 -37
  743. package/templates/triage/agent/lib/types.ts +0 -2
  744. package/dist/continuation.d.ts +0 -20
  745. package/dist/continuation.d.ts.map +0 -1
  746. package/dist/continuation.js +0 -18
  747. package/dist/docs/assets/chunks/@localSearchIndexroot.FAqdWIXo.js +0 -1
  748. package/dist/docs/assets/concepts.md.rPzW2HZN.js +0 -1
  749. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +0 -9
  750. package/dist/docs/assets/guides_cloud-runtime.md.BRirbRAN.js +0 -9
  751. package/dist/docs/assets/guides_cloud-runtime.md.BRirbRAN.lean.js +0 -1
  752. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +0 -1
  753. package/dist/docs/assets/reference_hooks.md.a8BJxMR5.js +0 -14
  754. package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +0 -1
  755. package/dist/docs/guides/cloud-runtime.html +0 -35
  756. package/dist/docs/guides/cloud-runtime.md +0 -117
  757. package/dist/internal/convert-automation/index.d.ts +0 -3
  758. package/dist/internal/convert-automation/index.d.ts.map +0 -1
  759. package/dist/internal/convert-automation/index.js +0 -1
  760. package/dist/internal/grokbot/runner.d.ts +0 -64
  761. package/dist/internal/grokbot/runner.d.ts.map +0 -1
  762. package/dist/internal/grokbot/runner.js +0 -282
  763. package/dist/internal/managed-delivery.d.ts +0 -80
  764. package/dist/internal/managed-delivery.d.ts.map +0 -1
  765. package/dist/internal/managed-delivery.js +0 -86
  766. package/dist/internal/review-comments.d.ts +0 -370
  767. package/dist/internal/review-comments.d.ts.map +0 -1
  768. package/dist/internal/review-comments.js +0 -921
  769. package/dist/internal/shallow-clone.d.ts +0 -176
  770. package/dist/internal/shallow-clone.d.ts.map +0 -1
  771. package/dist/internal/shallow-clone.js +0 -419
  772. package/dist/playground/assets/index-B6C9S9nG.css +0 -1
  773. package/dist/playground/assets/index-ZqNoT8Ie.js +0 -69
  774. package/docs/guides/cloud-runtime.md +0 -122
  775. package/src/continuation.ts +0 -49
  776. package/src/internal/convert-automation/index.ts +0 -10
  777. package/src/internal/grokbot/runner.ts +0 -370
  778. package/src/internal/managed-delivery.ts +0 -125
  779. package/src/internal/review-comments.ts +0 -1363
  780. package/src/internal/shallow-clone.ts +0 -609
  781. /package/dist/docs/assets/{evals.md.CPzDAwoH.lean.js → evals.md.CbMoebP1.lean.js} +0 -0
  782. /package/dist/docs/assets/{guides_cloud-agents.md.DumwWXba.lean.js → guides_cloud-agents.md.DS8RIjwx.lean.js} +0 -0
  783. /package/dist/docs/assets/{index.md.Kiht7ell.lean.js → index.md.D75GWhPl.lean.js} +0 -0
  784. /package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.lean.js → reference_agent-config.md.CHNpiyp4.lean.js} +0 -0
  785. /package/dist/docs/assets/{reference_cli.md.DfoeyvL0.lean.js → reference_cli.md.CJNc_xYK.lean.js} +0 -0
  786. /package/dist/docs/assets/{reference_playground.md.DnX5nL-B.lean.js → reference_playground.md.4myJPxrf.lean.js} +0 -0
  787. /package/dist/docs/assets/{reference_project-layout.md.CA6QP6Lw.lean.js → reference_project-layout.md.DuBu9a96.lean.js} +0 -0
  788. /package/dist/docs/assets/{reference_tools.md.B1up2r9W.lean.js → reference_tools.md.aGrn99hP.lean.js} +0 -0
  789. /package/dist/docs/assets/{skills_framework-map.md.DDa4MeEW.lean.js → skills_framework-map.md.haibFyoB.lean.js} +0 -0
@@ -0,0 +1,376 @@
1
+ # One FileSystem for every Agent SDK agent
2
+
3
+ > **Status:** first implementation, this PR. `@cursor/july` only.
4
+ > No Cursor SDK change.
5
+ > **Audience:** Agent SDK maintainers.
6
+
7
+ Every local turn binds a **FileSystem** and synthesizes native file
8
+ tools from it. There is no "is there an override?" branch on the
9
+ tool path. Authors pick the tree with `root`. Omit `root` and the
10
+ tree is the host disk, through internal `localFileSystem`.
11
+
12
+ ```ts
13
+ // Host disk. Relative paths resolve against the harness cwd.
14
+ export default defineAgent({
15
+ name: "reviewer",
16
+ });
17
+
18
+ // Override. The model sees only this tree. Paths are posix `/`.
19
+ export default defineAgent({
20
+ name: "notes",
21
+ root: tempFs({ "/notes.md": "hello" }),
22
+ });
23
+ ```
24
+
25
+ ---
26
+
27
+ ## Names
28
+
29
+ | Name | Kind | Meaning |
30
+ | --- | --- | --- |
31
+ | `FileSystem` | Type on `@cursor/july` | Path verbs. Authors provide this. |
32
+ | `root` | Field on `defineAgent` | The FileSystem the agent runs on. Omit it and the root is the host disk. |
33
+
34
+ No `root()` method and no public `Workspace` type.
35
+ `local.workspaceDir` stays the harness cwd. `workspaceFiles` stays
36
+ per-send seed files. Those names are not the path namespace.
37
+
38
+ Do not pass `local.root` into `Agent.create`. The published SDK
39
+ does not have that field.
40
+
41
+ ---
42
+
43
+ ## FileSystem
44
+
45
+ ```ts
46
+ interface FileSystem {
47
+ list(prefix?: string): AsyncIterable<DirEntry>;
48
+ stat(path: string): Promise<FileInfo>;
49
+ glob(pattern: string, dir?: string): AsyncIterable<DirEntry>;
50
+ read(path: string): Promise<string | Uint8Array>;
51
+ grep(query: GrepQuery): AsyncIterable<GrepResult>;
52
+ write(path: string, contents: string): Promise<void>;
53
+ delete(path: string): Promise<void>;
54
+ search(query: SearchQuery): AsyncIterable<SearchResult>;
55
+ }
56
+ ```
57
+
58
+ Every method is required. A tree without an index yields nothing
59
+ from `search`. Methods do not fall back to the host tree.
60
+ Diagnostics are not a FileSystem verb.
61
+
62
+ Path verbs take a path (and contents for `write`). Bags with two
63
+ or more independent options (`grep`, `search`) take a
64
+ named query object.
65
+
66
+ `read` returns text as a string, or image bytes as a
67
+ `Uint8Array` (`jpeg` / `png` / `gif` / `webp`). Native Read
68
+ applies `offset` / `limit` and numbers lines on text. Images
69
+ become a base64 image content part, the same shape the Cursor
70
+ harness sends the model.
71
+
72
+ FileSystem methods throw; they do not return a status envelope.
73
+ `@cursor/july` does not export `FileSystemResult`.
74
+
75
+ ### Paths
76
+
77
+ Authored `root` (`tempFs`, `unionFs`, `overlayFs`, `hostFs`, a custom tree) is one posix
78
+ namespace rooted at `/`. Query paths and yielded paths are
79
+ absolute (`/src/a.ts`). No trailing slash except `/`. `""`, `"/"`,
80
+ and an omitted optional scope mean the root. Prefix tests are
81
+ path-segment: `/agent` matches `/agent/skills`, not
82
+ `/agent-tools`. `normalizeFsPath` resolves `..`. `/tmp` is
83
+ reserved for turn-local scratch. See `/tmp` scratch.
84
+
85
+ Host-default `localFileSystem` follows Cursor SDK natives:
86
+ relative paths resolve against the harness cwd; absolute paths
87
+ are used as-is. Yielded paths are host paths, not rewritten to
88
+ `/`. `search` is empty (no host index).
89
+
90
+ ### Iterators
91
+
92
+ Async iterators are already sorted. `unionFs` k-way merges them
93
+ and does not re-sort a source.
94
+
95
+ - `list` / `glob`: lexicographic by `path`. Paths are unique.
96
+ - `grep`: by `path`, then `lineNumber` ascending. Keep every hit.
97
+ - `search`: by `score` descending, then `path` ascending.
98
+
99
+ A file is not under itself, so listing a file path is empty.
100
+ Empty `list` is not "missing"; `stat` answers that.
101
+
102
+ `glob(pattern, dir?)` matches relative to `dir`, not
103
+ basename-anywhere (`*.ts` under `/src` is `/src/a.ts`, not
104
+ `/src/nested/c.ts`).
105
+
106
+ `grep` has no `output_mode` or `offset`. A slash-free `glob`
107
+ (`*.ts`) matches the basename at any depth under `path`.
108
+ `grep` / `search` take optional `maxResults` as predicate
109
+ pushdown; implementations should stop after that many hits.
110
+ Composers push the same cap to children and apply it again
111
+ after the merge.
112
+
113
+ Native-tool pagination (`head_limit`, `offset`, `output_mode`,
114
+ `numResults`) stays on synthesized tools. Native `LS` is built
115
+ from `list` + `stat`; there is no `ls` method.
116
+
117
+ ### Errors
118
+
119
+ FileSystem methods throw `PathError`. `path` is the absolute
120
+ posix path the error is about. Messages stay these contract
121
+ strings so synthesized tools can show them as-is.
122
+
123
+ - `list` / `stat` / `glob` must not throw for a missing path.
124
+ Missing is an empty iterator or `{ kind: "missing" }`.
125
+ - `read` / `delete` missing file: `FileNotFoundError`
126
+ (`not found: ${path}`).
127
+ - `write` has no `not found`. I/O uses the OS message or
128
+ `WriteFailedError` (`write failed: ${path}`). A read-only
129
+ mount uses `ReadOnlyMountError` (`read-only mount: ${path}`).
130
+ - Synthesized StrReplace is `read` + exact replace + `write`.
131
+ Uniqueness failures throw `EditError` (`oldText is empty`,
132
+ `oldText and newText are exactly the same`, `The string to
133
+ replace was not found in the file`, and `The string to replace
134
+ was found multiple times in the file. Use replace_all to replace
135
+ all occurrences, or include more context to only edit one
136
+ occurrence.`). Write-back failures are `WriteFailedError`.
137
+ - `grep` throws `InvalidGrepPatternError`
138
+ (`invalid grep pattern: ${pattern}`). A missing host search
139
+ root throws. A missing virtual path yields nothing.
140
+ - `search` without an index is empty success.
141
+ - `unionFs` with no mount throws `NoMountError`
142
+ (`no mount for path: ${path}`) on `read` / `write` /
143
+ `delete`. Walk verbs stay empty or missing.
144
+ - `unionFs` catches `PathError` from a child and rethrows
145
+ `error.withPath(mountPrefix + childPath)`. Untyped `Error` still
146
+ gets a best-effort message rewrite.
147
+
148
+ Invoke wraps FileSystem throws into the executor success / error
149
+ envelope.
150
+
151
+ ### Write and StrReplace
152
+
153
+ `write(path, contents)` creates or overwrites a file. Success is
154
+ empty. Native Write maps `fileText` onto `contents` and prints
155
+ `Wrote contents to ${path}`.
156
+
157
+ StrReplace is not a FileSystem verb. The synthesized tool reads
158
+ the file, applies an exact non-overlapping replace, and writes
159
+ the result. It fails when `oldText` is empty, equals `newText`,
160
+ is missing, or occurs more than once without `replaceAll`.
161
+ Success is `{ occurrencesModified }`. Splice is literal; do not
162
+ use `String.prototype.replace`. Native aliases (`old_string`,
163
+ `new_string`, `replace_all`) map onto those fields at invoke
164
+ time.
165
+
166
+ ---
167
+
168
+ ## Helpers
169
+
170
+ | Helper | Role |
171
+ | --- | --- |
172
+ | `emptyFs()` | No files. Overlay leaf or missing catalog. Reads miss; writes are read-only. |
173
+ | `tempFs(files)` | In-memory snapshot. Tests and fixtures. |
174
+ | `unionFs({ "/repo": a, "/plans": b })` | Longest-prefix compose, path-segment match. Children are FileSystems rooted at `/`; `unionFs` strips the mount prefix on the way in and re-prefixes yields. List and glob use `unique` so an earlier mount shadows a later one. Grep and search keep every hit. Grep and search at `/` fan out to every child. |
175
+ | `overlayFs([upper, lower])` | Same-root overlay. Earlier layers win. Read-only. A downed layer costs its own files, not the overlay — `stat` / `grep` / `search` only fail when no layer served. |
176
+ | `hostFs(files, scope)` | `HostFilesApi` as a FileSystem rooted at `/`. Mount with `unionFs({ "/host": hostFs(files, scope) })`. `search` is empty (no index). Write without a cached etag is unconditional; after a successful read or write, write is CAS on that etag. |
177
+
178
+ `localFileSystem({ cwd })` is the host-default handle. It is not
179
+ exported from `@cursor/july`. Name helpers and `mergeSorted`
180
+ stay private. `emptyFs`, `tempFs`, `unionFs`, `overlayFs`, `hostFs`, and
181
+ the `PathError` classes (`FileNotFoundError`,
182
+ `ReadOnlyMountError`, `NoMountError`, `InvalidGrepPatternError`,
183
+ `WriteFailedError`, `EditError`,
184
+ `DeleteNotSupportedError`) are the public helpers.
185
+
186
+ ---
187
+
188
+ ## Tool synthesis
189
+
190
+ Local turns synthesize these natives from the bound FileSystem:
191
+ `Read`, `LS`, `Grep`, `Glob`, `Write`, `StrReplace`, `Delete`,
192
+ `SemanticSearch`. `list` + `stat` synthesize `LS`. `search`
193
+ synthesizes `SemanticSearch`. `StrReplace` is `read` + exact
194
+ replace + `write`. Other execute bodies call the matching
195
+ FileSystem method.
196
+
197
+ Authored `tools` can filter that set. `tools: ["read", "shell"]`
198
+ on a host-default agent synthesizes `Read` only.
199
+ `tools: ["edit"]` synthesizes `Write` and `StrReplace`.
200
+ `tools: ["semSearch"]` synthesizes `SemanticSearch`.
201
+ `tools: []` synthesizes nothing.
202
+
203
+ Host-default does not synthesize `SemanticSearch`. Native
204
+ `semSearch` stays on so the host index can run;
205
+ `localFileSystem.search` is empty. Authored `root` synthesizes
206
+ `SemanticSearch` from `FileSystem.search` and does not advertise
207
+ native `semSearch`. `search` is not an allowlist alias, so an
208
+ authored `search` tool is not treated as SemanticSearch.
209
+ `ReadLints` is not a FileSystem verb. Authored
210
+ `tools: ["readLints"]` fails closed so the host language service
211
+ cannot run.
212
+
213
+ Do not also ship `agent/tools/Read.ts` (and the other synthesized
214
+ names). Discovery fails closed on that clash for host-default and
215
+ authored `root`.
216
+
217
+ A factory root re-resolves the handle before a turn. The session
218
+ cache is the handle, not a tree snapshot. Unscoped `callTool`
219
+ uses the invocation id and does not cache, so factories cannot
220
+ share one tree across callers. A static `root` is the authored
221
+ object on every session — Write / StrReplace / Delete /
222
+ `workspaceFiles` are shared. Return a new handle from
223
+ `(ctx) => …` when a session should have its own tree. A factory
224
+ that returns the same object still shares.
225
+
226
+ Per-send `workspaceFiles` write through the FileSystem.
227
+ `memory/` is reserved (same as the host-default workspace
228
+ symlink into durable agent memory) and is refused after
229
+ normalize, including `./memory/x` and `foo/../memory/x`.
230
+ Host-default `list` / `glob` / `grep` do not follow directory
231
+ symlinks, including `memory/` — same as native LS/Glob/Grep.
232
+ Exact-path `read` / `stat` still follow.
233
+
234
+ Authored `root` skips session-directory materialize, git init,
235
+ and host-cwd checks. First turns prepend `buildAgentsMdContent`
236
+ and print `Workspace Path: /`. Host-default agents keep today's
237
+ materialize path.
238
+
239
+ ---
240
+
241
+ ## Allowlist
242
+
243
+ | `root` | `tools` | Model-facing harness |
244
+ | --- | --- | --- |
245
+ | omitted | omitted | The seven host-disk file tools (no synthesized `SemanticSearch`). Host shell / webSearch / sandbox / native `semSearch` stay. Host file natives are hidden with `disallowedTools: ["read","ls","grep","glob","edit","delete"]`. |
246
+ | omitted | `["read", "shell"]` | Synthesized `Read` + SDK `shell` + `mcp`. |
247
+ | omitted | `[]` | No synthesized file tools. |
248
+ | set | omitted | All eight synthesized file tools (including `SemanticSearch`) + webSearch + webFetch + updateTodos + readTodos + `mcp`. Bind `/tmp` scratch. Not the host-default full catalog (no shell / sandbox / task / native semSearch). |
249
+ | set | `["updateTodos"]` | All eight synthesized file tools + `updateTodos` + `mcp`. |
250
+ | set | `["semSearch"]` | Synthesized `SemanticSearch` + `mcp`. Native host index stays off. |
251
+ | set | `[]` | No synthesized file tools. Legal and empty. |
252
+ | set | `["shell"]` / `["task"]` / `["readLints"]` | Fail closed. |
253
+ | set | `["webSearch"]` / `["webFetch"]` | All eight synthesized file tools + the listed web tool + `mcp`. Bind `/tmp` scratch. |
254
+
255
+ `mcp` is granted when any tools ride that path. File-family
256
+ allowlist names are omitted from the SDK allowlist; the
257
+ synthesized tools replace them.
258
+
259
+ `local.sandbox` is Cursor's process sandbox around child
260
+ processes on the host-default path. It is not a FileSystem.
261
+
262
+ ---
263
+
264
+ ## Fail closed
265
+
266
+ | Combination | Result |
267
+ | --- | --- |
268
+ | `root` + `local.cwd` / `workspaceDir` / `sandbox` | Fail closed |
269
+ | `root` + `runtime: "cloud"` or `"grokbot"` | Fail closed |
270
+ | `root` + `tools` containing `"shell"` | Fail closed |
271
+ | `root` + `tools` containing `"task"` | Fail closed. A child keeps the host toolset. Sharing `root` needs a Cursor SDK inherit, not an overridden Task. |
272
+ | `root` + `tools` containing `"readLints"` | Fail closed. Diagnostics are not a FileSystem verb. |
273
+ | `agent/tools/Read.ts` (etc.) | Fail closed on host-default and authored `root`. |
274
+
275
+ ---
276
+
277
+ ## `/tmp` scratch for webSearch and webFetch
278
+
279
+ Native `WebSearch` and `WebFetch` stay native. They still scratch
280
+ large output to `{harnessCwd}/agent-tools/{uuid}.txt` on the host
281
+ disk. Under `root`, the turn composes
282
+ `unionFs({ "/": authored, "/tmp": tempFs() })`, copies only the file
283
+ the native tool wrote this turn, and drops that composed root at
284
+ end of turn.
285
+
286
+ ### Why `/tmp`
287
+
288
+ The FileSystem is the model's disk. Host `{cwd}/agent-tools/` is a
289
+ harness path. Under `root`, the model never sees it.
290
+
291
+ `/tmp` is the reserved scratch prefix. An authored `/tmp` is
292
+ shadowed. Do not put durable files there. `{cwd}/agent-tools/` and
293
+ `/tmp` are different namespaces.
294
+
295
+ `/agent-tools` is not reserved. Prefix `/agent` does not cover
296
+ `/agent-tools`. Those notes are path-prefix tests, not a mount.
297
+
298
+ Process or VM death also loses `/tmp`. Same as POSIX `/tmp`. That
299
+ is acceptable. Do not persist scratch across turns or process
300
+ restarts.
301
+
302
+ ### Overlay
303
+
304
+ | Piece | Rule |
305
+ | --- | --- |
306
+ | Native tool | Still searches and fetches. |
307
+ | Bind | Per turn: `unionFs({ "/": authored, "/tmp": tempFs() })`. `/tmp` is a mount, not a FileSystem type. |
308
+ | Session cache | Authored handle may stay cached. The composed root does not. |
309
+ | Drop | End of turn. Next turn gets a new empty `/tmp`. |
310
+ | Small results | Stay inline. No disk, no rewrite. |
311
+ | Copy | Only a file the native tool wrote this turn under `{cwd}/agent-tools/`. |
312
+ | Dest | `/tmp/{uuid}.txt`. Same uuid as the host file. |
313
+ | Host file | Delete after copy. |
314
+ | Other paths | Ignore. Do not copy from the result text at large. |
315
+
316
+ Do not put that composed root on the session handle. A later turn
317
+ must not read another turn's `/tmp`.
318
+
319
+ ### Result rewrite
320
+
321
+ Keep the native tool descriptions. They do not mention spill.
322
+
323
+ This package does not change the Cursor SDK. Native WebSearch /
324
+ WebFetch results land in the AgentService conversation inside
325
+ the local executor. That transcript is not rewritten here.
326
+
327
+ What this package rewrites:
328
+
329
+ | Surface | Overlay (`root` set) |
330
+ | --- | --- |
331
+ | `webSearch` / `webFetch` result | Host path and follow-up, in strings or structured fields (`output_location`). Other tools are untouched. |
332
+ | Synthesized Read / Grep input | `{cwd}/agent-tools/{uuid}.txt` → `/tmp/{uuid}.txt` |
333
+
334
+ | Field | Host path (`root` unset) | Overlay (`root` set) |
335
+ | --- | --- | --- |
336
+ | Path | `{cwd}/agent-tools/{uuid}.txt` | `/tmp/{uuid}.txt` |
337
+ | Follow-up | Native text (today: shell / grep / `read_file`) | Read / Grep |
338
+
339
+ Two modes, two paths. Do not invent a third.
340
+
341
+ WebFetch proto has `output_location`. WebSearch only embeds the
342
+ path in the chunk string. Rewrite whichever form the native tool
343
+ used.
344
+
345
+ The model follow path is Read / Grep on `/tmp/{uuid}.txt`,
346
+ including when the model still holds the host path.
347
+
348
+ ### Out of scope here
349
+
350
+ MCP `spillLargeMcpTextOutput` uses the same host `agent-tools`
351
+ directory. The same overlay can cover it later. This section is
352
+ webSearch and webFetch only.
353
+
354
+ ---
355
+
356
+ ## Live `root`
357
+
358
+ When the tree depends on the conversation, pass a factory. The
359
+ factory returns a handle. Agent SDK may reuse the object for the
360
+ session. Reuse is not a snapshot of mount contents.
361
+
362
+ ```ts
363
+ export default defineAgent({
364
+ name: "notes",
365
+ root: (ctx) => notesForSession(ctx.sessionId),
366
+ });
367
+ ```
368
+
369
+ ```ts
370
+ interface RootContext {
371
+ sessionId: string;
372
+ agentName?: string;
373
+ continuationKey?: string;
374
+ host?: { files: HostFilesApi; reminders?: ReminderHostApi };
375
+ }
376
+ ```
@@ -5,8 +5,8 @@
5
5
  > until this document has been reviewed.
6
6
  > **Audience:** Agent SDK and cursor-sdk maintainers; change-monitor as the
7
7
  > first consumer that is already faking a third runtime.
8
- > **Companions:** [cloud-runtime.md](../guides/cloud-runtime.md) (today's
9
- > user-facing contract),
8
+ > **Companions:** [agent-config.md](../reference/agent-config.md#choose-a-runtime)
9
+ > (today's user-facing contract),
10
10
  > [factory/change-monitor/docs/tools.md](../../../../factory/change-monitor/docs/tools.md)
11
11
  > (why change-monitor is pinned to local),
12
12
  > [factory/change-monitor/docs/computer-use.md](../../../../factory/change-monitor/docs/computer-use.md)
@@ -1604,7 +1604,6 @@ sandbox })`, next to `cloudRuntime({ repos })`. Sibling
1604
1604
  | Page | Change |
1605
1605
  |---|---|
1606
1606
  | [reference/agent-config.md](../reference/agent-config.md) | `runtime` type becomes constructors **or** the deprecated string. Table + "Choose a runtime" show `localRuntime(opts)` / `cloudRuntime(opts)` / `virtualRuntime(fs)` first. Move cwd / sandbox / workspaceDir onto the `localRuntime` section. Mark sibling `local` / `cloud` and string `runtime` deprecated. |
1607
- | [guides/cloud-runtime.md](../guides/cloud-runtime.md) | Open with `cloudRuntime({ repos })`. Keep `runtime: "cloud"` as the still-supported form. Cloud is a turn host, not a filesystem. Hybrid is `send({ runtime: cloudRuntime(opts) })`; local overlay is `send({ runtime: localRuntime(opts) })`. `send({ cloud })` / `send({ workspaceDir })` deprecated. |
1608
1607
  | [concepts.md](../concepts.md) | Local vs cloud table: same facts, constructor names. Add one line that `virtualRuntime` is local-with-your-files, not a third host. |
1609
1608
 
1610
1609
  **New page**
package/docs/evals.md CHANGED
@@ -157,17 +157,19 @@ Drive the agent with `t.send(message, options?)`. It runs one turn and
157
157
  waits for the session to park or fail. Multiple sends in one case share
158
158
  the session, which is how you write multi-turn evals.
159
159
 
160
- Each `t.send` resolves to a turn result with `message`, `sessionId`,
161
- `events`, `toolCalls`, `ok`, and `index`. The turn carries the same
162
- assertion vocabulary as `t`, scoped to that turn, so you can grade an
163
- intermediate turn before the next send overwrites `t.reply`.
164
- `turn.expectOk()` throws when the turn failed, for later steps that
165
- depend on it.
160
+ Each `t.send` resolves to a turn result with `message`,
161
+ `sessionId`, `events`, `toolCalls`, `ok`, and `index`. The turn carries
162
+ the same assertion vocabulary as `t`, scoped to that turn, so you can
163
+ grade an intermediate turn before the next send overwrites `t.reply`.
164
+ `turn.expectOk()` throws when the turn failed, for later
165
+ steps that depend on it.
166
166
 
167
167
  Read the full case state with `t.reply` (the last assistant text),
168
168
  `t.events` (session events captured so far), `t.turns` (settled
169
169
  turns, oldest first), and `t.sessionId`. `t.signal` aborts when the
170
- case hits its timeout; pass it to your own async work.
170
+ case hits its timeout; pass it to your own async work. A thrown
171
+ [turn result](./reference/result.md) `commit` fails the turn, so
172
+ `t.succeeded()` fails too.
171
173
 
172
174
  Assert with the gates:
173
175
 
@@ -13,7 +13,8 @@ questions in the meantime. A Slack triage agent turns a bug report into
13
13
  a PR, a planner fans a refactor out across repositories, a reviewer asks
14
14
  a cloud agent to address its own comments.
15
15
 
16
- This is different from the [cloud runtime](./cloud-runtime.md). The
16
+ This is different from
17
+ [`runtime: "cloud"`](../reference/agent-config.md#choose-a-runtime). The
17
18
  runtime moves *this* agent's turns onto a cloud VM. The extension keeps
18
19
  the agent where it is and lets it start *other* cloud agents.
19
20
 
@@ -38,9 +39,8 @@ Launches run under the host's signed-in account (`agent-sdk login` or
38
39
  repositories the agent may target, and keep approval on when you can't.
39
40
 
40
41
  Mount it on an agent that runs on the local runtime; that is where
41
- launches park for approval. On the
42
- [cloud runtime](./cloud-runtime.md#what-changes-on-cloud) approvals
43
- don't resolve.
42
+ launches park for approval. On the cloud runtime approvals don't
43
+ resolve.
44
44
 
45
45
  ## What the agent can do
46
46
 
@@ -94,5 +94,3 @@ Continue with these pages:
94
94
  overrides work
95
95
  - [Human-in-the-loop approvals](./human-in-the-loop.md): where parked
96
96
  launches get approved
97
- - [Cloud runtime](./cloud-runtime.md): run the agent's own turns on
98
- cloud agents instead
@@ -260,6 +260,11 @@ behavior. Reactions still default on; set `reactions: false` when the
260
260
  eyes emoji is noise. Descriptions are optional; defaults derive from
261
261
  `botName` or the check `context`.
262
262
 
263
+ To match dashboard automations, set `detailsUrl(sessionId)`,
264
+ `summaryLinkText: "View agent"`, and `outputTitle: "context"` so the
265
+ check title is the check name, the summary includes `[View agent](…)`,
266
+ and Details opens the session.
267
+
263
268
  A comment-only first wake has no head SHA, so the check waits for a
264
269
  PR or CI event. The banner still posts. A later turn on the same SHA
265
270
  creates a new check run; GitHub cannot reopen a completed run.
@@ -275,6 +280,5 @@ key. Handlers you author replace the matching defaults (same as
275
280
  - [Webhooks and custom channels](./webhooks.md): the HTTP mechanism under
276
281
  this pack
277
282
  - [Evals](../evals.md): turn replay snapshots into regression fixtures
278
- - [Cloud runtime](./cloud-runtime.md): attach PRs to cloud VMs
279
283
  - [Hooks](../reference/hooks.md): observe-only; use channel `progress` for
280
284
  GitHub surfaces
@@ -8,7 +8,7 @@ description: "Push session, turn, and tool traces from the serve process to an O
8
8
  Agent SDK can push traces, metrics, and logs from the serve process to
9
9
  an OTLP collector you run. Point the process at the collector with
10
10
  standard `OTEL_EXPORTER_OTLP_*` env, or author `agent/otel.ts`. Traces
11
- cover the inbound request, the session, each turn, and every tool call.
11
+ cover the inbound request, each turn, and every tool call.
12
12
 
13
13
  Export is opt-in. Nothing leaves the process until you set an endpoint
14
14
  or a `defineOtel` config.
@@ -17,7 +17,7 @@ or a `defineOtel` config.
17
17
 
18
18
  | Signal | Default | What you get |
19
19
  | --- | --- | --- |
20
- | Traces | on | `agent_sdk.http` `agent_sdk.session` `agent_sdk.turn` → `agent_sdk.tool` / `agent_sdk.subagent` |
20
+ | Traces | on | `agent_sdk.http` (per request) and `agent_sdk.turn` → `agent_sdk.tool` / `agent_sdk.subagent` |
21
21
  | Metrics | on | `cursor.token.usage`, `cursor.tool.calls`, `cursor.cost.usage`, plus `agent_sdk.*` session and turn counts |
22
22
  | Logs | off | Session events as log records. Prompt text, tool payloads, and failure messages stay off unless you opt in |
23
23
 
@@ -89,7 +89,17 @@ destination with `signals: ["traces"]`.
89
89
 
90
90
  You can also pass the same object to `serve(dir, { otel })`. Precedence
91
91
  is `serve({ otel })` over `agent/otel.ts` over env. An empty
92
- `defineOtel()` still enables export when `OTEL_EXPORTER_OTLP_*` is set.
92
+ `defineOtel()` still records traces; export starts when
93
+ `OTEL_EXPORTER_OTLP_*` or a factory-returned `exporters` list appears.
94
+
95
+ Hosted v2 binds deployment secrets after bake, onto the already-listening
96
+ process. Pass a factory so flush can re-read them. Spans record from
97
+ bake; the hosted handler flush constructs the OTLP client and sends the
98
+ queued batch.
99
+
100
+ ```ts
101
+ export default defineOtel(() => resolveMyOtelConfig());
102
+ ```
93
103
 
94
104
  The companion skill is [`skills/otel/SKILL.md`](../skills/otel.md).
95
105
 
@@ -97,17 +107,23 @@ The companion skill is [`skills/otel/SKILL.md`](../skills/otel.md).
97
107
 
98
108
  ```text
99
109
  agent_sdk.http inbound channel request (W3C traceparent)
100
- └─ agent_sdk.session cursor.conversation.id = session id
101
- └─ agent_sdk.turn
102
- ├─ agent_sdk.tool
103
- └─ agent_sdk.subagent
104
- └─ agent_sdk.tool
110
+ agent_sdk.turn one root per turn (`agent_sdk.session_id` = session id)
111
+ ├─ agent_sdk.tool
112
+ └─ agent_sdk.subagent
113
+ └─ agent_sdk.tool
105
114
  ```
106
115
 
107
- Inbound HTTP extracts W3C `traceparent`, so a channel request parents
108
- the session span when the turn starts in that request. Turns that
109
- resume after restore, or a direct `callTool` with no `turn.started` in
110
- this process, open a synthetic turn span so tool calls still nest.
116
+ Conversational sessions stay on `session.waiting` and can take more
117
+ turns, so there is no `agent_sdk.session` span it would never end
118
+ and OTel only exports ended spans. Each turn is its own root. Inbound
119
+ HTTP is a separate SERVER span (it extracts W3C `traceparent`) and
120
+ does not parent the turn, so the turn tree can export when the turn
121
+ ends. Hosted flush ends that SERVER span before the one-shot export so
122
+ `agent_sdk.http` is in the same batch.
123
+
124
+ Turns that resume after restore, or a direct `callTool` with no
125
+ `turn.started` in this process, open a synthetic turn span so tool
126
+ calls still nest.
111
127
 
112
128
  ## Which attributes land on the wire?
113
129
 
@@ -118,6 +134,12 @@ Every signal carries these resource attributes:
118
134
  - `cursor.surface=unspecified`
119
135
  - `agent_sdk.framework=@cursor/july`
120
136
 
137
+ Span attributes (not process resource attributes — one serve process
138
+ handles many sessions):
139
+
140
+ - `agent_sdk.session_id` / `cursor.conversation.id`: the session id.
141
+ Search all turns for one conversation with `@agent_sdk.session_id`.
142
+
121
143
  Shared names (same keys as enterprise export):
122
144
 
123
145
  - `cursor.conversation.id`: the session id
@@ -128,22 +150,24 @@ Shared names (same keys as enterprise export):
128
150
  `cursor.tool.status`
129
151
  - `cursor.cost.usage` (USD)
130
152
 
131
- Agent SDK only (`agent_sdk.*`): agent name, turn id, channel, call id,
132
- subagent name, session mode, and HTTP duration (`agent_sdk.http.duration`).
153
+ Agent SDK only (`agent_sdk.*`): session id, agent name, turn id, channel,
154
+ call id, subagent name, session mode, and HTTP duration
155
+ (`agent_sdk.http.duration`).
133
156
 
134
157
  ## How do I emit my own metrics?
135
158
 
136
159
  `ctx.host.otel` is always present on tools, hooks, and channel
137
160
  handlers. Counters and histograms no-op when no meter is running.
138
- `setAttributes` still tags the open session when a collector is
161
+ `setAttributes` still tags open turn/tool spans when a collector is
139
162
  attached.
140
163
 
141
164
  Prefix metric names with your team or agent. First-party names
142
165
  (`cursor.token.usage`, `cursor.tool.calls`, `cursor.cost.usage`,
143
166
  `agent_sdk.session.count`, `agent_sdk.turn.count`,
144
167
  `agent_sdk.subagent.count`, `agent_sdk.http.duration`) and join keys
145
- (`cursor.conversation.id`, `agent_sdk.agent`, `agent_sdk.turn_id`,
146
- `agent_sdk.framework`) are reserved. Custom spans are not on this
168
+ (`cursor.conversation.id`, `agent_sdk.session_id`, `agent_sdk.agent`,
169
+ `agent_sdk.turn_id`, `agent_sdk.framework`) are reserved. Custom spans
170
+ are not on this
147
171
  surface.
148
172
 
149
173
  ```ts
@@ -82,11 +82,10 @@ the first prompt, because the local session workspace is not the cloud
82
82
  VM.
83
83
 
84
84
  `validate` warns when `runtime: "cloud"` is combined with agent tools
85
- or sandbox seeds (they only materialize into local session workspaces),
86
- when skills are present (they sync onto an Agent Store for native
87
- discovery rather than the session workspace), and when the `cloud`
88
- block is missing. The full capability matrix and the patterns that hold
89
- up are in the [Cloud runtime guide](../guides/cloud-runtime.md).
85
+ (they are described on the first prompt instead of written to the VM),
86
+ when skills or sandbox seeds are present (they sync onto an Agent Store
87
+ rather than the session workspace), and when the `cloud` block is
88
+ missing.
90
89
 
91
90
  ## Local options
92
91
 
@@ -172,9 +171,8 @@ set `local: { sandbox: true }`.
172
171
  Cloud agent defaults forwarded to the Cursor SDK: `repos` (each
173
172
  `{ url, startingRef? }`), environment selection, `envVars`, and the
174
173
  rest. A local agent uses the same block as the base config when a
175
- channel opens a cloud-attached session per send. That hybrid pattern is
176
- covered in
177
- [Cloud runtime](../guides/cloud-runtime.md#hybrid-local-agent-cloud-sessions).
174
+ channel opens a cloud-attached session per send (the `cloud` option on
175
+ [`send`](./channels.md#handler-arguments)).
178
176
 
179
177
  ## Concurrency
180
178
 
@@ -251,6 +249,4 @@ Continue with these pages:
251
249
 
252
250
  - [Instructions](./instructions.md): the required half of a minimal
253
251
  agent
254
- - [Cloud runtime](../guides/cloud-runtime.md): when and how to leave
255
- the host
256
252
  - [CLI](./cli.md): the `serve` flags `serve()` accepts