@cursor/bdk 0.2.24 → 0.2.26

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 (553) hide show
  1. package/AGENTS.md +4 -18
  2. package/CHANGELOG.md +3 -0
  3. package/dist/artifacts.d.ts +1 -1
  4. package/dist/artifacts.js +1 -1
  5. package/dist/bin/agent-serve.d.ts +1 -1
  6. package/dist/bin/agent-serve.js +71 -31
  7. package/dist/channels/bitbucket/api.d.ts +2 -2
  8. package/dist/channels/bitbucket/api.d.ts.map +1 -1
  9. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  10. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +5 -4
  11. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  12. package/dist/channels/bitbucket/bitbucket-webhook.js +14 -9
  13. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  14. package/dist/channels/deployments/deployments-channel.js +1 -1
  15. package/dist/channels/github/cursor-account.d.ts +7 -0
  16. package/dist/channels/github/cursor-account.d.ts.map +1 -1
  17. package/dist/channels/github/cursor-account.js +22 -5
  18. package/dist/channels/github/github-channel.d.ts.map +1 -1
  19. package/dist/channels/github/github-channel.js +10 -19
  20. package/dist/channels/github/replay.d.ts +1 -1
  21. package/dist/channels/github/replay.d.ts.map +1 -1
  22. package/dist/channels/gitlab/api.d.ts +2 -2
  23. package/dist/channels/gitlab/api.d.ts.map +1 -1
  24. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  25. package/dist/channels/issues/issues-channel.js +1 -1
  26. package/dist/channels/origin/api.d.ts +4 -4
  27. package/dist/channels/origin/api.d.ts.map +1 -1
  28. package/dist/channels/origin/origin-channel.js +1 -1
  29. package/dist/channels/origin/origin-webhook.d.ts +3 -3
  30. package/dist/channels/origin/origin-webhook.d.ts.map +1 -1
  31. package/dist/channels/pagerduty/api.d.ts +74 -0
  32. package/dist/channels/pagerduty/api.d.ts.map +1 -0
  33. package/dist/channels/pagerduty/api.js +101 -0
  34. package/dist/channels/pagerduty/defaults.d.ts +42 -0
  35. package/dist/channels/pagerduty/defaults.d.ts.map +1 -0
  36. package/dist/channels/pagerduty/defaults.js +132 -0
  37. package/dist/channels/pagerduty/events.d.ts +24 -0
  38. package/dist/channels/pagerduty/events.d.ts.map +1 -0
  39. package/dist/channels/pagerduty/events.js +38 -0
  40. package/dist/channels/pagerduty/index.d.ts +31 -0
  41. package/dist/channels/pagerduty/index.d.ts.map +1 -0
  42. package/dist/channels/pagerduty/index.js +30 -0
  43. package/dist/channels/pagerduty/pagerduty-channel.d.ts +64 -0
  44. package/dist/channels/pagerduty/pagerduty-channel.d.ts.map +1 -0
  45. package/dist/channels/pagerduty/pagerduty-channel.js +195 -0
  46. package/dist/channels/pagerduty/pagerduty-webhook.d.ts +70 -0
  47. package/dist/channels/pagerduty/pagerduty-webhook.d.ts.map +1 -0
  48. package/dist/channels/pagerduty/pagerduty-webhook.js +280 -0
  49. package/dist/channels/pagerduty/payload.d.ts +33 -0
  50. package/dist/channels/pagerduty/payload.d.ts.map +1 -0
  51. package/dist/channels/pagerduty/payload.js +150 -0
  52. package/dist/channels/pagerduty/replay.d.ts +35 -0
  53. package/dist/channels/pagerduty/replay.d.ts.map +1 -0
  54. package/dist/channels/pagerduty/replay.js +115 -0
  55. package/dist/channels/pagerduty/secrets.d.ts +16 -0
  56. package/dist/channels/pagerduty/secrets.d.ts.map +1 -0
  57. package/dist/channels/pagerduty/secrets.js +23 -0
  58. package/dist/channels/pagerduty/self-user.d.ts +51 -0
  59. package/dist/channels/pagerduty/self-user.d.ts.map +1 -0
  60. package/dist/channels/pagerduty/self-user.js +157 -0
  61. package/dist/channels/pagerduty/state.d.ts +31 -0
  62. package/dist/channels/pagerduty/state.d.ts.map +1 -0
  63. package/dist/channels/pagerduty/state.js +30 -0
  64. package/dist/channels/pagerduty/types.d.ts +217 -0
  65. package/dist/channels/pagerduty/types.d.ts.map +1 -0
  66. package/dist/channels/pagerduty/types.js +1 -0
  67. package/dist/channels/runs/runs-channel.js +1 -1
  68. package/dist/channels/slack/agentic-delivery.d.ts +2 -1
  69. package/dist/channels/slack/agentic-delivery.d.ts.map +1 -1
  70. package/dist/channels/slack/agentic-delivery.js +6 -10
  71. package/dist/channels/slack/agentic-signals.d.ts +2 -7
  72. package/dist/channels/slack/agentic-signals.d.ts.map +1 -1
  73. package/dist/channels/slack/agentic-signals.js +4 -3
  74. package/dist/channels/slack/api.d.ts +1 -0
  75. package/dist/channels/slack/api.d.ts.map +1 -1
  76. package/dist/channels/slack/api.js +3 -0
  77. package/dist/channels/slack/constants.d.ts +2 -0
  78. package/dist/channels/slack/constants.d.ts.map +1 -1
  79. package/dist/channels/slack/constants.js +2 -0
  80. package/dist/channels/slack/defaults.d.ts.map +1 -1
  81. package/dist/channels/slack/defaults.js +3 -2
  82. package/dist/channels/slack/dispatch.d.ts +9 -0
  83. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  84. package/dist/channels/slack/dispatch.js +3 -0
  85. package/dist/channels/slack/inbound.d.ts.map +1 -1
  86. package/dist/channels/slack/inbound.js +24 -20
  87. package/dist/channels/slack/interactive.d.ts +2 -0
  88. package/dist/channels/slack/interactive.d.ts.map +1 -1
  89. package/dist/channels/slack/interactive.js +1 -0
  90. package/dist/channels/slack/live-delivery.d.ts +3 -0
  91. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  92. package/dist/channels/slack/live-delivery.js +5 -0
  93. package/dist/channels/slack/reply-options.d.ts +9 -0
  94. package/dist/channels/slack/reply-options.d.ts.map +1 -1
  95. package/dist/channels/slack/reply-options.js +31 -1
  96. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  97. package/dist/channels/slack/slack-channel.js +7 -0
  98. package/dist/channels/slack/stream.d.ts +5 -1
  99. package/dist/channels/slack/stream.d.ts.map +1 -1
  100. package/dist/channels/slack/types.d.ts +29 -0
  101. package/dist/channels/slack/types.d.ts.map +1 -1
  102. package/dist/channels.d.ts +7 -1
  103. package/dist/channels.d.ts.map +1 -1
  104. package/dist/channels.js +12 -24
  105. package/dist/docs/404.html +3 -3
  106. package/dist/docs/assets/{app.DTIg0uKK.js → app.BITbgXMP.js} +4 -4
  107. package/dist/docs/assets/changelog.md.sdD6ctqK.js +1 -0
  108. package/dist/docs/assets/changelog.md.sdD6ctqK.lean.js +1 -0
  109. package/dist/docs/assets/chunks/@localSearchIndexroot.B45uCZp9.js +1 -0
  110. package/dist/docs/assets/chunks/{VPLocalSearchBox.BpJoSaxi.js → VPLocalSearchBox.3qo4-bX9.js} +2 -2
  111. package/dist/docs/assets/chunks/{arc.ylgNvRNq.js → arc.CTrZocKU.js} +1 -1
  112. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.BMrNJqYk.js → architectureDiagram-Q4EWVU46.BkgIqxrv.js} +1 -1
  113. package/dist/docs/assets/chunks/{baseUniq.BBWUEqf9.js → baseUniq.5w0JfVgo.js} +1 -1
  114. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DFMu-Vza.js → blockDiagram-DXYQGD6D.BVLtPjQc.js} +1 -1
  115. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.8nkAAxWv.js → c4Diagram-AHTNJAMY.CQ7neZTW.js} +1 -1
  116. package/dist/docs/assets/chunks/channel.Cv2w64wj.js +1 -0
  117. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.sO-z2Bag.js → chunk-4BX2VUAB.D-hJ7uKM.js} +1 -1
  118. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.BMROzTMq.js → chunk-4TB4RGXK.RBYX5ywX.js} +1 -1
  119. package/dist/docs/assets/chunks/{chunk-55IACEB6.X81urwg7.js → chunk-55IACEB6.Br05HoEb.js} +1 -1
  120. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.eaZVFLZM.js → chunk-EDXVE4YY.BD_7QS60.js} +1 -1
  121. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CmZhzstR.js → chunk-FMBD7UC4.BOPnMabX.js} +1 -1
  122. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CTezt9Lc.js → chunk-OYMX7WX6.DmGIdP8i.js} +1 -1
  123. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.s-T8zukB.js → chunk-QZHKN3VN.CGHmolCB.js} +1 -1
  124. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.DN4Nhy-D.js → chunk-YZCP3GAM.C_Uhs25v.js} +1 -1
  125. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CtO2atCr.js +1 -0
  126. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CtO2atCr.js +1 -0
  127. package/dist/docs/assets/chunks/clone.hfsCtgP4.js +1 -0
  128. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Cqyp4BUH.js → cose-bilkent-S5V4N54A.DsU6xpcZ.js} +1 -1
  129. package/dist/docs/assets/chunks/{dagre-KV5264BT.BIECOiqR.js → dagre-KV5264BT.BqQLDcoU.js} +1 -1
  130. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.1tLyWoTg.js → diagram-5BDNPKRD.Cgv8uUNF.js} +1 -1
  131. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.BVY_6VMO.js → diagram-G4DWMVQ6.BXHPSXh_.js} +1 -1
  132. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BSZ7xiBB.js → diagram-MMDJMWI5.CgJzo8f_.js} +1 -1
  133. package/dist/docs/assets/chunks/{diagram-TYMM5635.Bho6GmLh.js → diagram-TYMM5635.CfiN6lgT.js} +1 -1
  134. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.A0yVIANn.js → erDiagram-SMLLAGMA.8n_hHzAd.js} +1 -1
  135. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.ZMgbllH6.js → flowDiagram-DWJPFMVM.B2pb1Dv_.js} +1 -1
  136. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.BCCPBhXo.js → ganttDiagram-T4ZO3ILL.BFih4ucI.js} +1 -1
  137. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.BOkL0BbA.js → gitGraphDiagram-UUTBAWPF.CqZ8PTl8.js} +1 -1
  138. package/dist/docs/assets/chunks/{graph.DMyZPu86.js → graph.0ufsI9gu.js} +1 -1
  139. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.CjG1IiEw.js → infoDiagram-42DDH7IO.BkPRFww4.js} +1 -1
  140. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.UCe-kq9g.js → ishikawaDiagram-UXIWVN3A.DCRK-cVX.js} +1 -1
  141. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.3WyOK_eY.js → journeyDiagram-VCZTEJTY.BFyAJo33.js} +1 -1
  142. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.WoRG2qY1.js → kanban-definition-6JOO6SKY.CmA2SoGc.js} +1 -1
  143. package/dist/docs/assets/chunks/{layout.DV07xDd5.js → layout.CYY-CbMr.js} +1 -1
  144. package/dist/docs/assets/chunks/{linear.CTO8mN6o.js → linear.DeeDV4Oq.js} +1 -1
  145. package/dist/docs/assets/chunks/{min.SvTtcKuZ.js → min.BL3XTBN2.js} +1 -1
  146. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.DMGgQ-HB.js → mindmap-definition-QFDTVHPH.BcbY-G6H.js} +1 -1
  147. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.B7851apI.js → pieDiagram-DEJITSTG.dzDcQnPE.js} +1 -1
  148. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CEqyypIX.js → quadrantDiagram-34T5L4WZ.RxR0m5iK.js} +1 -1
  149. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.C3Mwsw-H.js → requirementDiagram-MS252O5E.DflaXb6Q.js} +1 -1
  150. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DyYK0XxY.js → sankeyDiagram-XADWPNL6.BteLKQAe.js} +1 -1
  151. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.SiQPH-XM.js → sequenceDiagram-FGHM5R23.BD8jM8oz.js} +1 -1
  152. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CTJMsP4p.js → stateDiagram-FHFEXIEX.C8SBkbPH.js} +1 -1
  153. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BLz7Qyo3.js +1 -0
  154. package/dist/docs/assets/chunks/{theme.DJo4my9R.js → theme.DiViIOLe.js} +2 -2
  155. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.CxSNRlQ6.js → timeline-definition-GMOUNBTQ.D64XF5dV.js} +1 -1
  156. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BdoJskyD.js → vennDiagram-DHZGUBPP.CwmeYan-.js} +1 -1
  157. package/dist/docs/assets/chunks/wardley-RL74JXVD.DmAlXlpu.js +162 -0
  158. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.IjIbFn_F.js → wardleyDiagram-NUSXRM2D.5VJ2-5K0.js} +1 -1
  159. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CPUxDZLH.js → xychartDiagram-5P7HB3ND.Cl6_fZVC.js} +1 -1
  160. package/dist/docs/assets/{guides_hooks.md.Bfj0pK91.js → guides_hooks.md.B2XfGX50.js} +7 -3
  161. package/dist/docs/assets/{guides_mcp-oauth.md.BM_eFC0L.js → guides_mcp-oauth.md.Cxq2TxBB.js} +3 -3
  162. package/dist/docs/assets/{guides_mcp-oauth.md.BM_eFC0L.lean.js → guides_mcp-oauth.md.Cxq2TxBB.lean.js} +1 -1
  163. package/dist/docs/assets/guides_opentelemetry.md.D4wO7_8v.js +37 -0
  164. package/dist/docs/assets/guides_opentelemetry.md.D4wO7_8v.lean.js +1 -0
  165. package/dist/docs/assets/guides_pagerduty.md.BHXMcMtx.js +60 -0
  166. package/dist/docs/assets/guides_pagerduty.md.BHXMcMtx.lean.js +1 -0
  167. package/dist/docs/assets/{guides_slack.md.Bn-WupSE.js → guides_slack.md.ClIyi7FI.js} +8 -3
  168. package/dist/docs/assets/{guides_slack.md.Bn-WupSE.lean.js → guides_slack.md.ClIyi7FI.lean.js} +1 -1
  169. package/dist/docs/assets/{reference_agent-config.md.IplwL25I.js → reference_agent-config.md.CGSx8COP.js} +6 -2
  170. package/dist/docs/assets/{reference_agent-config.md.IplwL25I.lean.js → reference_agent-config.md.CGSx8COP.lean.js} +1 -1
  171. package/dist/docs/assets/{reference_channels.md.DYg0CLud.js → reference_channels.md.CNNIS6K7.js} +1 -1
  172. package/dist/docs/assets/{reference_cli.md.DB7Llw3T.js → reference_cli.md.1o_TqKdt.js} +7 -2
  173. package/dist/docs/assets/{reference_cli.md.DB7Llw3T.lean.js → reference_cli.md.1o_TqKdt.lean.js} +1 -1
  174. package/dist/docs/assets/{reference_hooks.md.B1jq3oGl.js → reference_hooks.md.CROr0QgC.js} +13 -7
  175. package/dist/docs/assets/{reference_hooks.md.B1jq3oGl.lean.js → reference_hooks.md.CROr0QgC.lean.js} +1 -1
  176. package/dist/docs/assets/{reference_schedules.md.03Ryy9ca.js → reference_schedules.md.BqWnJES4.js} +3 -3
  177. package/dist/docs/assets/reference_sessions.md.Bi6lHttM.js +22 -0
  178. package/dist/docs/assets/reference_sessions.md.Bi6lHttM.lean.js +1 -0
  179. package/dist/docs/assets/{reference_skills.md.C2GWh7g8.js → reference_skills.md.Ckddg6KX.js} +3 -3
  180. package/dist/docs/assets/{reference_tools.md.08XR7lIl.js → reference_tools.md.Bo0UfT0a.js} +1 -1
  181. package/dist/docs/assets/{style.nMsabY-V.css → style.B9o0luvp.css} +1 -1
  182. package/dist/docs/building-with-agents.html +37 -37
  183. package/dist/docs/changelog.html +60 -0
  184. package/dist/docs/changelog.md +86 -0
  185. package/dist/docs/deployment.html +37 -37
  186. package/dist/docs/evals.html +37 -37
  187. package/dist/docs/guides/agent-to-agent.html +37 -37
  188. package/dist/docs/guides/bitbucket.html +37 -37
  189. package/dist/docs/guides/cloud-agents.html +37 -37
  190. package/dist/docs/guides/convert-automation.html +37 -37
  191. package/dist/docs/guides/export-grokbot.html +37 -37
  192. package/dist/docs/guides/github.html +37 -37
  193. package/dist/docs/guides/gitlab.html +37 -37
  194. package/dist/docs/guides/grokbot-agents.html +37 -37
  195. package/dist/docs/guides/hooks.html +45 -41
  196. package/dist/docs/guides/hooks.md +7 -3
  197. package/dist/docs/guides/improve.html +37 -37
  198. package/dist/docs/guides/jev.html +37 -37
  199. package/dist/docs/guides/mcp-oauth.html +39 -39
  200. package/dist/docs/guides/mcp-oauth.md +12 -0
  201. package/dist/docs/guides/migrate.html +37 -37
  202. package/dist/docs/guides/opentelemetry.html +62 -70
  203. package/dist/docs/guides/opentelemetry.md +150 -175
  204. package/dist/docs/guides/pagerduty.html +119 -0
  205. package/dist/docs/guides/pagerduty.md +336 -0
  206. package/dist/docs/guides/slack.html +44 -39
  207. package/dist/docs/guides/slack.md +41 -0
  208. package/dist/docs/guides/webhooks.html +37 -37
  209. package/dist/docs/hashmap.json +1 -1
  210. package/dist/docs/hillclimbing.html +37 -37
  211. package/dist/docs/index.html +37 -37
  212. package/dist/docs/llms-full.txt +730 -163
  213. package/dist/docs/llms.txt +3 -1
  214. package/dist/docs/quickstart.html +37 -37
  215. package/dist/docs/reference/agent-config.html +42 -38
  216. package/dist/docs/reference/agent-config.md +21 -1
  217. package/dist/docs/reference/artifacts.html +37 -37
  218. package/dist/docs/reference/channels.html +38 -38
  219. package/dist/docs/reference/channels.md +7 -2
  220. package/dist/docs/reference/cli.html +43 -38
  221. package/dist/docs/reference/cli.md +27 -0
  222. package/dist/docs/reference/connections.html +37 -37
  223. package/dist/docs/reference/evals.html +37 -37
  224. package/dist/docs/reference/extensions.html +37 -37
  225. package/dist/docs/reference/hooks.html +49 -43
  226. package/dist/docs/reference/hooks.md +10 -5
  227. package/dist/docs/reference/http-api.html +37 -37
  228. package/dist/docs/reference/instructions.html +37 -37
  229. package/dist/docs/reference/memory.html +37 -37
  230. package/dist/docs/reference/playground.html +36 -36
  231. package/dist/docs/reference/project-layout.html +37 -37
  232. package/dist/docs/reference/prompt.html +37 -37
  233. package/dist/docs/reference/schedules.html +40 -40
  234. package/dist/docs/reference/sessions.html +58 -37
  235. package/dist/docs/reference/sessions.md +46 -1
  236. package/dist/docs/reference/skills.html +40 -40
  237. package/dist/docs/reference/subagents.html +37 -37
  238. package/dist/docs/reference/tools.html +39 -39
  239. package/dist/docs/reference/tools.md +4 -3
  240. package/dist/docs/templates/agentic-owners.html +37 -37
  241. package/dist/docs/templates/grokbot-agents.html +37 -37
  242. package/dist/docs/templates/security-reviewer.html +37 -37
  243. package/dist/docs/templates/thermo-quality-review.html +37 -37
  244. package/dist/docs/templates/thermo-review.html +37 -37
  245. package/dist/docs/templates/triage.html +37 -37
  246. package/dist/docs/troubleshooting.html +36 -36
  247. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  248. package/dist/extensions/cursor-cloud-agents/extension.js +15 -15
  249. package/dist/extensions/cursor-cloud-agents/lib/backend.js +1 -1
  250. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  251. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +1 -1
  252. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -1
  253. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +1 -1
  254. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +1 -1
  255. package/dist/extensions/cursor-cloud-agents/tools/launch.js +1 -1
  256. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  257. package/dist/extensions/cursor-cloud-agents/tools/reply.js +1 -1
  258. package/dist/extensions/cursor-grokbot-agents/extension.d.ts.map +1 -1
  259. package/dist/extensions/cursor-grokbot-agents/extension.js +7 -3
  260. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +1 -1
  261. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +1 -1
  262. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +1 -1
  263. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -1
  264. package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +1 -1
  265. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +1 -1
  266. package/dist/extensions/cursor-grokbot-agents/tools/check.js +1 -1
  267. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +1 -1
  268. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  269. package/dist/extensions/improve/extension.js +1 -1
  270. package/dist/extensions/jev/extension.js +2 -2
  271. package/dist/extensions/jev/tools/evaluate.js +3 -3
  272. package/dist/extensions/slack-communication/extension.js +1 -1
  273. package/dist/extensions/slack-communication/tools/delete-message.js +1 -1
  274. package/dist/extensions/slack-communication/tools/edit-message.d.ts.map +1 -1
  275. package/dist/extensions/slack-communication/tools/edit-message.js +3 -6
  276. package/dist/extensions/slack-communication/tools/post-card.js +1 -1
  277. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  278. package/dist/extensions/slack-communication/tools/post-update.d.ts.map +1 -1
  279. package/dist/extensions/slack-communication/tools/post-update.js +3 -6
  280. package/dist/extensions/slack-communication/tools/react.js +1 -1
  281. package/dist/extensions/slack-communication/tools/set-status.js +1 -1
  282. package/dist/extensions.d.ts +1 -1
  283. package/dist/extensions.js +1 -1
  284. package/dist/index.d.ts +14 -11
  285. package/dist/index.d.ts.map +1 -1
  286. package/dist/index.js +8 -4
  287. package/dist/internal/approval-gate.d.ts +4 -2
  288. package/dist/internal/approval-gate.d.ts.map +1 -1
  289. package/dist/internal/approval-gate.js +2 -1
  290. package/dist/internal/as-of.d.ts +2 -0
  291. package/dist/internal/as-of.d.ts.map +1 -1
  292. package/dist/internal/as-of.js +2 -0
  293. package/dist/internal/builtin-tools/artifacts.d.ts.map +1 -1
  294. package/dist/internal/builtin-tools/artifacts.js +45 -12
  295. package/dist/internal/builtin-tools/reminders.js +1 -1
  296. package/dist/internal/channel-architecture.d.ts +1 -1
  297. package/dist/internal/channel-architecture.d.ts.map +1 -1
  298. package/dist/internal/channel-architecture.js +4 -2
  299. package/dist/internal/cli-deploy.d.ts.map +1 -1
  300. package/dist/internal/cli-deploy.js +39 -22
  301. package/dist/internal/cli-pagerduty.d.ts +32 -0
  302. package/dist/internal/cli-pagerduty.d.ts.map +1 -0
  303. package/dist/internal/cli-pagerduty.js +242 -0
  304. package/dist/internal/continuation-channel.d.ts.map +1 -1
  305. package/dist/internal/continuation-channel.js +7 -0
  306. package/dist/internal/continuation-identity.d.ts +11 -3
  307. package/dist/internal/continuation-identity.d.ts.map +1 -1
  308. package/dist/internal/continuation-identity.js +83 -0
  309. package/dist/internal/continuation.d.ts +3 -0
  310. package/dist/internal/continuation.d.ts.map +1 -0
  311. package/dist/internal/continuation.js +1 -0
  312. package/dist/internal/conversation-mirror.d.ts +5 -0
  313. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  314. package/dist/internal/conversation-mirror.js +12 -1
  315. package/dist/internal/convert-automation/convert-workflow.js +1 -1
  316. package/dist/internal/convert-grokbot/answers.d.ts.map +1 -1
  317. package/dist/internal/convert-grokbot/answers.js +10 -8
  318. package/dist/internal/convert-grokbot/recipe.d.ts +1 -1
  319. package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -1
  320. package/dist/internal/convert-grokbot/recipe.js +1 -1
  321. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  322. package/dist/internal/cursor/account-mcp.js +2 -0
  323. package/dist/internal/cursor/backend-client.d.ts +8 -3
  324. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  325. package/dist/internal/cursor/backend-client.js +8 -3
  326. package/dist/internal/cursor/credentials.d.ts +2 -2
  327. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  328. package/dist/internal/cursor/credentials.js +1 -1
  329. package/dist/internal/cursor-account-mcp-auth.d.ts +6 -2
  330. package/dist/internal/cursor-account-mcp-auth.d.ts.map +1 -1
  331. package/dist/internal/cursor-account-mcp-auth.js +15 -6
  332. package/dist/internal/deferred-channel-session.d.ts +5 -4
  333. package/dist/internal/deferred-channel-session.d.ts.map +1 -1
  334. package/dist/internal/deferred-channel-session.js +6 -4
  335. package/dist/internal/deploy-client.d.ts +5 -0
  336. package/dist/internal/deploy-client.d.ts.map +1 -1
  337. package/dist/internal/deploy-client.js +3 -3
  338. package/dist/internal/deploy-manifest.d.ts +11 -4
  339. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  340. package/dist/internal/deploy-manifest.js +19 -7
  341. package/dist/internal/describe-error.d.ts +2 -0
  342. package/dist/internal/describe-error.d.ts.map +1 -1
  343. package/dist/internal/describe-error.js +2 -0
  344. package/dist/internal/discovery/agent-config.d.ts.map +1 -1
  345. package/dist/internal/discovery/agent-config.js +10 -10
  346. package/dist/internal/discovery/agent.d.ts.map +1 -1
  347. package/dist/internal/discovery/agent.js +10 -10
  348. package/dist/internal/discovery/channels.d.ts.map +1 -1
  349. package/dist/internal/discovery/channels.js +20 -16
  350. package/dist/internal/discovery/context.d.ts +16 -0
  351. package/dist/internal/discovery/context.d.ts.map +1 -1
  352. package/dist/internal/discovery/context.js +67 -2
  353. package/dist/internal/discovery/cursor-plugin.js +8 -8
  354. package/dist/internal/discovery/extension-overlay.d.ts.map +1 -1
  355. package/dist/internal/discovery/extension-overlay.js +2 -6
  356. package/dist/internal/discovery/extensions.js +15 -8
  357. package/dist/internal/discovery/info.d.ts +2 -2
  358. package/dist/internal/discovery/info.d.ts.map +1 -1
  359. package/dist/internal/discovery/info.js +9 -9
  360. package/dist/internal/discovery/instructions.d.ts.map +1 -1
  361. package/dist/internal/discovery/instructions.js +3 -6
  362. package/dist/internal/discovery/instrumentation.d.ts +10 -0
  363. package/dist/internal/discovery/instrumentation.d.ts.map +1 -0
  364. package/dist/internal/discovery/instrumentation.js +29 -0
  365. package/dist/internal/discovery/modules.d.ts.map +1 -1
  366. package/dist/internal/discovery/modules.js +7 -10
  367. package/dist/internal/discovery/project-public.d.ts +16 -0
  368. package/dist/internal/discovery/project-public.d.ts.map +1 -0
  369. package/dist/internal/discovery/project-public.js +54 -0
  370. package/dist/internal/discovery/project.d.ts +6 -0
  371. package/dist/internal/discovery/project.d.ts.map +1 -1
  372. package/dist/internal/discovery/project.js +40 -8
  373. package/dist/internal/discovery/runtime.d.ts.map +1 -1
  374. package/dist/internal/discovery/runtime.js +8 -8
  375. package/dist/internal/discovery/services.d.ts +5 -4
  376. package/dist/internal/discovery/services.d.ts.map +1 -1
  377. package/dist/internal/discovery/services.js +12 -6
  378. package/dist/internal/discovery.d.ts +1 -1
  379. package/dist/internal/discovery.d.ts.map +1 -1
  380. package/dist/internal/discovery.js +1 -1
  381. package/dist/internal/event-mapper.d.ts.map +1 -1
  382. package/dist/internal/event-mapper.js +1 -0
  383. package/dist/internal/expected-delivery-failure.d.ts.map +1 -1
  384. package/dist/internal/expected-delivery-failure.js +6 -0
  385. package/dist/internal/factory-resource-channel.d.ts +1 -1
  386. package/dist/internal/factory-resource-channel.d.ts.map +1 -1
  387. package/dist/internal/filesystem/nearest.d.ts +1 -0
  388. package/dist/internal/filesystem/nearest.d.ts.map +1 -1
  389. package/dist/internal/filesystem/nearest.js +1 -0
  390. package/dist/internal/filesystem/sdk-schemas.d.ts.map +1 -1
  391. package/dist/internal/filesystem/sdk-schemas.js +4 -3
  392. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  393. package/dist/internal/filesystem/tools.js +1 -1
  394. package/dist/internal/handleAgentServeTrigger.d.ts +10 -0
  395. package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
  396. package/dist/internal/handleAgentServeTrigger.js +3 -0
  397. package/dist/internal/hmac-secret-values.d.ts +48 -0
  398. package/dist/internal/hmac-secret-values.d.ts.map +1 -0
  399. package/dist/internal/hmac-secret-values.js +68 -0
  400. package/dist/internal/host-otel.d.ts +1 -1
  401. package/dist/internal/host-otel.d.ts.map +1 -1
  402. package/dist/internal/host-otel.js +5 -0
  403. package/dist/internal/host-platforms.d.ts.map +1 -1
  404. package/dist/internal/host-platforms.js +8 -2
  405. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  406. package/dist/internal/hosted-delivery.js +6 -2
  407. package/dist/internal/http-channel.d.ts.map +1 -1
  408. package/dist/internal/http-channel.js +1 -0
  409. package/dist/internal/ids.d.ts +8 -0
  410. package/dist/internal/ids.d.ts.map +1 -1
  411. package/dist/internal/ids.js +20 -0
  412. package/dist/internal/init-scaffold.js +1 -1
  413. package/dist/internal/interview/agent-questions.d.ts +1 -1
  414. package/dist/internal/interview/agent-questions.d.ts.map +1 -1
  415. package/dist/internal/interview/agent-questions.js +1 -1
  416. package/dist/internal/interview/question.d.ts +2 -2
  417. package/dist/internal/interview/question.d.ts.map +1 -1
  418. package/dist/internal/interview/question.js +2 -2
  419. package/dist/internal/json-schema.d.ts +7 -7
  420. package/dist/internal/json-schema.d.ts.map +1 -1
  421. package/dist/internal/json-schema.js +16 -23
  422. package/dist/internal/mcp-endpoint.d.ts +16 -4
  423. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  424. package/dist/internal/mcp-endpoint.js +18 -6
  425. package/dist/internal/mcp-host.d.ts +9 -0
  426. package/dist/internal/mcp-host.d.ts.map +1 -1
  427. package/dist/internal/mcp-host.js +15 -0
  428. package/dist/internal/otel/collector.d.ts +5 -0
  429. package/dist/internal/otel/collector.d.ts.map +1 -1
  430. package/dist/internal/otel/collector.js +27 -6
  431. package/dist/internal/otel/config.d.ts +37 -22
  432. package/dist/internal/otel/config.d.ts.map +1 -1
  433. package/dist/internal/otel/config.js +132 -125
  434. package/dist/internal/otel/conversation-span-processor.d.ts +9 -0
  435. package/dist/internal/otel/conversation-span-processor.d.ts.map +1 -0
  436. package/dist/internal/otel/conversation-span-processor.js +34 -0
  437. package/dist/internal/otel/customer.d.ts +52 -0
  438. package/dist/internal/otel/customer.d.ts.map +1 -0
  439. package/dist/internal/otel/customer.js +727 -0
  440. package/dist/internal/otel/runtime.d.ts +12 -16
  441. package/dist/internal/otel/runtime.d.ts.map +1 -1
  442. package/dist/internal/otel/runtime.js +37 -218
  443. package/dist/internal/otel-env.d.ts +6 -0
  444. package/dist/internal/otel-env.d.ts.map +1 -0
  445. package/dist/internal/otel-env.js +5 -0
  446. package/dist/internal/package-inline-stdio.d.ts.map +1 -1
  447. package/dist/internal/package-inline-stdio.js +21 -6
  448. package/dist/internal/reminder-runner.d.ts +9 -4
  449. package/dist/internal/reminder-runner.d.ts.map +1 -1
  450. package/dist/internal/reminder-runner.js +12 -10
  451. package/dist/internal/reminder-schedule.d.ts +1 -0
  452. package/dist/internal/reminder-schedule.d.ts.map +1 -1
  453. package/dist/internal/reminder-schedule.js +1 -0
  454. package/dist/internal/sdk-runner.d.ts +4 -3
  455. package/dist/internal/sdk-runner.d.ts.map +1 -1
  456. package/dist/internal/sdk-runner.js +157 -17
  457. package/dist/internal/secret-alternatives.d.ts +11 -0
  458. package/dist/internal/secret-alternatives.d.ts.map +1 -0
  459. package/dist/internal/secret-alternatives.js +13 -0
  460. package/dist/internal/server.d.ts +4 -1
  461. package/dist/internal/server.d.ts.map +1 -1
  462. package/dist/internal/server.js +27 -26
  463. package/dist/internal/session-engine.d.ts +27 -0
  464. package/dist/internal/session-engine.d.ts.map +1 -1
  465. package/dist/internal/session-engine.js +154 -25
  466. package/dist/internal/slack-provision-client.js +1 -1
  467. package/dist/internal/sqlite-experimental-warning.d.ts +2 -0
  468. package/dist/internal/sqlite-experimental-warning.d.ts.map +1 -0
  469. package/dist/internal/sqlite-experimental-warning.js +22 -0
  470. package/dist/internal/store-api-protocol.d.ts +1 -1
  471. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  472. package/dist/internal/store-api-protocol.js +1 -1
  473. package/dist/internal/testing/conversation-identity-vectors.d.ts +6 -1
  474. package/dist/internal/testing/conversation-identity-vectors.d.ts.map +1 -1
  475. package/dist/internal/testing/conversation-identity-vectors.js +34 -0
  476. package/dist/internal/testing/hmac-secret-vectors.d.ts +38 -0
  477. package/dist/internal/testing/hmac-secret-vectors.d.ts.map +1 -0
  478. package/dist/internal/testing/hmac-secret-vectors.js +89 -0
  479. package/dist/internal/testing/pagerduty-continuation-fixtures.d.ts +42 -0
  480. package/dist/internal/testing/pagerduty-continuation-fixtures.d.ts.map +1 -0
  481. package/dist/internal/testing/pagerduty-continuation-fixtures.js +175 -0
  482. package/dist/internal/update-check.d.ts +2 -2
  483. package/dist/internal/update-check.d.ts.map +1 -1
  484. package/dist/internal/update-check.js +3 -3
  485. package/dist/internal/zod-schema.d.ts +14 -0
  486. package/dist/internal/zod-schema.d.ts.map +1 -0
  487. package/dist/internal/zod-schema.js +22 -0
  488. package/dist/internal/zod3-datetime.d.ts +12 -0
  489. package/dist/internal/zod3-datetime.d.ts.map +1 -0
  490. package/dist/internal/zod3-datetime.js +17 -0
  491. package/dist/otel-public.d.ts +2 -3
  492. package/dist/otel-public.d.ts.map +1 -1
  493. package/dist/otel-public.js +2 -2
  494. package/dist/otel.d.ts +3 -102
  495. package/dist/otel.d.ts.map +1 -1
  496. package/dist/otel.js +61 -97
  497. package/dist/playground/assets/cursor-icons-16-DmHBTm1-.woff2 +0 -0
  498. package/dist/playground/assets/index-CyPkf2y7.css +1 -0
  499. package/dist/playground/assets/index-DpbzbqFY.js +62 -0
  500. package/dist/playground/index.html +2 -2
  501. package/dist/public-deprecated.d.ts +36 -0
  502. package/dist/public-deprecated.d.ts.map +1 -0
  503. package/dist/public-deprecated.js +39 -0
  504. package/dist/tools.d.ts +16 -13
  505. package/dist/tools.d.ts.map +1 -1
  506. package/dist/tools.js +4 -3
  507. package/dist/types.d.ts +286 -104
  508. package/dist/types.d.ts.map +1 -1
  509. package/docs/changelog.md +91 -0
  510. package/docs/guides/hooks.md +7 -3
  511. package/docs/guides/mcp-oauth.md +12 -0
  512. package/docs/guides/opentelemetry.md +150 -180
  513. package/docs/guides/pagerduty.md +341 -0
  514. package/docs/guides/slack.md +41 -0
  515. package/docs/reference/agent-config.md +21 -1
  516. package/docs/reference/channels.md +7 -2
  517. package/docs/reference/cli.md +27 -0
  518. package/docs/reference/hooks.md +10 -5
  519. package/docs/reference/sessions.md +46 -1
  520. package/docs/reference/tools.md +4 -3
  521. package/package.json +39 -8
  522. package/schemas/grokbot-answers.schema.json +11 -0
  523. package/skills/framework-map/SKILL.md +2 -1
  524. package/skills/migrate-v2/SKILL.md +1 -1
  525. package/skills/otel/SKILL.md +30 -46
  526. package/templates/agentic-owners/README.md +6 -1
  527. package/templates/agentic-owners/bot/lib/owners/decision.ts +31 -5
  528. package/templates/agentic-owners/bot/lib/owners/globalOverride.ts +60 -0
  529. package/templates/agentic-owners/bot/lib/owners/match.ts +85 -19
  530. package/templates/agentic-owners/bot/lib/owners/parse.ts +133 -2
  531. package/templates/agentic-owners/bot/lib/owners/types.ts +23 -0
  532. package/templates/code-wiki/evals/wiki.eval.ts +2 -2
  533. package/dist/docs/assets/chunks/@localSearchIndexroot.3ebvCWKy.js +0 -1
  534. package/dist/docs/assets/chunks/channel.BOebySCN.js +0 -1
  535. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C55IaN-T.js +0 -1
  536. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C55IaN-T.js +0 -1
  537. package/dist/docs/assets/chunks/clone.D06pA7ML.js +0 -1
  538. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DddRVjeq.js +0 -1
  539. package/dist/docs/assets/chunks/wardley-RL74JXVD.CVCRSuQK.js +0 -162
  540. package/dist/docs/assets/guides_opentelemetry.md.Ck1o2frw.js +0 -45
  541. package/dist/docs/assets/guides_opentelemetry.md.Ck1o2frw.lean.js +0 -1
  542. package/dist/docs/assets/reference_sessions.md.C8FXuGwk.js +0 -1
  543. package/dist/docs/assets/reference_sessions.md.C8FXuGwk.lean.js +0 -1
  544. package/dist/playground/assets/cursor-icons-16-gwXtdAvu.woff2 +0 -0
  545. package/dist/playground/assets/index-DKKdkF29.js +0 -62
  546. package/dist/playground/assets/index-DpKinTMs.css +0 -1
  547. package/templates/grokbot-agents/.gitignore +0 -4
  548. package/templates/security-help/.gitignore +0 -4
  549. /package/dist/docs/assets/{guides_hooks.md.Bfj0pK91.lean.js → guides_hooks.md.B2XfGX50.lean.js} +0 -0
  550. /package/dist/docs/assets/{reference_channels.md.DYg0CLud.lean.js → reference_channels.md.CNNIS6K7.lean.js} +0 -0
  551. /package/dist/docs/assets/{reference_schedules.md.03Ryy9ca.lean.js → reference_schedules.md.BqWnJES4.lean.js} +0 -0
  552. /package/dist/docs/assets/{reference_skills.md.C2GWh7g8.lean.js → reference_skills.md.Ckddg6KX.lean.js} +0 -0
  553. /package/dist/docs/assets/{reference_tools.md.08XR7lIl.lean.js → reference_tools.md.Bo0UfT0a.lean.js} +0 -0
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { readFile } from "node:fs/promises";
5
5
  import { basename, dirname, extname, isAbsolute, join } from "node:path";
