@cursor/july 0.1.101 → 0.1.102

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 (374) hide show
  1. package/README.md +27 -0
  2. package/dist/channels/slack/api.d.ts +1 -1
  3. package/dist/channels/slack/api.d.ts.map +1 -1
  4. package/dist/channels/slack/api.js +3 -1
  5. package/dist/channels/slack/assistant.d.ts +1 -1
  6. package/dist/channels/slack/assistant.d.ts.map +1 -1
  7. package/dist/channels/slack/dispatch.d.ts +3 -2
  8. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  9. package/dist/channels/slack/dispatch.js +28 -8
  10. package/dist/channels/slack/inbound.d.ts +8 -0
  11. package/dist/channels/slack/inbound.d.ts.map +1 -1
  12. package/dist/channels/slack/inbound.js +28 -0
  13. package/dist/channels/slack/manifest.d.ts.map +1 -1
  14. package/dist/channels/slack/manifest.js +2 -1
  15. package/dist/docs/404.html +2 -2
  16. package/dist/docs/ab.html +4 -4
  17. package/dist/docs/assets/{app.BASO9Kih.js → app.CLA03RCz.js} +1 -1
  18. package/dist/docs/assets/chunks/@localSearchIndexroot.FAqdWIXo.js +1 -0
  19. package/dist/docs/assets/chunks/{VPLocalSearchBox.DwkqxoE0.js → VPLocalSearchBox.ifxv-cJV.js} +1 -1
  20. package/dist/docs/assets/chunks/{theme.CCil_13e.js → theme.DWCwM6p-.js} +2 -2
  21. package/dist/docs/assets/concepts.md.rPzW2HZN.js +1 -0
  22. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +9 -0
  23. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.lean.js +1 -0
  24. package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.js → guides_cloud-runtime.md.BRirbRAN.js} +1 -1
  25. package/dist/docs/assets/index.md.Kiht7ell.js +5 -0
  26. package/dist/docs/assets/{index.md.Bb4k8kUm.lean.js → index.md.Kiht7ell.lean.js} +1 -1
  27. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.js +56 -0
  28. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +1 -0
  29. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.js → reference_project-layout.md.CA6QP6Lw.js} +2 -2
  30. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.lean.js → reference_project-layout.md.CA6QP6Lw.lean.js} +1 -1
  31. package/dist/docs/assets/{reference_skills.md.BFW9retM.js → reference_skills.md.l2ezAcaN.js} +1 -1
  32. package/dist/docs/assets/{reference_tools.md.CvAHsdSp.js → reference_tools.md.B1up2r9W.js} +1 -1
  33. package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +1 -0
  34. package/dist/docs/assets/{skills_framework-map.md.BTi817yv.lean.js → skills_framework-map.md.DDa4MeEW.lean.js} +1 -1
  35. package/dist/docs/building-with-agents.html +4 -4
  36. package/dist/docs/concepts.html +5 -5
  37. package/dist/docs/concepts.md +3 -3
  38. package/dist/docs/deployment.html +4 -4
  39. package/dist/docs/evals.html +4 -4
  40. package/dist/docs/guides/agent-to-agent.html +4 -4
  41. package/dist/docs/guides/cloud-agents.html +35 -0
  42. package/dist/docs/guides/cloud-agents.md +93 -0
  43. package/dist/docs/guides/cloud-runtime.html +6 -6
  44. package/dist/docs/guides/cloud-runtime.md +2 -0
  45. package/dist/docs/guides/convert-automation.html +4 -4
  46. package/dist/docs/guides/github.html +4 -4
  47. package/dist/docs/guides/human-in-the-loop.html +4 -4
  48. package/dist/docs/guides/mcp-oauth.html +4 -4
  49. package/dist/docs/guides/opentelemetry.html +5 -5
  50. package/dist/docs/guides/slack.html +4 -4
  51. package/dist/docs/guides/webhooks.html +4 -4
  52. package/dist/docs/hashmap.json +1 -1
  53. package/dist/docs/hillclimbing.html +4 -4
  54. package/dist/docs/index.html +6 -6
  55. package/dist/docs/index.md +5 -1
  56. package/dist/docs/llms-full.txt +321 -4
  57. package/dist/docs/llms.txt +2 -0
  58. package/dist/docs/quickstart.html +4 -4
  59. package/dist/docs/reference/agent-config.html +4 -4
  60. package/dist/docs/reference/artifacts.html +4 -4
  61. package/dist/docs/reference/channels.html +5 -5
  62. package/dist/docs/reference/cli.html +4 -4
  63. package/dist/docs/reference/connections.html +4 -4
  64. package/dist/docs/reference/extensions.html +82 -0
  65. package/dist/docs/reference/extensions.md +200 -0
  66. package/dist/docs/reference/hooks.html +4 -4
  67. package/dist/docs/reference/http-api.html +4 -4
  68. package/dist/docs/reference/instructions.html +4 -4
  69. package/dist/docs/reference/playground.html +4 -4
  70. package/dist/docs/reference/project-layout.html +6 -6
  71. package/dist/docs/reference/project-layout.md +3 -0
  72. package/dist/docs/reference/prompt.html +4 -4
  73. package/dist/docs/reference/schedules.html +4 -4
  74. package/dist/docs/reference/sessions.html +4 -4
  75. package/dist/docs/reference/skills.html +6 -6
  76. package/dist/docs/reference/skills.md +2 -0
  77. package/dist/docs/reference/subagents.html +5 -5
  78. package/dist/docs/reference/tools.html +6 -6
  79. package/dist/docs/reference/tools.md +2 -0
  80. package/dist/docs/scaffolding-agents.html +4 -4
  81. package/dist/docs/skills/ab.html +4 -4
  82. package/dist/docs/skills/create-agent.html +4 -4
  83. package/dist/docs/skills/debug.html +4 -4
  84. package/dist/docs/skills/evals.html +4 -4
  85. package/dist/docs/skills/framework-map.html +5 -5
  86. package/dist/docs/skills/framework-map.md +1 -0
  87. package/dist/docs/skills/github.html +4 -4
  88. package/dist/docs/skills/hillclimb.html +4 -4
  89. package/dist/docs/skills/index.html +4 -4
  90. package/dist/docs/skills/mcp-auth.html +4 -4
  91. package/dist/docs/skills/otel.html +4 -4
  92. package/dist/docs/skills/setup-slack.html +4 -4
  93. package/dist/docs/storage.html +4 -4
  94. package/dist/docs/templates/agentic-owners.html +4 -4
  95. package/dist/docs/templates/agents-md.html +4 -4
  96. package/dist/docs/templates/code-wiki.html +4 -4
  97. package/dist/docs/templates/demo.html +4 -4
  98. package/dist/docs/templates/pr-autofixer.html +4 -4
  99. package/dist/docs/templates/security-help.html +4 -4
  100. package/dist/docs/templates/security-reviewer.html +4 -4
  101. package/dist/docs/templates/triage.html +4 -4
  102. package/dist/docs/troubleshooting.html +4 -4
  103. package/dist/extensions/cursor-cloud-agents/extension.d.ts +9 -7
  104. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  105. package/dist/extensions/cursor-cloud-agents/extension.js +9 -7
  106. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +78 -0
  107. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -0
  108. package/dist/extensions/cursor-cloud-agents/lib/backend.js +286 -0
  109. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +5 -0
  110. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -0
  111. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +4 -0
  112. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts +8 -0
  113. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts.map +1 -0
  114. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +15 -0
  115. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
  116. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts +4 -0
  117. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -0
  118. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +26 -0
  119. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts +4 -0
  120. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts.map +1 -0
  121. package/dist/extensions/cursor-cloud-agents/tools/dump.js +54 -0
  122. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts +4 -0
  123. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts.map +1 -0
  124. package/dist/extensions/cursor-cloud-agents/tools/get.js +25 -0
  125. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
  126. package/dist/extensions/cursor-cloud-agents/tools/launch.js +14 -38
  127. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  128. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts +4 -0
  129. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts.map +1 -0
  130. package/dist/extensions/cursor-cloud-agents/tools/{follow_up.js → reply.js} +12 -14
  131. package/dist/extensions.d.ts +38 -14
  132. package/dist/extensions.d.ts.map +1 -1
  133. package/dist/extensions.js +49 -12
  134. package/dist/files-backends/cursor-hosted.d.ts +0 -8
  135. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  136. package/dist/files-backends/cursor-hosted.js +1 -11
  137. package/dist/files.d.ts +5 -1
  138. package/dist/files.d.ts.map +1 -1
  139. package/dist/files.js +22 -18
  140. package/dist/index.d.ts +3 -3
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +2 -2
  143. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  144. package/dist/internal/conversation-mirror.js +13 -15
  145. package/dist/internal/cursor/backend-client.d.ts +8 -1
  146. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  147. package/dist/internal/cursor/backend-client.js +25 -9
  148. package/dist/internal/cursor/hosted-store-secrets.d.ts +11 -0
  149. package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
  150. package/dist/internal/cursor/hosted-store-secrets.js +15 -0
  151. package/dist/internal/discovery/ab.d.ts +9 -0
  152. package/dist/internal/discovery/ab.d.ts.map +1 -0
  153. package/dist/internal/discovery/ab.js +101 -0
  154. package/dist/internal/discovery/agent-config.d.ts +35 -0
  155. package/dist/internal/discovery/agent-config.d.ts.map +1 -0
  156. package/dist/internal/discovery/agent-config.js +173 -0
  157. package/dist/internal/discovery/agent.d.ts +11 -0
  158. package/dist/internal/discovery/agent.d.ts.map +1 -0
  159. package/dist/internal/discovery/agent.js +306 -0
  160. package/dist/internal/discovery/channels.d.ts +10 -0
  161. package/dist/internal/discovery/channels.d.ts.map +1 -0
  162. package/dist/internal/discovery/channels.js +97 -0
  163. package/dist/internal/discovery/connections.d.ts +17 -0
  164. package/dist/internal/discovery/connections.d.ts.map +1 -0
  165. package/dist/internal/discovery/connections.js +436 -0
  166. package/dist/internal/discovery/context.d.ts +20 -0
  167. package/dist/internal/discovery/context.d.ts.map +1 -0
  168. package/dist/internal/discovery/context.js +30 -0
  169. package/dist/internal/discovery/cursor-plugin.d.ts +25 -0
  170. package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -0
  171. package/dist/internal/discovery/cursor-plugin.js +570 -0
  172. package/dist/internal/discovery/extensions.d.ts +19 -0
  173. package/dist/internal/discovery/extensions.d.ts.map +1 -0
  174. package/dist/internal/discovery/extensions.js +238 -0
  175. package/dist/internal/discovery/fs.d.ts +15 -0
  176. package/dist/internal/discovery/fs.d.ts.map +1 -0
  177. package/dist/internal/discovery/fs.js +115 -0
  178. package/dist/internal/discovery/hooks.d.ts +7 -0
  179. package/dist/internal/discovery/hooks.d.ts.map +1 -0
  180. package/dist/internal/discovery/hooks.js +48 -0
  181. package/dist/internal/discovery/info.d.ts +6 -0
  182. package/dist/internal/discovery/info.d.ts.map +1 -0
  183. package/dist/internal/discovery/info.js +141 -0
  184. package/dist/internal/discovery/instructions.d.ts +7 -0
  185. package/dist/internal/discovery/instructions.d.ts.map +1 -0
  186. package/dist/internal/discovery/instructions.js +95 -0
  187. package/dist/internal/discovery/modules.d.ts +20 -0
  188. package/dist/internal/discovery/modules.d.ts.map +1 -0
  189. package/dist/internal/discovery/modules.js +101 -0
  190. package/dist/internal/discovery/names.d.ts +12 -0
  191. package/dist/internal/discovery/names.d.ts.map +1 -0
  192. package/dist/internal/discovery/names.js +36 -0
  193. package/dist/internal/discovery/project.d.ts +53 -0
  194. package/dist/internal/discovery/project.d.ts.map +1 -0
  195. package/dist/internal/discovery/project.js +239 -0
  196. package/dist/internal/discovery/runtime.d.ts +34 -0
  197. package/dist/internal/discovery/runtime.d.ts.map +1 -0
  198. package/dist/internal/discovery/runtime.js +98 -0
  199. package/dist/internal/discovery/schedules.d.ts +7 -0
  200. package/dist/internal/discovery/schedules.d.ts.map +1 -0
  201. package/dist/internal/discovery/schedules.js +97 -0
  202. package/dist/internal/discovery/seed-files.d.ts +7 -0
  203. package/dist/internal/discovery/seed-files.d.ts.map +1 -0
  204. package/dist/internal/discovery/seed-files.js +41 -0
  205. package/dist/internal/discovery/services.d.ts +17 -0
  206. package/dist/internal/discovery/services.d.ts.map +1 -0
  207. package/dist/internal/discovery/services.js +104 -0
  208. package/dist/internal/discovery/skills.d.ts +16 -0
  209. package/dist/internal/discovery/skills.d.ts.map +1 -0
  210. package/dist/internal/discovery/skills.js +151 -0
  211. package/dist/internal/discovery/subagent.d.ts +13 -0
  212. package/dist/internal/discovery/subagent.d.ts.map +1 -0
  213. package/dist/internal/discovery/subagent.js +19 -0
  214. package/dist/internal/discovery/tools.d.ts +18 -0
  215. package/dist/internal/discovery/tools.d.ts.map +1 -0
  216. package/dist/internal/discovery/tools.js +159 -0
  217. package/dist/internal/discovery.d.ts +8 -62
  218. package/dist/internal/discovery.d.ts.map +1 -1
  219. package/dist/internal/discovery.js +8 -2505
  220. package/dist/internal/framework-file-storage.js +6 -6
  221. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  222. package/dist/internal/framework-storage-selection.js +8 -7
  223. package/dist/internal/frontmatter.d.ts +11 -3
  224. package/dist/internal/frontmatter.d.ts.map +1 -1
  225. package/dist/internal/frontmatter.js +29 -3
  226. package/dist/internal/mcp-host.d.ts.map +1 -1
  227. package/dist/internal/mcp-host.js +37 -20
  228. package/dist/internal/otel/collector.d.ts +13 -0
  229. package/dist/internal/otel/collector.d.ts.map +1 -1
  230. package/dist/internal/otel/collector.js +84 -17
  231. package/dist/internal/otel/http.d.ts.map +1 -1
  232. package/dist/internal/otel/http.js +2 -10
  233. package/dist/internal/otel/mcp.d.ts +16 -0
  234. package/dist/internal/otel/mcp.d.ts.map +1 -0
  235. package/dist/internal/otel/mcp.js +68 -0
  236. package/dist/internal/otel/propagation.d.ts +6 -0
  237. package/dist/internal/otel/propagation.d.ts.map +1 -0
  238. package/dist/internal/otel/propagation.js +14 -0
  239. package/dist/internal/otel/runtime.d.ts.map +1 -1
  240. package/dist/internal/otel/runtime.js +2 -0
  241. package/dist/internal/session-engine.d.ts +5 -0
  242. package/dist/internal/session-engine.d.ts.map +1 -1
  243. package/dist/internal/session-engine.js +68 -32
  244. package/dist/internal/session-run-log.d.ts +2 -1
  245. package/dist/internal/session-run-log.d.ts.map +1 -1
  246. package/dist/internal/session-run-log.js +13 -14
  247. package/dist/internal/start-log-store.d.ts +1 -1
  248. package/dist/internal/start-log-store.d.ts.map +1 -1
  249. package/dist/internal/start-log-store.js +12 -14
  250. package/dist/internal/storage-coordinator.d.ts +4 -1
  251. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  252. package/dist/internal/storage-coordinator.js +15 -13
  253. package/dist/internal/tool-catalog.d.ts.map +1 -1
  254. package/dist/internal/tool-catalog.js +9 -6
  255. package/dist/internal/turn-cost.d.ts +14 -0
  256. package/dist/internal/turn-cost.d.ts.map +1 -1
  257. package/dist/internal/turn-cost.js +41 -9
  258. package/dist/internal/v2-hosting.d.ts +22 -0
  259. package/dist/internal/v2-hosting.d.ts.map +1 -0
  260. package/dist/internal/v2-hosting.js +23 -0
  261. package/dist/otel.d.ts +16 -0
  262. package/dist/otel.d.ts.map +1 -1
  263. package/dist/otel.js +26 -0
  264. package/dist/playground/assets/index-B6C9S9nG.css +1 -0
  265. package/dist/playground/index.html +2 -2
  266. package/dist/storage-protocol.d.ts +24 -23
  267. package/dist/storage-protocol.d.ts.map +1 -1
  268. package/dist/storage-protocol.js +68 -65
  269. package/dist/storage.d.ts +2 -2
  270. package/dist/storage.d.ts.map +1 -1
  271. package/dist/storage.js +1 -1
  272. package/dist/tools.d.ts +9 -0
  273. package/dist/tools.d.ts.map +1 -1
  274. package/dist/tools.js +9 -0
  275. package/dist/types.d.ts +39 -3
  276. package/dist/types.d.ts.map +1 -1
  277. package/docs/README.md +5 -1
  278. package/docs/concepts.md +3 -3
  279. package/docs/guides/cloud-agents.md +98 -0
  280. package/docs/guides/cloud-runtime.md +2 -0
  281. package/docs/reference/extensions.md +205 -0
  282. package/docs/reference/project-layout.md +3 -0
  283. package/docs/reference/skills.md +2 -0
  284. package/docs/reference/tools.md +2 -0
  285. package/package.json +1 -1
  286. package/skills/framework-map/SKILL.md +1 -0
  287. package/src/channels/slack/api.ts +4 -2
  288. package/src/channels/slack/assistant.ts +1 -1
  289. package/src/channels/slack/dispatch.ts +27 -2
  290. package/src/channels/slack/inbound.ts +37 -0
  291. package/src/channels/slack/manifest.ts +2 -1
  292. package/src/extensions/cursor-cloud-agents/extension.ts +9 -7
  293. package/src/extensions/cursor-cloud-agents/lib/backend.ts +395 -0
  294. package/src/extensions/cursor-cloud-agents/lib/inputs.ts +5 -0
  295. package/src/extensions/cursor-cloud-agents/lib/transcript.ts +23 -0
  296. package/src/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
  297. package/src/extensions/cursor-cloud-agents/tools/cancel.ts +19 -0
  298. package/src/extensions/cursor-cloud-agents/tools/dump.ts +51 -0
  299. package/src/extensions/cursor-cloud-agents/tools/get.ts +18 -0
  300. package/src/extensions/cursor-cloud-agents/tools/launch.ts +22 -42
  301. package/src/extensions/cursor-cloud-agents/tools/list.ts +1 -1
  302. package/src/extensions/cursor-cloud-agents/tools/reply.ts +34 -0
  303. package/src/extensions.ts +55 -12
  304. package/src/files-backends/cursor-hosted.ts +1 -17
  305. package/src/files.ts +43 -34
  306. package/src/index.ts +10 -1
  307. package/src/internal/conversation-mirror.ts +23 -18
  308. package/src/internal/cursor/backend-client.ts +32 -10
  309. package/src/internal/cursor/hosted-store-secrets.ts +27 -0
  310. package/src/internal/discovery/ab.ts +111 -0
  311. package/src/internal/discovery/agent-config.ts +222 -0
  312. package/src/internal/discovery/agent.ts +360 -0
  313. package/src/internal/discovery/channels.ts +103 -0
  314. package/src/internal/discovery/connections.ts +540 -0
  315. package/src/internal/discovery/context.ts +46 -0
  316. package/src/internal/discovery/cursor-plugin.ts +708 -0
  317. package/src/internal/discovery/extensions.ts +348 -0
  318. package/src/internal/discovery/fs.ts +108 -0
  319. package/src/internal/discovery/hooks.ts +45 -0
  320. package/src/internal/discovery/info.ts +179 -0
  321. package/src/internal/discovery/instructions.ts +113 -0
  322. package/src/internal/discovery/modules.ts +107 -0
  323. package/src/internal/discovery/names.ts +44 -0
  324. package/src/internal/discovery/project.ts +270 -0
  325. package/src/internal/discovery/runtime.ts +159 -0
  326. package/src/internal/discovery/schedules.ts +94 -0
  327. package/src/internal/discovery/seed-files.ts +37 -0
  328. package/src/internal/discovery/services.ts +124 -0
  329. package/src/internal/discovery/skills.ts +176 -0
  330. package/src/internal/discovery/subagent.ts +29 -0
  331. package/src/internal/discovery/tools.ts +182 -0
  332. package/src/internal/discovery.ts +20 -3081
  333. package/src/internal/framework-file-storage.ts +6 -6
  334. package/src/internal/framework-storage-selection.ts +9 -9
  335. package/src/internal/frontmatter.ts +36 -3
  336. package/src/internal/mcp-host.ts +84 -31
  337. package/src/internal/otel/collector.ts +125 -25
  338. package/src/internal/otel/http.ts +2 -12
  339. package/src/internal/otel/mcp.ts +69 -0
  340. package/src/internal/otel/propagation.ts +17 -0
  341. package/src/internal/otel/runtime.ts +2 -0
  342. package/src/internal/session-engine.ts +96 -11
  343. package/src/internal/session-run-log.ts +17 -16
  344. package/src/internal/start-log-store.ts +13 -16
  345. package/src/internal/storage-coordinator.ts +19 -16
  346. package/src/internal/tool-catalog.ts +9 -6
  347. package/src/internal/turn-cost.ts +47 -4
  348. package/src/internal/v2-hosting.ts +38 -0
  349. package/src/otel.ts +38 -0
  350. package/src/storage-protocol.ts +101 -91
  351. package/src/storage.ts +4 -0
  352. package/src/tools.ts +18 -0
  353. package/src/types.ts +43 -2
  354. package/dist/docs/assets/chunks/@localSearchIndexroot.DbFXINq2.js +0 -1
  355. package/dist/docs/assets/concepts.md.lwAgBIMI.js +0 -1
  356. package/dist/docs/assets/index.md.Bb4k8kUm.js +0 -5
  357. package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +0 -1
  358. package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts +0 -30
  359. package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts.map +0 -1
  360. package/dist/extensions/cursor-cloud-agents/lib/cloud.js +0 -45
  361. package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts +0 -4
  362. package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts.map +0 -1
  363. package/dist/extensions/cursor-cloud-agents/tools/status.d.ts +0 -4
  364. package/dist/extensions/cursor-cloud-agents/tools/status.d.ts.map +0 -1
  365. package/dist/extensions/cursor-cloud-agents/tools/status.js +0 -41
  366. package/dist/playground/assets/index-DBQCwFp0.css +0 -1
  367. package/src/extensions/cursor-cloud-agents/lib/cloud.ts +0 -79
  368. package/src/extensions/cursor-cloud-agents/tools/follow_up.ts +0 -29
  369. package/src/extensions/cursor-cloud-agents/tools/status.ts +0 -39
  370. /package/dist/docs/assets/{concepts.md.lwAgBIMI.lean.js → concepts.md.rPzW2HZN.lean.js} +0 -0
  371. /package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.lean.js → guides_cloud-runtime.md.BRirbRAN.lean.js} +0 -0
  372. /package/dist/docs/assets/{reference_skills.md.BFW9retM.lean.js → reference_skills.md.l2ezAcaN.lean.js} +0 -0
  373. /package/dist/docs/assets/{reference_tools.md.CvAHsdSp.lean.js → reference_tools.md.B1up2r9W.lean.js} +0 -0
  374. /package/dist/playground/assets/{index-BnNN1-EK.js → index-ZqNoT8Ie.js} +0 -0
