@cursor/bdk 0.2.11 → 0.2.13

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 (457) hide show
  1. package/dist/bin/agent-serve.js +28 -26
  2. package/dist/channels/bitbucket/api.js +8 -8
  3. package/dist/channels/bitbucket/binding.js +4 -4
  4. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  5. package/dist/channels/bitbucket/bitbucket-webhook.js +1 -1
  6. package/dist/channels/bitbucket/checks.js +1 -1
  7. package/dist/channels/bitbucket/cursor-account.js +1 -1
  8. package/dist/channels/bitbucket/events.js +1 -1
  9. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  10. package/dist/channels/checks.js +2 -2
  11. package/dist/channels/deployments/deployments-channel.js +1 -1
  12. package/dist/channels/github/cursor-account.js +3 -3
  13. package/dist/channels/github/defaults.js +3 -3
  14. package/dist/channels/github/events.js +1 -1
  15. package/dist/channels/github/forward.js +8 -8
  16. package/dist/channels/github/github-channel.js +2 -2
  17. package/dist/channels/github/index.d.ts +22 -12
  18. package/dist/channels/github/index.d.ts.map +1 -1
  19. package/dist/channels/github/index.js +11 -12
  20. package/dist/channels/gitlab/binding.js +4 -4
  21. package/dist/channels/gitlab/checks.js +1 -1
  22. package/dist/channels/gitlab/cursor-account.js +1 -1
  23. package/dist/channels/gitlab/events.js +1 -1
  24. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  25. package/dist/channels/gitlab/gitlab-webhook.js +1 -1
  26. package/dist/channels/gitlab/replay.js +2 -2
  27. package/dist/channels/origin/binding.js +3 -3
  28. package/dist/channels/origin/checks.js +1 -1
  29. package/dist/channels/origin/cursor-account.js +1 -1
  30. package/dist/channels/origin/events.js +1 -1
  31. package/dist/channels/origin/index.d.ts +21 -11
  32. package/dist/channels/origin/index.d.ts.map +1 -1
  33. package/dist/channels/origin/index.js +10 -11
  34. package/dist/channels/origin/origin-channel.js +1 -1
  35. package/dist/channels/origin/origin-webhook.js +2 -2
  36. package/dist/channels/slack/agentic-delivery.js +3 -3
  37. package/dist/channels/slack/agentic-signals.js +1 -1
  38. package/dist/channels/slack/api.js +5 -5
  39. package/dist/channels/slack/approvals.js +1 -1
  40. package/dist/channels/slack/attachments.js +3 -3
  41. package/dist/channels/slack/blocks.js +3 -3
  42. package/dist/channels/slack/bot-mentions.js +4 -4
  43. package/dist/channels/slack/channel-watch.js +4 -4
  44. package/dist/channels/slack/cli-project.js +3 -3
  45. package/dist/channels/slack/dispatch.js +1 -1
  46. package/dist/channels/slack/doctor.js +1 -1
  47. package/dist/channels/slack/eval-directive.js +1 -1
  48. package/dist/channels/slack/footer.js +1 -1
  49. package/dist/channels/slack/interactive.js +2 -2
  50. package/dist/channels/slack/log.d.ts.map +1 -1
  51. package/dist/channels/slack/log.js +1 -1
  52. package/dist/channels/slack/manifest.js +1 -1
  53. package/dist/channels/slack/nudge-carrier.js +1 -1
  54. package/dist/channels/slack/nudge-store.js +2 -2
  55. package/dist/channels/slack/recording-sink.js +6 -6
  56. package/dist/channels/slack/reply-options.js +6 -6
  57. package/dist/channels/slack/self-identity.d.ts +7 -4
  58. package/dist/channels/slack/self-identity.d.ts.map +1 -1
  59. package/dist/channels/slack/self-identity.js +17 -8
  60. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  61. package/dist/channels/slack/sender-name.js +2 -6
  62. package/dist/channels/slack/setup.d.ts.map +1 -1
  63. package/dist/channels/slack/setup.js +1 -1
  64. package/dist/channels/slack/slack-channel.js +2 -2
  65. package/dist/channels/slack/socket-mode.js +2 -2
  66. package/dist/channels/slack/thread-context.js +8 -8
  67. package/dist/channels/slack/tool-cards.js +1 -1
  68. package/dist/channels/slack/user-info.d.ts +2 -1
  69. package/dist/channels/slack/user-info.d.ts.map +1 -1
  70. package/dist/channels/slack/user-info.js +16 -1
  71. package/dist/channels.js +1 -1
  72. package/dist/docs/404.html +3 -3
  73. package/dist/docs/assets/{app.DXI7bwox.js → app.CaLG1pPt.js} +4 -4
  74. package/dist/docs/assets/chunks/@localSearchIndexroot.DvlKuIO-.js +1 -0
  75. package/dist/docs/assets/chunks/{VPLocalSearchBox.BrbO5mEe.js → VPLocalSearchBox.YsP_2wqD.js} +2 -2
  76. package/dist/docs/assets/chunks/{arc.BOG1yms8.js → arc.C2j9hR7c.js} +1 -1
  77. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.C0hsMZnZ.js → architectureDiagram-Q4EWVU46.C5qkGp7y.js} +1 -1
  78. package/dist/docs/assets/chunks/{baseUniq.H044KjKs.js → baseUniq.U6GgTHOD.js} +1 -1
  79. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BsRW6GoB.js → blockDiagram-DXYQGD6D.D51mJop2.js} +1 -1
  80. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.B9HV5PFR.js → c4Diagram-AHTNJAMY.w1d6QxV7.js} +1 -1
  81. package/dist/docs/assets/chunks/channel.BRSFxCcD.js +1 -0
  82. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CPoT_ajl.js → chunk-4BX2VUAB.B_A815un.js} +1 -1
  83. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DZBwWuCL.js → chunk-4TB4RGXK.DMrm-ZCb.js} +1 -1
  84. package/dist/docs/assets/chunks/{chunk-55IACEB6.CZ3yTiyq.js → chunk-55IACEB6.8qw6Xdal.js} +1 -1
  85. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.6DfvHSd8.js → chunk-EDXVE4YY.Cq_nHODn.js} +1 -1
  86. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CpBj8HfK.js → chunk-FMBD7UC4.B67ohCYn.js} +1 -1
  87. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.BdKo8YqS.js → chunk-OYMX7WX6.Bo8rQI8F.js} +1 -1
  88. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnXNyxJx.js → chunk-QZHKN3VN.BERUMfE9.js} +1 -1
  89. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.Cg1OcF8G.js → chunk-YZCP3GAM.DWG2tXIX.js} +1 -1
  90. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Cmtm6WkN.js +1 -0
  91. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Cmtm6WkN.js +1 -0
  92. package/dist/docs/assets/chunks/clone.JMC96Eo6.js +1 -0
  93. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.1SP8al9c.js → cose-bilkent-S5V4N54A.tezXBs9b.js} +1 -1
  94. package/dist/docs/assets/chunks/{dagre-KV5264BT.DS1L6hJt.js → dagre-KV5264BT.aSbEUwT7.js} +1 -1
  95. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.ChsausbG.js → diagram-5BDNPKRD.vnT6aJ57.js} +1 -1
  96. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.3XsptNWj.js → diagram-G4DWMVQ6.hGYdrDa2.js} +1 -1
  97. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DPA9Dk_P.js → diagram-MMDJMWI5.CmdSUP6L.js} +1 -1
  98. package/dist/docs/assets/chunks/{diagram-TYMM5635.BVswXWrB.js → diagram-TYMM5635.BbAnLEBB.js} +1 -1
  99. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BSak5OSP.js → erDiagram-SMLLAGMA.H40W4HWE.js} +1 -1
  100. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CQgN4TTz.js → flowDiagram-DWJPFMVM.BFMtUSv-.js} +1 -1
  101. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.GrT0kA4a.js → ganttDiagram-T4ZO3ILL.CbYiu7Dt.js} +1 -1
  102. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CdS7Ucll.js → gitGraphDiagram-UUTBAWPF.Cyc5mzZD.js} +1 -1
  103. package/dist/docs/assets/chunks/{graph.BVqKRmRo.js → graph.BRptDG1H.js} +1 -1
  104. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.C3C9FRto.js → infoDiagram-42DDH7IO.Bz6KCA3a.js} +1 -1
  105. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js → ishikawaDiagram-UXIWVN3A.DDJ_7_Fq.js} +1 -1
  106. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CaHMfK4b.js → journeyDiagram-VCZTEJTY.D0t_ltlb.js} +1 -1
  107. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CjhIUwcA.js → kanban-definition-6JOO6SKY.DyyNsMfi.js} +1 -1
  108. package/dist/docs/assets/chunks/{layout.CGU3gfSf.js → layout.Cbxq-Rhp.js} +1 -1
  109. package/dist/docs/assets/chunks/{linear.DaihpW_n.js → linear.DxGYL0MP.js} +1 -1
  110. package/dist/docs/assets/chunks/{min.BS-j8kHQ.js → min.DA5KL8wu.js} +1 -1
  111. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BVJ1Bbnk.js → mindmap-definition-QFDTVHPH.Bc72Utls.js} +1 -1
  112. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.Cz1WIv9r.js → pieDiagram-DEJITSTG.BtpHnIB_.js} +1 -1
  113. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DKLFxcjy.js → quadrantDiagram-34T5L4WZ.Cx4oCSRR.js} +1 -1
  114. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.BHegiK7x.js → requirementDiagram-MS252O5E.BC0hXWlW.js} +1 -1
  115. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DYkY6yPc.js → sankeyDiagram-XADWPNL6.Dg8T1SEp.js} +1 -1
  116. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DYQ1QUrI.js → sequenceDiagram-FGHM5R23.CWSdHYAF.js} +1 -1
  117. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.Iru8BsFo.js → stateDiagram-FHFEXIEX.0MVPRI28.js} +1 -1
  118. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.N4Am6sXd.js +1 -0
  119. package/dist/docs/assets/chunks/{theme.DaplWQhQ.js → theme.DO1avLBn.js} +2 -2
  120. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BwFA8hiX.js → timeline-definition-GMOUNBTQ.BuRinAVi.js} +1 -1
  121. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CZ60W1C_.js → vennDiagram-DHZGUBPP.DXf0PCoJ.js} +1 -1
  122. package/dist/docs/assets/chunks/wardley-RL74JXVD._eATmGtu.js +162 -0
  123. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.B69D2r8-.js → wardleyDiagram-NUSXRM2D.T4ThngYV.js} +1 -1
  124. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CLPZEIU9.js → xychartDiagram-5P7HB3ND.b4pZF3D5.js} +1 -1
  125. package/dist/docs/assets/{reference_connections.md.Bljpve-y.js → reference_connections.md.DLrgAd5f.js} +1 -1
  126. package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.js → reference_hooks.md.B-eGa2km.js} +3 -3
  127. package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.lean.js → reference_hooks.md.B-eGa2km.lean.js} +1 -1
  128. package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.js → reference_sessions.md.CyM7ARz1.js} +1 -1
  129. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  130. package/dist/docs/assets/{reference_tools.md.v3SXVSs_.js → reference_tools.md.DzIY9JzY.js} +3 -3
  131. package/dist/docs/assets/{reference_tools.md.v3SXVSs_.lean.js → reference_tools.md.DzIY9JzY.lean.js} +1 -1
  132. package/dist/docs/assets/{style.C130MVnH.css → style.Dwls12uf.css} +1 -1
  133. package/dist/docs/building-with-agents.html +37 -37
  134. package/dist/docs/deployment.html +37 -37
  135. package/dist/docs/evals.html +37 -37
  136. package/dist/docs/guides/agent-to-agent.html +37 -37
  137. package/dist/docs/guides/bitbucket.html +37 -37
  138. package/dist/docs/guides/cloud-agents.html +37 -37
  139. package/dist/docs/guides/convert-automation.html +37 -37
  140. package/dist/docs/guides/github.html +37 -37
  141. package/dist/docs/guides/gitlab.html +37 -37
  142. package/dist/docs/guides/grokbot-agents.html +37 -37
  143. package/dist/docs/guides/hooks.html +37 -37
  144. package/dist/docs/guides/improve.html +37 -37
  145. package/dist/docs/guides/jev.html +37 -37
  146. package/dist/docs/guides/mcp-oauth.html +37 -37
  147. package/dist/docs/guides/migrate.html +37 -37
  148. package/dist/docs/guides/opentelemetry.html +37 -37
  149. package/dist/docs/guides/slack.html +37 -37
  150. package/dist/docs/guides/webhooks.html +37 -37
  151. package/dist/docs/hashmap.json +1 -1
  152. package/dist/docs/hillclimbing.html +37 -37
  153. package/dist/docs/index.html +37 -37
  154. package/dist/docs/llms-full.txt +15 -2
  155. package/dist/docs/quickstart.html +37 -37
  156. package/dist/docs/reference/agent-config.html +37 -37
  157. package/dist/docs/reference/artifacts.html +37 -37
  158. package/dist/docs/reference/channels.html +37 -37
  159. package/dist/docs/reference/cli.html +37 -37
  160. package/dist/docs/reference/connections.html +39 -39
  161. package/dist/docs/reference/connections.md +2 -1
  162. package/dist/docs/reference/evals.html +37 -37
  163. package/dist/docs/reference/extensions.html +37 -37
  164. package/dist/docs/reference/hooks.html +39 -39
  165. package/dist/docs/reference/hooks.md +1 -0
  166. package/dist/docs/reference/http-api.html +37 -37
  167. package/dist/docs/reference/instructions.html +37 -37
  168. package/dist/docs/reference/playground.html +36 -36
  169. package/dist/docs/reference/project-layout.html +37 -37
  170. package/dist/docs/reference/prompt.html +37 -37
  171. package/dist/docs/reference/schedules.html +37 -37
  172. package/dist/docs/reference/sessions.html +37 -37
  173. package/dist/docs/reference/sessions.md +1 -1
  174. package/dist/docs/reference/skills.html +40 -40
  175. package/dist/docs/reference/subagents.html +37 -37
  176. package/dist/docs/reference/tools.html +39 -39
  177. package/dist/docs/reference/tools.md +11 -0
  178. package/dist/docs/templates/agentic-owners.html +37 -37
  179. package/dist/docs/templates/grokbot-agents.html +37 -37
  180. package/dist/docs/templates/security-reviewer.html +37 -37
  181. package/dist/docs/templates/thermo-quality-review.html +37 -37
  182. package/dist/docs/templates/thermo-review.html +37 -37
  183. package/dist/docs/templates/triage.html +37 -37
  184. package/dist/docs/troubleshooting.html +36 -36
  185. package/dist/evals/assertions.d.ts.map +1 -1
  186. package/dist/evals/assertions.js +21 -19
  187. package/dist/evals/expect.js +1 -1
  188. package/dist/evals/judge.js +1 -1
  189. package/dist/evals/reporters.js +8 -8
  190. package/dist/evals/run-facts.js +2 -2
  191. package/dist/evals.js +6 -6
  192. package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
  193. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  194. package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
  195. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +16 -0
  196. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  197. package/dist/extensions/cursor-cloud-agents/lib/backend.js +44 -3
  198. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  199. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts +23 -0
  200. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts.map +1 -0
  201. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.js +32 -0
  202. package/dist/extensions/cursor-cloud-agents/lib/repos.js +2 -2
  203. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -2
  204. package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts.map +1 -1
  205. package/dist/extensions/cursor-cloud-agents/lib/watch.js +1 -1
  206. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
  207. package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -8
  208. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  209. package/dist/extensions/cursor-grokbot-agents/extension.js +3 -3
  210. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  211. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +3 -3
  212. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +4 -4
  213. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  214. package/dist/extensions/improve/skills/yourself.js +1 -1
  215. package/dist/extensions/jev/extension.js +2 -2
  216. package/dist/extensions/jev/tools/evaluate.js +1 -1
  217. package/dist/extensions/slack-communication/tools/react.js +1 -1
  218. package/dist/files-backends/cursor-hosted.js +8 -8
  219. package/dist/files-backends/local-fs.js +1 -1
  220. package/dist/filesystem.d.ts.map +1 -1
  221. package/dist/filesystem.js +15 -15
  222. package/dist/internal/advertise-tools.d.ts +3 -2
  223. package/dist/internal/advertise-tools.d.ts.map +1 -1
  224. package/dist/internal/advertise-tools.js +11 -9
  225. package/dist/internal/approval-gate.js +1 -1
  226. package/dist/internal/artifacts-store.js +13 -13
  227. package/dist/internal/as-of.js +2 -2
  228. package/dist/internal/authored-alias-hooks.d.ts +4 -3
  229. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  230. package/dist/internal/authored-alias-hooks.js +16 -7
  231. package/dist/internal/authored-loaders.d.ts.map +1 -1
  232. package/dist/internal/authored-loaders.js +21 -5
  233. package/dist/internal/builtin-tools/reminders.js +2 -2
  234. package/dist/internal/chat-client.js +5 -5
  235. package/dist/internal/cli-ax.js +14 -14
  236. package/dist/internal/cli-bitbucket.js +10 -10
  237. package/dist/internal/cli-convert-automation.js +2 -2
  238. package/dist/internal/cli-cursor.js +2 -2
  239. package/dist/internal/cli-deploy.d.ts.map +1 -1
  240. package/dist/internal/cli-deploy.js +40 -40
  241. package/dist/internal/cli-docs.js +5 -5
  242. package/dist/internal/cli-github.js +15 -15
  243. package/dist/internal/cli-gitlab.js +10 -10
  244. package/dist/internal/cli-images.js +16 -16
  245. package/dist/internal/cli-manifest.js +1 -1
  246. package/dist/internal/cli-mcp-oauth.js +5 -5
  247. package/dist/internal/cli-mcp.js +3 -3
  248. package/dist/internal/cli-migrate.js +1 -1
  249. package/dist/internal/cli-skills.js +2 -2
  250. package/dist/internal/cli-slack.js +5 -5
  251. package/dist/internal/cloud-turn-cost.js +1 -1
  252. package/dist/internal/continuation-identity.js +6 -6
  253. package/dist/internal/conversation-mirror.js +5 -5
  254. package/dist/internal/convert-automation/convert-workflow.js +24 -24
  255. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  256. package/dist/internal/cursor/account-mcp.js +20 -20
  257. package/dist/internal/cursor/backend-client.js +6 -6
  258. package/dist/internal/cursor/credentials.js +1 -1
  259. package/dist/internal/cursor/store-api-client.js +1 -1
  260. package/dist/internal/cursor-account-mcp-auth.js +9 -9
  261. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  262. package/dist/internal/cursor-deployment-relay.js +9 -9
  263. package/dist/internal/cursor-event-relay.js +10 -10
  264. package/dist/internal/cursor-relay-core.js +2 -2
  265. package/dist/internal/deploy-manifest.d.ts +14 -0
  266. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  267. package/dist/internal/deploy-manifest.js +33 -10
  268. package/dist/internal/discovery/agent-config.js +2 -2
  269. package/dist/internal/discovery/agent.js +6 -6
  270. package/dist/internal/discovery/connections.js +5 -5
  271. package/dist/internal/discovery/cursor-plugin.js +12 -12
  272. package/dist/internal/discovery/extension-overlay.js +3 -3
  273. package/dist/internal/discovery/extensions.js +6 -6
  274. package/dist/internal/discovery/info.js +9 -9
  275. package/dist/internal/discovery/instructions.js +1 -1
  276. package/dist/internal/discovery/project.js +3 -3
  277. package/dist/internal/discovery/services.js +1 -1
  278. package/dist/internal/discovery/tools.js +1 -1
  279. package/dist/internal/docs-site.js +2 -2
  280. package/dist/internal/env-file.js +1 -1
  281. package/dist/internal/eval-run-store.js +7 -7
  282. package/dist/internal/eval-runner.d.ts.map +1 -1
  283. package/dist/internal/eval-runner.js +14 -14
  284. package/dist/internal/eval-transport.js +1 -1
  285. package/dist/internal/evals-client.d.ts.map +1 -1
  286. package/dist/internal/evals-client.js +4 -4
  287. package/dist/internal/event-log.js +8 -8
  288. package/dist/internal/event-mapper.js +13 -13
  289. package/dist/internal/expected-delivery-failure.js +2 -2
  290. package/dist/internal/filesystem/format.js +2 -2
  291. package/dist/internal/filesystem/nearest.js +3 -3
  292. package/dist/internal/filesystem/scratch.js +3 -3
  293. package/dist/internal/filesystem/tools.js +6 -6
  294. package/dist/internal/filesystem/walk.d.ts.map +1 -1
  295. package/dist/internal/filesystem/walk.js +2 -2
  296. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  297. package/dist/internal/framework-file-storage.js +6 -5
  298. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  299. package/dist/internal/framework-storage-selection.js +4 -2
  300. package/dist/internal/github-fanout.d.ts.map +1 -1
  301. package/dist/internal/github-fanout.js +3 -3
  302. package/dist/internal/guest-network.js +4 -4
  303. package/dist/internal/host-files.js +1 -1
  304. package/dist/internal/host-kv.js +2 -2
  305. package/dist/internal/hosted-catch-protocol.js +1 -1
  306. package/dist/internal/hosted-catch.js +1 -1
  307. package/dist/internal/hosted-delivery-protocol.d.ts +24 -0
  308. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  309. package/dist/internal/hosted-delivery-protocol.js +58 -14
  310. package/dist/internal/hosted-delivery.d.ts +6 -0
  311. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  312. package/dist/internal/hosted-delivery.js +64 -13
  313. package/dist/internal/hosted-eval-cases.js +4 -4
  314. package/dist/internal/hosted-execution-diag.js +3 -3
  315. package/dist/internal/hosted-managed-automation.d.ts +3 -3
  316. package/dist/internal/hosted-managed-automation.js +3 -3
  317. package/dist/internal/hosting.js +1 -1
  318. package/dist/internal/http-channel.js +1 -1
  319. package/dist/internal/http-control-plane-session.js +2 -2
  320. package/dist/internal/init-interview.js +7 -7
  321. package/dist/internal/init-project.d.ts.map +1 -1
  322. package/dist/internal/init-project.js +12 -12
  323. package/dist/internal/inline-stdio-mcp.js +2 -2
  324. package/dist/internal/install-cursor-skills.js +11 -11
  325. package/dist/internal/json-schema.js +1 -1
  326. package/dist/internal/local-control-plane.js +3 -3
  327. package/dist/internal/local-env.js +3 -3
  328. package/dist/internal/log-ring.js +1 -1
  329. package/dist/internal/logs-client.js +1 -1
  330. package/dist/internal/mcp-endpoint.js +8 -8
  331. package/dist/internal/mcp-host.d.ts.map +1 -1
  332. package/dist/internal/mcp-host.js +5 -5
  333. package/dist/internal/mcp-oauth-on-demand.js +3 -3
  334. package/dist/internal/mcp-oauth.js +5 -5
  335. package/dist/internal/net.js +2 -2
  336. package/dist/internal/otel/config.js +3 -3
  337. package/dist/internal/otel/runtime.js +13 -13
  338. package/dist/internal/peer-connections.js +2 -2
  339. package/dist/internal/persistent-stage-log-mirror.d.ts +57 -0
  340. package/dist/internal/persistent-stage-log-mirror.d.ts.map +1 -0
  341. package/dist/internal/persistent-stage-log-mirror.js +231 -0
  342. package/dist/internal/platform-schedule-sync.js +1 -1
  343. package/dist/internal/platform-timers.js +1 -1
  344. package/dist/internal/playground/static.js +2 -2
  345. package/dist/internal/playground/toolchain.js +2 -2
  346. package/dist/internal/playground-proxy.js +3 -3
  347. package/dist/internal/process-memory-telemetry.js +1 -1
  348. package/dist/internal/reminder-runner.d.ts +1 -1
  349. package/dist/internal/reminder-runner.d.ts.map +1 -1
  350. package/dist/internal/reminder-runner.js +14 -16
  351. package/dist/internal/reminder-store.js +1 -1
  352. package/dist/internal/resolved-connections.js +8 -8
  353. package/dist/internal/router.js +4 -4
  354. package/dist/internal/run-client.js +2 -2
  355. package/dist/internal/schedule-runner.d.ts +13 -2
  356. package/dist/internal/schedule-runner.d.ts.map +1 -1
  357. package/dist/internal/schedule-runner.js +48 -9
  358. package/dist/internal/sdk-runner.d.ts +2 -1
  359. package/dist/internal/sdk-runner.d.ts.map +1 -1
  360. package/dist/internal/sdk-runner.js +13 -8
  361. package/dist/internal/serve-restart.js +1 -1
  362. package/dist/internal/server.d.ts.map +1 -1
  363. package/dist/internal/server.js +101 -76
  364. package/dist/internal/session-cost.js +3 -3
  365. package/dist/internal/session-engine.d.ts +8 -0
  366. package/dist/internal/session-engine.d.ts.map +1 -1
  367. package/dist/internal/session-engine.js +183 -118
  368. package/dist/internal/session-live-publisher.d.ts +48 -0
  369. package/dist/internal/session-live-publisher.d.ts.map +1 -0
  370. package/dist/internal/session-live-publisher.js +415 -0
  371. package/dist/internal/session-run-log.js +6 -6
  372. package/dist/internal/sessions-client.js +3 -3
  373. package/dist/internal/skill-catalog.js +2 -2
  374. package/dist/internal/sleep.js +1 -1
  375. package/dist/internal/start-log-store.d.ts +5 -1
  376. package/dist/internal/start-log-store.d.ts.map +1 -1
  377. package/dist/internal/start-log-store.js +5 -3
  378. package/dist/internal/storage-coordinator.js +12 -12
  379. package/dist/internal/store-api-protocol.d.ts +51 -0
  380. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  381. package/dist/internal/store-api-protocol.js +39 -2
  382. package/dist/internal/store-mirror.js +4 -4
  383. package/dist/internal/stream-progress.d.ts.map +1 -1
  384. package/dist/internal/stream-progress.js +4 -0
  385. package/dist/internal/terminal-style.js +2 -2
  386. package/dist/internal/testing/conversation-identity-vectors.d.ts +48 -0
  387. package/dist/internal/testing/conversation-identity-vectors.d.ts.map +1 -0
  388. package/dist/internal/testing/conversation-identity-vectors.js +136 -0
  389. package/dist/internal/tool-call-retry.d.ts +87 -0
  390. package/dist/internal/tool-call-retry.d.ts.map +1 -0
  391. package/dist/internal/tool-call-retry.js +387 -0
  392. package/dist/internal/tool-result.js +3 -3
  393. package/dist/internal/trajectory.js +7 -7
  394. package/dist/internal/turn-governor.js +2 -2
  395. package/dist/internal/turn-outbox.js +1 -1
  396. package/dist/internal/update-check.d.ts.map +1 -1
  397. package/dist/internal/update-check.js +4 -2
  398. package/dist/internal/v2-hosting.d.ts +6 -0
  399. package/dist/internal/v2-hosting.d.ts.map +1 -1
  400. package/dist/internal/v2-hosting.js +7 -1
  401. package/dist/internal/workspace.js +4 -4
  402. package/dist/kv/memory-kv.js +3 -3
  403. package/dist/playground/assets/index-CzttDc-d.css +1 -0
  404. package/dist/playground/assets/{index-Be0-1hw2.js → index-DIiKbZ25.js} +42 -42
  405. package/dist/playground/index.html +2 -2
  406. package/dist/prompt.js +1 -1
  407. package/dist/storage-backends/cursor-hosted-v2.js +2 -2
  408. package/dist/storage-backends/file-kv.js +7 -7
  409. package/dist/storage-protocol.d.ts +7 -0
  410. package/dist/storage-protocol.d.ts.map +1 -1
  411. package/dist/storage-protocol.js +7 -0
  412. package/dist/storage.js +3 -3
  413. package/dist/types.d.ts +21 -4
  414. package/dist/types.d.ts.map +1 -1
  415. package/dist/types.js +4 -4
  416. package/docs/reference/connections.md +2 -1
  417. package/docs/reference/hooks.md +1 -0
  418. package/docs/reference/sessions.md +1 -1
  419. package/docs/reference/tools.md +11 -0
  420. package/package.json +6 -6
  421. package/templates/agentic-owners/bot/channels/github.ts +2 -2
  422. package/templates/agentic-owners/bot/lib/github.ts +7 -5
  423. package/templates/agentic-owners/bot/lib/owners/decision.ts +9 -9
  424. package/templates/agentic-owners/bot/lib/owners/handles.ts +2 -2
  425. package/templates/agentic-owners/bot/lib/owners/match.ts +5 -3
  426. package/templates/agentic-owners/bot/lib/owners/matching.ts +1 -1
  427. package/templates/agentic-owners/bot/lib/owners/parse.ts +4 -4
  428. package/templates/agentic-owners/bot/lib/owners/prompt.ts +1 -1
  429. package/templates/agentic-owners/bot/lib/review.ts +18 -17
  430. package/templates/agentic-owners/evals/owners.eval.ts +2 -2
  431. package/templates/agents-md/bot/lib/collect.ts +6 -6
  432. package/templates/agents-md/bot/lib/config.ts +1 -1
  433. package/templates/agents-md/bot/tools/apply_agents.ts +4 -4
  434. package/templates/code-wiki/bot/channels/github.ts +3 -3
  435. package/templates/code-wiki/bot/lib/repos.ts +1 -1
  436. package/templates/code-wiki/bot/tools/apply_wiki.ts +2 -2
  437. package/templates/demo/bot/lib/collect.ts +1 -1
  438. package/templates/demo/bot/lib/repos.ts +1 -1
  439. package/templates/demo/bot/tools/record_demo.ts +1 -1
  440. package/templates/pr-autofixer/bot/channels/github.ts +2 -2
  441. package/templates/pr-autofixer/bot/lib/merge-watch.ts +2 -2
  442. package/templates/pr-autofixer/bot/lib/repos.ts +2 -2
  443. package/templates/pr-autofixer/bot/lib/webhook-routing.ts +1 -1
  444. package/templates/security-help/bot/lib/repos.ts +1 -1
  445. package/templates/security-reviewer/bot/lib/repos.ts +1 -1
  446. package/templates/triage/bot/lib/actuate.ts +15 -15
  447. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +0 -1
  448. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +0 -1
  449. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +0 -1
  450. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +0 -1
  451. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +0 -1
  452. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +0 -1
  453. package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +0 -162
  454. package/dist/playground/assets/index-Clz6uHj9.css +0 -1
  455. /package/dist/docs/assets/{reference_connections.md.Bljpve-y.lean.js → reference_connections.md.DLrgAd5f.lean.js} +0 -0
  456. /package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.lean.js → reference_sessions.md.CyM7ARz1.lean.js} +0 -0
  457. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -80,6 +80,20 @@ export interface AgentDeployManifestDeclarations {
80
80
  */
81
81
  catch?: AgentDeployManifestCatchDeclaration;
82
82
  }>;
