@cursor/july 0.1.100 → 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 (484) hide show
  1. package/README.md +27 -0
  2. package/dist/bin/agent-serve.js +3 -2
  3. package/dist/channels/deployments/deployments-channel.d.ts +41 -5
  4. package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
  5. package/dist/channels/deployments/deployments-channel.js +88 -8
  6. package/dist/channels/deployments/types.d.ts +4 -3
  7. package/dist/channels/deployments/types.d.ts.map +1 -1
  8. package/dist/channels/origin/defaults.d.ts +43 -0
  9. package/dist/channels/origin/defaults.d.ts.map +1 -0
  10. package/dist/channels/origin/defaults.js +111 -0
  11. package/dist/channels/origin/index.d.ts +2 -0
  12. package/dist/channels/origin/index.d.ts.map +1 -1
  13. package/dist/channels/origin/index.js +2 -0
  14. package/dist/channels/origin/origin-channel.d.ts +2 -1
  15. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  16. package/dist/channels/origin/origin-channel.js +24 -3
  17. package/dist/channels/origin/state.d.ts +32 -0
  18. package/dist/channels/origin/state.d.ts.map +1 -0
  19. package/dist/channels/origin/state.js +23 -0
  20. package/dist/channels/origin/types.d.ts +23 -1
  21. package/dist/channels/origin/types.d.ts.map +1 -1
  22. package/dist/channels/slack/api.d.ts +1 -1
  23. package/dist/channels/slack/api.d.ts.map +1 -1
  24. package/dist/channels/slack/api.js +5 -2
  25. package/dist/channels/slack/assistant.d.ts +1 -1
  26. package/dist/channels/slack/assistant.d.ts.map +1 -1
  27. package/dist/channels/slack/code-fences.d.ts +17 -0
  28. package/dist/channels/slack/code-fences.d.ts.map +1 -0
  29. package/dist/channels/slack/code-fences.js +168 -0
  30. package/dist/channels/slack/dispatch.d.ts +3 -2
  31. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  32. package/dist/channels/slack/dispatch.js +28 -8
  33. package/dist/channels/slack/inbound.d.ts +8 -0
  34. package/dist/channels/slack/inbound.d.ts.map +1 -1
  35. package/dist/channels/slack/inbound.js +28 -0
  36. package/dist/channels/slack/index.d.ts +1 -0
  37. package/dist/channels/slack/index.d.ts.map +1 -1
  38. package/dist/channels/slack/index.js +1 -0
  39. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  40. package/dist/channels/slack/live-delivery.js +11 -4
  41. package/dist/channels/slack/manifest.d.ts.map +1 -1
  42. package/dist/channels/slack/manifest.js +2 -1
  43. package/dist/connections.d.ts +18 -2
  44. package/dist/connections.d.ts.map +1 -1
  45. package/dist/connections.js +18 -2
  46. package/dist/docs/404.html +2 -2
  47. package/dist/docs/ab.html +4 -4
  48. package/dist/docs/assets/{app.DZ1e0Ycq.js → app.CLA03RCz.js} +1 -1
  49. package/dist/docs/assets/chunks/@localSearchIndexroot.FAqdWIXo.js +1 -0
  50. package/dist/docs/assets/chunks/{VPLocalSearchBox.l8omwc6D.js → VPLocalSearchBox.ifxv-cJV.js} +1 -1
  51. package/dist/docs/assets/chunks/{theme.JVcD6gel.js → theme.DWCwM6p-.js} +2 -2
  52. package/dist/docs/assets/concepts.md.rPzW2HZN.js +1 -0
  53. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +9 -0
  54. package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.lean.js +1 -0
  55. package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.js → guides_cloud-runtime.md.BRirbRAN.js} +1 -1
  56. package/dist/docs/assets/index.md.Kiht7ell.js +5 -0
  57. package/dist/docs/assets/{index.md.Bb4k8kUm.lean.js → index.md.Kiht7ell.lean.js} +1 -1
  58. package/dist/docs/assets/{reference_connections.md.BiGoBAk2.js → reference_connections.md.Di6jJAXF.js} +12 -2
  59. package/dist/docs/assets/{reference_connections.md.BiGoBAk2.lean.js → reference_connections.md.Di6jJAXF.lean.js} +1 -1
  60. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.js +56 -0
  61. package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +1 -0
  62. package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.js → reference_http-api.md.oySXBO8o.js} +1 -1
  63. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.js → reference_project-layout.md.CA6QP6Lw.js} +2 -2
  64. package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.lean.js → reference_project-layout.md.CA6QP6Lw.lean.js} +1 -1
  65. package/dist/docs/assets/{reference_skills.md.BFW9retM.js → reference_skills.md.l2ezAcaN.js} +1 -1
  66. package/dist/docs/assets/{reference_tools.md.CvAHsdSp.js → reference_tools.md.B1up2r9W.js} +1 -1
  67. package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +1 -0
  68. package/dist/docs/assets/{skills_framework-map.md.BTi817yv.lean.js → skills_framework-map.md.DDa4MeEW.lean.js} +1 -1
  69. package/dist/docs/building-with-agents.html +4 -4
  70. package/dist/docs/concepts.html +5 -5
  71. package/dist/docs/concepts.md +3 -3
  72. package/dist/docs/deployment.html +4 -4
  73. package/dist/docs/evals.html +4 -4
  74. package/dist/docs/guides/agent-to-agent.html +4 -4
  75. package/dist/docs/guides/cloud-agents.html +35 -0
  76. package/dist/docs/guides/cloud-agents.md +93 -0
  77. package/dist/docs/guides/cloud-runtime.html +6 -6
  78. package/dist/docs/guides/cloud-runtime.md +2 -0
  79. package/dist/docs/guides/convert-automation.html +4 -4
  80. package/dist/docs/guides/github.html +4 -4
  81. package/dist/docs/guides/human-in-the-loop.html +4 -4
  82. package/dist/docs/guides/mcp-oauth.html +4 -4
  83. package/dist/docs/guides/opentelemetry.html +5 -5
  84. package/dist/docs/guides/slack.html +4 -4
  85. package/dist/docs/guides/webhooks.html +4 -4
  86. package/dist/docs/hashmap.json +1 -1
  87. package/dist/docs/hillclimbing.html +4 -4
  88. package/dist/docs/index.html +6 -6
  89. package/dist/docs/index.md +5 -1
  90. package/dist/docs/llms-full.txt +353 -5
  91. package/dist/docs/llms.txt +2 -0
  92. package/dist/docs/quickstart.html +4 -4
  93. package/dist/docs/reference/agent-config.html +4 -4
  94. package/dist/docs/reference/artifacts.html +4 -4
  95. package/dist/docs/reference/channels.html +5 -5
  96. package/dist/docs/reference/cli.html +4 -4
  97. package/dist/docs/reference/connections.html +16 -6
  98. package/dist/docs/reference/connections.md +31 -0
  99. package/dist/docs/reference/extensions.html +82 -0
  100. package/dist/docs/reference/extensions.md +200 -0
  101. package/dist/docs/reference/hooks.html +4 -4
  102. package/dist/docs/reference/http-api.html +6 -6
  103. package/dist/docs/reference/http-api.md +1 -1
  104. package/dist/docs/reference/instructions.html +4 -4
  105. package/dist/docs/reference/playground.html +4 -4
  106. package/dist/docs/reference/project-layout.html +6 -6
  107. package/dist/docs/reference/project-layout.md +3 -0
  108. package/dist/docs/reference/prompt.html +4 -4
  109. package/dist/docs/reference/schedules.html +4 -4
  110. package/dist/docs/reference/sessions.html +4 -4
  111. package/dist/docs/reference/skills.html +6 -6
  112. package/dist/docs/reference/skills.md +2 -0
  113. package/dist/docs/reference/subagents.html +5 -5
  114. package/dist/docs/reference/tools.html +6 -6
  115. package/dist/docs/reference/tools.md +2 -0
  116. package/dist/docs/scaffolding-agents.html +4 -4
  117. package/dist/docs/skills/ab.html +4 -4
  118. package/dist/docs/skills/create-agent.html +4 -4
  119. package/dist/docs/skills/debug.html +4 -4
  120. package/dist/docs/skills/evals.html +4 -4
  121. package/dist/docs/skills/framework-map.html +5 -5
  122. package/dist/docs/skills/framework-map.md +1 -0
  123. package/dist/docs/skills/github.html +4 -4
  124. package/dist/docs/skills/hillclimb.html +4 -4
  125. package/dist/docs/skills/index.html +4 -4
  126. package/dist/docs/skills/mcp-auth.html +4 -4
  127. package/dist/docs/skills/otel.html +4 -4
  128. package/dist/docs/skills/setup-slack.html +4 -4
  129. package/dist/docs/storage.html +4 -4
  130. package/dist/docs/templates/agentic-owners.html +4 -4
  131. package/dist/docs/templates/agents-md.html +4 -4
  132. package/dist/docs/templates/code-wiki.html +4 -4
  133. package/dist/docs/templates/demo.html +4 -4
  134. package/dist/docs/templates/pr-autofixer.html +4 -4
  135. package/dist/docs/templates/security-help.html +4 -4
  136. package/dist/docs/templates/security-reviewer.html +4 -4
  137. package/dist/docs/templates/triage.html +4 -4
  138. package/dist/docs/troubleshooting.html +4 -4
  139. package/dist/extensions/cursor-cloud-agents/extension.d.ts +57 -0
  140. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -0
  141. package/dist/extensions/cursor-cloud-agents/extension.js +66 -0
  142. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +78 -0
  143. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -0
  144. package/dist/extensions/cursor-cloud-agents/lib/backend.js +286 -0
  145. package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts +25 -0
  146. package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts.map +1 -0
  147. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +85 -0
  148. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +5 -0
  149. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -0
  150. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +4 -0
  151. package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts +15 -0
  152. package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts.map +1 -0
  153. package/dist/extensions/cursor-cloud-agents/lib/repos.js +55 -0
  154. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts +8 -0
  155. package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts.map +1 -0
  156. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +15 -0
  157. package/dist/extensions/cursor-cloud-agents/skills/handoff.md +41 -0
  158. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts +4 -0
  159. package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -0
  160. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +26 -0
  161. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts +4 -0
  162. package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts.map +1 -0
  163. package/dist/extensions/cursor-cloud-agents/tools/dump.js +54 -0
  164. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts +4 -0
  165. package/dist/extensions/cursor-cloud-agents/tools/get.d.ts.map +1 -0
  166. package/dist/extensions/cursor-cloud-agents/tools/get.js +25 -0
  167. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts +4 -0
  168. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -0
  169. package/dist/extensions/cursor-cloud-agents/tools/launch.js +59 -0
  170. package/dist/extensions/cursor-cloud-agents/tools/list.d.ts +4 -0
  171. package/dist/extensions/cursor-cloud-agents/tools/list.d.ts.map +1 -0
  172. package/dist/extensions/cursor-cloud-agents/tools/list.js +36 -0
  173. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts +4 -0
  174. package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts.map +1 -0
  175. package/dist/extensions/cursor-cloud-agents/tools/reply.js +35 -0
  176. package/dist/extensions.d.ts +73 -0
  177. package/dist/extensions.d.ts.map +1 -0
  178. package/dist/extensions.js +112 -0
  179. package/dist/files-backends/cursor-hosted.d.ts +0 -8
  180. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  181. package/dist/files-backends/cursor-hosted.js +1 -11
  182. package/dist/files.d.ts +5 -1
  183. package/dist/files.d.ts.map +1 -1
  184. package/dist/files.js +22 -18
  185. package/dist/index.d.ts +4 -3
  186. package/dist/index.d.ts.map +1 -1
  187. package/dist/index.js +3 -2
  188. package/dist/internal/advertise-tools.d.ts +4 -1
  189. package/dist/internal/advertise-tools.d.ts.map +1 -1
  190. package/dist/internal/advertise-tools.js +20 -1
  191. package/dist/internal/as-of.d.ts +18 -0
  192. package/dist/internal/as-of.d.ts.map +1 -1
  193. package/dist/internal/as-of.js +131 -0
  194. package/dist/internal/cli-deploy.d.ts.map +1 -1
  195. package/dist/internal/cli-deploy.js +64 -19
  196. package/dist/internal/continuation-identity.d.ts.map +1 -1
  197. package/dist/internal/continuation-identity.js +3 -1
  198. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  199. package/dist/internal/conversation-mirror.js +13 -15
  200. package/dist/internal/cursor/backend-client.d.ts +8 -1
  201. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  202. package/dist/internal/cursor/backend-client.js +25 -9
  203. package/dist/internal/cursor/hosted-deployment-secrets.d.ts +16 -0
  204. package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -0
  205. package/dist/internal/cursor/hosted-deployment-secrets.js +61 -0
  206. package/dist/internal/cursor/hosted-store-secrets.d.ts +11 -0
  207. package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
  208. package/dist/internal/cursor/hosted-store-secrets.js +15 -0
  209. package/dist/internal/cursor-deployment-relay.d.ts +15 -1
  210. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  211. package/dist/internal/cursor-deployment-relay.js +46 -7
  212. package/dist/internal/deploy-client.d.ts +23 -0
  213. package/dist/internal/deploy-client.d.ts.map +1 -1
  214. package/dist/internal/deploy-client.js +54 -12
  215. package/dist/internal/discovery/ab.d.ts +9 -0
  216. package/dist/internal/discovery/ab.d.ts.map +1 -0
  217. package/dist/internal/discovery/ab.js +101 -0
  218. package/dist/internal/discovery/agent-config.d.ts +35 -0
  219. package/dist/internal/discovery/agent-config.d.ts.map +1 -0
  220. package/dist/internal/discovery/agent-config.js +173 -0
  221. package/dist/internal/discovery/agent.d.ts +11 -0
  222. package/dist/internal/discovery/agent.d.ts.map +1 -0
  223. package/dist/internal/discovery/agent.js +306 -0
  224. package/dist/internal/discovery/channels.d.ts +10 -0
  225. package/dist/internal/discovery/channels.d.ts.map +1 -0
  226. package/dist/internal/discovery/channels.js +97 -0
  227. package/dist/internal/discovery/connections.d.ts +17 -0
  228. package/dist/internal/discovery/connections.d.ts.map +1 -0
  229. package/dist/internal/discovery/connections.js +436 -0
  230. package/dist/internal/discovery/context.d.ts +20 -0
  231. package/dist/internal/discovery/context.d.ts.map +1 -0
  232. package/dist/internal/discovery/context.js +30 -0
  233. package/dist/internal/discovery/cursor-plugin.d.ts +25 -0
  234. package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -0
  235. package/dist/internal/discovery/cursor-plugin.js +570 -0
  236. package/dist/internal/discovery/extensions.d.ts +19 -0
  237. package/dist/internal/discovery/extensions.d.ts.map +1 -0
  238. package/dist/internal/discovery/extensions.js +238 -0
  239. package/dist/internal/discovery/fs.d.ts +15 -0
  240. package/dist/internal/discovery/fs.d.ts.map +1 -0
  241. package/dist/internal/discovery/fs.js +115 -0
  242. package/dist/internal/discovery/hooks.d.ts +7 -0
  243. package/dist/internal/discovery/hooks.d.ts.map +1 -0
  244. package/dist/internal/discovery/hooks.js +48 -0
  245. package/dist/internal/discovery/info.d.ts +6 -0
  246. package/dist/internal/discovery/info.d.ts.map +1 -0
  247. package/dist/internal/discovery/info.js +141 -0
  248. package/dist/internal/discovery/instructions.d.ts +7 -0
  249. package/dist/internal/discovery/instructions.d.ts.map +1 -0
  250. package/dist/internal/discovery/instructions.js +95 -0
  251. package/dist/internal/discovery/modules.d.ts +20 -0
  252. package/dist/internal/discovery/modules.d.ts.map +1 -0
  253. package/dist/internal/discovery/modules.js +101 -0
  254. package/dist/internal/discovery/names.d.ts +12 -0
  255. package/dist/internal/discovery/names.d.ts.map +1 -0
  256. package/dist/internal/discovery/names.js +36 -0
  257. package/dist/internal/discovery/project.d.ts +53 -0
  258. package/dist/internal/discovery/project.d.ts.map +1 -0
  259. package/dist/internal/discovery/project.js +239 -0
  260. package/dist/internal/discovery/runtime.d.ts +34 -0
  261. package/dist/internal/discovery/runtime.d.ts.map +1 -0
  262. package/dist/internal/discovery/runtime.js +98 -0
  263. package/dist/internal/discovery/schedules.d.ts +7 -0
  264. package/dist/internal/discovery/schedules.d.ts.map +1 -0
  265. package/dist/internal/discovery/schedules.js +97 -0
  266. package/dist/internal/discovery/seed-files.d.ts +7 -0
  267. package/dist/internal/discovery/seed-files.d.ts.map +1 -0
  268. package/dist/internal/discovery/seed-files.js +41 -0
  269. package/dist/internal/discovery/services.d.ts +17 -0
  270. package/dist/internal/discovery/services.d.ts.map +1 -0
  271. package/dist/internal/discovery/services.js +104 -0
  272. package/dist/internal/discovery/skills.d.ts +16 -0
  273. package/dist/internal/discovery/skills.d.ts.map +1 -0
  274. package/dist/internal/discovery/skills.js +151 -0
  275. package/dist/internal/discovery/subagent.d.ts +13 -0
  276. package/dist/internal/discovery/subagent.d.ts.map +1 -0
  277. package/dist/internal/discovery/subagent.js +19 -0
  278. package/dist/internal/discovery/tools.d.ts +18 -0
  279. package/dist/internal/discovery/tools.d.ts.map +1 -0
  280. package/dist/internal/discovery/tools.js +159 -0
  281. package/dist/internal/discovery.d.ts +8 -62
  282. package/dist/internal/discovery.d.ts.map +1 -1
  283. package/dist/internal/discovery.js +8 -2210
  284. package/dist/internal/distribution.d.ts.map +1 -1
  285. package/dist/internal/distribution.js +5 -0
  286. package/dist/internal/framework-file-storage.d.ts +3 -3
  287. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  288. package/dist/internal/framework-file-storage.js +38 -9
  289. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  290. package/dist/internal/framework-storage-selection.js +8 -7
  291. package/dist/internal/frontmatter.d.ts +11 -3
  292. package/dist/internal/frontmatter.d.ts.map +1 -1
  293. package/dist/internal/frontmatter.js +29 -3
  294. package/dist/internal/hosted-delivery.d.ts +3 -1
  295. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  296. package/dist/internal/hosted-delivery.js +19 -32
  297. package/dist/internal/hosted-execution-diag.d.ts +5 -0
  298. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  299. package/dist/internal/hosted-execution-diag.js +5 -0
  300. package/dist/internal/hosted-execution-flush.d.ts +46 -0
  301. package/dist/internal/hosted-execution-flush.d.ts.map +1 -0
  302. package/dist/internal/hosted-execution-flush.js +81 -0
  303. package/dist/internal/mcp-endpoint.js +1 -0
  304. package/dist/internal/mcp-host.d.ts +2 -1
  305. package/dist/internal/mcp-host.d.ts.map +1 -1
  306. package/dist/internal/mcp-host.js +66 -29
  307. package/dist/internal/otel/collector.d.ts +13 -0
  308. package/dist/internal/otel/collector.d.ts.map +1 -1
  309. package/dist/internal/otel/collector.js +84 -17
  310. package/dist/internal/otel/http.d.ts.map +1 -1
  311. package/dist/internal/otel/http.js +2 -10
  312. package/dist/internal/otel/mcp.d.ts +16 -0
  313. package/dist/internal/otel/mcp.d.ts.map +1 -0
  314. package/dist/internal/otel/mcp.js +68 -0
  315. package/dist/internal/otel/propagation.d.ts +6 -0
  316. package/dist/internal/otel/propagation.d.ts.map +1 -0
  317. package/dist/internal/otel/propagation.js +14 -0
  318. package/dist/internal/otel/runtime.d.ts.map +1 -1
  319. package/dist/internal/otel/runtime.js +2 -0
  320. package/dist/internal/review-comments.d.ts +1 -1
  321. package/dist/internal/review-comments.d.ts.map +1 -1
  322. package/dist/internal/review-comments.js +4 -4
  323. package/dist/internal/server.d.ts +3 -0
  324. package/dist/internal/server.d.ts.map +1 -1
  325. package/dist/internal/server.js +79 -104
  326. package/dist/internal/session-engine.d.ts +14 -7
  327. package/dist/internal/session-engine.d.ts.map +1 -1
  328. package/dist/internal/session-engine.js +113 -66
  329. package/dist/internal/session-run-log.d.ts +3 -1
  330. package/dist/internal/session-run-log.d.ts.map +1 -1
  331. package/dist/internal/session-run-log.js +14 -14
  332. package/dist/internal/start-log-store.d.ts +60 -0
  333. package/dist/internal/start-log-store.d.ts.map +1 -0
  334. package/dist/internal/start-log-store.js +149 -0
  335. package/dist/internal/storage-coordinator.d.ts +4 -1
  336. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  337. package/dist/internal/storage-coordinator.js +15 -13
  338. package/dist/internal/tool-catalog.d.ts.map +1 -1
  339. package/dist/internal/tool-catalog.js +9 -6
  340. package/dist/internal/tool-policy.d.ts +8 -0
  341. package/dist/internal/tool-policy.d.ts.map +1 -1
  342. package/dist/internal/tool-policy.js +19 -7
  343. package/dist/internal/turn-cost.d.ts +14 -0
  344. package/dist/internal/turn-cost.d.ts.map +1 -1
  345. package/dist/internal/turn-cost.js +41 -9
  346. package/dist/internal/v2-hosting.d.ts +22 -0
  347. package/dist/internal/v2-hosting.d.ts.map +1 -0
  348. package/dist/internal/v2-hosting.js +23 -0
  349. package/dist/otel.d.ts +16 -0
  350. package/dist/otel.d.ts.map +1 -1
  351. package/dist/otel.js +26 -0
  352. package/dist/playground/assets/index-B6C9S9nG.css +1 -0
  353. package/dist/playground/assets/{index-DVs98vPL.js → index-ZqNoT8Ie.js} +45 -45
  354. package/dist/playground/index.html +2 -2
  355. package/dist/storage-protocol.d.ts +47 -22
  356. package/dist/storage-protocol.d.ts.map +1 -1
  357. package/dist/storage-protocol.js +90 -54
  358. package/dist/storage.d.ts +2 -2
  359. package/dist/storage.d.ts.map +1 -1
  360. package/dist/storage.js +1 -1
  361. package/dist/tools.d.ts +9 -0
  362. package/dist/tools.d.ts.map +1 -1
  363. package/dist/tools.js +9 -0
  364. package/dist/types.d.ts +154 -6
  365. package/dist/types.d.ts.map +1 -1
  366. package/dist/types.js +29 -1
  367. package/docs/README.md +5 -1
  368. package/docs/concepts.md +3 -3
  369. package/docs/guides/cloud-agents.md +98 -0
  370. package/docs/guides/cloud-runtime.md +2 -0
  371. package/docs/reference/connections.md +31 -0
  372. package/docs/reference/extensions.md +205 -0
  373. package/docs/reference/http-api.md +1 -1
  374. package/docs/reference/project-layout.md +3 -0
  375. package/docs/reference/skills.md +2 -0
  376. package/docs/reference/tools.md +2 -0
  377. package/package.json +18 -4
  378. package/skills/framework-map/SKILL.md +1 -0
  379. package/src/bin/agent-serve.ts +11 -2
  380. package/src/channels/deployments/deployments-channel.ts +117 -8
  381. package/src/channels/deployments/types.ts +4 -3
  382. package/src/channels/origin/defaults.ts +143 -0
  383. package/src/channels/origin/index.ts +2 -0
  384. package/src/channels/origin/origin-channel.ts +37 -1
  385. package/src/channels/origin/state.ts +54 -0
  386. package/src/channels/origin/types.ts +24 -0
  387. package/src/channels/slack/api.ts +6 -3
  388. package/src/channels/slack/assistant.ts +1 -1
  389. package/src/channels/slack/code-fences.ts +183 -0
  390. package/src/channels/slack/dispatch.ts +27 -2
  391. package/src/channels/slack/inbound.ts +37 -0
  392. package/src/channels/slack/index.ts +1 -0
  393. package/src/channels/slack/live-delivery.ts +16 -13
  394. package/src/channels/slack/manifest.ts +2 -1
  395. package/src/connections.ts +18 -1
  396. package/src/extensions/cursor-cloud-agents/extension.ts +120 -0
  397. package/src/extensions/cursor-cloud-agents/lib/backend.ts +395 -0
  398. package/src/extensions/cursor-cloud-agents/lib/fleet.ts +109 -0
  399. package/src/extensions/cursor-cloud-agents/lib/inputs.ts +5 -0
  400. package/src/extensions/cursor-cloud-agents/lib/repos.ts +81 -0
  401. package/src/extensions/cursor-cloud-agents/lib/transcript.ts +23 -0
  402. package/src/extensions/cursor-cloud-agents/skills/handoff.md +41 -0
  403. package/src/extensions/cursor-cloud-agents/tools/cancel.ts +19 -0
  404. package/src/extensions/cursor-cloud-agents/tools/dump.ts +51 -0
  405. package/src/extensions/cursor-cloud-agents/tools/get.ts +18 -0
  406. package/src/extensions/cursor-cloud-agents/tools/launch.ts +64 -0
  407. package/src/extensions/cursor-cloud-agents/tools/list.ts +31 -0
  408. package/src/extensions/cursor-cloud-agents/tools/reply.ts +34 -0
  409. package/src/extensions.ts +141 -0
  410. package/src/files-backends/cursor-hosted.ts +1 -17
  411. package/src/files.ts +43 -34
  412. package/src/index.ts +11 -0
  413. package/src/internal/advertise-tools.ts +37 -12
  414. package/src/internal/as-of.ts +163 -0
  415. package/src/internal/cli-deploy.ts +86 -23
  416. package/src/internal/continuation-identity.ts +3 -1
  417. package/src/internal/conversation-mirror.ts +23 -18
  418. package/src/internal/cursor/backend-client.ts +32 -10
  419. package/src/internal/cursor/hosted-deployment-secrets.ts +72 -0
  420. package/src/internal/cursor/hosted-store-secrets.ts +27 -0
  421. package/src/internal/cursor-deployment-relay.ts +65 -8
  422. package/src/internal/deploy-client.ts +73 -18
  423. package/src/internal/discovery/ab.ts +111 -0
  424. package/src/internal/discovery/agent-config.ts +222 -0
  425. package/src/internal/discovery/agent.ts +360 -0
  426. package/src/internal/discovery/channels.ts +103 -0
  427. package/src/internal/discovery/connections.ts +540 -0
  428. package/src/internal/discovery/context.ts +46 -0
  429. package/src/internal/discovery/cursor-plugin.ts +708 -0
  430. package/src/internal/discovery/extensions.ts +348 -0
  431. package/src/internal/discovery/fs.ts +108 -0
  432. package/src/internal/discovery/hooks.ts +45 -0
  433. package/src/internal/discovery/info.ts +179 -0
  434. package/src/internal/discovery/instructions.ts +113 -0
  435. package/src/internal/discovery/modules.ts +107 -0
  436. package/src/internal/discovery/names.ts +44 -0
  437. package/src/internal/discovery/project.ts +270 -0
  438. package/src/internal/discovery/runtime.ts +159 -0
  439. package/src/internal/discovery/schedules.ts +94 -0
  440. package/src/internal/discovery/seed-files.ts +37 -0
  441. package/src/internal/discovery/services.ts +124 -0
  442. package/src/internal/discovery/skills.ts +176 -0
  443. package/src/internal/discovery/subagent.ts +29 -0
  444. package/src/internal/discovery/tools.ts +182 -0
  445. package/src/internal/discovery.ts +20 -2724
  446. package/src/internal/distribution.ts +5 -0
  447. package/src/internal/framework-file-storage.ts +43 -9
  448. package/src/internal/framework-storage-selection.ts +9 -9
  449. package/src/internal/frontmatter.ts +36 -3
  450. package/src/internal/hosted-delivery.ts +38 -63
  451. package/src/internal/hosted-execution-diag.ts +6 -0
  452. package/src/internal/hosted-execution-flush.ts +142 -0
  453. package/src/internal/mcp-endpoint.ts +1 -0
  454. package/src/internal/mcp-host.ts +116 -37
  455. package/src/internal/otel/collector.ts +125 -25
  456. package/src/internal/otel/http.ts +2 -12
  457. package/src/internal/otel/mcp.ts +69 -0
  458. package/src/internal/otel/propagation.ts +17 -0
  459. package/src/internal/otel/runtime.ts +2 -0
  460. package/src/internal/review-comments.ts +5 -2
  461. package/src/internal/server.ts +81 -100
  462. package/src/internal/session-engine.ts +152 -39
  463. package/src/internal/session-run-log.ts +18 -16
  464. package/src/internal/start-log-store.ts +174 -0
  465. package/src/internal/storage-coordinator.ts +19 -16
  466. package/src/internal/tool-catalog.ts +9 -6
  467. package/src/internal/tool-policy.ts +39 -9
  468. package/src/internal/turn-cost.ts +47 -4
  469. package/src/internal/v2-hosting.ts +38 -0
  470. package/src/otel.ts +38 -0
  471. package/src/storage-protocol.ts +126 -79
  472. package/src/storage.ts +5 -0
  473. package/src/tools.ts +18 -0
  474. package/src/types.ts +213 -14
  475. package/dist/docs/assets/chunks/@localSearchIndexroot.j70vvPL4.js +0 -1
  476. package/dist/docs/assets/concepts.md.lwAgBIMI.js +0 -1
  477. package/dist/docs/assets/index.md.Bb4k8kUm.js +0 -5
  478. package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +0 -1
  479. package/dist/playground/assets/index-BszoQDc6.css +0 -1
  480. /package/dist/docs/assets/{concepts.md.lwAgBIMI.lean.js → concepts.md.rPzW2HZN.lean.js} +0 -0
  481. /package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.lean.js → guides_cloud-runtime.md.BRirbRAN.lean.js} +0 -0
  482. /package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.lean.js → reference_http-api.md.oySXBO8o.lean.js} +0 -0
  483. /package/dist/docs/assets/{reference_skills.md.BFW9retM.lean.js → reference_skills.md.l2ezAcaN.lean.js} +0 -0
  484. /package/dist/docs/assets/{reference_tools.md.CvAHsdSp.lean.js → reference_tools.md.B1up2r9W.lean.js} +0 -0