@@ -36,10 +36,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
36
36
  step((generator = generator.apply(thisArg, _arguments || [])).next());
37
37
  });
38
38
  };
39
- import { STORAGE_KEY_ROOT } from "../storage-protocol.js";
39
+ import { AGENTSDK_STORAGE_KEY_ROOT } from "../storage-protocol.js";
40
40
  import { mapBounded } from "./bounded.js";
41
41
  /**
42
- * Key kinds (`agentkit/v1/{agent}/{kind}/…`) that live on the framework
42
+ * Key kinds (`agentsdk/v1/{agent}/{kind}/…`) that live on the framework
43
43
  * file store. Everything else stays on the KV sink.
44
44
  */
45
45
  const FRAMEWORK_FILE_KINDS = new Set([
@@ -55,10 +55,10 @@ const FRAMEWORK_FILE_KINDS = new Set([
55
55
  * kind-scoped (`…/{agent}/session/`), so a prefix routes wholly to one side.
56
56
  */
57
57
  export function isFrameworkFileKey(key) {
58
- if (!key.startsWith(`${STORAGE_KEY_ROOT}/`)) {
58
+ if (!key.startsWith(`${AGENTSDK_STORAGE_KEY_ROOT}/`)) {
59
59
  return false;
60
60
  }
61
- const rest = key.slice(STORAGE_KEY_ROOT.length + 1);
61
+ const rest = key.slice(AGENTSDK_STORAGE_KEY_ROOT.length + 1);
62
62
  const agentEnd = rest.indexOf("/");
63
63
  if (agentEnd === -1) {
64
64
  return false;
@@ -148,10 +148,10 @@ export function fileSinkStorageCore(sink) {
148
148
  };
149
149
  }
150
150
  function frameworkFileKind(key) {
151
- if (!key.startsWith(`${STORAGE_KEY_ROOT}/`)) {
151
+ if (!key.startsWith(`${AGENTSDK_STORAGE_KEY_ROOT}/`)) {
152
152
  return undefined;
153
153
  }
154
- const rest = key.slice(STORAGE_KEY_ROOT.length + 1);
154
+ const rest = key.slice(AGENTSDK_STORAGE_KEY_ROOT.length + 1);
155
155
  const agentEnd = rest.indexOf("/");
156
156
  if (agentEnd === -1) {
157
157
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"framework-storage-selection.d.ts","sourceRoot":"","sources":["../../src/internal/framework-storage-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAMH,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AASrD,MAAM,WAAW,8BAA8B;IAC7C,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtD,iEAAiE;IACjE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,8BAA8B,GACpC,iBAAiB,GAAG,SAAS,CAqD/B"}
1
+ {"version":3,"file":"framework-storage-selection.d.ts","sourceRoot":"","sources":["../../src/internal/framework-storage-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AASrD,MAAM,WAAW,8BAA8B;IAC7C,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtD,iEAAiE;IACjE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,8BAA8B,GACpC,iBAAiB,GAAG,SAAS,CAwD/B"}
@@ -41,12 +41,12 @@
41
41
  * the session store; what this selects is the durable mirror *beyond* the
42
42
  * pod's filesystem.
43
43
  */
44
- import { cursorFrameworkStoreSourceId, cursorHostedFiles, } from "../files-backends/cursor-hosted.js";
44
+ import { cursorHostedFiles } from "../files-backends/cursor-hosted.js";
45
45
  import { defineStorage } from "../storage.js";
46
46
  import { cursorHostedStorageV2 } from "../storage-backends/cursor-hosted-v2.js";
47
47
  import { resolveApiKeySync } from "./cursor/credentials.js";
48
- import { AGENT_SERVE_GENERATION_ENV_VAR } from "./cursor-relay-core.js";
49
48
  import { composeFrameworkStorage, fileSinkStorageCore, frameworkGuardedCas, } from "./framework-file-storage.js";
49
+ import { resolveAgentV2Hosting } from "./v2-hosting.js";
50
50
  /**
51
51
  * Pick the backend for framework session state.
52
52
  *
@@ -54,7 +54,6 @@ import { composeFrameworkStorage, fileSinkStorageCore, frameworkGuardedCas, } fr
54
54
  * disk is the only copy.
55
55
  */
56
56
  export function selectFrameworkStorageDefinition(input) {
57
- var _a;
58
57
  if (input.architecture !== "v2") {
59
58
  // v1: the author decides, or there is no mirror.
60
59
  return input.authored;
@@ -65,8 +64,11 @@ export function selectFrameworkStorageDefinition(input) {
65
64
  // rather than silently discard what the author believes is configured.
66
65
  throw new Error('defineStorage (agent/storage.ts) is not supported on architecture "v2": storage is platform-selected. Delete the file.');
67
66
  }
68
- const env = (_a = input.env) !== null && _a !== void 0 ? _a : process.env;
69
- if (env[AGENT_SERVE_GENERATION_ENV_VAR] === undefined) {
67
+ const hosting = resolveAgentV2Hosting({
68
+ architecture: input.architecture,
69
+ env: input.env,
70
+ });
71
+ if (hosting.kind !== "cursor-managed") {
70
72
  // Self-hosted v2: the state root is the durable copy.
71
73
  return undefined;
72
74
  }
@@ -76,7 +78,6 @@ export function selectFrameworkStorageDefinition(input) {
76
78
  // comes up). Follow-ups restore lazily by continuation or session id;
77
79
  // GET /v1/sessions lists from the sink either way.
78
80
  const policy = { restore: "off" };
79
- const envSnapshot = env;
80
81
  // Full chain (env → bind file → stored login): frozen engines listen
81
82
  // unsigned and bind store ids + CURSOR_API_KEY at task time, after this
82
83
  // definition is constructed.
@@ -91,7 +92,7 @@ export function selectFrameworkStorageDefinition(input) {
91
92
  return defineStorage(Object.assign(Object.assign(Object.assign({ name: "cursor-hosted (framework files)", policy }, kv), composeFrameworkStorage({
92
93
  kv,
93
94
  files: fileSinkStorageCore(cursorHostedFiles({
94
- resolveStoreSourceId: () => cursorFrameworkStoreSourceId(envSnapshot),
95
+ resolveStoreSourceId: () => hosting.resolveStoreIds().frameworkStoreSourceId,
95
96
  resolveApiKey,
96
97
  })),
97
98
  })), {
@@ -1,12 +1,20 @@
1
1
  /**
2
- * Minimal frontmatter parser. Supports the flat `key: value` scalar subset
3
- * used by authored markdown (skill descriptions, schedule cron expressions)
4
- * without pulling in a YAML dependency.
2
+ * Frontmatter parsers. Authored markdown (skill descriptions, schedule cron
3
+ * expressions) uses the flat `key: value` scalar subset; Cursor plugin
4
+ * markdown is full YAML (folded descriptions, lists).
5
5
  */
6
6
  export interface ParsedFrontmatter {
7
7
  data: Record<string, string>;
8
8
  body: string;
9
9
  }
10
+ export interface ParsedYamlFrontmatter {
11
+ data: Record<string, unknown>;
12
+ body: string;
13
+ /** Why the block did not parse as a YAML mapping; `data` is then empty. */
14
+ error?: string;
15
+ }
16
+ /** YAML frontmatter with the JSON schema (no custom tags). */
17
+ export declare function parseYamlFrontmatter(source: string): ParsedYamlFrontmatter;
10
18
  export declare function parseFrontmatter(source: string): ParsedFrontmatter;
11
19
  export declare function serializeFrontmatter(data: Record<string, string>): string;
12
20
  //# sourceMappingURL=frontmatter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/internal/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAsClE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAKzE"}
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/internal/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAoB1E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAsClE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAKzE"}
@@ -1,9 +1,35 @@
1
1
  /**
2
- * Minimal frontmatter parser. Supports the flat `key: value` scalar subset
3
- * used by authored markdown (skill descriptions, schedule cron expressions)
4
- * without pulling in a YAML dependency.
2
+ * Frontmatter parsers. Authored markdown (skill descriptions, schedule cron
3
+ * expressions) uses the flat `key: value` scalar subset; Cursor plugin
4
+ * markdown is full YAML (folded descriptions, lists).
5
5
  */
6
+ import { JSON_SCHEMA, load as parseYaml } from "js-yaml";
6
7
  const FRONTMATTER_OPEN = /^---\s*$/;
8
+ const YAML_FRONTMATTER = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)([\s\S]*)$/;
9
+ /** YAML frontmatter with the JSON schema (no custom tags). */
10
+ export function parseYamlFrontmatter(source) {
11
+ var _a, _b;
12
+ const match = YAML_FRONTMATTER.exec(source);
13
+ if (match === null) {
14
+ return { data: {}, body: source };
15
+ }
16
+ const body = (_a = match[2]) !== null && _a !== void 0 ? _a : "";
17
+ let data;
18
+ try {
19
+ data = parseYaml((_b = match[1]) !== null && _b !== void 0 ? _b : "", { schema: JSON_SCHEMA });
20
+ }
21
+ catch (error) {
22
+ const message = error instanceof Error ? error.message : String(error);
23
+ return { data: {}, body, error: message };
24
+ }
25
+ if (data === undefined || data === null) {
26
+ return { data: {}, body };
27
+ }
28
+ if (typeof data !== "object" || Array.isArray(data)) {
29
+ return { data: {}, body, error: "frontmatter is not a mapping" };
30
+ }
31
+ return { data: data, body };
32
+ }
7
33
  export function parseFrontmatter(source) {
8
34
  var _a, _b;
9
35
  const lines = source.split(/\r?\n/);
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-host.d.ts","sourceRoot":"","sources":["../../src/internal/mcp-host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAIrB,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,YAAY,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAS9C;CACF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,iBAAiB,CAE5B;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAQvE;AAiBD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACxC,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED,qBAAa,OAAQ,YAAW,eAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgD;IACxE,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,YAAY,WAAW,EAAE,oBAAoB,EAAE,EAI9C;IAED,gFAAgF;IAChF,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAErC;IAED;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAEpD;IAED,KAAK,IAAI,MAAM,EAAE,CAEhB;IAEK,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAQlE;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,EAAE,oBAAoB,GAAG,aAAa,CAkCtD;IAEK,QAAQ,CACZ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAU5B;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAU3B;IAED;;;;;;;;OAQG;YACW,UAAU;IAiBxB,OAAO,CAAC,SAAS;YAYH,gBAAgB;IAiB9B,OAAO,CAAC,iBAAiB;YAWX,OAAO;CAGtB;AAcD,+BAA+B;AAC/B,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAU9D;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,OAAO,GACnB,kBAAkB,GAAG,SAAS,CAyBhC"}
1
+ {"version":3,"file":"mcp-host.d.ts","sourceRoot":"","sources":["../../src/internal/mcp-host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AASrB,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,YAAY,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAS9C;CACF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,iBAAiB,CAE5B;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAQvE;AAiBD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACxC,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED,qBAAa,OAAQ,YAAW,eAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgD;IACxE,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,YAAY,WAAW,EAAE,oBAAoB,EAAE,EAI9C;IAED,gFAAgF;IAChF,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAErC;IAED;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAEpD;IAED,KAAK,IAAI,MAAM,EAAE,CAEhB;IAEK,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAYlE;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,EAAE,oBAAoB,GAAG,aAAa,CA+CtD;IAEK,QAAQ,CACZ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAkB5B;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAU3B;IAED;;;;;;;;OAQG;YACW,UAAU;IAiBxB,OAAO,CAAC,SAAS;YAYH,gBAAgB;IAiB9B,OAAO,CAAC,iBAAiB;YAWX,OAAO;CAGtB;AAcD,+BAA+B;AAC/B,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAU9D;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,OAAO,GACnB,kBAAkB,GAAG,SAAS,CAyBhC"}
@@ -26,6 +26,7 @@ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/
26
26
  import { connectionAllowsTool, } from "../types.js";
27
27
  import { CLI_COMMAND_NAME as CLI } from "./distribution.js";
28
28
  import { createHostMcpOAuthProvider } from "./mcp-oauth.js";
29
+ import { instrumentedMcpFetch, mcpTraceMeta, runMcpClientSpan, } from "./otel/mcp.js";
29
30
  export class McpNeedsAuthError extends Error {
30
31
  constructor(connection, cause) {
31
32
  super(`MCP connection "${connection}" needs authorization. Run \`${CLI} mcp oauth ${connection}\`.`);
@@ -79,12 +80,12 @@ export class McpHost {
79
80
  listTools(connectionName) {
80
81
  return __awaiter(this, void 0, void 0, function* () {
81
82
  const connection = this.requireConnection(connectionName);
82
- return this.withClient(connectionName, (client) => __awaiter(this, void 0, void 0, function* () {
83
- const listed = yield client.listTools();
83
+ return runMcpClientSpan({ method: "tools/list", connection: connectionName }, () => this.withClient(connectionName, (client) => __awaiter(this, void 0, void 0, function* () {
84
+ const listed = yield client.listTools(mcpListParams());
84
85
  return listed.tools
85
86
  .map(toToolInfo)
86
87
  .filter((tool) => connectionAllowsTool(connection, tool.name));
87
- }));
88
+ })));
88
89
  });
89
90
  }
90
91
  /**
@@ -108,21 +109,22 @@ export class McpHost {
108
109
  }
109
110
  });
110
111
  return {
111
- listTools: () => withFreshClient((client) => __awaiter(this, void 0, void 0, function* () {
112
- const listed = yield client.listTools();
112
+ listTools: () => runMcpClientSpan({ method: "tools/list", connection: connection.name }, () => withFreshClient((client) => __awaiter(this, void 0, void 0, function* () {
113
+ const listed = yield client.listTools(mcpListParams());
113
114
  return listed.tools
114
115
  .map(toToolInfo)
115
116
  .filter((tool) => connectionAllowsTool(connection, tool.name));
116
- })),
117
+ }))),
117
118
  callTool: (toolName, args = {}) => {
118
119
  assertConnectionAllowsTool(connection, toolName);
119
- return withFreshClient((client) => __awaiter(this, void 0, void 0, function* () {
120
- const result = yield client.callTool({
121
- name: toolName,
122
- arguments: args,
123
- });
120
+ return runMcpClientSpan({
121
+ method: "tools/call",
122
+ connection: connection.name,
123
+ toolName,
124
+ }, () => withFreshClient((client) => __awaiter(this, void 0, void 0, function* () {
125
+ const result = yield client.callTool(Object.assign({ name: toolName, arguments: args }, mcpCallMeta()));
124
126
  return throwIfCallNeedsAuth(connection.name, normalizeCallResult(result));
125
- }));
127
+ })));
126
128
  },
127
129
  };
128
130
  }
@@ -130,13 +132,10 @@ export class McpHost {
130
132
  return __awaiter(this, arguments, void 0, function* (connectionName, toolName, args = {}) {
131
133
  const connection = this.requireConnection(connectionName);
132
134
  assertConnectionAllowsTool(connection, toolName);
133
- return this.withClient(connectionName, (client) => __awaiter(this, void 0, void 0, function* () {
134
- const result = yield client.callTool({
135
- name: toolName,
136
- arguments: args,
137
- });
135
+ return runMcpClientSpan({ method: "tools/call", connection: connectionName, toolName }, () => this.withClient(connectionName, (client) => __awaiter(this, void 0, void 0, function* () {
136
+ const result = yield client.callTool(Object.assign({ name: toolName, arguments: args }, mcpCallMeta()));
138
137
  return throwIfCallNeedsAuth(connectionName, normalizeCallResult(result));
139
- }));
138
+ })));
140
139
  });
141
140
  }
142
141
  dropClient(name) {
@@ -363,12 +362,30 @@ function createTransport(connection, oauthRedirectUrl) {
363
362
  redirectUrl: oauthRedirectUrl,
364
363
  })
365
364
  : undefined;
365
+ const fetchImpl = instrumentedMcpFetch();
366
+ const fetchLike = (url, init) => fetchImpl(url, init);
366
367
  if (transport.type === "sse") {
367
- return new SSEClientTransport(url, { requestInit, authProvider });
368
+ return new SSEClientTransport(url, {
369
+ requestInit,
370
+ authProvider,
371
+ fetch: fetchLike,
372
+ });
368
373
  }
369
- return new StreamableHTTPClientTransport(url, { requestInit, authProvider });
374
+ return new StreamableHTTPClientTransport(url, {
375
+ requestInit,
376
+ authProvider,
377
+ fetch: fetchLike,
378
+ });
370
379
  });
371
380
  }
381
+ function mcpListParams() {
382
+ const meta = mcpTraceMeta();
383
+ return meta === undefined ? undefined : { _meta: meta };
384
+ }
385
+ function mcpCallMeta() {
386
+ const meta = mcpTraceMeta();
387
+ return meta === undefined ? {} : { _meta: meta };
388
+ }
372
389
  function isOauthHttpTransport(transport) {
373
390
  return "url" in transport && transport.oauth === true;
374
391
  }
@@ -9,9 +9,22 @@
9
9
  import type { SessionEvent, SessionInfo } from "../../types.js";
10
10
  import { type AttrValue } from "./attrs.js";
11
11
  import type { OtelRuntime } from "./runtime.js";
12
+ export interface OtelCallContext {
13
+ sessionId: string;
14
+ session: SessionInfo;
15
+ turnId: string;
16
+ callId: string;
17
+ toolName: string;
18
+ }
12
19
  export interface OtelCollector {
13
20
  onEvent(event: SessionEvent, session: SessionInfo): void;
14
21
  close(): void;
22
+ /**
23
+ * Run `fn` under the tool span so outbound inject sees that context.
24
+ * Opens the session / turn / tool span if the event stream has not
25
+ * reached `actions.requested` yet (dispatch is async).
26
+ */
27
+ runInCall<T>(args: OtelCallContext, fn: () => T | Promise<T>): Promise<T>;
15
28
  /** Merge author tags onto the session; paints open spans immediately. */
16
29
  setSessionAttributes(sessionId: string, attributes: Record<string, AttrValue>): void;
17
30
  /** Session tags previously set by {@link setSessionAttributes}. */
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACzD,KAAK,IAAI,IAAI,CAAC;IACd,yEAAyE;IACzE,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,IAAI,CAAC;IACR,mEAAmE;IACnE,oBAAoB,CAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;CAC1C;AAgBD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,aAAa,CA8xBf"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACzD,KAAK,IAAI,IAAI,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1E,yEAAyE;IACzE,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,IAAI,CAAC;IACR,mEAAmE;IACnE,oBAAoB,CAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;CAC1C;AAgBD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,aAAa,CAo3Bf"}
@@ -43,6 +43,10 @@ export function createOtelCollector(runtime, agentName, log) {
43
43
  const bag = extraBySession.get(sessionId);
44
44
  return bag === undefined ? undefined : Object.assign({}, bag);
45
45
  },
46
+ runInCall(args, fn) {
47
+ const span = ensureCallSpan(args);
48
+ return context.with(trace.setSpan(context.active(), span), () => Promise.resolve(fn()));
49
+ },
46
50
  };
47
51
  function handle(event, session) {
48
52
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
@@ -51,6 +55,9 @@ export function createOtelCollector(runtime, agentName, log) {
51
55
  const startTime = Number.isFinite(at) ? at : undefined;
52
56
  switch (event.type) {
53
57
  case "session.started": {
58
+ if (sessions.get(event.sessionId) !== undefined) {
59
+ return;
60
+ }
54
61
  openSession({
55
62
  sessionId: event.sessionId,
56
63
  session,
@@ -104,6 +111,15 @@ export function createOtelCollector(runtime, agentName, log) {
104
111
  if (state === undefined) {
105
112
  return;
106
113
  }
114
+ // `runInCall` can open a synthetic turn before this event is
115
+ // applied. Keep that entry (and its in-flight tool spans) and
116
+ // just mark it real so `action.result` will not auto-close it.
117
+ const existing = state.turns.get(event.turnId);
118
+ if (existing !== undefined) {
119
+ existing.synthetic = false;
120
+ existing.span.setAttribute("agent_sdk.turn_synthetic", false);
121
+ return;
122
+ }
107
123
  openTurn({
108
124
  state,
109
125
  sessionId: event.sessionId,
@@ -144,24 +160,14 @@ export function createOtelCollector(runtime, agentName, log) {
144
160
  return;
145
161
  }
146
162
  for (const call of event.data.calls) {
147
- const parentCtx = parentCtxFor(turn, (_t = event.data.parentCallId) !== null && _t !== void 0 ? _t : call.parentCallId);
148
- const span = runtime.tracer.startSpan("agent_sdk.tool", {
149
- kind: SpanKind.INTERNAL,
163
+ openToolSpan({
164
+ turn,
165
+ sessionId: event.sessionId,
166
+ turnId: event.turnId,
167
+ call,
168
+ parentCallId: (_t = event.data.parentCallId) !== null && _t !== void 0 ? _t : call.parentCallId,
150
169
  startTime,
151
- attributes: join(event.sessionId, {
152
- "cursor.conversation.id": event.sessionId,
153
- "cursor.tool.name": call.toolName,
154
- "cursor.tool.kind": "builtin",
155
- "agent_sdk.agent": agentName,
156
- "agent_sdk.turn_id": event.turnId,
157
- "agent_sdk.call_id": call.callId,
158
- "agent_sdk.parent_call_id": call.parentCallId,
159
- "agent_sdk.tool_args": (logOpts === null || logOpts === void 0 ? void 0 : logOpts.toolContent) === true && call.args !== undefined
160
- ? truncate(json(call.args))
161
- : undefined,
162
- }),
163
- }, parentCtx);
164
- turn.tools.set(call.callId, span);
170
+ });
165
171
  }
166
172
  return;
167
173
  }
@@ -466,6 +472,67 @@ export function createOtelCollector(runtime, agentName, log) {
466
472
  }
467
473
  return trace.setSpan(context.active(), turn.span);
468
474
  }
475
+ function openToolSpan(args) {
476
+ var _a, _b;
477
+ const existing = args.turn.tools.get(args.call.callId);
478
+ if (existing !== undefined) {
479
+ // Early `runInCall` opens with callId/toolName only. Fill in
480
+ // parent linkage and opt-in args when `actions.requested` arrives.
481
+ // The OTel parent is fixed at start; `parent_call_id` still records
482
+ // the event-stream hierarchy for nested/subagent calls.
483
+ existing.setAttributes(join(args.sessionId, {
484
+ "agent_sdk.parent_call_id": (_a = args.parentCallId) !== null && _a !== void 0 ? _a : args.call.parentCallId,
485
+ "agent_sdk.tool_args": (logOpts === null || logOpts === void 0 ? void 0 : logOpts.toolContent) === true && args.call.args !== undefined
486
+ ? truncate(json(args.call.args))
487
+ : undefined,
488
+ }));
489
+ return existing;
490
+ }
491
+ const span = runtime.tracer.startSpan("agent_sdk.tool", {
492
+ kind: SpanKind.INTERNAL,
493
+ startTime: args.startTime,
494
+ attributes: join(args.sessionId, {
495
+ "cursor.conversation.id": args.sessionId,
496
+ "cursor.tool.name": args.call.toolName,
497
+ "cursor.tool.kind": "builtin",
498
+ "agent_sdk.agent": agentName,
499
+ "agent_sdk.turn_id": args.turnId,
500
+ "agent_sdk.call_id": args.call.callId,
501
+ "agent_sdk.parent_call_id": args.call.parentCallId,
502
+ "agent_sdk.tool_args": (logOpts === null || logOpts === void 0 ? void 0 : logOpts.toolContent) === true && args.call.args !== undefined
503
+ ? truncate(json(args.call.args))
504
+ : undefined,
505
+ }),
506
+ }, parentCtxFor(args.turn, (_b = args.parentCallId) !== null && _b !== void 0 ? _b : args.call.parentCallId));
507
+ args.turn.tools.set(args.call.callId, span);
508
+ return span;
509
+ }
510
+ function ensureCallSpan(args) {
511
+ var _a, _b;
512
+ const startTime = Date.now();
513
+ const state = (_a = sessions.get(args.sessionId)) !== null && _a !== void 0 ? _a : openSession({
514
+ sessionId: args.sessionId,
515
+ session: args.session,
516
+ channelId: args.session.channelId,
517
+ startTime,
518
+ restored: true,
519
+ });
520
+ const turn = (_b = state.turns.get(args.turnId)) !== null && _b !== void 0 ? _b : openTurn({
521
+ state,
522
+ sessionId: args.sessionId,
523
+ turnId: args.turnId,
524
+ session: args.session,
525
+ startTime,
526
+ synthetic: true,
527
+ });
528
+ return openToolSpan({
529
+ turn,
530
+ sessionId: args.sessionId,
531
+ turnId: args.turnId,
532
+ call: { callId: args.callId, toolName: args.toolName },
533
+ startTime,
534
+ });
535
+ }
469
536
  function endOpenChildren(turn, endTime) {
470
537
  for (const span of turn.tools.values()) {
471
538
  span.end(endTime);
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAUjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiBhD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAUjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ"}
@@ -2,15 +2,7 @@
2
2
  * HTTP SERVER spans + W3C `traceparent` extraction for inbound requests.
3
3
  */
4
4
  import { context, propagation, SpanKind, SpanStatusCode, trace, } from "@opentelemetry/api";
5
- import { W3CTraceContextPropagator } from "@opentelemetry/core";
6
- let propagatorInstalled = false;
7
- function ensurePropagator() {
8
- if (propagatorInstalled) {
9
- return;
10
- }
11
- propagation.setGlobalPropagator(new W3CTraceContextPropagator());
12
- propagatorInstalled = true;
13
- }
5
+ import { ensureW3cPropagator } from "./propagation.js";
14
6
  /**
15
7
  * Instrument one inbound Node request: SERVER span, W3C extract, auto-end
16
8
  * on response finish/close, run `fn` under the span context.
@@ -35,7 +27,7 @@ function startHttpSpan(runtime, req) {
35
27
  if (runtime === undefined || runtime.config.traces === false) {
36
28
  return undefined;
37
29
  }
38
- ensurePropagator();
30
+ ensureW3cPropagator();
39
31
  const headers = {};
40
32
  for (const [key, value] of Object.entries(req.headers)) {
41
33
  if (typeof value === "string") {
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Client-side MCP instrumentation: W3C / Cursor HTTP inject on Streamable
3
+ * HTTP + SSE fetches, SEP-414 `_meta.traceparent` on JSON-RPC params, and
4
+ * CLIENT spans for `tools/list` / `tools/call`.
5
+ */
6
+ export declare function instrumentedMcpFetch(base?: typeof fetch): typeof fetch;
7
+ /** SEP-414 / OTel MCP carrier for `params._meta`. */
8
+ export declare function mcpTraceMeta(): {
9
+ traceparent: string;
10
+ } | undefined;
11
+ export declare function runMcpClientSpan<T>(args: {
12
+ method: string;
13
+ connection: string;
14
+ toolName?: string;
15
+ }, fn: () => Promise<T>): Promise<T>;
16
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/mcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,OAAO,KAAa,GAAG,OAAO,KAAK,CAW7E;AAED,qDAAqD;AACrD,wBAAgB,YAAY,IAAI;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAUlE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAuBZ"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Client-side MCP instrumentation: W3C / Cursor HTTP inject on Streamable
3
+ * HTTP + SSE fetches, SEP-414 `_meta.traceparent` on JSON-RPC params, and
4
+ * CLIENT spans for `tools/list` / `tools/call`.
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
15
+ import { context, SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
16
+ import { formatTraceparent, injectActiveTraceContext } from "../../otel.js";
17
+ import { attrs } from "./attrs.js";
18
+ const TRACER = "agent_sdk";
19
+ export function instrumentedMcpFetch(base = fetch) {
20
+ return (input, init) => {
21
+ if (input instanceof Request && init === undefined) {
22
+ const headers = new Headers(input.headers);
23
+ injectActiveTraceContext(headers);
24
+ return base(new Request(input, { headers }));
25
+ }
26
+ const headers = new Headers(init === null || init === void 0 ? void 0 : init.headers);
27
+ injectActiveTraceContext(headers);
28
+ return base(input, Object.assign(Object.assign({}, init), { headers }));
29
+ };
30
+ }
31
+ /** SEP-414 / OTel MCP carrier for `params._meta`. */
32
+ export function mcpTraceMeta() {
33
+ const span = trace.getSpan(context.active());
34
+ if (span === undefined) {
35
+ return undefined;
36
+ }
37
+ const traceparent = formatTraceparent(span.spanContext());
38
+ if (traceparent === undefined) {
39
+ return undefined;
40
+ }
41
+ return { traceparent };
42
+ }
43
+ export function runMcpClientSpan(args, fn) {
44
+ const span = trace.getTracer(TRACER).startSpan(args.method, {
45
+ kind: SpanKind.CLIENT,
46
+ attributes: attrs({
47
+ "rpc.system": "mcp",
48
+ "mcp.method.name": args.method,
49
+ "mcp.tool.name": args.toolName,
50
+ "agent_sdk.mcp.connection": args.connection,
51
+ }),
52
+ });
53
+ return context.with(trace.setSpan(context.active(), span), () => __awaiter(this, void 0, void 0, function* () {
54
+ try {
55
+ return yield fn();
56
+ }
57
+ catch (error) {
58
+ span.setStatus({
59
+ code: SpanStatusCode.ERROR,
60
+ message: error instanceof Error ? error.message : String(error),
61
+ });
62
+ throw error;
63
+ }
64
+ finally {
65
+ span.end();
66
+ }
67
+ }));
68
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Process-global W3C `traceparent` propagator. Inbound HTTP extracts;
3
+ * outbound Factory / Cursor API calls inject.
4
+ */
5
+ export declare function ensureW3cPropagator(): void;
6
+ //# sourceMappingURL=propagation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/propagation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Process-global W3C `traceparent` propagator. Inbound HTTP extracts;
3
+ * outbound Factory / Cursor API calls inject.
4
+ */
5
+ import { propagation } from "@opentelemetry/api";
6
+ import { W3CTraceContextPropagator } from "@opentelemetry/core";
7
+ let installed = false;
8
+ export function ensureW3cPropagator() {
9
+ if (installed) {
10
+ return;
11
+ }
12
+ propagation.setGlobalPropagator(new W3CTraceContextPropagator());
13
+ installed = true;
14
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAgCpE,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAI1E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,WAAW,GAAG,SAAS,CA6BzB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,WAAW,GAAG,SAAS,GAC/B,OAAO,CAAC,IAAI,CAAC,CAEf"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAgCpE,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAK1E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,WAAW,GAAG,SAAS,CA8BzB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,WAAW,GAAG,SAAS,GAC/B,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -28,6 +28,7 @@ import { AggregationTemporality, MeterProvider, PeriodicExportingMetricReader, }
28
28
  import { BatchSpanProcessor, NodeTracerProvider, ParentBasedSampler, TraceIdRatioBasedSampler, } from "@opentelemetry/sdk-trace-node";
29
29
  import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION, } from "@opentelemetry/semantic-conventions";
30
30
  import { exportersForSignal } from "./config.js";
31
+ import { ensureW3cPropagator } from "./propagation.js";
31
32
  const INSTRUMENTATION = "agent_sdk";
32
33
  export function createOtelRuntime(config, log) {
33
34
  var _a;
@@ -38,6 +39,7 @@ export function createOtelRuntime(config, log) {
38
39
  if (proto === "grpc") {
39
40
  log("[agent-sdk:otel] OTEL_EXPORTER_OTLP_PROTOCOL=grpc is unsupported; using http/protobuf");
40
41
  }
42
+ ensureW3cPropagator();
41
43
  const sdk = startOtelSdk(config, log);
42
44
  const meter = config.metrics === false
43
45
  ? undefined
@@ -523,6 +523,11 @@ export declare class SessionEngine {
523
523
  hasActiveTurn(sessionId: string): boolean;
524
524
  callActiveServerTool(sessionId: string, toolName: string, input: unknown): Promise<SDKCustomToolResult>;
525
525
  private executeServerTool;
526
+ /**
527
+ * Bind outbound inject (Factory / Cursor API `traceparent`) to the
528
+ * tool span. No-op when OTel is off.
529
+ */
530
+ private runToolExecute;
526
531
  /**
527
532
  * Park a server-tool call until a human approves or denies. Emits
528
533
  * `action.approval_requested` / `action.approval_resolved` on the