83
+ /**
84
+ * Authored `agent/schedules/*`. The v2 control plane compiles these into
85
+ * Temporal calendars at deploy time; a fire wakes a VM that runs the
86
+ * schedule (markdown task, or the `run` handler including any `receive`
87
+ * hand-off) within one delivery.
88
+ */
89
+ schedules?: AgentDeployManifestScheduleDeclaration[];
90
+ }
91
+ export interface AgentDeployManifestScheduleDeclaration {
92
+ /** Path under `agent/schedules/` without extension. */
93
+ id: string;
94
+ /** Five-field cron, evaluated in UTC. */
95
+ cron: string;
96
+ kind: "markdown" | "run";
83
97
  }
84
98
  export interface AgentDeployManifestCatchDeclaration {
85
99
  routes: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-manifest.d.ts","sourceRoot":"","sources":["../../src/internal/deploy-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy-manifest.d.ts","sourceRoot":"","sources":["../../src/internal/deploy-manifest.ts"],"names":[],"mappings":"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"}
@@ -80,6 +80,20 @@ const slackReplyDeclarationSchema = z.object({
80
80
  .regex(/^(?!.*(?:<!|<@))[^\r\n]{2,80}$/)
81
81
  .optional(),
82
82
  });
83
+ /**
84
+ * Hosted v2 schedule ids name the reserved `schedule:<id>` hosted-admission
85
+ * channel, which the control plane bounds at 128 characters.
86
+ */
87
+ const SCHEDULE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._/-]{0,99}$/;
88
+ const MAX_SCHEDULES = 64;
89
+ const scheduleDeclarationSchema = z.object({
90
+ id: z
91
+ .string()
92
+ .regex(SCHEDULE_ID_PATTERN, "hosted v2 schedule names are 1-100 letters, digits, `.`, `_`, `-`, or `/`, starting with a letter or digit")
93
+ .refine((id) => !id.split("/").includes(".."), "must not contain `..` segments"),
94
+ cron: z.string().min(1).max(128),
95
+ kind: z.enum(["markdown", "run"]),
96
+ });
83
97
  const agentDeployManifestV1Schema = z.object({
84
98
  manifestVersion: z.literal(DEPLOY_MANIFEST_VERSION),
85
99
  generatedAtMs: z.number().int().nonnegative(),
@@ -106,6 +120,7 @@ const agentDeployManifestV1Schema = z.object({
106
120
  slackChannelPosts: z.array(z.string().min(1).max(80)).max(64).optional(),
107
121
  }))
108
122
  .max(64),
123
+ schedules: z.array(scheduleDeclarationSchema).max(MAX_SCHEDULES).optional(),
109
124
  }),
