@cursor/july 0.1.93 → 0.1.95

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 (440) hide show
  1. package/AGENTS.md +8 -20
  2. package/README.md +4 -26
  3. package/dist/channels/github/github-channel.d.ts.map +1 -1
  4. package/dist/channels/github/github-channel.js +14 -2
  5. package/dist/channels/github/types.d.ts +18 -3
  6. package/dist/channels/github/types.d.ts.map +1 -1
  7. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  8. package/dist/channels/origin/origin-channel.js +11 -3
  9. package/dist/channels/origin/origin-webhook.d.ts +11 -1
  10. package/dist/channels/origin/origin-webhook.d.ts.map +1 -1
  11. package/dist/channels/origin/origin-webhook.js +23 -3
  12. package/dist/channels/origin/types.d.ts +8 -0
  13. package/dist/channels/origin/types.d.ts.map +1 -1
  14. package/dist/channels/slack/attachments.js +2 -2
  15. package/dist/channels/slack/dispatch.d.ts +0 -7
  16. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  17. package/dist/channels/slack/dispatch.js +4 -7
  18. package/dist/channels/slack/eval-directive.d.ts +5 -12
  19. package/dist/channels/slack/eval-directive.d.ts.map +1 -1
  20. package/dist/channels/slack/eval-directive.js +8 -19
  21. package/dist/channels/slack/index.d.ts +0 -6
  22. package/dist/channels/slack/index.d.ts.map +1 -1
  23. package/dist/channels/slack/index.js +0 -6
  24. package/dist/channels/slack/pr-ref.d.ts +7 -1
  25. package/dist/channels/slack/pr-ref.d.ts.map +1 -1
  26. package/dist/channels/slack/pr-ref.js +42 -23
  27. package/dist/channels/slack/setup.d.ts +4 -4
  28. package/dist/channels/slack/setup.d.ts.map +1 -1
  29. package/dist/channels/slack/setup.js +8 -15
  30. package/dist/channels/slack/slack-channel.d.ts +6 -13
  31. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  32. package/dist/channels/slack/slack-channel.js +15 -101
  33. package/dist/channels/slack/types.d.ts +12 -79
  34. package/dist/channels/slack/types.d.ts.map +1 -1
  35. package/dist/channels/slack/types.js +1 -15
  36. package/dist/client.d.ts +14 -0
  37. package/dist/client.d.ts.map +1 -0
  38. package/dist/client.js +12 -0
  39. package/dist/connections.d.ts +18 -9
  40. package/dist/connections.d.ts.map +1 -1
  41. package/dist/connections.js +17 -8
  42. package/dist/docs/404.html +2 -2
  43. package/dist/docs/ab.html +4 -4
  44. package/dist/docs/assets/{app.CjWU-x0z.js → app.BBj0klBO.js} +1 -1
  45. package/dist/docs/assets/chunks/@localSearchIndexroot.oqPawjiD.js +1 -0
  46. package/dist/docs/assets/chunks/{VPLocalSearchBox.Cxy8ySFQ.js → VPLocalSearchBox.CUEXpL78.js} +1 -1
  47. package/dist/docs/assets/chunks/{theme.Dvq1Bktu.js → theme.DabmQnia.js} +2 -2
  48. package/dist/docs/assets/concepts.md.lwAgBIMI.js +1 -0
  49. package/dist/docs/assets/{deployment.md.DoLFAzfm.js → deployment.md.D9msOFOW.js} +3 -8
  50. package/dist/docs/assets/{deployment.md.DoLFAzfm.lean.js → deployment.md.D9msOFOW.lean.js} +1 -1
  51. package/dist/docs/assets/{guides_agent-to-agent.md.B3JIaAqz.js → guides_agent-to-agent.md.BDb0t1QV.js} +1 -1
  52. package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.js +9 -0
  53. package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.lean.js +1 -0
  54. package/dist/docs/assets/{guides_convert-automation.md.Bboisykk.js → guides_convert-automation.md.B4sjlodG.js} +1 -1
  55. package/dist/docs/assets/{guides_github.md.DqJhuaN1.js → guides_github.md.Cnh2mL4a.js} +1 -1
  56. package/dist/docs/assets/{guides_mcp-oauth.md.CJvrXtkN.js → guides_mcp-oauth.md.DPYmBCbV.js} +7 -9
  57. package/dist/docs/assets/{guides_mcp-oauth.md.CJvrXtkN.lean.js → guides_mcp-oauth.md.DPYmBCbV.lean.js} +1 -1
  58. package/dist/docs/assets/{guides_slack.md.mqeNKs84.js → guides_slack.md.C32HsdKk.js} +5 -11
  59. package/dist/docs/assets/guides_slack.md.C32HsdKk.lean.js +1 -0
  60. package/dist/docs/assets/index.md.BoHaMdeZ.js +5 -0
  61. package/dist/docs/assets/{index.md.B-lVR4wT.lean.js → index.md.BoHaMdeZ.lean.js} +1 -1
  62. package/dist/docs/assets/{quickstart.md.BrmfrrIr.js → quickstart.md.Nj_LjW_a.js} +1 -1
  63. package/dist/docs/assets/{reference_cli.md.D9KESDsD.js → reference_cli.md.BsMOxDvh.js} +4 -3
  64. package/dist/docs/assets/{reference_cli.md.D9KESDsD.lean.js → reference_cli.md.BsMOxDvh.lean.js} +1 -1
  65. package/dist/docs/assets/{reference_connections.md.DB6SsN6U.js → reference_connections.md.BH8Oc0D0.js} +5 -5
  66. package/dist/docs/assets/{reference_connections.md.DB6SsN6U.lean.js → reference_connections.md.BH8Oc0D0.lean.js} +1 -1
  67. package/dist/docs/assets/{reference_hooks.md.BxN87gCw.js → reference_hooks.md.a8BJxMR5.js} +1 -1
  68. package/dist/docs/assets/reference_http-api.md.D89k1mdm.js +11 -0
  69. package/dist/docs/assets/reference_http-api.md.D89k1mdm.lean.js +1 -0
  70. package/dist/docs/assets/reference_project-layout.md.Bv4KOtlB.js +19 -0
  71. package/dist/docs/assets/{reference_subagents.md.Xoav0AII.js → reference_subagents.md.CfsIloPm.js} +1 -1
  72. package/dist/docs/assets/{reference_tools.md.DuKvkYWG.js → reference_tools.md.BHeXn2id.js} +3 -3
  73. package/dist/docs/assets/{reference_tools.md.DuKvkYWG.lean.js → reference_tools.md.BHeXn2id.lean.js} +1 -1
  74. package/dist/docs/assets/{templates_agentic-owners.md.DqtPdm6f.js → templates_agentic-owners.md.BZSH4N9z.js} +1 -1
  75. package/dist/docs/assets/{templates_demo.md.DhFcWN6j.js → templates_demo.md.BeQX9V3H.js} +1 -1
  76. package/dist/docs/assets/{templates_pr-autofixer.md.R4K_qytS.js → templates_pr-autofixer.md.x5zl6-GT.js} +2 -2
  77. package/dist/docs/assets/{templates_pr-autofixer.md.R4K_qytS.lean.js → templates_pr-autofixer.md.x5zl6-GT.lean.js} +1 -1
  78. package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.js +4 -0
  79. package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.lean.js +1 -0
  80. package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.js → templates_security-reviewer.md.lshxbCLK.js} +2 -2
  81. package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.lean.js → templates_security-reviewer.md.lshxbCLK.lean.js} +1 -1
  82. package/dist/docs/assets/{templates_triage.md.CVlpctKS.js → templates_triage.md.Co4UNzkZ.js} +3 -3
  83. package/dist/docs/assets/{templates_triage.md.CVlpctKS.lean.js → templates_triage.md.Co4UNzkZ.lean.js} +1 -1
  84. package/dist/docs/assets/troubleshooting.md.Ctv3T8C2.js +1 -0
  85. package/dist/docs/building-with-agents.html +4 -4
  86. package/dist/docs/concepts.html +5 -5
  87. package/dist/docs/concepts.md +1 -0
  88. package/dist/docs/deployment.html +7 -12
  89. package/dist/docs/deployment.md +1 -20
  90. package/dist/docs/design/agsh.md +406 -0
  91. package/dist/docs/evals.html +4 -4
  92. package/dist/docs/guides/agent-to-agent.html +6 -6
  93. package/dist/docs/guides/agent-to-agent.md +2 -2
  94. package/dist/docs/guides/cloud-runtime.html +6 -6
  95. package/dist/docs/guides/cloud-runtime.md +1 -0
  96. package/dist/docs/guides/convert-automation.html +6 -6
  97. package/dist/docs/guides/convert-automation.md +1 -1
  98. package/dist/docs/guides/github.html +6 -6
  99. package/dist/docs/guides/github.md +4 -4
  100. package/dist/docs/guides/human-in-the-loop.html +4 -4
  101. package/dist/docs/guides/mcp-oauth.html +11 -13
  102. package/dist/docs/guides/mcp-oauth.md +10 -18
  103. package/dist/docs/guides/opentelemetry.html +5 -5
  104. package/dist/docs/guides/slack.html +9 -15
  105. package/dist/docs/guides/slack.md +9 -46
  106. package/dist/docs/guides/webhooks.html +4 -4
  107. package/dist/docs/hashmap.json +1 -1
  108. package/dist/docs/hillclimbing.html +4 -4
  109. package/dist/docs/index.html +6 -6
  110. package/dist/docs/index.md +3 -29
  111. package/dist/docs/llms-full.txt +756 -2810
  112. package/dist/docs/llms.txt +3 -16
  113. package/dist/docs/quickstart.html +6 -6
  114. package/dist/docs/quickstart.md +2 -3
  115. package/dist/docs/reference/agent-config.html +4 -4
  116. package/dist/docs/reference/artifacts.html +4 -4
  117. package/dist/docs/reference/channels.html +4 -4
  118. package/dist/docs/reference/cli.html +8 -7
  119. package/dist/docs/reference/cli.md +5 -2
  120. package/dist/docs/reference/connections.html +9 -9
  121. package/dist/docs/reference/connections.md +15 -11
  122. package/dist/docs/reference/hooks.html +6 -6
  123. package/dist/docs/reference/hooks.md +2 -3
  124. package/dist/docs/reference/http-api.html +6 -6
  125. package/dist/docs/reference/http-api.md +8 -0
  126. package/dist/docs/reference/instructions.html +4 -4
  127. package/dist/docs/reference/playground.html +4 -4
  128. package/dist/docs/reference/project-layout.html +8 -6
  129. package/dist/docs/reference/project-layout.md +5 -1
  130. package/dist/docs/reference/prompt.html +4 -4
  131. package/dist/docs/reference/schedules.html +4 -4
  132. package/dist/docs/reference/sessions.html +4 -4
  133. package/dist/docs/reference/skills.html +4 -4
  134. package/dist/docs/reference/subagents.html +6 -6
  135. package/dist/docs/reference/subagents.md +2 -2
  136. package/dist/docs/reference/tools.html +7 -7
  137. package/dist/docs/reference/tools.md +19 -3
  138. package/dist/docs/scaffolding-agents.html +4 -4
  139. package/dist/docs/storage.html +4 -4
  140. package/dist/docs/templates/agentic-owners.html +7 -7
  141. package/dist/docs/templates/agentic-owners.md +1 -1
  142. package/dist/docs/templates/demo.html +6 -6
  143. package/dist/docs/templates/demo.md +3 -2
  144. package/dist/docs/templates/pr-autofixer.html +6 -6
  145. package/dist/docs/templates/pr-autofixer.md +8 -13
  146. package/dist/docs/templates/security-help.html +30 -0
  147. package/dist/docs/templates/security-help.md +65 -0
  148. package/dist/docs/templates/security-reviewer.html +6 -6
  149. package/dist/docs/templates/security-reviewer.md +1 -3
  150. package/dist/docs/templates/triage.html +7 -7
  151. package/dist/docs/templates/triage.md +2 -6
  152. package/dist/docs/troubleshooting.html +5 -5
  153. package/dist/docs/troubleshooting.md +2 -2
  154. package/dist/files-backends/cursor-hosted.d.ts +6 -2
  155. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  156. package/dist/files-backends/cursor-hosted.js +2 -2
  157. package/dist/files.d.ts +2 -0
  158. package/dist/files.d.ts.map +1 -1
  159. package/dist/files.js +5 -0
  160. package/dist/index.d.ts +1 -1
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +1 -1
  163. package/dist/internal/advertise-tools.d.ts +11 -0
  164. package/dist/internal/advertise-tools.d.ts.map +1 -1
  165. package/dist/internal/advertise-tools.js +47 -9
  166. package/dist/internal/cli-deploy.d.ts.map +1 -1
  167. package/dist/internal/cli-deploy.js +135 -6
  168. package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
  169. package/dist/internal/cli-mcp-oauth.js +7 -4
  170. package/dist/internal/conversation-mirror.d.ts +82 -0
  171. package/dist/internal/conversation-mirror.d.ts.map +1 -0
  172. package/dist/internal/conversation-mirror.js +251 -0
  173. package/dist/internal/convert-automation/convert-workflow.d.ts.map +1 -1
  174. package/dist/internal/convert-automation/convert-workflow.js +26 -15
  175. package/dist/internal/convert-automation/slug.d.ts +0 -2
  176. package/dist/internal/convert-automation/slug.d.ts.map +1 -1
  177. package/dist/internal/convert-automation/slug.js +0 -8
  178. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  179. package/dist/internal/cursor/account-mcp.js +5 -1
  180. package/dist/internal/deferred-channel-session.d.ts +20 -0
  181. package/dist/internal/deferred-channel-session.d.ts.map +1 -0
  182. package/dist/internal/deferred-channel-session.js +62 -0
  183. package/dist/internal/deploy-client.d.ts +13 -1
  184. package/dist/internal/deploy-client.d.ts.map +1 -1
  185. package/dist/internal/deploy-client.js +11 -1
  186. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  187. package/dist/internal/deploy-manifest.js +11 -5
  188. package/dist/internal/discovery.d.ts.map +1 -1
  189. package/dist/internal/discovery.js +110 -15
  190. package/dist/internal/framework-storage-selection.d.ts +32 -16
  191. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  192. package/dist/internal/framework-storage-selection.js +51 -17
  193. package/dist/internal/hosted-admission-context.d.ts +20 -0
  194. package/dist/internal/hosted-admission-context.d.ts.map +1 -0
  195. package/dist/internal/hosted-admission-context.js +31 -0
  196. package/dist/internal/hosted-delivery-protocol.d.ts +5 -0
  197. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  198. package/dist/internal/hosted-delivery-protocol.js +33 -1
  199. package/dist/internal/hosted-delivery.d.ts +4 -2
  200. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  201. package/dist/internal/hosted-delivery.js +97 -44
  202. package/dist/internal/hosted-managed-automation.d.ts +30 -0
  203. package/dist/internal/hosted-managed-automation.d.ts.map +1 -0
  204. package/dist/internal/hosted-managed-automation.js +58 -0
  205. package/dist/internal/mcp-endpoint.js +3 -3
  206. package/dist/internal/mcp-host.d.ts +8 -7
  207. package/dist/internal/mcp-host.d.ts.map +1 -1
  208. package/dist/internal/mcp-host.js +8 -7
  209. package/dist/internal/peer-connections.d.ts.map +1 -1
  210. package/dist/internal/peer-connections.js +5 -1
  211. package/dist/internal/playground/static.d.ts +0 -3
  212. package/dist/internal/playground/static.d.ts.map +1 -1
  213. package/dist/internal/resolved-connections.d.ts.map +1 -1
  214. package/dist/internal/resolved-connections.js +5 -7
  215. package/dist/internal/review-comments.d.ts.map +1 -1
  216. package/dist/internal/review-comments.js +10 -98
  217. package/dist/internal/scm/pr-url.d.ts +14 -0
  218. package/dist/internal/scm/pr-url.d.ts.map +1 -0
  219. package/dist/internal/scm/pr-url.js +65 -0
  220. package/dist/internal/sdk-runner.d.ts +14 -0
  221. package/dist/internal/sdk-runner.d.ts.map +1 -1
  222. package/dist/internal/sdk-runner.js +41 -2
  223. package/dist/internal/server.d.ts.map +1 -1
  224. package/dist/internal/server.js +123 -174
  225. package/dist/internal/session-engine.d.ts +45 -10
  226. package/dist/internal/session-engine.d.ts.map +1 -1
  227. package/dist/internal/session-engine.js +217 -65
  228. package/dist/internal/tool-catalog.d.ts +31 -0
  229. package/dist/internal/tool-catalog.d.ts.map +1 -0
  230. package/dist/internal/tool-catalog.js +67 -0
  231. package/dist/playground/assets/index-CF7hUDnQ.css +1 -0
  232. package/dist/playground/assets/{index-D9MFzhNE.js → index-CZA1uEWA.js} +48 -48
  233. package/dist/playground/index.html +2 -2
  234. package/dist/storage-backends/cursor-hosted.d.ts +7 -2
  235. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  236. package/dist/storage-backends/cursor-hosted.js +2 -2
  237. package/dist/types.d.ts +72 -23
  238. package/dist/types.d.ts.map +1 -1
  239. package/dist/types.js +19 -0
  240. package/docs/README.md +3 -29
  241. package/docs/concepts.md +1 -0
  242. package/docs/deployment.md +1 -20
  243. package/docs/design/agsh.md +406 -0
  244. package/docs/guides/agent-to-agent.md +2 -2
  245. package/docs/guides/cloud-runtime.md +1 -0
  246. package/docs/guides/convert-automation.md +1 -1
  247. package/docs/guides/github.md +4 -4
  248. package/docs/guides/mcp-oauth.md +10 -18
  249. package/docs/guides/slack.md +10 -47
  250. package/docs/quickstart.md +2 -3
  251. package/docs/reference/cli.md +5 -2
  252. package/docs/reference/connections.md +15 -11
  253. package/docs/reference/hooks.md +2 -3
  254. package/docs/reference/http-api.md +8 -0
  255. package/docs/reference/project-layout.md +5 -1
  256. package/docs/reference/subagents.md +2 -2
  257. package/docs/reference/tools.md +19 -3
  258. package/docs/templates/agentic-owners.md +1 -1
  259. package/docs/templates/demo.md +3 -2
  260. package/docs/templates/pr-autofixer.md +8 -13
  261. package/docs/templates/security-help.md +70 -0
  262. package/docs/templates/security-reviewer.md +1 -3
  263. package/docs/templates/triage.md +2 -6
  264. package/docs/troubleshooting.md +2 -2
  265. package/package.json +9 -2
  266. package/skills/create-agent/SKILL.md +6 -13
  267. package/skills/debug/SKILL.md +2 -4
  268. package/skills/evals/SKILL.md +1 -1
  269. package/skills/framework-map/SKILL.md +3 -2
  270. package/skills/mcp-auth/SKILL.md +10 -13
  271. package/skills/setup-slack/SKILL.md +21 -137
  272. package/src/channels/github/github-channel.ts +23 -8
  273. package/src/channels/github/types.ts +19 -2
  274. package/src/channels/origin/origin-channel.ts +13 -1
  275. package/src/channels/origin/origin-webhook.ts +27 -3
  276. package/src/channels/origin/types.ts +8 -0
  277. package/src/channels/slack/attachments.ts +2 -2
  278. package/src/channels/slack/dispatch.ts +2 -16
  279. package/src/channels/slack/eval-directive.ts +8 -27
  280. package/src/channels/slack/index.ts +0 -6
  281. package/src/channels/slack/pr-ref.ts +56 -25
  282. package/src/channels/slack/setup.ts +8 -15
  283. package/src/channels/slack/slack-channel.ts +14 -125
  284. package/src/channels/slack/types.ts +12 -96
  285. package/src/client.ts +23 -0
  286. package/src/connections.ts +20 -7
  287. package/src/files-backends/cursor-hosted.ts +9 -3
  288. package/src/files.ts +11 -0
  289. package/src/index.ts +2 -0
  290. package/src/internal/advertise-tools.ts +45 -7
  291. package/src/internal/cli-deploy.ts +171 -7
  292. package/src/internal/cli-mcp-oauth.ts +6 -4
  293. package/src/internal/conversation-mirror.ts +330 -0
  294. package/src/internal/convert-automation/convert-workflow.ts +29 -17
  295. package/src/internal/convert-automation/slug.ts +0 -9
  296. package/src/internal/cursor/account-mcp.ts +4 -1
  297. package/src/internal/deferred-channel-session.ts +61 -0
  298. package/src/internal/deploy-client.ts +24 -1
  299. package/src/internal/deploy-manifest.ts +10 -5
  300. package/src/internal/discovery.ts +129 -15
  301. package/src/internal/fixtures/units-server.ts +52 -0
  302. package/src/internal/framework-storage-selection.ts +61 -19
  303. package/src/internal/hosted-admission-context.ts +37 -0
  304. package/src/internal/hosted-delivery-protocol.ts +44 -1
  305. package/src/internal/hosted-delivery.ts +155 -68
  306. package/src/internal/hosted-managed-automation.ts +72 -0
  307. package/src/internal/mcp-endpoint.ts +3 -3
  308. package/src/internal/mcp-host.ts +8 -7
  309. package/src/internal/peer-connections.ts +4 -1
  310. package/src/internal/playground/static.ts +1 -3
  311. package/src/internal/resolved-connections.ts +8 -10
  312. package/src/internal/review-comments.ts +10 -113
  313. package/src/internal/scm/pr-url.ts +95 -0
  314. package/src/internal/sdk-runner.ts +57 -2
  315. package/src/internal/server.ts +161 -251
  316. package/src/internal/session-engine.ts +266 -69
  317. package/src/internal/tool-catalog.ts +106 -0
  318. package/src/storage-backends/cursor-hosted.ts +10 -3
  319. package/src/types.ts +90 -23
  320. package/templates/agentic-owners/README.md +1 -1
  321. package/templates/agentic-owners/agent/agent.ts +0 -10
  322. package/templates/agentic-owners/agent/channels/github.ts +5 -14
  323. package/templates/agentic-owners/agent/lib/config.ts +0 -8
  324. package/templates/agentic-owners/agent/lib/review.ts +2 -15
  325. package/templates/agentic-owners/agent/tools/record_review.ts +2 -4
  326. package/templates/demo/agent/agent.ts +0 -10
  327. package/templates/pr-autofixer/README.md +0 -2
  328. package/templates/pr-autofixer/agent/agent.ts +0 -11
  329. package/templates/pr-autofixer/agent/channels/slack.ts +1 -2
  330. package/templates/pr-autofixer/agent/lib/pr-state.ts +5 -17
  331. package/templates/pr-autofixer/agent/lib/repos.ts +0 -1
  332. package/templates/security-help/README.md +2 -2
  333. package/templates/security-help/agent/agent.ts +1 -2
  334. package/templates/security-help/agent/channels/slack.ts +0 -3
  335. package/templates/security-help/agent/instructions.md +9 -10
  336. package/templates/security-help/agent/skills/access-request.md +1 -1
  337. package/templates/security-help/agent/skills/faq.md +31 -0
  338. package/templates/security-help/agent/skills/security-playbooks.md +1 -1
  339. package/templates/security-help/package.json +1 -2
  340. package/templates/security-reviewer/agent/agent.ts +0 -10
  341. package/templates/triage/README.md +2 -1
  342. package/templates/triage/agent/agent.ts +0 -10
  343. package/templates/triage/agent/channels/queue.ts +1 -1
  344. package/templates/triage/agent/channels/webhook.ts +1 -3
  345. package/templates/triage/overlays/jira/agent/mcp-connections/tracker.ts +0 -1
  346. package/templates/triage/overlays/linear/agent/mcp-connections/tracker.ts +0 -1
  347. package/dist/channels/slack/cursor-account.d.ts +0 -87
  348. package/dist/channels/slack/cursor-account.d.ts.map +0 -1
  349. package/dist/channels/slack/cursor-account.js +0 -100
  350. package/dist/docs/assets/chunks/@localSearchIndexroot.ChpIC3Zy.js +0 -1
  351. package/dist/docs/assets/concepts.md.F6AiPorA.js +0 -1
  352. package/dist/docs/assets/example-agents_approval-buddy.md.DmezILPg.js +0 -10
  353. package/dist/docs/assets/example-agents_approval-buddy.md.DmezILPg.lean.js +0 -1
  354. package/dist/docs/assets/example-agents_benny.md.B0kwY7D_.js +0 -5
  355. package/dist/docs/assets/example-agents_benny.md.B0kwY7D_.lean.js +0 -1
  356. package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.js +0 -11
  357. package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.lean.js +0 -1
  358. package/dist/docs/assets/example-agents_codebase-wiki.md.BBNw9Ekr.js +0 -8
  359. package/dist/docs/assets/example-agents_codebase-wiki.md.BBNw9Ekr.lean.js +0 -1
  360. package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.js +0 -8
  361. package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.lean.js +0 -1
  362. package/dist/docs/assets/example-agents_concierge.md.BzB2b20R.js +0 -22
  363. package/dist/docs/assets/example-agents_concierge.md.BzB2b20R.lean.js +0 -1
  364. package/dist/docs/assets/example-agents_index.md.ChBp0AX6.js +0 -2
  365. package/dist/docs/assets/example-agents_index.md.ChBp0AX6.lean.js +0 -1
  366. package/dist/docs/assets/example-agents_knowledge-base.md.CrA85ig-.js +0 -11
  367. package/dist/docs/assets/example-agents_knowledge-base.md.CrA85ig-.lean.js +0 -1
  368. package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.js +0 -10
  369. package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.lean.js +0 -1
  370. package/dist/docs/assets/example-agents_security-reviewer.md.74pPpWYj.js +0 -19
  371. package/dist/docs/assets/example-agents_security-reviewer.md.74pPpWYj.lean.js +0 -1
  372. package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.js +0 -5
  373. package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.lean.js +0 -1
  374. package/dist/docs/assets/example-agents_weather-agent.md.CaGpmw3Y.js +0 -25
  375. package/dist/docs/assets/example-agents_weather-agent.md.CaGpmw3Y.lean.js +0 -1
  376. package/dist/docs/assets/guides_cloud-runtime.md.BnvjPiia.js +0 -9
  377. package/dist/docs/assets/guides_cloud-runtime.md.BnvjPiia.lean.js +0 -1
  378. package/dist/docs/assets/guides_slack.md.mqeNKs84.lean.js +0 -1
  379. package/dist/docs/assets/index.md.B-lVR4wT.js +0 -5
  380. package/dist/docs/assets/reference_http-api.md.C68BERYr.js +0 -11
  381. package/dist/docs/assets/reference_http-api.md.C68BERYr.lean.js +0 -1
  382. package/dist/docs/assets/reference_project-layout.md.WN9nwJht.js +0 -17
  383. package/dist/docs/assets/troubleshooting.md.vCWwvqcJ.js +0 -1
  384. package/dist/docs/example-agents/approval-buddy.html +0 -36
  385. package/dist/docs/example-agents/approval-buddy.md +0 -266
  386. package/dist/docs/example-agents/benny.html +0 -31
  387. package/dist/docs/example-agents/benny.md +0 -173
  388. package/dist/docs/example-agents/bugbot.html +0 -37
  389. package/dist/docs/example-agents/bugbot.md +0 -229
  390. package/dist/docs/example-agents/codebase-wiki.html +0 -34
  391. package/dist/docs/example-agents/codebase-wiki.md +0 -167
  392. package/dist/docs/example-agents/codeowners-review.html +0 -34
  393. package/dist/docs/example-agents/codeowners-review.md +0 -192
  394. package/dist/docs/example-agents/concierge.html +0 -48
  395. package/dist/docs/example-agents/concierge.md +0 -200
  396. package/dist/docs/example-agents/index.html +0 -28
  397. package/dist/docs/example-agents/index.md +0 -99
  398. package/dist/docs/example-agents/knowledge-base.html +0 -37
  399. package/dist/docs/example-agents/knowledge-base.md +0 -168
  400. package/dist/docs/example-agents/oncall.html +0 -36
  401. package/dist/docs/example-agents/oncall.md +0 -212
  402. package/dist/docs/example-agents/security-reviewer.html +0 -45
  403. package/dist/docs/example-agents/security-reviewer.md +0 -265
  404. package/dist/docs/example-agents/slack-agent.html +0 -31
  405. package/dist/docs/example-agents/slack-agent.md +0 -142
  406. package/dist/docs/example-agents/weather-agent.html +0 -51
  407. package/dist/docs/example-agents/weather-agent.md +0 -297
  408. package/dist/internal/cursor-slack-relay.d.ts +0 -96
  409. package/dist/internal/cursor-slack-relay.d.ts.map +0 -1
  410. package/dist/internal/cursor-slack-relay.js +0 -176
  411. package/dist/playground/assets/index-D9N7-q97.css +0 -1
  412. package/docs/example-agents/approval-buddy.md +0 -271
  413. package/docs/example-agents/benny.md +0 -178
  414. package/docs/example-agents/bugbot.md +0 -234
  415. package/docs/example-agents/codebase-wiki.md +0 -172
  416. package/docs/example-agents/codeowners-review.md +0 -197
  417. package/docs/example-agents/concierge.md +0 -205
  418. package/docs/example-agents/index.md +0 -104
  419. package/docs/example-agents/knowledge-base.md +0 -173
  420. package/docs/example-agents/oncall.md +0 -217
  421. package/docs/example-agents/security-reviewer.md +0 -270
  422. package/docs/example-agents/slack-agent.md +0 -147
  423. package/docs/example-agents/weather-agent.md +0 -302
  424. package/src/channels/slack/cursor-account.ts +0 -202
  425. package/src/internal/cursor-slack-relay.ts +0 -249
  426. package/templates/security-help/agent/knowledge/faq/approvals.md +0 -5
  427. package/templates/security-help/agent/knowledge/faq/channels.md +0 -6
  428. package/templates/security-help/agent/knowledge/faq/phishing.md +0 -10
  429. package/templates/security-help/agent/skills/security-first-pass.md +0 -15
  430. /package/dist/docs/assets/{concepts.md.F6AiPorA.lean.js → concepts.md.lwAgBIMI.lean.js} +0 -0
  431. /package/dist/docs/assets/{guides_agent-to-agent.md.B3JIaAqz.lean.js → guides_agent-to-agent.md.BDb0t1QV.lean.js} +0 -0
  432. /package/dist/docs/assets/{guides_convert-automation.md.Bboisykk.lean.js → guides_convert-automation.md.B4sjlodG.lean.js} +0 -0
  433. /package/dist/docs/assets/{guides_github.md.DqJhuaN1.lean.js → guides_github.md.Cnh2mL4a.lean.js} +0 -0
  434. /package/dist/docs/assets/{quickstart.md.BrmfrrIr.lean.js → quickstart.md.Nj_LjW_a.lean.js} +0 -0
  435. /package/dist/docs/assets/{reference_hooks.md.BxN87gCw.lean.js → reference_hooks.md.a8BJxMR5.lean.js} +0 -0
  436. /package/dist/docs/assets/{reference_project-layout.md.WN9nwJht.lean.js → reference_project-layout.md.Bv4KOtlB.lean.js} +0 -0
  437. /package/dist/docs/assets/{reference_subagents.md.Xoav0AII.lean.js → reference_subagents.md.CfsIloPm.lean.js} +0 -0
  438. /package/dist/docs/assets/{templates_agentic-owners.md.DqtPdm6f.lean.js → templates_agentic-owners.md.BZSH4N9z.lean.js} +0 -0
  439. /package/dist/docs/assets/{templates_demo.md.DhFcWN6j.lean.js → templates_demo.md.BeQX9V3H.lean.js} +0 -0
  440. /package/dist/docs/assets/{troubleshooting.md.vCWwvqcJ.lean.js → troubleshooting.md.Ctv3T8C2.lean.js} +0 -0