@@ -0,0 +1,101 @@
1
+ /**
2
+ * `agent/ab.ts` or `agent/ab/*.ts` plus `agent/ab.config.ts`: live A/B experiments.
3
+ */
4
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
+ return new (P || (P = Promise))(function (resolve, reject) {
7
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
11
+ });
12
+ };
13
+ import { basename, extname, join, relative } from "node:path";
14
+ import { displayPath } from "./context.js";
15
+ import { findModuleFile, isDirectory, isModuleFile, toPosix, walkFiles, } from "./fs.js";
16
+ import { importDefault } from "./modules.js";
17
+ export function loadABs(ctx, agentDir) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const abs = [];
20
+ const seen = new Set();
21
+ const single = yield findModuleFile(agentDir, "ab");
22
+ if (single !== undefined) {
23
+ const definition = yield importDefault(ctx, single, "ab");
24
+ if (definition !== undefined) {
25
+ const name = resolveABName(definition, "ab");
26
+ seen.add(name);
27
+ abs.push({
28
+ name,
29
+ definition: definition,
30
+ });
31
+ }
32
+ }
33
+ const absDir = join(agentDir, "ab");
34
+ if (yield isDirectory(absDir)) {
35
+ for (const filePath of yield walkFiles(absDir)) {
36
+ if (!isModuleFile(basename(filePath))) {
37
+ continue;
38
+ }
39
+ const rel = toPosix(relative(absDir, filePath));
40
+ const stem = rel.slice(0, -extname(rel).length);
41
+ const definition = yield importDefault(ctx, filePath, "ab");
42
+ if (definition === undefined) {
43
+ continue;
44
+ }
45
+ const name = resolveABName(definition, stem);
46
+ if (seen.has(name)) {
47
+ ctx.diagnostics.push({
48
+ severity: "error",
49
+ path: displayPath(ctx, filePath),
50
+ message: `Duplicate A/B experiment name ${JSON.stringify(name)}.`,
51
+ });
52
+ continue;
53
+ }
54
+ seen.add(name);
55
+ abs.push({
56
+ name,
57
+ definition: definition,
58
+ });
59
+ }
60
+ }
61
+ return abs;
62
+ });
63
+ }
64
+ export function loadABConfig(ctx, agentDir) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ const path = yield findModuleFile(agentDir, "ab.config");
67
+ if (path === undefined) {
68
+ return undefined;
69
+ }
70
+ try {
71
+ const mod = yield ctx.importModule(path);
72
+ if (mod.default === null || typeof mod.default !== "object") {
73
+ ctx.diagnostics.push({
74
+ severity: "error",
75
+ path: displayPath(ctx, path),
76
+ message: "ab.config.ts must default-export defineABConfig({ ... }) from @cursor/july/ab.",
77
+ });
78
+ return undefined;
79
+ }
80
+ return mod.default;
81
+ }
82
+ catch (error) {
83
+ ctx.diagnostics.push({
84
+ severity: "error",
85
+ path: displayPath(ctx, path),
86
+ message: `Failed to load ab.config: ${error instanceof Error ? error.message : String(error)}`,
87
+ });
88
+ return undefined;
89
+ }
90
+ });
91
+ }
92
+ function resolveABName(definition, fallback) {
93
+ if (typeof definition === "object" &&
94
+ definition !== null &&
95
+ "name" in definition &&
96
+ typeof definition.name === "string" &&
97
+ definition.name.length > 0) {
98
+ return definition.name;
99
+ }
100
+ return fallback;
101
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * `agent/agent.ts`: model, runtime architecture, working directory, hosting, and concurrency.
3
+ */
4
+ import { type AgentArchitecture, type AgentConcurrencyOptions, type AgentConfigDefinition, type AgentHostingOptions, type AgentRuntime, type ModelSetting } from "../../types.js";
5
+ import { type DiscoveryContext } from "./context.js";
6
+ export declare function runtimeArchitectureCompatibilityError(agent: {
7
+ runtime: AgentRuntime;
8
+ architecture?: AgentArchitecture;
9
+ }): string | undefined;
10
+ export declare function resolveArchitecture(ctx: DiscoveryContext, agentDir: string, architecture: AgentArchitecture | undefined): AgentArchitecture | undefined;
11
+ /** Absolute harness cwd parent, or undefined when unset / blank. */
12
+ export declare function resolveAgentCwd(ctx: DiscoveryContext, authored: string | undefined): string | undefined;
13
+ /**
14
+ * Nested git checkouts inherit ancestor AGENTS.md / .cursor rules and MCP.
15
+ * Point those harnesses at ~/.cache/agent-serve/<dir> unless the agent
16
+ * already set cwd or workspaceDir.
17
+ */
18
+ export declare function resolveLocalCwd(ctx: DiscoveryContext, authoredCwd: string | undefined, authoredWorkspaceDir: string | undefined): Promise<string | undefined>;
19
+ /**
20
+ * Validate the authored `hosting` block against the same grammar the
21
+ * backend enforces on deploy. Violations are warning diagnostics (reported
22
+ * by `agent-sdk validate`), not hard failures: the backend stays
23
+ * authoritative and `agent-sdk deploy` re-checks before any network call.
24
+ */
25
+ export declare function resolveHosting(ctx: DiscoveryContext, agentDir: string, hosting: AgentHostingOptions | undefined): AgentHostingOptions | undefined;
26
+ /**
27
+ * Validate the authored `concurrency` block. Invalid values are **error**
28
+ * diagnostics (serve refuses to start): silently dropping a turn ceiling
29
+ * would fail open to unlimited parallelism, the opposite of what the
30
+ * author asked for.
31
+ */
32
+ export declare function resolveConcurrency(ctx: DiscoveryContext, agentDir: string, concurrency: AgentConcurrencyOptions | undefined): AgentConcurrencyOptions | undefined;
33
+ export declare function loadAgentConfig(ctx: DiscoveryContext, agentDir: string, isRoot: boolean): Promise<AgentConfigDefinition | undefined>;
34
+ export declare function isValidModelSetting(model: unknown): model is ModelSetting;
35
+ //# sourceMappingURL=agent-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/agent-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAEjB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AASxB,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AAI3E,wBAAgB,qCAAqC,CAAC,KAAK,EAAE;IAC3D,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,GAAG,MAAM,GAAG,SAAS,CAIrB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,iBAAiB,GAAG,SAAS,GAC1C,iBAAiB,GAAG,SAAS,CAc/B;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CASpB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,oBAAoB,EAAE,MAAM,GAAG,SAAS,GACvC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAY7B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,mBAAmB,GAAG,SAAS,CAyCjC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,uBAAuB,GAAG,SAAS,GAC/C,uBAAuB,GAAG,SAAS,CAmBrC;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA4B5C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAUzE"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * `agent/agent.ts`: model, runtime architecture, working directory, hosting, and concurrency.
3
+ */
4
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
+ return new (P || (P = Promise))(function (resolve, reject) {
7
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
11
+ });
12
+ };
13
+ import { basename, isAbsolute, join, resolve } from "node:path";
14
+ import { MAX_RUNNING_TURNS_LIMIT, } from "../../types.js";
15
+ import { normalizePositiveInt } from "../bounded-int.js";
16
+ import { isReservedSecretName, MAX_EGRESS_DOMAINS, validateEgressDomain, validateSecretName, } from "../hosting.js";
17
+ import { defaultLocalHarnessCwd, isNestedInGitRepo } from "../workspace.js";
18
+ import { displayPath, isBlank } from "./context.js";
19
+ import { findModuleFile } from "./fs.js";
20
+ import { importDefault } from "./modules.js";
21
+ export function runtimeArchitectureCompatibilityError(agent) {
22
+ return agent.architecture === "v2" && agent.runtime === "grokbot"
23
+ ? 'architecture: "v2" cannot use runtime: "grokbot": the grokbot runtime executes through the signed-in account\'s hosted /v0/grokbot box, not a deployment-scoped v2 runtime.'
24
+ : undefined;
25
+ }
26
+ export function resolveArchitecture(ctx, agentDir, architecture) {
27
+ if (architecture === undefined ||
28
+ architecture === "v1" ||
29
+ architecture === "v2") {
30
+ return architecture;
31
+ }
32
+ ctx.diagnostics.push({
33
+ severity: "error",
34
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
35
+ message: `architecture must be "v1" or "v2"; got ${JSON.stringify(architecture)}.`,
36
+ });
37
+ return undefined;
38
+ }
39
+ /** Absolute harness cwd parent, or undefined when unset / blank. */
40
+ export function resolveAgentCwd(ctx, authored) {
41
+ if (authored === undefined) {
42
+ return undefined;
43
+ }
44
+ const trimmed = authored.trim();
45
+ if (trimmed === "") {
46
+ return undefined;
47
+ }
48
+ return isAbsolute(trimmed) ? trimmed : resolve(ctx.rootDir, trimmed);
49
+ }
50
+ /**
51
+ * Nested git checkouts inherit ancestor AGENTS.md / .cursor rules and MCP.
52
+ * Point those harnesses at ~/.cache/agent-serve/<dir> unless the agent
53
+ * already set cwd or workspaceDir.
54
+ */
55
+ export function resolveLocalCwd(ctx, authoredCwd, authoredWorkspaceDir) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ const cwd = resolveAgentCwd(ctx, authoredCwd);
58
+ if (cwd !== undefined) {
59
+ return cwd;
60
+ }
61
+ if (resolveAgentCwd(ctx, authoredWorkspaceDir) !== undefined) {
62
+ return undefined;
63
+ }
64
+ if (!(yield isNestedInGitRepo(ctx.rootDir))) {
65
+ return undefined;
66
+ }
67
+ return defaultLocalHarnessCwd(basename(ctx.rootDir));
68
+ });
69
+ }
70
+ /**
71
+ * Validate the authored `hosting` block against the same grammar the
72
+ * backend enforces on deploy. Violations are warning diagnostics (reported
73
+ * by `agent-sdk validate`), not hard failures: the backend stays
74
+ * authoritative and `agent-sdk deploy` re-checks before any network call.
75
+ */
76
+ export function resolveHosting(ctx, agentDir, hosting) {
77
+ var _a, _b;
78
+ if (hosting === undefined) {
79
+ return undefined;
80
+ }
81
+ const agentPath = displayPath(ctx, join(agentDir, "agent.ts"));
82
+ const warn = (message) => {
83
+ ctx.diagnostics.push({ severity: "warning", path: agentPath, message });
84
+ };
85
+ const egressDomains = (_a = hosting.egressDomains) !== null && _a !== void 0 ? _a : [];
86
+ for (const domain of egressDomains) {
87
+ const domainError = validateEgressDomain(domain);
88
+ if (domainError !== undefined) {
89
+ warn(`hosting.egressDomains: ${domainError}`);
90
+ }
91
+ }
92
+ if (egressDomains.length > MAX_EGRESS_DOMAINS) {
93
+ warn(`hosting.egressDomains lists ${egressDomains.length} domains; deploys are capped at ${MAX_EGRESS_DOMAINS}.`);
94
+ }
95
+ for (const name of (_b = hosting.secretNames) !== null && _b !== void 0 ? _b : []) {
96
+ const nameError = validateSecretName(name);
97
+ if (nameError !== undefined) {
98
+ warn(`hosting.secretNames: ${nameError}`);
99
+ }
100
+ else if (isReservedSecretName(name)) {
101
+ warn(`hosting.secretNames: ${JSON.stringify(name)} is platform-managed (CURSOR_* / reserved hosted-storage names); omit it from secretNames.`);
102
+ }
103
+ }
104
+ return Object.assign(Object.assign({}, (hosting.egressDomains === undefined
105
+ ? {}
106
+ : { egressDomains: [...hosting.egressDomains] })), (hosting.secretNames === undefined
107
+ ? {}
108
+ : { secretNames: [...hosting.secretNames] }));
109
+ }
110
+ /**
111
+ * Validate the authored `concurrency` block. Invalid values are **error**
112
+ * diagnostics (serve refuses to start): silently dropping a turn ceiling
113
+ * would fail open to unlimited parallelism, the opposite of what the
114
+ * author asked for.
115
+ */
116
+ export function resolveConcurrency(ctx, agentDir, concurrency) {
117
+ if (concurrency === undefined || concurrency.maxRunningTurns === undefined) {
118
+ return undefined;
119
+ }
120
+ try {
121
+ return {
122
+ maxRunningTurns: normalizePositiveInt(concurrency.maxRunningTurns, {
123
+ label: "concurrency.maxRunningTurns",
124
+ max: MAX_RUNNING_TURNS_LIMIT,
125
+ }),
126
+ };
127
+ }
128
+ catch (error) {
129
+ ctx.diagnostics.push({
130
+ severity: "error",
131
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
132
+ message: error instanceof Error ? error.message : String(error),
133
+ });
134
+ return undefined;
135
+ }
136
+ }
137
+ export function loadAgentConfig(ctx, agentDir, isRoot) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ const configPath = yield findModuleFile(agentDir, "agent");
140
+ if (configPath === undefined) {
141
+ ctx.diagnostics.push({
142
+ severity: "error",
143
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
144
+ message: isRoot
145
+ ? "agent.ts is required on the root agent: default-export defineAgent({ ... })"
146
+ : "agent.ts is required on a subagent: default-export defineAgent({ description: ... })",
147
+ });
148
+ return undefined;
149
+ }
150
+ const definition = yield importDefault(ctx, configPath, "agent");
151
+ if (definition === undefined) {
152
+ return undefined;
153
+ }
154
+ const config = definition;
155
+ if (!isRoot && isBlank(config.description)) {
156
+ ctx.diagnostics.push({
157
+ severity: "error",
158
+ path: displayPath(ctx, configPath),
159
+ message: "Subagents require a description; the parent model reads it to decide when to delegate.",
160
+ });
161
+ }
162
+ return config;
163
+ });
164
+ }
165
+ export function isValidModelSetting(model) {
166
+ if (typeof model === "string") {
167
+ return model.trim() !== "";
168
+ }
169
+ return (typeof model === "object" &&
170
+ model !== null &&
171
+ typeof model.id === "string" &&
172
+ model.id.trim() !== "");
173
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Compile one `agent/` directory (and its subagents) into a {@link ResolvedAgent}.
3
+ */
4
+ import { type ResolvedAgent } from "../../types.js";
5
+ import { type DiscoveryContext } from "./context.js";
6
+ export declare function loadAgent(ctx: DiscoveryContext, agentDir: string, options: {
7
+ name: string;
8
+ isRoot: boolean;
9
+ }): Promise<ResolvedAgent>;
10
+ export declare function warnUnknownSlots(ctx: DiscoveryContext, agentDir: string): Promise<void>;
11
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAkBnE,OAAO,EAAE,KAAK,gBAAgB,EAAe,MAAM,cAAc,CAAC;AAelE,wBAAsB,SAAS,CAC7B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,aAAa,CAAC,CAyNxB;AAqDD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Compile one `agent/` directory (and its subagents) into a {@link ResolvedAgent}.
3
+ */
4
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
+ return new (P || (P = Promise))(function (resolve, reject) {
7
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
11
+ });
12
+ };
13
+ import { join } from "node:path";
14
+ import { DEFAULT_MODEL } from "../../types.js";
15
+ import { builtinTools } from "../builtin-tools/index.js";
16
+ import { withIdentityPreamble } from "../workspace.js";
17
+ import { isValidModelSetting, loadAgentConfig, resolveAgentCwd, resolveArchitecture, resolveConcurrency, resolveHosting, resolveLocalCwd, runtimeArchitectureCompatibilityError, } from "./agent-config.js";
18
+ import { loadConnections, loadHostConnections, resolveMcpConnectionsDir, } from "./connections.js";
19
+ import { displayPath } from "./context.js";
20
+ import { appendExtensions } from "./extensions.js";
21
+ import { findModuleFile, isDirectory, sortedEntries } from "./fs.js";
22
+ import { loadInstructions } from "./instructions.js";
23
+ import { validateName } from "./names.js";
24
+ import { checkGrokBotRuntimeLimitations, resolveRuntime, warnCloudRuntimeLimitations, } from "./runtime.js";
25
+ import { loadSeedFiles } from "./seed-files.js";
26
+ import { loadSkills } from "./skills.js";
27
+ import { subagent } from "./subagent.js";
28
+ import { appendBuiltinTools, loadTools } from "./tools.js";
29
+ export function loadAgent(ctx, agentDir, options) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ var _a, _b, _c, _d;
32
+ var _e;
33
+ const config = yield loadAgentConfig(ctx, agentDir, options.isRoot);
34
+ const name = (_e = config === null || config === void 0 ? void 0 : config.name) !== null && _e !== void 0 ? _e : options.name;
35
+ const authoredInstructions = yield loadInstructions(ctx, agentDir, config, options.isRoot);
36
+ // Subagents run as Cursor SDK custom subagents (prompt + description +
37
+ // model); their other slots are inert today, so don't load them — just
38
+ // warn that they exist.
39
+ if (!options.isRoot) {
40
+ yield warnUnsupportedSubagentSlots(ctx, agentDir);
41
+ if ((config === null || config === void 0 ? void 0 : config.builtinTools) !== undefined) {
42
+ ctx.diagnostics.push({
43
+ severity: "warning",
44
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
45
+ message: "builtinTools is not supported on subagents; ignoring.",
46
+ });
47
+ }
48
+ if ((config === null || config === void 0 ? void 0 : config.tools) !== undefined) {
49
+ ctx.diagnostics.push({
50
+ severity: "warning",
51
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
52
+ message: "tools is not supported on subagents (they keep the harness task-tool toolset); ignoring.",
53
+ });
54
+ }
55
+ if ((config === null || config === void 0 ? void 0 : config.architecture) !== undefined) {
56
+ ctx.diagnostics.push({
57
+ severity: "warning",
58
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
59
+ message: "architecture is not supported on subagents; ignoring.",
60
+ });
61
+ }
62
+ const artifactsPath = yield findModuleFile(agentDir, "artifacts");
63
+ if (artifactsPath !== undefined) {
64
+ ctx.diagnostics.push({
65
+ severity: "warning",
66
+ path: displayPath(ctx, artifactsPath),
67
+ message: "artifacts are not supported on subagents; ignoring.",
68
+ });
69
+ }
70
+ return subagent(name, {
71
+ description: config === null || config === void 0 ? void 0 : config.description,
72
+ model: config === null || config === void 0 ? void 0 : config.model,
73
+ prompt: authoredInstructions,
74
+ });
75
+ }
76
+ // Root agents without authored instructions stay undefined (diagnostic
77
+ // already recorded).
78
+ const instructions = authoredInstructions === undefined
79
+ ? undefined
80
+ : withIdentityPreamble(name, authoredInstructions);
81
+ const tools = yield loadTools(ctx, join(agentDir, "tools"));
82
+ const skills = yield loadSkills(ctx, join(agentDir, "skills"));
83
+ const connections = yield loadConnections(ctx, yield resolveMcpConnectionsDir(ctx, agentDir));
84
+ const subagents = yield loadSubagents(ctx, join(agentDir, "subagents"));
85
+ const extensions = yield appendExtensions(ctx, join(agentDir, "extensions"), {
86
+ tools,
87
+ skills,
88
+ connections,
89
+ subagents,
90
+ });
91
+ const hostConnections = yield loadHostConnections(ctx, agentDir, connections);
92
+ const seedFiles = yield loadSeedFiles(ctx, agentDir);
93
+ const runtime = resolveRuntime(ctx, agentDir, config === null || config === void 0 ? void 0 : config.runtime);
94
+ // Keep authored `cloud` even when default runtime is local — per-session
95
+ // `send({ cloud })` merges it under cloudOverride for handoff sessions.
96
+ const cloud = config === null || config === void 0 ? void 0 : config.cloud;
97
+ const localWorkspaceDir = resolveAgentCwd(ctx, (_a = config === null || config === void 0 ? void 0 : config.local) === null || _a === void 0 ? void 0 : _a.workspaceDir);
98
+ const localCwd = yield resolveLocalCwd(ctx, (_b = config === null || config === void 0 ? void 0 : config.local) === null || _b === void 0 ? void 0 : _b.cwd, (_c = config === null || config === void 0 ? void 0 : config.local) === null || _c === void 0 ? void 0 : _c.workspaceDir);
99
+ const localSandbox = ((_d = config === null || config === void 0 ? void 0 : config.local) === null || _d === void 0 ? void 0 : _d.sandbox) === true;
100
+ // Built-in tool allowlist (top-level `tools`). `[]` is meaningful (no
101
+ // native built-in tools), so presence is keyed on the field, not on
102
+ // emptiness. "mcp" is always granted alongside a configured allowlist:
103
+ // it is transport, not capability — this kit's own server tools ride the
104
+ // SDK custom-tool MCP path, so omitting it silently breaks
105
+ // `agent/tools/`, and what MCP actually exposes stays controlled by the
106
+ // second layer (authored tools, mcp-connections, the harness cwd's
107
+ // ambient config).
108
+ const authoredAllowlist = config === null || config === void 0 ? void 0 : config.tools;
109
+ const allowedTools = authoredAllowlist === undefined || authoredAllowlist.includes("mcp")
110
+ ? authoredAllowlist
111
+ : [...authoredAllowlist, "mcp"];
112
+ // The allowlist states runtime-agnostic intent, but only the local
113
+ // harness can enforce it (the Cursor SDK rejects tool restrictions on
114
+ // cloud agents, and the Grok Bot harness has its own fixed toolset) — a
115
+ // non-local agent that declares one must fail at serve start, never run
116
+ // unrestricted. (Hybrid per-send cloud sessions fail closed in the
117
+ // session engine.)
118
+ if (allowedTools !== undefined && runtime !== "local") {
119
+ ctx.diagnostics.push({
120
+ severity: "error",
121
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
122
+ message: `tools cannot be enforced on runtime: "${runtime}". Remove \`tools\` or run the agent on the local runtime.`,
123
+ });
124
+ }
125
+ // Per-session connection features (defineConnection auth/advertiseTools)
126
+ // only run on local turns: advertised tools are in-process server tools,
127
+ // and per-session headers cannot reach a cloud VM's MCP config. A
128
+ // non-local agent that declares them must fail at serve start — never
129
+ // run without the connection's tools or identity. (Hybrid per-send
130
+ // cloud sessions fail closed in the session engine.)
131
+ const perSessionConnection = connections.find((connection) => connection.advertiseTools === true || connection.auth !== undefined);
132
+ if (perSessionConnection !== undefined && runtime !== "local") {
133
+ ctx.diagnostics.push({
134
+ severity: "error",
135
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
136
+ message: `MCP connection "${perSessionConnection.name}" uses advertiseTools/auth, which only run on runtime: "local". Remove them or run the agent on the local runtime.`,
137
+ });
138
+ }
139
+ // `execution: "agent"` tool scripts run through the shell tool. Shell is
140
+ // a real capability, so it is never injected — but an allowlist that
141
+ // strands authored scripts deserves a loud diagnostic, not silence.
142
+ if (allowedTools !== undefined &&
143
+ !allowedTools.includes("shell") &&
144
+ tools.some((tool) => tool.execution === "agent")) {
145
+ ctx.diagnostics.push({
146
+ severity: "warning",
147
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
148
+ message: '`tools` omits "shell" but this agent has execution: "agent" tools, which run as shell scripts; the model will not be able to run them.',
149
+ });
150
+ }
151
+ if (localCwd !== undefined && localWorkspaceDir !== undefined) {
152
+ ctx.diagnostics.push({
153
+ severity: "warning",
154
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
155
+ message: "local.workspaceDir pins every session to one directory, so local.cwd is unused. Drop one of them.",
156
+ });
157
+ }
158
+ const local = localCwd === undefined && localWorkspaceDir === undefined && !localSandbox
159
+ ? undefined
160
+ : {
161
+ cwd: localCwd,
162
+ workspaceDir: localWorkspaceDir,
163
+ sandbox: localSandbox,
164
+ };
165
+ const hosting = resolveHosting(ctx, agentDir, config === null || config === void 0 ? void 0 : config.hosting);
166
+ const concurrency = resolveConcurrency(ctx, agentDir, config === null || config === void 0 ? void 0 : config.concurrency);
167
+ const architecture = resolveArchitecture(ctx, agentDir, config === null || config === void 0 ? void 0 : config.architecture);
168
+ const runtimeArchitectureError = runtimeArchitectureCompatibilityError({
169
+ runtime,
170
+ architecture,
171
+ });
172
+ if (runtimeArchitectureError !== undefined) {
173
+ ctx.diagnostics.push({
174
+ severity: "error",
175
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
176
+ message: runtimeArchitectureError,
177
+ });
178
+ }
179
+ if (runtime === "cloud") {
180
+ warnCloudRuntimeLimitations(ctx, agentDir, {
181
+ agentTools: tools.filter((tool) => tool.execution === "agent").length,
182
+ skills: skills.length,
183
+ seedFiles: seedFiles.length,
184
+ hasCloudOptions: cloud !== undefined,
185
+ });
186
+ }
187
+ appendBuiltinTools(ctx, agentDir, tools, config === null || config === void 0 ? void 0 : config.builtinTools);
188
+ // After appendBuiltinTools so opted-in built-ins (server-executed) count.
189
+ if (runtime === "grokbot") {
190
+ checkGrokBotRuntimeLimitations(ctx, agentDir, {
191
+ serverTools: tools.filter((tool) => tool.execution === "server").length,
192
+ agentTools: tools.filter((tool) => tool.execution === "agent").length,
193
+ skills: skills.length,
194
+ seedFiles: seedFiles.length,
195
+ connections: connections.length + hostConnections.length,
196
+ subagents: subagents.length,
197
+ hasCloudOptions: cloud !== undefined,
198
+ hasLocalSandbox: localSandbox,
199
+ });
200
+ }
201
+ return Object.assign(Object.assign(Object.assign(Object.assign({ name, description: config === null || config === void 0 ? void 0 : config.description,
202
+ // Root agents always get a concrete model: authored value or DEFAULT_MODEL.
203
+ model: isValidModelSetting(config === null || config === void 0 ? void 0 : config.model) ? config.model : DEFAULT_MODEL, instructions,
204
+ runtime,
205
+ cloud,
206
+ local }, (allowedTools === undefined ? {} : { allowedTools })), { hosting,
207
+ concurrency }), (architecture === undefined ? {} : { architecture })), { tools,
208
+ skills,
209
+ extensions,
210
+ connections,
211
+ hostConnections,
212
+ subagents,
213
+ seedFiles });
214
+ });
215
+ }
216
+ function loadSubagents(ctx, subagentsDir) {
217
+ return __awaiter(this, void 0, void 0, function* () {
218
+ if (!(yield isDirectory(subagentsDir))) {
219
+ return [];
220
+ }
221
+ const subagents = [];
222
+ for (const entry of yield sortedEntries(subagentsDir)) {
223
+ if (!entry.isDirectory()) {
224
+ continue;
225
+ }
226
+ const subagentDir = join(subagentsDir, entry.name);
227
+ if (!validateName(ctx, "subagent", entry.name, subagentDir)) {
228
+ continue;
229
+ }
230
+ subagents.push(yield loadAgent(ctx, subagentDir, { name: entry.name, isRoot: false }));
231
+ }
232
+ return subagents;
233
+ });
234
+ }
235
+ function warnUnsupportedSubagentSlots(ctx, subagentDir) {
236
+ return __awaiter(this, void 0, void 0, function* () {
237
+ const unsupported = [
238
+ ["tools", "tools"],
239
+ ["skills", "skills"],
240
+ ["extensions", "extensions"],
241
+ ["mcp-connections", "MCP connections"],
242
+ ["host-connections", "host MCP connections"],
243
+ ["connections", "MCP connections"],
244
+ ["subagents", "nested subagents"],
245
+ ["channels", "channels"],
246
+ ["schedules", "schedules"],
247
+ ["hooks", "hooks"],
248
+ ["sandbox", "sandbox files"],
249
+ ];
250
+ for (const [slot, label] of unsupported) {
251
+ if (yield isDirectory(join(subagentDir, slot))) {
252
+ ctx.diagnostics.push({
253
+ severity: "warning",
254
+ path: displayPath(ctx, join(subagentDir, slot)),
255
+ message: `Subagent ${label} are not supported on the Cursor harness yet; the subagent runs with the parent's execution surface. Ignoring.`,
256
+ });
257
+ }
258
+ }
259
+ });
260
+ }
261
+ export function warnUnknownSlots(ctx, agentDir) {
262
+ return __awaiter(this, void 0, void 0, function* () {
263
+ const known = new Set([
264
+ "agent",
265
+ "instructions",
266
+ "tools",
267
+ "skills",
268
+ "extensions",
269
+ "mcp-connections",
270
+ "host-connections",
271
+ // Legacy slot name; resolveMcpConnectionsDir warns and still loads it.
272
+ "connections",
273
+ "subagents",
274
+ "channels",
275
+ "schedules",
276
+ "hooks",
277
+ "ab",
278
+ "sandbox",
279
+ "lib",
280
+ // Vite playground custom tool chips (agent/playground/tools).
281
+ "playground",
282
+ ]);
283
+ for (const entry of yield sortedEntries(agentDir)) {
284
+ if (!entry.isDirectory() || entry.name.startsWith(".")) {
285
+ continue;
286
+ }
287
+ if (entry.name === "node_modules" || known.has(entry.name)) {
288
+ continue;
289
+ }
290
+ // Footgun: evals live at project-root `evals/`, not under `agent/`.
291
+ if (entry.name === "evals") {
292
+ ctx.diagnostics.push({
293
+ severity: "warning",
294
+ path: displayPath(ctx, join(agentDir, entry.name)),
295
+ message: 'Directory "evals" under agent/ is ignored — put defineEval files at project-root evals/ instead.',
296
+ });
297
+ continue;
298
+ }
299
+ ctx.diagnostics.push({
300
+ severity: "warning",
301
+ path: displayPath(ctx, join(agentDir, entry.name)),
302
+ message: `Unrecognized directory "${entry.name}" under agent/ (not an authored slot; use lib/ for shared code).`,
303
+ });
304
+ }
305
+ });
306
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `agent/channels/*.ts`: HTTP surfaces beyond the session API.
3
+ */
4
+ import type { DiscoveredChannel, HttpChannelDefinition } from "../../types.js";
5
+ import { type DiscoveryContext } from "./context.js";
6
+ export declare function loadChannels(ctx: DiscoveryContext, channelsDir: string): Promise<{
7
+ channels: DiscoveredChannel[];
8
+ httpChannelDefinition: HttpChannelDefinition | undefined;
9
+ }>;
10
+ //# sourceMappingURL=channels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/channels.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAEV,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,cAAc,CAAC;AAIhF,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IACT,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC1D,CAAC,CAgFD"}