110
125
  // Full `projectInfo` payload — opaque to the wire contract.
111
126
  info: z.record(z.unknown()),
@@ -120,7 +135,7 @@ export function buildAgentDeployManifest(project, options) {
120
135
  throw new Error(runtimeArchitectureError);
121
136
  }
122
137
  applyAgentContinuationDefaults(project);
123
- const channels = project.channels.map(channel => {
138
+ const channels = project.channels.map((channel) => {
124
139
  const architectureError = channelArchitectureError(project.agent.architecture, channel.definition);
125
140
  if (architectureError !== undefined) {
126
141
  throw new Error(`channels/${channel.id}: ${architectureError}`);
@@ -150,8 +165,8 @@ export function buildAgentDeployManifest(project, options) {
150
165
  // Same mapping as `july deploy` (cli-deploy.ts): channels declared public
151
166
  // via `publicEndpoint()` become alias-token-free route prefixes.
152
167
  const publicRoutePaths = project.channels
153
- .filter(channel => (channel.definition.auth ?? []).some(isPublicEndpointPolicy))
154
- .map(channel => `/v1/channels/${channel.id}`);
168
+ .filter((channel) => (channel.definition.auth ?? []).some(isPublicEndpointPolicy))
169
+ .map((channel) => `/v1/channels/${channel.id}`);
155
170
  const manifest = {
156
171
  manifestVersion: DEPLOY_MANIFEST_VERSION,
157
172
  generatedAtMs: options?.nowMs ?? Date.now(),
@@ -174,13 +189,21 @@ export function buildAgentDeployManifest(project, options) {
174
189
  persistent: project.agent.persistent,
175
190
  ...(project.agent.hosting?.image === undefined ? {} : { image: project.agent.hosting.image }),
176
191
  channels,
192
+ // v1 calendars stay engine-synced at boot; only v2 compiles declarations.
193
+ schedules: project.agent.architecture === "v2"
194
+ ? project.schedules.map((schedule) => ({
195
+ id: schedule.name,
196
+ cron: schedule.cron,
197
+ kind: schedule.kind,
198
+ }))
199
+ : undefined,
177
200
  },
178
201
  info: projectInfo(project),
179
202
  };
180
203
  const validation = agentDeployManifestV1Schema.safeParse(manifest);
181
204
  if (!validation.success) {
182
205
  const issues = validation.error.issues
183
- .map(issue => `${issue.path.join(".")}: ${issue.message}`)
206
+ .map((issue) => `${issue.path.join(".")}: ${issue.message}`)
184
207
  .join("; ");
185
208
  throw new Error(`Invalid Agent SDK deploy manifest: ${issues}`);
186
209
  }
@@ -207,7 +230,7 @@ export function channelCatchDeclaration(definition) {
207
230
  }
208
231
  const declared = (definition.auth ?? [])
209
232
  .map(catchAuthDeclaration)
210
- .filter(declaration => declaration !== undefined);
233
+ .filter((declaration) => declaration !== undefined);
211
234
  if (declared.length === 0) {
212
235
  return undefined;
213
236
  }
@@ -219,9 +242,9 @@ export function channelCatchDeclaration(definition) {
219
242
  // claim-checked, and senders keep sending the secret regardless of
220
243
  // whether anything still checks it. HMAC policies carry body digests,
221
244
  // not secrets, so nothing is lost by dropping them.
222
- const isPublic = declared.some(policy => policy.kind === "public");
245
+ const isPublic = declared.some((policy) => policy.kind === "public");
223
246
  const auth = isPublic
224
- ? [{ kind: "public" }, ...declared.filter(policy => policy.kind === "header")]
247
+ ? [{ kind: "public" }, ...declared.filter((policy) => policy.kind === "header")]
225
248
  : declared;
226
249
  if (routes.length > CATCH_MAX_ROUTES) {
227
250
  if (isPublic) {
@@ -238,7 +261,7 @@ export function channelCatchDeclaration(definition) {
238
261
  : `Catch channels may declare at most ${CATCH_MAX_AUTH_POLICIES} secret policies (got ${auth.length}).`);
239
262
  }
240
263
  return {
241
- routes: routes.map(route => ({ method: route.method, path: route.path })),
264
+ routes: routes.map((route) => ({ method: route.method, path: route.path })),
242
265
  auth,
243
266
  };
244
267
  }
@@ -252,11 +275,11 @@ export function channelCatchDeclaration(definition) {
252
275
  */
253
276
  export function channelCatchSecretNames(definition) {
254
277
  const declaration = channelCatchDeclaration(definition);
255
- if (declaration === undefined || declaration.auth.some(policy => policy.kind === "public")) {
278
+ if (declaration === undefined || declaration.auth.some((policy) => policy.kind === "public")) {
256
279
  return [];
257
280
  }
258
281
  return [
259
- ...new Set(declaration.auth.flatMap(policy => (policy.kind === "public" ? [] : [policy.secret]))),
282
+ ...new Set(declaration.auth.flatMap((policy) => (policy.kind === "public" ? [] : [policy.secret]))),
260
283
  ];
261
284
  }
262
285
  /**
@@ -107,7 +107,7 @@ export function resolveHosting(ctx, agentDir, hosting, extensions) {
107
107
  warn(`hosting.image: ${imageError}`);
108
108
  }
109
109
  }
110
- const mountedEgress = extensions.flatMap(extension => extension.hosting?.egressDomains ?? []);
110
+ const mountedEgress = extensions.flatMap((extension) => extension.hosting?.egressDomains ?? []);
111
111
  const egressDomains = [...new Set([...(hosting?.egressDomains ?? []), ...mountedEgress])];
112
112
  if (egressDomains.length > MAX_EGRESS_DOMAINS) {
113
113
  const withMounts = mountedEgress.length > 0 ? " with mounted extensions" : "";
@@ -116,7 +116,7 @@ export function resolveHosting(ctx, agentDir, hosting, extensions) {
116
116
  const secretNames = [
117
117
  ...new Set([
118
118
  ...(hosting?.secretNames ?? []),
119
- ...extensions.flatMap(extension => extension.hosting?.secretNames ?? []),
119
+ ...extensions.flatMap((extension) => extension.hosting?.secretNames ?? []),
120
120
  ]),
121
121
  ];
122
122
  if (egressDomains.length === 0 && secretNames.length === 0 && hosting?.image === undefined) {
@@ -115,7 +115,7 @@ export async function loadAgent(ctx, agentDir, options) {
115
115
  hasRoot,
116
116
  tools: authoredAllowlist,
117
117
  }));
118
- const clash = tools.find(tool => {
118
+ const clash = tools.find((tool) => {
119
119
  if (reservedNames.has(tool.name)) {
120
120
  return true;
121
121
  }
@@ -176,7 +176,7 @@ export async function loadAgent(ctx, agentDir, options) {
176
176
  // non-local agent that declares them must fail at serve start — never
177
177
  // run without the connection's tools or identity. (Hybrid per-send
178
178
  // cloud sessions fail closed in the session engine.)
179
- const perSessionConnection = connections.find(connection => connection.advertiseTools === true || connection.auth !== undefined);
179
+ const perSessionConnection = connections.find((connection) => connection.advertiseTools === true || connection.auth !== undefined);
180
180
  if (perSessionConnection !== undefined && runtime !== "local") {
181
181
  ctx.diagnostics.push({
182
182
  severity: "error",
@@ -189,7 +189,7 @@ export async function loadAgent(ctx, agentDir, options) {
189
189
  // strands authored scripts deserves a loud diagnostic, not silence.
190
190
  if (allowedTools !== undefined &&
191
191
  !allowedTools.includes("shell") &&
192
- tools.some(tool => tool.execution === "agent")) {
192
+ tools.some((tool) => tool.execution === "agent")) {
193
193
  ctx.diagnostics.push({
194
194
  severity: "warning",
195
195
  path: displayPath(ctx, join(agentDir, "agent.ts")),
@@ -227,7 +227,7 @@ export async function loadAgent(ctx, agentDir, options) {
227
227
  }
228
228
  if (runtime === "cloud") {
229
229
  warnCloudRuntimeLimitations(ctx, agentDir, {
230
- agentTools: tools.filter(tool => tool.execution === "agent").length,
230
+ agentTools: tools.filter((tool) => tool.execution === "agent").length,
231
231
  skills: skills.length,
232
232
  seedFiles: seedFiles.length,
233
233
  hasCloudOptions: cloud !== undefined,
@@ -237,8 +237,8 @@ export async function loadAgent(ctx, agentDir, options) {
237
237
  // After appendBuiltinTools so opted-in built-ins (server-executed) count.
238
238
  if (runtime === "grokbot") {
239
239
  checkGrokBotRuntimeLimitations(ctx, agentDir, {
240
- serverTools: tools.filter(tool => tool.execution === "server").length,
241
- agentTools: tools.filter(tool => tool.execution === "agent").length,
240
+ serverTools: tools.filter((tool) => tool.execution === "server").length,
241
+ agentTools: tools.filter((tool) => tool.execution === "agent").length,
242
242
  skills: skills.length,
243
243
  seedFiles: seedFiles.length,
244
244
  connections: connections.length + hostConnections.length,
@@ -27,7 +27,7 @@ function hasAuthorizationHeader(headers) {
27
27
  if (headers === undefined) {
28
28
  return false;
29
29
  }
30
- return Object.keys(headers).some(key => key.toLowerCase() === "authorization");
30
+ return Object.keys(headers).some((key) => key.toLowerCase() === "authorization");
31
31
  }
32
32
  function parseConnectionEffects(effects) {
33
33
  if (effects === undefined) {
@@ -53,7 +53,7 @@ function parseConnectionTools(tools) {
53
53
  if (!Array.isArray(tools) || tools.length === 0) {
54
54
  return { ok: false };
55
55
  }
56
- if (tools.some(name => typeof name !== "string")) {
56
+ if (tools.some((name) => typeof name !== "string")) {
57
57
  return { ok: false };
58
58
  }
59
59
  const normalized = normalizeConnectionTools(tools);
@@ -107,7 +107,7 @@ function connectionTransport(connection) {
107
107
  export async function loadHostConnections(ctx, agentDir, modelConnections) {
108
108
  const hostDir = join(agentDir, "host-connections");
109
109
  const loaded = await loadConnections(ctx, hostDir, "host");
110
- const modelNames = new Set(modelConnections.map(connection => connection.name));
110
+ const modelNames = new Set(modelConnections.map((connection) => connection.name));
111
111
  const hostConnections = [];
112
112
  for (const connection of loaded) {
113
113
  if (modelNames.has(connection.name)) {
@@ -330,7 +330,7 @@ export async function compileConnection(ctx, entryPath, name, connection, role)
330
330
  }
331
331
  if ("cursorAccount" in transport &&
332
332
  transport.servers !== undefined &&
333
- (transport.servers.length === 0 || transport.servers.some(server => isBlank(server)))) {
333
+ (transport.servers.length === 0 || transport.servers.some((server) => isBlank(server)))) {
334
334
  ctx.diagnostics.push({
335
335
  severity: "error",
336
336
  path: displayPath(ctx, entryPath),
@@ -353,7 +353,7 @@ export async function compileConnection(ctx, entryPath, name, connection, role)
353
353
  ctx.diagnostics.push({
354
354
  severity: "warning",
355
355
  path: displayPath(ctx, entryPath),
356
- message: `MCP connection "${name}" templates ${unresolved.map(variable => `\${${variable}}`).join(", ")}, which the environment does not set. The value resolves when the connection opens, so hosted deployments are fine; locally, set it before the turn or the credential is empty.`,
356
+ message: `MCP connection "${name}" templates ${unresolved.map((variable) => `\${${variable}}`).join(", ")}, which the environment does not set. The value resolves when the connection opens, so hosted deployments are fine; locally, set it before the turn or the credential is empty.`,
357
357
  });
358
358
  }
359
359
  return {
@@ -21,12 +21,12 @@ const PLUGIN_ROOT_VARIABLES = new Set(["CURSOR_PLUGIN_ROOT", "CLAUDE_PLUGIN_ROOT
21
21
  /** A component slot's declaration: one directory or a list of paths. */
22
22
  const pathsSchema = z
23
23
  .union([z.string(), z.array(z.string())])
24
- .transform(value => (typeof value === "string" ? [value] : value));
24
+ .transform((value) => (typeof value === "string" ? [value] : value));
25
25
  /** A blank or null value reads as absent, as a missing key would. */
26
26
  const text = z
27
27
  .string()
28
28
  .nullish()
29
- .transform(value => value === undefined || value === null || value.trim() === "" ? undefined : value);
29
+ .transform((value) => value === undefined || value === null || value.trim() === "" ? undefined : value);
30
30
  const manifestSchema = z.object({
31
31
  description: text.optional(),
32
32
  skills: pathsSchema.optional(),
@@ -41,11 +41,11 @@ const manifestSchema = z.object({
41
41
  z.array(z.union([z.string(), z.record(z.unknown())])),
42
42
  ])
43
43
  .optional()
44
- .transform(value => {
44
+ .transform((value) => {
45
45
  const items = value === undefined || Array.isArray(value) ? (value ?? []) : [value];
46
46
  return {
47
- paths: items.filter(item => typeof item === "string"),
48
- inline: items.filter(item => typeof item !== "string"),
47
+ paths: items.filter((item) => typeof item === "string"),
48
+ inline: items.filter((item) => typeof item !== "string"),
49
49
  };
50
50
  }),
51
51
  });
@@ -84,7 +84,7 @@ export async function readCursorPlugin(ctx, root, mountPath, variables, overlaid
84
84
  };
85
85
  const skills = await loadPluginSkills(plugin, manifest.data.skills);
86
86
  for (const command of await loadPluginCommands(plugin, manifest.data.commands)) {
87
- if (skills.some(skill => skill.name === command.name)) {
87
+ if (skills.some((skill) => skill.name === command.name)) {
88
88
  ctx.diagnostics.push({
89
89
  severity: "warning",
90
90
  path: displayPath(ctx, root),
@@ -170,7 +170,7 @@ async function loadPluginSkills(plugin, declared) {
170
170
  const skills = [];
171
171
  for (const dir of dirs) {
172
172
  const skill = await readSkillDir(plugin, dir);
173
- if (skill !== undefined && !skills.some(s => s.name === skill.name)) {
173
+ if (skill !== undefined && !skills.some((s) => s.name === skill.name)) {
174
174
  skills.push(skill);
175
175
  }
176
176
  }
@@ -226,7 +226,7 @@ async function loadPluginAgents(plugin, declared) {
226
226
  for (const path of await componentFiles(plugin, declared, "agents", MARKDOWN_EXTENSIONS)) {
227
227
  const { data, body } = await readMarkdown(plugin, path);
228
228
  const name = componentName(plugin, data.name ?? fileStem(path), path);
229
- if (name === undefined || agents.some(agent => agent.name === name)) {
229
+ if (name === undefined || agents.some((agent) => agent.name === name)) {
230
230
  continue;
231
231
  }
232
232
  if (isBlank(body)) {
@@ -311,7 +311,7 @@ function mcpServersOf(data) {
311
311
  }
312
312
  function serverConnection(plugin, name, raw, path) {
313
313
  const unresolved = new Set();
314
- const expanded = expandPlaceholders(raw, key => {
314
+ const expanded = expandPlaceholders(raw, (key) => {
315
315
  if (PLUGIN_ROOT_VARIABLES.has(key)) {
316
316
  return plugin.root;
317
317
  }
@@ -321,7 +321,7 @@ function serverConnection(plugin, name, raw, path) {
321
321
  plugin.ctx.diagnostics.push({
322
322
  severity: "error",
323
323
  path: displayPath(plugin.ctx, path),
324
- message: `MCP server "${name}" needs ${[...unresolved].map(v => `\${${v}}`).join(", ")}. Pass it in cursorPlugin({ variables }) or set it in the environment.`,
324
+ message: `MCP server "${name}" needs ${[...unresolved].map((v) => `\${${v}}`).join(", ")}. Pass it in cursorPlugin({ variables }) or set it in the environment.`,
325
325
  });
326
326
  return undefined;
327
327
  }
@@ -395,7 +395,7 @@ function expandPlaceholders(value, lookup, unresolved) {
395
395
  });
396
396
  }
397
397
  if (Array.isArray(value)) {
398
- return value.map(item => expandPlaceholders(item, lookup, unresolved));
398
+ return value.map((item) => expandPlaceholders(item, lookup, unresolved));
399
399
  }
400
400
  if (isRecord(value)) {
401
401
  const out = {};
@@ -433,7 +433,7 @@ async function componentFiles(plugin, declared, folder, extensions) {
433
433
  files.push(path);
434
434
  }
435
435
  }
436
- return files.filter(file => extensions.has(extname(file)));
436
+ return files.filter((file) => extensions.has(extname(file)));
437
437
  }
438
438
  /** Manifest paths resolve against the plugin root; escaping ones are refused, as in Cursor. */
439
439
  function declaredPaths(plugin, declared) {
@@ -34,13 +34,13 @@ export async function overlaySlot(ctx, site, contributed, entries, slot) {
34
34
  }
35
35
  }
36
36
  export async function overlaySkills(ctx, site, contributed, dir) {
37
- await overlayNamed(ctx, site, contributed, dir, "disableSkill", onDisable => loadSkills(ctx, dir, onDisable));
37
+ await overlayNamed(ctx, site, contributed, dir, "disableSkill", (onDisable) => loadSkills(ctx, dir, onDisable));
38
38
  }
39
39
  export async function overlayHooks(ctx, site, contributed, dir) {
40
- await overlayNamed(ctx, site, contributed, dir, "disableHook", onDisable => loadHooks(ctx, dir, onDisable));
40
+ await overlayNamed(ctx, site, contributed, dir, "disableHook", (onDisable) => loadHooks(ctx, dir, onDisable));
41
41
  }
42
42
  export async function overlaySchedules(ctx, site, contributed, dir) {
43
- await overlayNamed(ctx, site, contributed, dir, "disableSchedule", onDisable => loadSchedules(ctx, dir, onDisable));
43
+ await overlayNamed(ctx, site, contributed, dir, "disableSchedule", (onDisable) => loadSchedules(ctx, dir, onDisable));
44
44
  }
45
45
  export async function overlayChannels(ctx, site, contributed, dir) {
46
46
  if (!(await isDirectory(dir))) {
@@ -38,7 +38,7 @@ export async function appendExtensions(ctx, extensionsDir, into) {
38
38
  if (site === undefined) {
39
39
  continue;
40
40
  }
41
- if (extensions.some(extension => extension.name === site.ns)) {
41
+ if (extensions.some((extension) => extension.name === site.ns)) {
42
42
  ctx.diagnostics.push({
43
43
  severity: "error",
44
44
  path: displayPath(ctx, path),
@@ -129,7 +129,7 @@ async function mountExtension(ctx, site, mount, into) {
129
129
  for (const agent of tree.agents) {
130
130
  subagents.set(agent.name, subagent(agent.name, agent));
131
131
  }
132
- const seedFiles = new Map(tree.seedFiles.map(seed => [seed.relativePath, seed]));
132
+ const seedFiles = new Map(tree.seedFiles.map((seed) => [seed.relativePath, seed]));
133
133
  let artifacts = tree.artifacts;
134
134
  let instructions = tree.instructions;
135
135
  if (site.overlayDir !== undefined) {
@@ -231,7 +231,7 @@ async function mountExtension(ctx, site, mount, into) {
231
231
  mounted.instructions = true;
232
232
  }
233
233
  for (const seed of seedFiles.values()) {
234
- if (into.seedFiles.some(existing => existing.relativePath === seed.relativePath)) {
234
+ if (into.seedFiles.some((existing) => existing.relativePath === seed.relativePath)) {
235
235
  ctx.diagnostics.push({
236
236
  severity: "warning",
237
237
  path: displayPath(ctx, seed.sourcePath),
@@ -272,7 +272,7 @@ async function readExtensionTree(ctx, site, mount, root) {
272
272
  const connectionOverlay = site.overlayDir === undefined
273
273
  ? []
274
274
  : await moduleEntries(ctx, join(site.overlayDir, "mcp-connections"), "connection");
275
- const plugin = await readCursorPlugin(ctx, root, site.mountPath, mount.extension.variables, new Set(connectionOverlay.map(entry => entry.name)));
275
+ const plugin = await readCursorPlugin(ctx, root, site.mountPath, mount.extension.variables, new Set(connectionOverlay.map((entry) => entry.name)));
276
276
  if (plugin === undefined) {
277
277
  return undefined;
278
278
  }
@@ -323,10 +323,10 @@ function namespaceSubagent(composed, child) {
323
323
  };
324
324
  }
325
325
  function byName(items) {
326
- return new Map(items.map(item => [item.name, item]));
326
+ return new Map(items.map((item) => [item.name, item]));
327
327
  }
328
328
  function byId(items) {
329
- return new Map(items.map(item => [item.id, item]));
329
+ return new Map(items.map((item) => [item.id, item]));
330
330
  }
331
331
  /**
332
332
  * Agent-singleton slots: one runtime (`agent.ts`), one storage backend,
@@ -54,7 +54,7 @@ export function projectInfo(project) {
54
54
  ? `${agent.instructions.slice(0, 277)}...`
55
55
  : agent.instructions,
56
56
  },
57
- tools: agent.tools.map(tool => ({
57
+ tools: agent.tools.map((tool) => ({
58
58
  name: tool.name,
59
59
  description: tool.description,
60
60
  execution: tool.execution,
@@ -62,12 +62,12 @@ export function projectInfo(project) {
62
62
  effect: tool.effect,
63
63
  inputSchema: tool.inputSchema,
64
64
  })),
65
- skills: agent.skills.map(skill => ({
65
+ skills: agent.skills.map((skill) => ({
66
66
  name: skill.name,
67
67
  description: skill.description,
68
68
  })),
69
69
  extensions: agent.extensions ?? [],
70
- connections: agent.connections.map(connection => ({
70
+ connections: agent.connections.map((connection) => ({
71
71
  name: connection.name,
72
72
  transport: connectionTransportLabel(connection.transport),
73
73
  advertiseTools: connection.advertiseTools,
@@ -77,17 +77,17 @@ export function projectInfo(project) {
77
77
  disallowedTools: connection.disallowedTools,
78
78
  cursorAccountServers: "cursorAccount" in connection.transport ? (connection.transport.servers ?? "*") : undefined,
79
79
  })),
80
- subagents: agent.subagents.map(subagent => ({
80
+ subagents: agent.subagents.map((subagent) => ({
81
81
  name: subagent.name,
82
82
  description: subagent.description,
83
83
  model: subagent.model,
84
84
  })),
85
85
  channels: [
86
86
  { id: "http", routes: httpRoutes },
87
- ...project.channels.map(channel => {
87
+ ...project.channels.map((channel) => {
88
88
  const info = {
89
89
  id: channel.id,
90
- routes: (channel.definition.routes ?? []).map(r => {
90
+ routes: (channel.definition.routes ?? []).map((r) => {
91
91
  const routeInfo = {
92
92
  method: r.method,
93
93
  path: r.path,
@@ -136,17 +136,17 @@ export function projectInfo(project) {
136
136
  return info;
137
137
  }),
138
138
  ],
139
- schedules: project.schedules.map(schedule => ({
139
+ schedules: project.schedules.map((schedule) => ({
140
140
  name: schedule.name,
141
141
  cron: schedule.cron,
142
142
  kind: schedule.kind,
143
143
  })),
144
144
  reminders: (project.reminders ?? []).length === 0
145
145
  ? undefined
146
- : (project.reminders ?? []).map(reminder => ({
146
+ : (project.reminders ?? []).map((reminder) => ({
147
147
  name: reminder.name,
148
148
  })),
149
- hooks: project.hooks.map(hook => hook.name),
149
+ hooks: project.hooks.map((hook) => hook.name),
150
150
  storage: project.storage === undefined ? undefined : { name: project.storage.name },
151
151
  artifacts: project.artifacts === undefined
152
152
  ? undefined
@@ -40,7 +40,7 @@ export async function loadInstructions(ctx, agentDir, config, isRoot) {
40
40
  if (config?.instructions !== undefined && !isBlank(config.instructions)) {
41
41
  parts.push(config.instructions.trim());
42
42
  }
43
- const combined = parts.filter(part => part !== "").join("\n\n");
43
+ const combined = parts.filter((part) => part !== "").join("\n\n");
44
44
  if (combined === "") {
45
45
  if (isRoot) {
46
46
  ctx.diagnostics.push({
@@ -167,7 +167,7 @@ export async function loadAgentProject(dir, options = {}) {
167
167
  });
168
168
  const { channels, httpChannelDefinition } = await loadChannels(ctx, join(agentDir, "channels"));
169
169
  for (const channel of projectSlots.channels) {
170
- if (channel.id === "http" || channels.some(c => c.id === channel.id)) {
170
+ if (channel.id === "http" || channels.some((c) => c.id === channel.id)) {
171
171
  ctx.diagnostics.push({
172
172
  severity: "error",
173
173
  path: displayPath(ctx, join(agentDir, "extensions")),
@@ -256,11 +256,11 @@ async function mergeProjectArtifacts(ctx, agentDir, extra) {
256
256
  }
257
257
  /** True when the project has diagnostics that must block serving. */
258
258
  export function hasErrorDiagnostics(project) {
259
- return project.diagnostics.some(d => d.severity === "error");
259
+ return project.diagnostics.some((d) => d.severity === "error");
260
260
  }
261
261
  export function formatDiagnostics(diagnostics) {
262
262
  return diagnostics
263
- .map(d => {
263
+ .map((d) => {
264
264
  const location = d.path === undefined ? "" : ` (${d.path})`;
265
265
  return `${d.severity}: ${d.message}${location}`;
266
266
  })
@@ -104,7 +104,7 @@ export async function appendArtifactTool(ctx, agentDir, agent, artifacts) {
104
104
  return;
105
105
  }
106
106
  const artifactsPath = displayPath(ctx, (await findModuleFile(agentDir, "artifacts")) ?? join(agentDir, "artifacts.ts"));
107
- if (agent.tools.some(t => t.name === TAG_ARTIFACT_TOOL_NAME)) {
107
+ if (agent.tools.some((t) => t.name === TAG_ARTIFACT_TOOL_NAME)) {
108
108
  ctx.diagnostics.push({
109
109
  severity: "warning",
110
110
  path: artifactsPath,
@@ -129,7 +129,7 @@ export function appendBuiltinTools(ctx, agentDir, tools, config) {
129
129
  }
130
130
  const agentPath = displayPath(ctx, join(agentDir, "agent.ts"));
131
131
  for (const tool of builtin) {
132
- const existing = tools.find(t => t.name === tool.name);
132
+ const existing = tools.find((t) => t.name === tool.name);
133
133
  if (existing !== undefined) {
134
134
  const owner = existing.extension === undefined ? "Authored" : `Extension "${existing.extension}"`;
135
135
  ctx.diagnostics.push({
@@ -86,7 +86,7 @@ export function docsSiteExists(distDir = docsDistDir()) {
86
86
  export function resolveDocsFile(requestPath, distDir = docsDistDir()) {
87
87
  const decoded = requestPath
88
88
  .split("/")
89
- .filter(part => part !== "")
89
+ .filter((part) => part !== "")
90
90
  .join("/");
91
91
  const normalized = normalize(decoded === "" ? "." : decoded);
92
92
  if (normalized.startsWith("..") || normalized.includes(`..${sep}`)) {
@@ -161,7 +161,7 @@ export async function ensureDocsSiteBundle(logger = console.log) {
161
161
  stdio: "inherit",
162
162
  });
163
163
  child.on("error", reject);
164
- child.on("exit", exitCode => resolve(exitCode ?? 1));
164
+ child.on("exit", (exitCode) => resolve(exitCode ?? 1));
165
165
  });
166
166
  if (code !== 0) {
167
167
  throw new Error(`docs vitepress build failed (exit ${code})`);
@@ -62,7 +62,7 @@ export async function ensureEnvLocalGitignored(dir) {
62
62
  const existing = await readOptionalFile(path);
63
63
  const covered = existing
64
64
  .split(/\r?\n/)
65
- .some(line => /^\.env(\.local\*?|\.\*|\*)$/.test(line.trim()));
65
+ .some((line) => /^\.env(\.local\*?|\.\*|\*)$/.test(line.trim()));
66
66
  if (covered) {
67
67
  return false;
68
68
  }
@@ -29,7 +29,7 @@ export class EvalRunStore {
29
29
  await this.hydrate();
30
30
  const { evals, config } = await discoverEvals(this.projectRoot);
31
31
  return {
32
- evals: evals.map(e => ({
32
+ evals: evals.map((e) => ({
33
33
  id: e.id,
34
34
  fileId: e.fileId,
35
35
  ...(e.definition.description === undefined
@@ -86,7 +86,7 @@ export class EvalRunStore {
86
86
  throw new EvalRunEmptyError();
87
87
  }
88
88
  const runId = `evalrun_${randomUUID().replace(/-/g, "").slice(0, 16)}`;
89
- const cases = selected.map(e => discoveredToPending(e));
89
+ const cases = selected.map((e) => discoveredToPending(e));
90
90
  const snapshot = {
91
91
  runId,
92
92
  status: "running",
@@ -259,12 +259,12 @@ export class EvalRunStore {
259
259
  ...(opts.bearerToken === undefined ? {} : { bearerToken: opts.bearerToken }),
260
260
  ...(opts.verbose === undefined ? {} : { verbose: opts.verbose }),
261
261
  ...(opts.timeoutMs === undefined ? {} : { timeoutMs: opts.timeoutMs }),
262
- onCaseStart: id => {
262
+ onCaseStart: (id) => {
263
263
  const run = this.runs.get(runId);
264
264
  if (run === undefined || run.status === "cancelled") {
265
265
  return;
266
266
  }
267
- const c = run.cases.find(x => x.id === id);
267
+ const c = run.cases.find((x) => x.id === id);
268
268
  if (c !== undefined) {
269
269
  c.status = "running";
270
270
  c.inputs = [];
@@ -281,7 +281,7 @@ export class EvalRunStore {
281
281
  if (run === undefined) {
282
282
  return;
283
283
  }
284
- const c = run.cases.find(x => x.id === id);
284
+ const c = run.cases.find((x) => x.id === id);
285
285
  if (c === undefined) {
286
286
  return;
287
287
  }
@@ -300,7 +300,7 @@ export class EvalRunStore {
300
300
  c.finalText = event.data.text;
301
301
  }
302
302
  },
303
- onCaseDone: result => {
303
+ onCaseDone: (result) => {
304
304
  this.applyCaseResult(runId, result);
305
305
  const run = this.runs.get(runId);
306
306
  if (run !== undefined) {
@@ -347,7 +347,7 @@ export class EvalRunStore {
347
347
  if (run === undefined) {
348
348
  return;
349
349
  }
350
- const c = run.cases.find(x => x.id === result.id);
350
+ const c = run.cases.find((x) => x.id === result.id);
351
351
  if (c === undefined) {
352
352
  return;
353
353
  }
@@ -1 +1 @@
1
- {"version":3,"file":"eval-runner.d.ts","sourceRoot":"","sources":["../../src/internal/eval-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eval-runner.d.ts","sourceRoot":"","sources":["../../src/internal/eval-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,KAAK,EAEV,eAAe,EAGhB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EAEd,YAAY,EACZ,kBAAkB,EAClB,aAAa,EAOd,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAC;AAI9D,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,qBAAqB,CAAC;AAKjF,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,kFAAkF;IAClF,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;QACjC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;KACjC,CAAC;IACF,wEAAwE;IACxE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA8BD,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAwB,GAC9F,OAAO,CAAC;IACT,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CACjC,CAAC,CA0CD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAmBvD;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,OAAO,GAAE,oBAAyB,GACjC,cAAc,EAAE,CAYlB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAsF3F;AA0DD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAWvE;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,SAAS,cAAc,EAAE,GAC/B,cAAc,EAAE,EAAE,CAiBpB;AAqBD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,SAAS,EAAE,aAAa,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAQxB"}