6
- import { z } from "zod/v3";
6
+ import * as z from "zod/v4";
7
7
  import { parseYamlFrontmatter } from "../frontmatter.js";
8
8
  import { isRecord } from "../is-record.js";
9
9
  import { displayPath, errorMessage, isBlank } from "./context.js";
@@ -37,8 +37,8 @@ const manifestSchema = z.object({
37
37
  mcpServers: z
38
38
  .union([
39
39
  z.string(),
40
- z.record(z.unknown()),
41
- z.array(z.union([z.string(), z.record(z.unknown())])),
40
+ z.record(z.string(), z.unknown()),
41
+ z.array(z.union([z.string(), z.record(z.string(), z.unknown())])),
42
42
  ])
43
43
  .optional()
44
44
  .transform((value) => {
@@ -58,16 +58,16 @@ const frontmatterSchema = z.object({
58
58
  const mcpServerSchema = z.object({
59
59
  type: z.string().optional(),
60
60
  url: z.string().optional(),
61
- headers: z.record(z.string()).optional(),
61
+ headers: z.record(z.string(), z.string()).optional(),
62
62
  command: z.string().optional(),
63
63
  args: z.array(z.string()).optional(),
64
- env: z.record(z.string()).optional(),
64
+ env: z.record(z.string(), z.string()).optional(),
65
65
  cwd: z.string().optional(),
66
66
  envFile: z.string().optional(),
67
67
  /** Cursor's static OAuth client hint. */
68
- auth: z.record(z.unknown()).optional(),
68
+ auth: z.record(z.string(), z.unknown()).optional(),
69
69
  /** Claude's spelling of the same hint. */
70
- oauth: z.record(z.unknown()).optional(),
70
+ oauth: z.record(z.string(), z.unknown()).optional(),
71
71
  /** Cursor disables unlisted tools; an empty list would disable them all. */
72
72
  enabledTools: z.array(z.string()).nonempty().optional(),
73
73
  });
@@ -499,7 +499,7 @@ function componentName(plugin, raw, path) {
499
499
  });
500
500
  return undefined;
501
501
  }
502
- /** `headers: Expected object, received array`; the path names the field. */
502
+ /** `headers: Invalid input: expected record, received array`; the path names the field. */
503
503
  function firstIssue(error) {
504
504
  const issue = error.issues[0];
505
505
  if (issue === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"extension-overlay.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/extension-overlay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,aAAa,EACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,cAAc,CAAC;AAgBhF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,WAAW,CAAC,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAC5B,YAAY,EAAE,eAAe,GAAG,qBAAqB,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,CACP,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,OAAO,KAChB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAC7C;AAED,wBAAsB,WAAW,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1D,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9C,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACzC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC5C,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC3C,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,CA4BtC;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAa1C"}
1
+ {"version":3,"file":"extension-overlay.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/extension-overlay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,aAAa,EACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,gBAAgB,EAAyC,MAAM,cAAc,CAAC;AAgB5F,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,WAAW,CAAC,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAC5B,YAAY,EAAE,eAAe,GAAG,qBAAqB,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,CACP,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,OAAO,KAChB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAC7C;AAED,wBAAsB,WAAW,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1D,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9C,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACzC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC5C,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC3C,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,CAwBtC;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAa1C"}
@@ -5,7 +5,7 @@
5
5
  import { join } from "node:path";
6
6
  import { getDefinitionKind } from "../brand.js";
7
7
  import { loadChannels } from "./channels.js";
8
- import { displayPath, errorMessage } from "./context.js";
8
+ import { displayPath, pushModuleLoadDiagnostic } from "./context.js";
9
9
  import { findModuleFile, isDirectory, isFile, isModuleFile, moduleStem, sortedEntries, } from "./fs.js";
10
10
  import { loadHooks } from "./hooks.js";
11
11
  import { loadInstructions } from "./instructions.js";
@@ -96,11 +96,7 @@ export async function overlayInstructionsFragment(ctx, overlayDir) {
96
96
  mod = await ctx.importModule(modulePath);
97
97
  }
98
98
  catch (error) {
99
- ctx.diagnostics.push({
100
- severity: "error",
101
- path: displayPath(ctx, modulePath),
102
- message: `Failed to load module: ${errorMessage(error)}`,
103
- });
99
+ pushModuleLoadDiagnostic(ctx, modulePath, error);
104
100
  return "keep";
105
101
  }
106
102
  if (getDefinitionKind(mod.default) === "disabled") {
@@ -329,23 +329,30 @@ function byId(items) {
329
329
  return new Map(items.map((item) => [item.id, item]));
330
330
  }
331
331
  /**
332
- * Agent-singleton slots: one runtime (`agent.ts`), one storage backend,
333
- * one OTLP exporter. Playground chips are a Vite glob of the agent tree,
334
- * not a discovery walk. Nested `extensions/` are not mounted.
332
+ * Agent-singleton slots: one runtime (`agent.ts`), one storage backend.
333
+ * Playground chips are a Vite glob of the agent tree, not a discovery walk.
334
+ * Nested `extensions/` are not mounted.
335
335
  */
336
336
  async function warnAgentRootOnlySlots(ctx, root) {
337
337
  const files = [
338
- ["agent.ts", "agent.ts"],
339
- ["storage.ts", "storage"],
340
- ["otel.ts", "otel"],
338
+ ["agent.ts", "The agent that mounts this extension owns agent.ts; ignoring."],
339
+ ["storage.ts", "The agent that mounts this extension owns storage; ignoring."],
340
+ [
341
+ "otel.ts",
342
+ 'otel.ts is removed. Delete this file. See "Migrating from serve({ otel })" in docs/guides/opentelemetry.md.',
343
+ ],
344
+ [
345
+ "instrumentation.ts",
346
+ 'instrumentation.ts is not loaded. Delete this file. See "Migrating from serve({ otel })" in docs/guides/opentelemetry.md.',
347
+ ],
341
348
  ];
342
- for (const [file, label] of files) {
349
+ for (const [file, message] of files) {
343
350
  const path = join(root, file);
344
351
  if (await isFile(path)) {
345
352
  ctx.diagnostics.push({
346
353
  severity: "warning",
347
354
  path: displayPath(ctx, path),
348
- message: `The agent that mounts this extension owns ${label}; ignoring.`,
355
+ message,
349
356
  });
350
357
  }
351
358
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * The `info` / `GET /v1/info` projection of an {@link AgentProject}.
3
3
  */
4
- import { type AgentProject, type AgentProjectInfo } from "../../types.js";
5
- export declare function projectInfo(project: AgentProject): AgentProjectInfo;
4
+ import { type AgentProject, type ProjectInfo } from "../../types.js";
5
+ export declare function projectInfo(project: AgentProject): ProjectInfo;
6
6
  //# sourceMappingURL=info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAqB,MAAM,gBAAgB,CAAC;AAK7F,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,CAmKnE"}
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAqB,MAAM,gBAAgB,CAAC;AAMxF,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CAkK9D"}
@@ -5,6 +5,7 @@ import { resolveArtifactsMax } from "../../artifacts.js";
5
5
  import { toPublicCloudInfo } from "../../types.js";
6
6
  import { toolInputJsonSchema } from "../json-schema.js";
7
7
  import { MCP_ENDPOINT_PATH, mcpEndpointToolNames } from "../mcp-endpoint.js";
8
+ import { DEFAULT_AGENT_ARCHITECTURE } from "./agent-config.js";
8
9
  import { connectionTransportLabel } from "./connections.js";
9
10
  export function projectInfo(project) {
10
11
  const agent = project.agent;
@@ -37,12 +38,14 @@ export function projectInfo(project) {
37
38
  },
38
39
  ];
39
40
  return {
41
+ schemaVersion: 1,
40
42
  name: project.name,
41
43
  description: agent.description,
42
44
  model: agent.model,
45
+ architecture: agent.architecture ?? DEFAULT_AGENT_ARCHITECTURE,
43
46
  runtime: agent.runtime,
44
47
  cloud: agent.cloud === undefined ? undefined : toPublicCloudInfo(agent.cloud),
45
- local: agent.local,
48
+ local: agent.local?.cwd === undefined ? undefined : { cwd: agent.local.cwd },
46
49
  hosting: agent.hosting,
47
50
  concurrency: agent.concurrency,
48
51
  mcp: { path: MCP_ENDPOINT_PATH, tools: mcpEndpointToolNames(project) },
@@ -58,7 +61,7 @@ export function projectInfo(project) {
58
61
  name: tool.name,
59
62
  description: tool.description,
60
63
  execution: tool.execution,
61
- needsApproval: tool.needsApproval,
64
+ needsApproval: typeof tool.definition.needsApproval === "function" ? "dynamic" : tool.needsApproval,
62
65
  effect: tool.effect,
63
66
  inputSchema: tool.inputSchema,
64
67
  })),
@@ -121,6 +124,9 @@ export function projectInfo(project) {
121
124
  if (meta?.bitbucketWebhookEvents !== undefined) {
122
125
  info.bitbucketWebhookEvents = meta.bitbucketWebhookEvents;
123
126
  }
127
+ if (meta?.pagerdutyWebhookEvents !== undefined) {
128
+ info.pagerdutyWebhookEvents = meta.pagerdutyWebhookEvents;
129
+ }
124
130
  if (meta?.deploymentEventTypes !== undefined) {
125
131
  info.deploymentEventTypes = meta.deploymentEventTypes;
126
132
  }
@@ -155,12 +161,6 @@ export function projectInfo(project) {
155
161
  agentTool: project.artifacts.agentTool === true,
156
162
  max: resolveArtifactsMax(project.artifacts),
157
163
  },
158
- otel: project.otel === undefined
159
- ? undefined
160
- : {
161
- enabled: true,
162
- serviceName: project.otel.serviceName,
163
- },
164
- diagnostics: project.diagnostics,
164
+ diagnostics: project.diagnostics.map((diagnostic) => ({ ...diagnostic })),
165
165
  };
166
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/instructions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAA0B,MAAM,gBAAgB,CAAC;AAEpF,OAAO,EAAE,KAAK,gBAAgB,EAAsC,MAAM,cAAc,CAAC;AAGzF,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkD7B"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/instructions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAA0B,MAAM,gBAAgB,CAAC;AAEpF,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,cAAc,CAAC;AAGtB,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkD7B"}
@@ -4,7 +4,7 @@
4
4
  import { readFile } from "node:fs/promises";
5
5
  import { join } from "node:path";
6
6
  import { getDefinitionKind } from "../brand.js";
7
- import { displayPath, errorMessage, isBlank } from "./context.js";
7
+ import { displayPath, isBlank, pushModuleLoadDiagnostic, } from "./context.js";
8
8
  import { findModuleFile, isDirectory, isFile, isModuleFile, sortedEntries } from "./fs.js";
9
9
  export async function loadInstructions(ctx, agentDir, config, isRoot) {
10
10
  const parts = [];
@@ -59,11 +59,7 @@ async function loadInstructionsModule(ctx, modulePath) {
59
59
  mod = await ctx.importModule(modulePath);
60
60
  }
61
61
  catch (error) {
62
- ctx.diagnostics.push({
63
- severity: "error",
64
- path: displayPath(ctx, modulePath),
65
- message: `Failed to load module: ${errorMessage(error)}`,
66
- });
62
+ pushModuleLoadDiagnostic(ctx, modulePath, error);
67
63
  return undefined;
68
64
  }
69
65
  const value = mod.default;
@@ -75,6 +71,7 @@ async function loadInstructionsModule(ctx, modulePath) {
75
71
  }
76
72
  ctx.diagnostics.push({
77
73
  severity: "error",
74
+ code: "invalid_definition",
78
75
  path: displayPath(ctx, modulePath),
79
76
  message: "Instructions modules must default-export a string or defineInstructions({ markdown }).",
80
77
  });
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Bake-time OpenTelemetry providers. Installed before `agent.ts` so a
3
+ * module-scope meter, tracer, or logger binds to a real provider.
4
+ * `instrumentation.ts` is not loaded.
5
+ */
6
+ import { type DiscoveryContext } from "./context.js";
7
+ export declare function agentDirHasInstrumentation(agentDir: string): boolean;
8
+ export declare function resetInstrumentationRegistryForTests(): void;
9
+ export declare function loadInstrumentation(ctx: DiscoveryContext, agentDir: string): Promise<boolean>;
10
+ //# sourceMappingURL=instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,gBAAgB,EAAe,MAAM,cAAc,CAAC;AAKlE,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D;AAKD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAYlB"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Bake-time OpenTelemetry providers. Installed before `agent.ts` so a
3
+ * module-scope meter, tracer, or logger binds to a real provider.
4
+ * `instrumentation.ts` is not loaded.
5
+ */
6
+ import { installCustomerOtel } from "../otel/customer.js";
7
+ import { displayPath } from "./context.js";
8
+ import { findModuleFile } from "./fs.js";
9
+ const instrumentedAgentDirs = new Set();
10
+ export function agentDirHasInstrumentation(agentDir) {
11
+ return instrumentedAgentDirs.has(agentDir);
12
+ }
13
+ export function resetInstrumentationRegistryForTests() {
14
+ instrumentedAgentDirs.clear();
15
+ }
16
+ const INSTRUMENTATION_FILE = 'instrumentation.ts is not loaded. Delete this file. See "Migrating from serve({ otel })" in docs/guides/opentelemetry.md.';
17
+ export async function loadInstrumentation(ctx, agentDir) {
18
+ installCustomerOtel();
19
+ instrumentedAgentDirs.add(agentDir);
20
+ const path = await findModuleFile(agentDir, "instrumentation");
21
+ if (path !== undefined) {
22
+ ctx.diagnostics.push({
23
+ severity: "error",
24
+ path: displayPath(ctx, path),
25
+ message: INSTRUMENTATION_FILE,
26
+ });
27
+ }
28
+ return true;
29
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/modules.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,cAAc,CAAC;AAIhF,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CAAC,CAAC;AAEvE,4EAA4E;AAC5E,wBAAsB,aAAa,CACjC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,YAAY,GAC1B,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAwBhD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GAAG,SAAS,cAAc,EAAE,GACnD,OAAO,CAAC,OAAO,CAAC,CA6BlB;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAGvD"}
1
+ {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/modules.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,KAAK,gBAAgB,EAAyC,MAAM,cAAc,CAAC;AAI5F,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CAAC,CAAC;AAEvE,4EAA4E;AAC5E,wBAAsB,aAAa,CACjC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,YAAY,GAC1B,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAwBhD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GAAG,SAAS,cAAc,EAAE,GACnD,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAGvD"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { join } from "node:path";
5
5
  import { getDefinitionKind } from "../brand.js";
6
- import { displayPath, errorMessage } from "./context.js";
6
+ import { displayPath, pushModuleLoadDiagnostic } from "./context.js";
7
7
  import { isDirectory, isModuleFile, moduleStem, sortedEntries } from "./fs.js";
8
8
  import { validateName } from "./names.js";
9
9
  /** The module files of a slot directory whose filenames are valid names. */
@@ -42,11 +42,7 @@ export async function importDefault(ctx, modulePath, expected) {
42
42
  mod = await ctx.importModule(modulePath);
43
43
  }
44
44
  catch (error) {
45
- ctx.diagnostics.push({
46
- severity: "error",
47
- path: displayPath(ctx, modulePath),
48
- message: `Failed to load module: ${errorMessage(error)}`,
49
- });
45
+ pushModuleLoadDiagnostic(ctx, modulePath, error);
50
46
  return undefined;
51
47
  }
52
48
  const kinds = typeof expected === "string" ? [expected] : expected;
@@ -57,12 +53,14 @@ export async function importDefault(ctx, modulePath, expected) {
57
53
  const helpers = kinds.map(helperCall).join(" or ");
58
54
  const expectedKinds = kinds.join(" or ");
59
55
  const article = /^[aeiou]/.test(expectedKinds) ? "an" : "a";
56
+ const message = kind === undefined
57
+ ? `Module must default-export ${helpers}.`
58
+ : `Expected ${article} ${expectedKinds} definition but found "${kind}" (wrong authored slot?).`;
60
59
  ctx.diagnostics.push({
61
60
  severity: "error",
61
+ code: "invalid_definition",
62
62
  path: displayPath(ctx, modulePath),
63
- message: kind === undefined
64
- ? `Module must default-export ${helpers}.`
65
- : `Expected ${article} ${expectedKinds} definition but found "${kind}" (wrong authored slot?).`,
63
+ message,
66
64
  });
67
65
  return undefined;
68
66
  }
@@ -87,5 +85,4 @@ const DEFINE_HELPER_NAME = {
87
85
  hook: "defineHook",
88
86
  storage: "defineStorage",
89
87
  artifacts: "defineArtifacts",
90
- otel: "defineOtel",
91
88
  };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Public project load. `serve` reads the compiled project back from the map.
3
+ */
4
+ import type { AgentProject, Diagnostic, Project } from "../../types.js";
5
+ export interface LoadProjectOptions {
6
+ /** When true, warnings throw {@link ProjectLoadError} as well as errors. */
7
+ strict?: boolean;
8
+ }
9
+ export declare class ProjectLoadError extends Error {
10
+ readonly diagnostics: readonly Diagnostic[];
11
+ constructor(diagnostics: readonly Diagnostic[]);
12
+ }
13
+ export declare function loadProject(dir: string, options?: LoadProjectOptions): Promise<Project>;
14
+ export declare function createProject(agentProject: AgentProject): Project;
15
+ export declare function unwrapProject(project: Project): AgentProject;
16
+ //# sourceMappingURL=project-public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-public.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/project-public.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAe,MAAM,gBAAgB,CAAC;AAMrF,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAUD,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAE5C,YAAY,WAAW,EAAE,SAAS,UAAU,EAAE,EAK7C;CACF;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQjG;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAIjE;AAkBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAM5D"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Public project load. `serve` reads the compiled project back from the map.
3
+ */
4
+ import { projectInfo } from "./info.js";
5
+ import { formatDiagnostics, hasErrorDiagnostics, loadAgentProject } from "./project.js";
6
+ const agentProjects = new WeakMap();
7
+ class ProjectImpl {
8
+ constructor(info) {
9
+ this.info = info;
10
+ }
11
+ }
12
+ export class ProjectLoadError extends Error {
13
+ constructor(diagnostics) {
14
+ const copy = diagnostics.map((diagnostic) => ({ ...diagnostic }));
15
+ super(formatDiagnostics(copy));
16
+ this.name = "ProjectLoadError";
17
+ this.diagnostics = copy;
18
+ }
19
+ }
20
+ export async function loadProject(dir, options = {}) {
21
+ const loaded = await loadAgentProject(dir);
22
+ const hasError = hasErrorDiagnostics(loaded);
23
+ const hasWarning = loaded.diagnostics.some((diagnostic) => diagnostic.severity === "warning");
24
+ if (hasError || (options.strict === true && hasWarning)) {
25
+ throw new ProjectLoadError(loaded.diagnostics);
26
+ }
27
+ return createProject(loaded);
28
+ }
29
+ export function createProject(agentProject) {
30
+ const project = new ProjectImpl(deepFreeze(projectInfo(agentProject)));
31
+ agentProjects.set(project, agentProject);
32
+ return project;
33
+ }
34
+ function deepFreeze(value) {
35
+ const copy = structuredClone(value);
36
+ freezeValue(copy);
37
+ return copy;
38
+ }
39
+ function freezeValue(value) {
40
+ if (value === null || typeof value !== "object" || Object.isFrozen(value)) {
41
+ return;
42
+ }
43
+ for (const nested of Object.values(value)) {
44
+ freezeValue(nested);
45
+ }
46
+ Object.freeze(value);
47
+ }
48
+ export function unwrapProject(project) {
49
+ const agentProject = project instanceof ProjectImpl ? agentProjects.get(project) : undefined;
50
+ if (agentProject === undefined) {
51
+ throw new Error("serve() accepts a Project from loadProject");
52
+ }
53
+ return agentProject;
54
+ }
@@ -48,4 +48,10 @@ export declare function loadAgentProject(dir: string, options?: LoadAgentProject
48
48
  /** True when the project has diagnostics that must block serving. */
49
49
  export declare function hasErrorDiagnostics(project: AgentProject): boolean;
50
50
  export declare function formatDiagnostics(diagnostics: Diagnostic[]): string;
51
+ export declare function formatValidateJson(mounts: ReadonlyArray<{
52
+ slug: string;
53
+ project: {
54
+ diagnostics: readonly Diagnostic[];
55
+ };
56
+ }>): string;
51
57
  //# sourceMappingURL=project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAuB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAapF,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,cAAc,CAAC;AAetB;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAYD,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA2BlF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CA6BzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAAuB,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgBzD;AAWD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CA6GvB;AA0BD,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAElE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAOnE"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAuB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAcpF,OAAO,EAIL,KAAK,uBAAuB,EAE7B,MAAM,cAAc,CAAC;AAgBtB;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAYD,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA2BlF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CA6BzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAAuB,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgBzD;AAWD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CA+HvB;AA0BD,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAElE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAOnE;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE;QAAE,WAAW,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE,CAAA;CAAE,CAAC,GACvF,MAAM,CAeR"}
@@ -6,15 +6,17 @@ import { registerAuthoredModuleLoaders } from "../authored-loaders.js";
6
6
  import { channelArchitectureError, channelArchitectureMigrationWarning, } from "../channel-architecture.js";
7
7
  import { applyAgentContinuationDefaults, warnOmittedContinuationDowngrades, } from "../continuation-channel.js";
8
8
  import { httpChannel } from "../http-channel-define.js";
9
+ import { otelProvidersReplaced } from "../otel/customer.js";
9
10
  import { loadAgent, warnUnknownSlots } from "./agent.js";
10
11
  import { loadChannels } from "./channels.js";
11
- import { defaultImportModule, displayPath, } from "./context.js";
12
+ import { defaultImportModule, displayPath, pushConfigDiagnostic, } from "./context.js";
12
13
  import { hasFlatLayoutMarkers, isDirectory, readPackageName, sortedEntries } from "./fs.js";
13
14
  import { loadHooks } from "./hooks.js";
15
+ import { loadInstrumentation } from "./instrumentation.js";
14
16
  import { NAME_PATTERN, RESERVED_SLUGS } from "./names.js";
15
17
  import { loadReminders } from "./reminders.js";
16
18
  import { loadSchedules } from "./schedules.js";
17
- import { appendArtifactTool, loadArtifacts, loadOtel, loadStorage, mergeArtifacts, rejectLegacyResult, } from "./services.js";
19
+ import { appendArtifactTool, loadArtifacts, loadStorage, mergeArtifacts, rejectLegacyOtelModule, rejectLegacyResult, } from "./services.js";
18
20
  /**
19
21
  * True when `dir` looks like an agent project root: it has a nested `bot/`
20
22
  * directory, a compatible `agent/` directory, or flat-layout markers
@@ -158,15 +160,24 @@ export async function loadAgentProject(dir, options = {}) {
158
160
  diagnostics,
159
161
  importModule: options.importModule ?? defaultImportModule,
160
162
  };
163
+ // Before agent.ts, tools, and channels. A meter created first stays a no-op.
164
+ await loadInstrumentation(ctx, agentDir);
161
165
  const name = (await readPackageName(rootDir)) ?? basename(rootDir);
162
166
  const { agent, projectSlots } = await loadAgent(ctx, agentDir, {
163
167
  name,
164
168
  isRoot: true,
165
169
  });
170
+ if (otelProvidersReplaced()) {
171
+ ctx.diagnostics.push({
172
+ severity: "warning",
173
+ path: displayPath(ctx, join(agentDir, "agent.ts")),
174
+ message: "A module replaced an OpenTelemetry provider BDK installed. The global API now uses that module's provider. See docs/guides/opentelemetry.md.",
175
+ });
176
+ }
166
177
  const { channels, httpChannelDefinition } = await loadChannels(ctx, join(agentDir, "channels"));
167
178
  for (const channel of projectSlots.channels) {
168
179
  if (channel.id === "http" || channels.some((c) => c.id === channel.id)) {
169
- ctx.diagnostics.push({
180
+ pushConfigDiagnostic(ctx, {
170
181
  severity: "error",
171
182
  path: displayPath(ctx, join(agentDir, "extensions")),
172
183
  message: `Extension channel "${channel.id}" collides with an agent channel.`,
@@ -183,7 +194,7 @@ export async function loadAgentProject(dir, options = {}) {
183
194
  hooks.push(...projectSlots.hooks);
184
195
  const storage = await loadStorage(ctx, agentDir, agent.architecture);
185
196
  const artifacts = await mergeProjectArtifacts(ctx, agentDir, projectSlots.artifacts);
186
- const otel = await loadOtel(ctx, agentDir);
197
+ await rejectLegacyOtelModule(ctx, agentDir);
187
198
  await rejectLegacyResult(ctx, agentDir);
188
199
  await appendArtifactTool(ctx, agentDir, agent, artifacts);
189
200
  if (agentDir !== rootDir) {
@@ -194,18 +205,26 @@ export async function loadAgentProject(dir, options = {}) {
194
205
  const channelPath = displayPath(ctx, join(agentDir, "channels", `${channel.id}.ts`));
195
206
  const architectureError = channelArchitectureError(agent.architecture, channel.definition);
196
207
  if (architectureError !== undefined) {
197
- ctx.diagnostics.push({ severity: "error", path: channelPath, message: architectureError });
208
+ pushConfigDiagnostic(ctx, {
209
+ severity: "error",
210
+ path: channelPath,
211
+ message: architectureError,
212
+ });
198
213
  }
199
214
  const migrationWarning = channelArchitectureMigrationWarning(agent.architecture, channel.definition);
200
215
  if (migrationWarning !== undefined) {
201
- ctx.diagnostics.push({ severity: "warning", path: channelPath, message: migrationWarning });
216
+ pushConfigDiagnostic(ctx, {
217
+ severity: "warning",
218
+ path: channelPath,
219
+ message: migrationWarning,
220
+ });
202
221
  }
203
222
  }
204
223
  warnOmittedContinuationDowngrades({
205
224
  architecture: agent.architecture,
206
225
  channels,
207
226
  warn: (id, message) => {
208
- ctx.diagnostics.push({
227
+ pushConfigDiagnostic(ctx, {
209
228
  severity: "warning",
210
229
  path: displayPath(ctx, join(agentDir, "channels", `${id}.ts`)),
211
230
  message,
@@ -229,7 +248,6 @@ export async function loadAgentProject(dir, options = {}) {
229
248
  hooks,
230
249
  storage,
231
250
  artifacts,
232
- otel,
233
251
  diagnostics,
234
252
  };
235
253
  }
@@ -264,3 +282,17 @@ export function formatDiagnostics(diagnostics) {
264
282
  })
265
283
  .join("\n");
266
284
  }
285
+ export function formatValidateJson(mounts) {
286
+ const agents = mounts.map(({ slug, project }) => ({
287
+ slug,
288
+ diagnostics: project.diagnostics.map((diagnostic) => ({
289
+ severity: diagnostic.severity,
290
+ code: diagnostic.code ?? "other",
291
+ path: diagnostic.path,
292
+ package: diagnostic.package,
293
+ message: diagnostic.message,
294
+ })),
295
+ }));
296
+ const ok = !agents.some((agent) => agent.diagnostics.some((diagnostic) => diagnostic.severity === "error"));
297
+ return `${JSON.stringify({ version: 1, ok, agents })}\n`;
298
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,gBAAgB,EAAe,MAAM,cAAc,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,YAAY,CAed;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IACN,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B,GACA,IAAI,CA2DN;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B,GACA,IAAI,CAkCN"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,gBAAgB,EAAqC,MAAM,cAAc,CAAC;AAExF;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,YAAY,CAed;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IACN,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B,GACA,IAAI,CA2DN;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B,GACA,IAAI,CAkCN"}
@@ -2,7 +2,7 @@
2
2
  * Runtime resolution and the limitations each runtime imposes on the authored surface.
3
3
  */
4
4
  import { join } from "node:path";
5
- import { displayPath } from "./context.js";
5
+ import { displayPath, pushConfigDiagnostic } from "./context.js";
6
6
  /**
7
7
  * Validate the authored runtime. An unrecognized value is an error
8
8
  * diagnostic and falls back to local — a typo must not silently pick a
@@ -15,7 +15,7 @@ export function resolveRuntime(ctx, agentDir, runtime) {
15
15
  runtime === "grokbot") {
16
16
  return runtime ?? "local";
17
17
  }
18
- ctx.diagnostics.push({
18
+ pushConfigDiagnostic(ctx, {
19
19
  severity: "error",
20
20
  path: displayPath(ctx, join(agentDir, "agent.ts")),
21
21
  message: `runtime must be "local", "cloud", or "grokbot"; got ${JSON.stringify(runtime)}.`,
@@ -31,10 +31,10 @@ export function resolveRuntime(ctx, agentDir, runtime) {
31
31
  export function checkGrokBotRuntimeLimitations(ctx, agentDir, counts) {
32
32
  const agentPath = displayPath(ctx, join(agentDir, "agent.ts"));
33
33
  const error = (path, message) => {
34
- ctx.diagnostics.push({ severity: "error", path, message });
34
+ pushConfigDiagnostic(ctx, { severity: "error", path, message });
35
35
  };
36
36
  const warn = (path, message) => {
37
- ctx.diagnostics.push({ severity: "warning", path, message });
37
+ pushConfigDiagnostic(ctx, { severity: "warning", path, message });
38
38
  };
39
39
  if (counts.serverTools > 0) {
40
40
  error(displayPath(ctx, join(agentDir, "tools")), 'Server tools (execution: "server", including opted-in builtinTools) are not reachable from grokbot turns yet. Remove them or run the agent on the local runtime.');
@@ -67,28 +67,28 @@ export function checkGrokBotRuntimeLimitations(ctx, agentDir, counts) {
67
67
  export function warnCloudRuntimeLimitations(ctx, agentDir, counts) {
68
68
  const agentPath = displayPath(ctx, join(agentDir, "agent.ts"));
69
69
  if (!counts.hasCloudOptions) {
70
- ctx.diagnostics.push({
70
+ pushConfigDiagnostic(ctx, {
71
71
  severity: "warning",
72
72
  path: agentPath,
73
73
  message: 'runtime: "cloud" usually needs a `cloud` block (e.g. repos / env). Without it the Cursor cloud API may reject create.',
74
74
  });
75
75
  }
76
76
  if (counts.agentTools > 0) {
77
- ctx.diagnostics.push({
77
+ pushConfigDiagnostic(ctx, {
78
78
  severity: "warning",
79
79
  path: displayPath(ctx, join(agentDir, "tools")),
80
80
  message: 'Agent tools (execution: "agent") are described on the first cloud prompt (with script bodies); they are not written into the cloud VM filesystem automatically.',
81
81
  });
82
82
  }
83
83
  if (counts.skills > 0) {
84
- ctx.diagnostics.push({
84
+ pushConfigDiagnostic(ctx, {
85
85
  severity: "warning",
86
86
  path: displayPath(ctx, join(agentDir, "skills")),
87
87
  message: "Authored skills reach cloud agents through native store discovery: hosted deployments write the deployment store's skills/ directory; local serve/run with a personal API key writes agent-serve/<agent>/skills/ on the USER store. Without a reachable store, only skills already in the cloud repo are visible.",
88
88
  });
89
89
  }
90
90
  if (counts.seedFiles > 0) {
91
- ctx.diagnostics.push({
91
+ pushConfigDiagnostic(ctx, {
92
92
  severity: "warning",
93
93
  path: displayPath(ctx, join(agentDir, "sandbox")),
94
94
  message: "sandbox/workspace seed files reach cloud agents through the Agent Store, not the checkout: hosted deployments write the deployment store's workspace/ directory; local serve/run with a personal API key writes agent-serve/<agent>/workspace/ on the USER store. The first cloud prompt names the mounted directory. Without a reachable store, cloud turns do not see them.",
@@ -1,13 +1,14 @@
1
1
  /**
2
- * `agent/storage.ts`, `agent/otel.ts`, `agent/artifacts.ts`:
3
- * host services the agent configures.
2
+ * `agent/storage.ts` and `agent/artifacts.ts`: host services the agent
3
+ * configures. `agent/otel.ts` is rejected. OpenTelemetry is `OTEL_*`
4
+ * variables.
4
5
  */
5
- import type { OtelDefinition } from "../../otel.js";
6
6
  import type { StorageDefinition } from "../../storage.js";
7
7
  import type { AgentArchitecture, ArtifactsDefinition, ResolvedAgent } from "../../types.js";
8
8
  import { type DiscoveryContext } from "./context.js";
9
9
  export declare function loadStorage(ctx: DiscoveryContext, agentDir: string, architecture: AgentArchitecture | undefined): Promise<StorageDefinition | undefined>;
10
- export declare function loadOtel(ctx: DiscoveryContext, agentDir: string): Promise<OtelDefinition | undefined>;
10
+ /** Fail discovery when the retired `otel.ts` module is still present. */
11
+ export declare function rejectLegacyOtelModule(ctx: DiscoveryContext, agentDir: string): Promise<void>;
11
12
  export declare function loadArtifacts(ctx: DiscoveryContext, agentDir: string): Promise<ArtifactsDefinition | undefined>;
12
13
  /**
13
14
  * `defineResult` / `agent/result.ts` is gone. A leftover file is an