package/src/index.ts CHANGED
@@ -182,7 +182,9 @@ export {
182
182
  isCursorAccountTransport,
183
183
  isPeerConnectionTransport,
184
184
  isSymbolicConnectionTransport,
185
+ isToolEffect,
185
186
  MAX_RUNNING_TURNS_LIMIT,
187
+ normalizeConnectionEffects,
186
188
  normalizeCursorAccountServers,
187
189
  supportsKvCas,
188
190
  } from "./types.js";
@@ -23,6 +23,10 @@
23
23
  * `normalizeMcpToolName` uses for IDE/Sand MCP tools. A listing failure
24
24
  * still fails the turn rather than running it with a silently shrunken
25
25
  * toolset.
26
+ *
27
+ * `defineConnection({ effects })` filters the listing before names are
28
+ * assigned: only tools whose MCP annotations classify as an intended
29
+ * effect are advertised. Unclassified tools are omitted, not guessed.
26
30
  */
27
31
 
28
32
  import type {
@@ -31,9 +35,11 @@ import type {
31
35
  HostMcpCallResult,
32
36
  HostMcpToolInfo,
33
37
  JsonSchemaObject,
38
+ McpToolAnnotations,
34
39
  ResolvedAgent,
35
40
  SessionInfo,
36
41
  ToolDefinition,
42
+ ToolEffect,
37
43
  } from "../types.js";
38
44
  import { brandDefinition } from "./brand.js";
39
45
  import type { HostMcpOneOff } from "./mcp-host.js";
@@ -41,6 +47,7 @@ import {
41
47
  sanitizeMcpToolName,
42
48
  suffixMcpToolName,
43
49
  } from "./sanitize-mcp-tool-name.js";
50
+ import { classifyAnnotationsEffect } from "./tool-policy.js";
44
51
 
45
52
  /**
46
53
  * What the resolver needs from the host MCP registry: the shared cached
@@ -88,6 +95,13 @@ export async function resolveAdvertisedTools(args: {
88
95
  agent: ResolvedAgent;
89
96
  session: SessionInfo;
90
97
  hostMcp: AdvertiseHostMcp;
98
+ /**
99
+ * When set, a connection whose source or listing fails is reported here
100
+ * and skipped instead of throwing. Turns keep the throwing default (a
101
+ * turn must fail closed); the inspection catalog passes this so one
102
+ * broken connector does not hide every other tool.
103
+ */
104
+ onConnectionError?: (connection: string, error: unknown) => void;
91
105
  /** Test seam; defaults to {@link sourceForConnection}. */
92
106
  sourceFor?: (
93
107
  connection: DiscoveredConnection,
@@ -105,17 +119,25 @@ export async function resolveAdvertisedTools(args: {
105
119
  const claimed = new Set(args.agent.tools.map((tool) => tool.name));
106
120
  const resolved: DiscoveredTool[] = [];
107
121
  for (const connection of advertising) {
108
- const source = await sourceFor(connection, args.session, args.hostMcp);
109
122
  let listed: HostMcpToolInfo[];
123
+ let source: AdvertisedToolSource;
110
124
  try {
125
+ source = await sourceFor(connection, args.session, args.hostMcp);
111
126
  listed = await source.listTools();
112
127
  } catch (error) {
128
+ if (args.onConnectionError !== undefined) {
129
+ args.onConnectionError(connection.name, error);
130
+ continue;
131
+ }
113
132
  throw new Error(
114
133
  `Failed to list tools on advertised connection "${connection.name}": ${describeError(error)}`,
115
134
  { cause: error }
116
135
  );
117
136
  }
118
- const exposed = exposeListedTools(listed, claimed);
137
+ const intended = listed.filter((info) =>
138
+ matchesIntendedEffects(info.annotations, connection.effects)
139
+ );
140
+ const exposed = exposeListedTools(intended, claimed);
119
141
  for (const { info, exposedName } of exposed) {
120
142
  resolved.push(toDiscoveredTool(connection, info, exposedName, source));
121
143
  claimed.add(exposedName);
@@ -210,6 +232,17 @@ function exposeListedTools(
210
232
  }));
211
233
  }
212
234
 
235
+ function matchesIntendedEffects(
236
+ annotations: McpToolAnnotations | undefined,
237
+ effects: readonly ToolEffect[] | undefined
238
+ ): boolean {
239
+ if (effects === undefined) {
240
+ return true;
241
+ }
242
+ const effect = classifyAnnotationsEffect(annotations);
243
+ return effect !== undefined && effects.includes(effect);
244
+ }
245
+
213
246
  function toDiscoveredTool(
214
247
  connection: DiscoveredConnection,
215
248
  info: HostMcpToolInfo,
@@ -222,10 +255,15 @@ function toDiscoveredTool(
222
255
  : info.description;
223
256
  const inputSchema = info.inputSchema ?? ANY_OBJECT_SCHEMA;
224
257
  const outputSchema = info.outputSchema;
258
+ const effect =
259
+ connection.effects === undefined
260
+ ? undefined
261
+ : classifyAnnotationsEffect(info.annotations);
225
262
  const definition: ToolDefinition = brandDefinition("tool", {
226
263
  description,
227
264
  inputSchema,
228
- ...(outputSchema === undefined ? {} : { outputSchema }),
265
+ outputSchema,
266
+ effect,
229
267
  execute: async (input: Record<string, unknown>) =>
230
268
  formatMcpToolResult(
231
269
  connection.name,
@@ -237,16 +275,16 @@ function toDiscoveredTool(
237
275
  name: exposedName,
238
276
  description,
239
277
  inputSchema,
240
- ...(outputSchema === undefined ? {} : { outputSchema }),
278
+ outputSchema,
241
279
  execution: "server",
242
280
  needsApproval: false,
281
+ effect,
243
282
  // The server's own annotations ride along (bounded at listing time), so
244
283
  // the harness listing carries them and effect classification can read
245
284
  // them. Absent stays absent — the fail-closed state.
246
- ...(info.annotations === undefined
247
- ? {}
248
- : { annotations: info.annotations }),
285
+ annotations: info.annotations,
249
286
  advertised: true,
287
+ connection: connection.name,
250
288
  definition,
251
289
  };
252
290
  }
@@ -27,6 +27,7 @@ import { authorizeCursorAccountConnectors } from "./cursor-account-mcp-auth.js";
27
27
  import { readDeployTemplate } from "./cursor-agent-template.js";
28
28
  import {
29
29
  type AgentkitDeployAccepted,
30
+ type AgentkitDeployComponent,
30
31
  type AgentkitDeployStatus,
31
32
  type AgentkitStopAccepted,
32
33
  AgentServeDeployClient,
@@ -294,10 +295,35 @@ export async function cmdDeploy(options: DeployCliOptions): Promise<number> {
294
295
  return targets;
295
296
  }
296
297
 
298
+ if (targets.length === 1) {
299
+ return deployOne(ctx, options, targets[0]!);
300
+ }
301
+
302
+ // Multi-agent parent: when every child declares `architecture: "v2"`,
303
+ // the v2 control plane models sibling agents as release components of
304
+ // ONE application, so deploy them together (one app, one component per
305
+ // child) instead of minting a separate application per child. Mixed and
306
+ // v1 parents keep the per-child sequential deploys.
307
+ const manifests: DeployManifest[] = [];
308
+ for (const target of targets) {
309
+ manifests.push(await readDeployManifest(target.dir));
310
+ }
311
+ if (manifests.every((manifest) => manifest.architecture === "v2")) {
312
+ return deployAgentsdkApplication(ctx, options, targets);
313
+ }
314
+ if (
315
+ !ctx.json &&
316
+ manifests.some((manifest) => manifest.architecture === "v2")
317
+ ) {
318
+ ctx.err(
319
+ `warning: agents under this parent mix architectures; deploying each separately (v2 children become standalone single-component applications).\n`
320
+ );
321
+ }
322
+
297
323
  // --path is per-agent (relative to the repo root). When deploying several
298
324
  // agents, ignore a shared --path so each target can infer its own path.
299
325
  let deployOptions = options;
300
- if (targets.length > 1 && options.path !== undefined) {
326
+ if (options.path !== undefined) {
301
327
  if (!ctx.json) {
302
328
  ctx.err(
303
329
  `warning: ignoring --path ${JSON.stringify(options.path)} for a multi-agent deploy; each agent infers its own path from git.\n`
@@ -306,10 +332,6 @@ export async function cmdDeploy(options: DeployCliOptions): Promise<number> {
306
332
  deployOptions = { ...options, path: undefined };
307
333
  }
308
334
 
309
- if (targets.length === 1) {
310
- return deployOne(ctx, deployOptions, targets[0]!);
311
- }
312
-
313
335
  // Multi-agent batch: deploy sequentially; --json emits an array.
314
336
  const jsonResults: unknown[] = [];
315
337
  let failures = 0;
@@ -477,6 +499,19 @@ async function resolveDeployTargets(
477
499
  return [match];
478
500
  }
479
501
 
502
+ // An all-v2 parent deploys as ONE application (siblings are components
503
+ // of a single app on the v2 control plane), so "deploy the parent" is
504
+ // unambiguous and needs no picker or --all. A child that is v1 — or
505
+ // fails to load — keeps the interactive picker below.
506
+ if (await allChildrenAreV2(children)) {
507
+ if (!ctx.json) {
508
+ ctx.err(
509
+ `Deploying all ${children.length} v2 agents under ${basename(dir)} as one application (pass --slug <name> to deploy a single agent standalone).\n`
510
+ );
511
+ }
512
+ return [...children];
513
+ }
514
+
480
515
  const chooser =
481
516
  options.chooseTargets ??
482
517
  ((agents) =>
@@ -508,6 +543,27 @@ function formatAgentList(agents: readonly DeployTarget[]): string {
508
543
  return agents.map((agent, i) => ` ${i + 1}) ${agent.slug}\n`).join("");
509
544
  }
510
545
 
546
+ /**
547
+ * True when every child agent project loads and declares
548
+ * `architecture: "v2"`. Broken projects count as not-v2 so target
549
+ * resolution falls back to the picker instead of failing the whole deploy
550
+ * on a child the user might not even select.
551
+ */
552
+ async function allChildrenAreV2(
553
+ children: readonly DeployTarget[]
554
+ ): Promise<boolean> {
555
+ for (const child of children) {
556
+ try {
557
+ if ((await readDeployManifest(child.dir)).architecture !== "v2") {
558
+ return false;
559
+ }
560
+ } catch {
561
+ return false;
562
+ }
563
+ }
564
+ return true;
565
+ }
566
+
511
567
  /**
512
568
  * TTY picker for multi-agent parents. Non-interactive callers get `[]`
513
569
  * so {@link resolveDeployTargets} can print the --slug/--all hint.
@@ -777,6 +833,100 @@ async function deployOne(
777
833
  return 0;
778
834
  }
779
835
 
836
+ /**
837
+ * Multi-agent parent whose children all declare `architecture: "v2"`:
838
+ * deploy ONE application whose release carries a component per child. The
839
+ * application slug derives from the parent directory name; each component
840
+ * key is the child's slug and its path is the child directory relative to
841
+ * the repo root (a shared --path names the parent's directory in the repo).
842
+ */
843
+ async function deployAgentsdkApplication(
844
+ ctx: DeployCliContext,
845
+ options: DeployCliOptions,
846
+ targets: readonly DeployTarget[]
847
+ ): Promise<number> {
848
+ const parentDir = resolve(options.dir ?? ".");
849
+ const slug = slugFromDirectoryName(basename(parentDir));
850
+ if (slug === undefined) {
851
+ ctx.err(
852
+ `Could not derive an application slug from the parent directory name ${JSON.stringify(basename(parentDir))} — rename it (deploy slugs use lowercase letters, digits, '-' or '_').\n`
853
+ );
854
+ return 1;
855
+ }
856
+
857
+ const needsGitInference =
858
+ options.repo === undefined ||
859
+ options.ref === undefined ||
860
+ options.path === undefined;
861
+ const inferred = needsGitInference
862
+ ? await inferDeployGitSource(parentDir, {
863
+ ...(options.git === undefined ? {} : { git: options.git }),
864
+ })
865
+ : {};
866
+ const gitRepoUrl = options.repo ?? inferred.gitRepoUrl;
867
+ const gitRef = options.ref ?? inferred.gitRef;
868
+ const parentPath = options.path ?? inferred.agentPath;
869
+
870
+ if (gitRepoUrl !== undefined && !gitRepoUrl.startsWith("https://")) {
871
+ ctx.err(
872
+ `Invalid --repo: ${gitRepoUrl} (expected an https:// git repository URL)\n`
873
+ );
874
+ return 1;
875
+ }
876
+ if (gitRepoUrl === undefined) {
877
+ ctx.err(
878
+ `Could not resolve an https:// git repository URL for this deploy.\n` +
879
+ ` Pass --repo https://github.com/<owner>/<repo> (inferred from origin when possible).\n`
880
+ );
881
+ return 1;
882
+ }
883
+ for (const repo of options.cursorEventsRepos ?? []) {
884
+ if (!isValidCursorEventRepo(repo)) {
885
+ ctx.err(`Invalid --cursor-events-repo: ${repo} (expected owner/name)\n`);
886
+ return 1;
887
+ }
888
+ }
889
+
890
+ const components: AgentkitDeployComponent[] = targets.map((target) => ({
891
+ componentKey: target.slug,
892
+ agentPath: [parentPath, basename(target.dir)]
893
+ .filter((part): part is string => part !== undefined && part !== "")
894
+ .join("/"),
895
+ }));
896
+
897
+ if (!ctx.json) {
898
+ ctx.err(
899
+ `Deploying "${slug}" as one v2 application with ${targets.length} components (slug from the parent directory name).\n` +
900
+ ` architecture: v2\n` +
901
+ ` source: ${gitRepoUrl}${gitRef === undefined ? "" : ` @ ${gitRef}`}\n` +
902
+ components
903
+ .map(
904
+ (component) =>
905
+ ` component: ${component.componentKey} (${component.agentPath ?? "."})\n`
906
+ )
907
+ .join("")
908
+ );
909
+ }
910
+
911
+ // Components bake sequentially on the control plane, so the default wait
912
+ // budget is per component; otherwise a 2+ component deploy routinely hits
913
+ // the client-side timeout while the server-side deploy is still fine. An
914
+ // explicitly passed timeout always wins.
915
+ const waitCtx =
916
+ options.timeoutMs === undefined
917
+ ? { ...ctx, timeoutMs: ctx.timeoutMs * targets.length }
918
+ : ctx;
919
+
920
+ return deployOneAgentsdk(waitCtx, undefined, {
921
+ slug,
922
+ gitRepoUrl,
923
+ gitRef,
924
+ agentPath: undefined,
925
+ components,
926
+ repositories: options.cursorEventsRepos,
927
+ });
928
+ }
929
+
780
930
  /**
781
931
  * `architecture: "v2"` deploy: POST `/internal/agentkit/deployments` and
782
932
  * poll the matching GET. The v2 accept path starts freeze bake; it does
@@ -790,10 +940,17 @@ async function deployOneAgentsdk(
790
940
  gitRepoUrl: string;
791
941
  gitRef: string | undefined;
792
942
  agentPath: string | undefined;
943
+ components?: AgentkitDeployComponent[];
793
944
  repositories: string[] | undefined;
794
945
  }
795
946
  ): Promise<number> {
796
947
  const { slug } = args;
948
+ const componentsLine =
949
+ args.components === undefined
950
+ ? ""
951
+ : ` components: ${args.components
952
+ .map((component) => component.componentKey)
953
+ .join(", ")}\n`;
797
954
  let accepted: AgentkitDeployAccepted;
798
955
  try {
799
956
  accepted = await ctx.client.deployAgentkit({
@@ -802,6 +959,7 @@ async function deployOneAgentsdk(
802
959
  gitRepoUrl: args.gitRepoUrl,
803
960
  gitRef: args.gitRef,
804
961
  agentPath: args.agentPath,
962
+ components: args.components,
805
963
  repositories: args.repositories,
806
964
  });
807
965
  } catch (error) {
@@ -817,7 +975,8 @@ async function deployOneAgentsdk(
817
975
  ctx.out(
818
976
  `Deploy accepted: ${slug} (team ${ctx.teamId}, v2)\n` +
819
977
  ` application: ${accepted.applicationId}\n` +
820
- ` release: ${accepted.releaseId}\n`
978
+ ` release: ${accepted.releaseId}\n` +
979
+ componentsLine
821
980
  );
822
981
  }
823
982
  return 0;
@@ -851,7 +1010,12 @@ async function deployOneAgentsdk(
851
1010
  ` status: running\n` +
852
1011
  ` architecture: v2\n` +
853
1012
  ` application: ${detail.applicationId}\n` +
854
- ` release: ${detail.releaseId}\n`
1013
+ ` release: ${detail.releaseId}\n` +
1014
+ (args.components === undefined
1015
+ ? ""
1016
+ : ` components: ${args.components
1017
+ .map((component) => component.componentKey)
1018
+ .join(", ")}\n`)
855
1019
  );
856
1020
  return 0;
857
1021
  }
@@ -68,13 +68,15 @@ export async function cmdMcpOauth(
68
68
  const err = options.err ?? ((text) => process.stderr.write(text));
69
69
  const out = options.out ?? ((text) => process.stdout.write(text));
70
70
  const project = await loadAgentProject(options.dir);
71
- const connection = project.agent.connections.find(
71
+ const authored = [
72
+ ...project.agent.connections,
73
+ ...(project.agent.hostConnections ?? []),
74
+ ];
75
+ const connection = authored.find(
72
76
  (entry) => entry.name === options.connection
73
77
  );
74
78
  if (connection === undefined) {
75
- const known =
76
- project.agent.connections.map((entry) => entry.name).join(", ") ||
77
- "(none)";
79
+ const known = authored.map((entry) => entry.name).join(", ") || "(none)";
78
80
  err(
79
81
  `${LOG_PREFIX} Unknown MCP connection "${options.connection}". Authored: ${known}.\n`
80
82
  );