@cursor/bdk 0.2.2 → 0.2.4

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 (697) hide show
  1. package/AGENTS.md +1 -1
  2. package/dist/bin/agent-serve.js +32 -8
  3. package/dist/channels/github/auth.d.ts.map +1 -1
  4. package/dist/channels/github/auth.js +36 -5
  5. package/dist/channels/slack/attachments.d.ts +2 -1
  6. package/dist/channels/slack/attachments.d.ts.map +1 -1
  7. package/dist/channels/slack/attachments.js +19 -9
  8. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  9. package/dist/channels/slack/dispatch.js +26 -24
  10. package/dist/channels/slack/thread-context.d.ts +21 -11
  11. package/dist/channels/slack/thread-context.d.ts.map +1 -1
  12. package/dist/channels/slack/thread-context.js +75 -27
  13. package/dist/connections.d.ts +1 -1
  14. package/dist/connections.js +1 -1
  15. package/dist/docs/404.html +2 -2
  16. package/dist/docs/assets/{app.DtYVVVyK.js → app.4kQ8Db_q.js} +4 -4
  17. package/dist/docs/assets/chunks/@localSearchIndexroot.CvuAJ0My.js +1 -0
  18. package/dist/docs/assets/chunks/{VPLocalSearchBox.D47xT7J4.js → VPLocalSearchBox.DY1RwB8Q.js} +1 -1
  19. package/dist/docs/assets/chunks/{arc.CDJ6xzxR.js → arc.CxE_fSPK.js} +1 -1
  20. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.l1Xnjd3N.js → architectureDiagram-Q4EWVU46.CPX426ui.js} +1 -1
  21. package/dist/docs/assets/chunks/{baseUniq.x-finShZ.js → baseUniq.CB52JrKG.js} +1 -1
  22. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.COC3qynH.js → blockDiagram-DXYQGD6D.J0cNaQCL.js} +1 -1
  23. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.DdQO850E.js → c4Diagram-AHTNJAMY.DJn3vEGT.js} +1 -1
  24. package/dist/docs/assets/chunks/channel.BoNycAoN.js +1 -0
  25. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.Dpn8omLk.js → chunk-4BX2VUAB.Dao618F6.js} +1 -1
  26. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C0XWStUN.js → chunk-4TB4RGXK.QW8Rhjai.js} +1 -1
  27. package/dist/docs/assets/chunks/{chunk-55IACEB6.DsKSZfIM.js → chunk-55IACEB6.DfRLLKF_.js} +1 -1
  28. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.dNU6JDu6.js → chunk-EDXVE4YY.CIV2ApKQ.js} +1 -1
  29. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DN41fxKE.js → chunk-FMBD7UC4.BEheSuxp.js} +1 -1
  30. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.COpKCZus.js → chunk-OYMX7WX6.CUN88ENB.js} +1 -1
  31. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.HDB-azx2.js → chunk-QZHKN3VN.CgqCs8b_.js} +1 -1
  32. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.DEeX_a2j.js → chunk-YZCP3GAM.iCH0nnTJ.js} +1 -1
  33. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C4x07Gkj.js +1 -0
  34. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C4x07Gkj.js +1 -0
  35. package/dist/docs/assets/chunks/clone.Db22cH_-.js +1 -0
  36. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.C3yGL2A8.js → cose-bilkent-S5V4N54A.BLcUxhWE.js} +1 -1
  37. package/dist/docs/assets/chunks/{dagre-KV5264BT.Bpl24en4.js → dagre-KV5264BT.Ep7LofOm.js} +1 -1
  38. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.nFco6seU.js → diagram-5BDNPKRD.Bzf4GSQ4.js} +1 -1
  39. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DXhA6DWR.js → diagram-G4DWMVQ6.DD6Jh-eM.js} +1 -1
  40. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.8GoOYcwk.js → diagram-MMDJMWI5.oOIl8bWd.js} +1 -1
  41. package/dist/docs/assets/chunks/{diagram-TYMM5635.DDBlqvlJ.js → diagram-TYMM5635.DHs85Ade.js} +1 -1
  42. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.vl_N81P4.js → erDiagram-SMLLAGMA.BIb5ghCk.js} +1 -1
  43. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.Cteg8g7I.js → flowDiagram-DWJPFMVM.DV4paY9k.js} +1 -1
  44. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.D4aMhlMM.js → ganttDiagram-T4ZO3ILL.AyEKA6_v.js} +1 -1
  45. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DF_J0D4q.js → gitGraphDiagram-UUTBAWPF.BltiCDFo.js} +1 -1
  46. package/dist/docs/assets/chunks/{graph.DJs0LDCf.js → graph.DzuEYGdC.js} +1 -1
  47. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.Bb-4RQwg.js → infoDiagram-42DDH7IO.BV2l981J.js} +1 -1
  48. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DEtQRSbc.js → ishikawaDiagram-UXIWVN3A.BA4Izf-m.js} +1 -1
  49. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.DhQQ75FA.js → journeyDiagram-VCZTEJTY.DjaFbFS3.js} +1 -1
  50. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.C4gEw3Rk.js → kanban-definition-6JOO6SKY.CfTFieDs.js} +1 -1
  51. package/dist/docs/assets/chunks/{layout.DT-PGlXa.js → layout.DzfWqTBV.js} +1 -1
  52. package/dist/docs/assets/chunks/{linear.BMMe__JW.js → linear.BO6mpulV.js} +1 -1
  53. package/dist/docs/assets/chunks/{min.XyaU9K9Q.js → min.BGgTadgT.js} +1 -1
  54. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CbBM6xZ-.js → mindmap-definition-QFDTVHPH.DPuIXVWY.js} +1 -1
  55. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DFJoIVou.js → pieDiagram-DEJITSTG.BOnl3bBg.js} +1 -1
  56. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CQjkDYqb.js → quadrantDiagram-34T5L4WZ.DNB6Ckdc.js} +1 -1
  57. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.D-mK-JQu.js → requirementDiagram-MS252O5E.D5-Qo7vb.js} +1 -1
  58. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BStQInpd.js → sankeyDiagram-XADWPNL6.8t65cesf.js} +1 -1
  59. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.CA_eooPJ.js → sequenceDiagram-FGHM5R23.CaG07BdS.js} +1 -1
  60. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BXl-b7ad.js → stateDiagram-FHFEXIEX.TKOweTB6.js} +1 -1
  61. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CuqmyQc4.js +1 -0
  62. package/dist/docs/assets/chunks/{theme.q37tOs4x.js → theme.Dx-JhpTB.js} +2 -2
  63. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.vjuaGOSe.js → timeline-definition-GMOUNBTQ.fE53zQ2s.js} +1 -1
  64. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BxduJl-F.js → vennDiagram-DHZGUBPP.DJsZZaJg.js} +1 -1
  65. package/dist/docs/assets/chunks/wardley-RL74JXVD.844kyrjl.js +162 -0
  66. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D1z3ds0D.js → wardleyDiagram-NUSXRM2D.CMZ-Ru_t.js} +1 -1
  67. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CRU5Ti9b.js → xychartDiagram-5P7HB3ND.XXrhBc7a.js} +1 -1
  68. package/dist/docs/assets/{deployment.md.nGo1yIsa.js → deployment.md.UhnJIMr-.js} +6 -9
  69. package/dist/docs/assets/{deployment.md.nGo1yIsa.lean.js → deployment.md.UhnJIMr-.lean.js} +1 -1
  70. package/dist/docs/assets/{guides_github.md.C2_DSWlE.js → guides_github.md.Bq9kQU9B.js} +9 -3
  71. package/dist/docs/assets/{guides_github.md.C2_DSWlE.lean.js → guides_github.md.Bq9kQU9B.lean.js} +1 -1
  72. package/dist/docs/assets/{guides_jev.md.BNDm14Gy.js → guides_jev.md.CRcgmjDb.js} +2 -2
  73. package/dist/docs/assets/{guides_jev.md.BNDm14Gy.lean.js → guides_jev.md.CRcgmjDb.lean.js} +1 -1
  74. package/dist/docs/assets/{guides_slack.md.ZbHQETOT.js → guides_slack.md.diqqXTTm.js} +2 -2
  75. package/dist/docs/assets/{guides_slack.md.ZbHQETOT.lean.js → guides_slack.md.diqqXTTm.lean.js} +1 -1
  76. package/dist/docs/assets/{quickstart.md.wG4shE1f.js → quickstart.md.CHpHPBUN.js} +5 -3
  77. package/dist/docs/assets/{quickstart.md.wG4shE1f.lean.js → quickstart.md.CHpHPBUN.lean.js} +1 -1
  78. package/dist/docs/assets/{reference_agent-config.md.DzGI777n.js → reference_agent-config.md.Cj5uBKp4.js} +1 -1
  79. package/dist/docs/assets/{reference_artifacts.md.CFMNPreZ.js → reference_artifacts.md.CQfKq8F2.js} +1 -1
  80. package/dist/docs/assets/reference_cli.md.DgeLTO18.js +91 -0
  81. package/dist/docs/assets/reference_cli.md.DgeLTO18.lean.js +1 -0
  82. package/dist/docs/assets/{reference_connections.md._XpKiOaF.js → reference_connections.md.COq--gAm.js} +7 -3
  83. package/dist/docs/assets/{reference_connections.md._XpKiOaF.lean.js → reference_connections.md.COq--gAm.lean.js} +1 -1
  84. package/dist/docs/assets/{reference_evals.md.DqNyHMA6.js → reference_evals.md.CJm3uCUm.js} +4 -4
  85. package/dist/docs/assets/{reference_evals.md.DqNyHMA6.lean.js → reference_evals.md.CJm3uCUm.lean.js} +1 -1
  86. package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.js → reference_extensions.md.pa2tN-e4.js} +4 -3
  87. package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.lean.js → reference_extensions.md.pa2tN-e4.lean.js} +1 -1
  88. package/dist/docs/assets/{reference_skills.md.CRFTxt9M.js → reference_skills.md.Cy00QMKS.js} +3 -3
  89. package/dist/docs/assets/{reference_skills.md.CRFTxt9M.lean.js → reference_skills.md.Cy00QMKS.lean.js} +1 -1
  90. package/dist/docs/assets/troubleshooting.md.Cw5PKa3t.js +1 -0
  91. package/dist/docs/assets/{troubleshooting.md.BzZSu1Gz.lean.js → troubleshooting.md.Cw5PKa3t.lean.js} +1 -1
  92. package/dist/docs/building-with-agents.html +35 -35
  93. package/dist/docs/deployment.html +41 -44
  94. package/dist/docs/deployment.md +49 -16
  95. package/dist/docs/evals.html +35 -35
  96. package/dist/docs/guides/agent-to-agent.html +35 -35
  97. package/dist/docs/guides/bitbucket.html +35 -35
  98. package/dist/docs/guides/cloud-agents.html +35 -35
  99. package/dist/docs/guides/convert-automation.html +35 -35
  100. package/dist/docs/guides/github.html +43 -37
  101. package/dist/docs/guides/github.md +34 -0
  102. package/dist/docs/guides/gitlab.html +35 -35
  103. package/dist/docs/guides/grokbot-agents.html +35 -35
  104. package/dist/docs/guides/hooks.html +35 -35
  105. package/dist/docs/guides/improve.html +35 -35
  106. package/dist/docs/guides/jev.html +37 -37
  107. package/dist/docs/guides/jev.md +7 -0
  108. package/dist/docs/guides/mcp-oauth.html +35 -35
  109. package/dist/docs/guides/opentelemetry.html +35 -35
  110. package/dist/docs/guides/slack.html +37 -37
  111. package/dist/docs/guides/slack.md +5 -0
  112. package/dist/docs/guides/webhooks.html +35 -35
  113. package/dist/docs/hashmap.json +1 -1
  114. package/dist/docs/hillclimbing.html +35 -35
  115. package/dist/docs/index.html +35 -35
  116. package/dist/docs/llms-full.txt +223 -94
  117. package/dist/docs/quickstart.html +40 -38
  118. package/dist/docs/quickstart.md +7 -1
  119. package/dist/docs/reference/agent-config.html +37 -37
  120. package/dist/docs/reference/agent-config.md +1 -1
  121. package/dist/docs/reference/artifacts.html +37 -37
  122. package/dist/docs/reference/artifacts.md +1 -1
  123. package/dist/docs/reference/channels.html +35 -35
  124. package/dist/docs/reference/cli.html +55 -61
  125. package/dist/docs/reference/cli.md +65 -63
  126. package/dist/docs/reference/connections.html +42 -38
  127. package/dist/docs/reference/connections.md +28 -2
  128. package/dist/docs/reference/evals.html +39 -39
  129. package/dist/docs/reference/evals.md +6 -7
  130. package/dist/docs/reference/extensions.html +39 -38
  131. package/dist/docs/reference/extensions.md +13 -0
  132. package/dist/docs/reference/hooks.html +35 -35
  133. package/dist/docs/reference/http-api.html +35 -35
  134. package/dist/docs/reference/instructions.html +35 -35
  135. package/dist/docs/reference/playground.html +35 -35
  136. package/dist/docs/reference/project-layout.html +35 -35
  137. package/dist/docs/reference/prompt.html +35 -35
  138. package/dist/docs/reference/schedules.html +35 -35
  139. package/dist/docs/reference/sessions.html +35 -35
  140. package/dist/docs/reference/skills.html +38 -38
  141. package/dist/docs/reference/subagents.html +35 -35
  142. package/dist/docs/reference/tools.html +35 -35
  143. package/dist/docs/templates/agentic-owners.html +35 -35
  144. package/dist/docs/templates/security-reviewer.html +35 -35
  145. package/dist/docs/templates/thermo-quality-review.html +35 -35
  146. package/dist/docs/templates/thermo-review.html +35 -35
  147. package/dist/docs/templates/triage.html +35 -35
  148. package/dist/docs/troubleshooting.html +36 -36
  149. package/dist/docs/troubleshooting.md +7 -3
  150. package/dist/extensions/cursor-grokbot-agents/extension.d.ts +77 -0
  151. package/dist/extensions/cursor-grokbot-agents/extension.d.ts.map +1 -0
  152. package/dist/extensions/cursor-grokbot-agents/extension.js +63 -0
  153. package/dist/extensions/cursor-grokbot-agents/lib/agents.d.ts +11 -0
  154. package/dist/extensions/cursor-grokbot-agents/lib/agents.d.ts.map +1 -0
  155. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +31 -0
  156. package/dist/extensions/cursor-grokbot-agents/lib/backend.d.ts +56 -0
  157. package/dist/extensions/cursor-grokbot-agents/lib/backend.d.ts.map +1 -0
  158. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +158 -0
  159. package/dist/extensions/cursor-grokbot-agents/lib/contacts.d.ts +28 -0
  160. package/dist/extensions/cursor-grokbot-agents/lib/contacts.d.ts.map +1 -0
  161. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +59 -0
  162. package/dist/extensions/cursor-grokbot-agents/lib/conversation.d.ts +53 -0
  163. package/dist/extensions/cursor-grokbot-agents/lib/conversation.d.ts.map +1 -0
  164. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +206 -0
  165. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +4 -0
  166. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -0
  167. package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +15 -0
  168. package/dist/extensions/cursor-grokbot-agents/lib/lock.d.ts +12 -0
  169. package/dist/extensions/cursor-grokbot-agents/lib/lock.d.ts.map +1 -0
  170. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +25 -0
  171. package/dist/extensions/cursor-grokbot-agents/skills/consult.md +40 -0
  172. package/dist/extensions/cursor-grokbot-agents/tools/ask.d.ts +4 -0
  173. package/dist/extensions/cursor-grokbot-agents/tools/ask.d.ts.map +1 -0
  174. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +37 -0
  175. package/dist/extensions/cursor-grokbot-agents/tools/check.d.ts +4 -0
  176. package/dist/extensions/cursor-grokbot-agents/tools/check.d.ts.map +1 -0
  177. package/dist/extensions/cursor-grokbot-agents/tools/check.js +32 -0
  178. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.d.ts +4 -0
  179. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.d.ts.map +1 -0
  180. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +24 -0
  181. package/dist/extensions/cursor-grokbot-agents/tools/list.d.ts +4 -0
  182. package/dist/extensions/cursor-grokbot-agents/tools/list.d.ts.map +1 -0
  183. package/dist/extensions/cursor-grokbot-agents/tools/list.js +34 -0
  184. package/dist/extensions/jev/extension.d.ts +3 -0
  185. package/dist/extensions/jev/extension.d.ts.map +1 -1
  186. package/dist/extensions/jev/extension.js +10 -1
  187. package/dist/extensions/jev/lib/evaluate.d.ts +4 -0
  188. package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -1
  189. package/dist/extensions/jev/lib/evaluate.js +6 -2
  190. package/dist/extensions.d.ts +4 -2
  191. package/dist/extensions.d.ts.map +1 -1
  192. package/dist/extensions.js +5 -2
  193. package/dist/internal/cli-ax.d.ts +1 -0
  194. package/dist/internal/cli-ax.d.ts.map +1 -1
  195. package/dist/internal/cli-ax.js +43 -10
  196. package/dist/internal/cli-deploy.d.ts +5 -1
  197. package/dist/internal/cli-deploy.d.ts.map +1 -1
  198. package/dist/internal/cli-deploy.js +41 -9
  199. package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
  200. package/dist/internal/cli-mcp-oauth.js +2 -1
  201. package/dist/internal/cli-skills.d.ts +1 -1
  202. package/dist/internal/cli-skills.d.ts.map +1 -1
  203. package/dist/internal/cli-skills.js +5 -5
  204. package/dist/internal/connection-env.d.ts +31 -0
  205. package/dist/internal/connection-env.d.ts.map +1 -0
  206. package/dist/internal/connection-env.js +84 -0
  207. package/dist/internal/cursor/backend-client.js +5 -0
  208. package/dist/internal/deploy-client.d.ts +30 -6
  209. package/dist/internal/deploy-client.d.ts.map +1 -1
  210. package/dist/internal/deploy-client.js +45 -9
  211. package/dist/internal/discovery/agent-config.d.ts +6 -5
  212. package/dist/internal/discovery/agent-config.d.ts.map +1 -1
  213. package/dist/internal/discovery/agent-config.js +29 -28
  214. package/dist/internal/discovery/agent.js +1 -1
  215. package/dist/internal/discovery/connections.d.ts.map +1 -1
  216. package/dist/internal/discovery/connections.js +11 -0
  217. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  218. package/dist/internal/discovery/extensions.js +12 -0
  219. package/dist/internal/hosted-delivery-protocol.d.ts +36 -11
  220. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  221. package/dist/internal/hosted-delivery-protocol.js +31 -8
  222. package/dist/internal/hosted-delivery.d.ts +2 -2
  223. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  224. package/dist/internal/hosted-delivery.js +228 -48
  225. package/dist/internal/hosting.d.ts +10 -2
  226. package/dist/internal/hosting.d.ts.map +1 -1
  227. package/dist/internal/hosting.js +33 -3
  228. package/dist/internal/install-cursor-skills.d.ts +20 -24
  229. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  230. package/dist/internal/install-cursor-skills.js +50 -48
  231. package/dist/internal/legacy-command-guard.d.ts +2 -0
  232. package/dist/internal/legacy-command-guard.d.ts.map +1 -1
  233. package/dist/internal/legacy-command-guard.js +10 -1
  234. package/dist/internal/mcp-host.d.ts +6 -0
  235. package/dist/internal/mcp-host.d.ts.map +1 -1
  236. package/dist/internal/mcp-host.js +35 -16
  237. package/dist/internal/sdk-runner.d.ts +2 -0
  238. package/dist/internal/sdk-runner.d.ts.map +1 -1
  239. package/dist/internal/sdk-runner.js +10 -0
  240. package/dist/internal/server.d.ts.map +1 -1
  241. package/dist/internal/server.js +11 -1
  242. package/dist/internal/session-engine.d.ts.map +1 -1
  243. package/dist/internal/session-engine.js +9 -5
  244. package/dist/types.d.ts +29 -3
  245. package/dist/types.d.ts.map +1 -1
  246. package/docs/deployment.md +49 -16
  247. package/docs/guides/github.md +34 -0
  248. package/docs/guides/jev.md +7 -0
  249. package/docs/guides/slack.md +5 -0
  250. package/docs/quickstart.md +7 -1
  251. package/docs/reference/agent-config.md +1 -1
  252. package/docs/reference/artifacts.md +1 -1
  253. package/docs/reference/cli.md +65 -63
  254. package/docs/reference/connections.md +28 -2
  255. package/docs/reference/evals.md +6 -7
  256. package/docs/reference/extensions.md +13 -0
  257. package/docs/troubleshooting.md +7 -3
  258. package/package.json +1 -11
  259. package/scripts/install-cursor-skills.mjs +1 -1
  260. package/skills/create-agent/SKILL.md +1 -1
  261. package/skills/debug/SKILL.md +1 -1
  262. package/skills/deploy/SKILL.md +1 -1
  263. package/skills/evals/SKILL.md +1 -1
  264. package/skills/framework-map/SKILL.md +1 -1
  265. package/skills/github/SKILL.md +1 -1
  266. package/skills/hillclimb/SKILL.md +1 -1
  267. package/skills/mcp-auth/SKILL.md +1 -1
  268. package/skills/otel/SKILL.md +1 -1
  269. package/skills/setup-slack/SKILL.md +1 -1
  270. package/templates/agents-md/bot/lib/collect.ts +1 -4
  271. package/templates/code-wiki/bot/channels/github.ts +2 -2
  272. package/templates/demo/bot/channels/github.ts +5 -1
  273. package/templates/pr-autofixer/bot/lib/start-drive.ts +4 -4
  274. package/templates/triage/bot/lib/types.ts +6 -6
  275. package/dist/docs/assets/chunks/@localSearchIndexroot.BgTA2tV1.js +0 -1
  276. package/dist/docs/assets/chunks/channel.B2nMEx82.js +0 -1
  277. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D8iCH2ve.js +0 -1
  278. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D8iCH2ve.js +0 -1
  279. package/dist/docs/assets/chunks/clone.5XNLjby0.js +0 -1
  280. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.yGM2uLZQ.js +0 -1
  281. package/dist/docs/assets/chunks/wardley-RL74JXVD.DKfyIejL.js +0 -162
  282. package/dist/docs/assets/reference_cli.md.BK2QUH67.js +0 -97
  283. package/dist/docs/assets/reference_cli.md.BK2QUH67.lean.js +0 -1
  284. package/dist/docs/assets/troubleshooting.md.BzZSu1Gz.js +0 -1
  285. package/src/artifacts.ts +0 -68
  286. package/src/bin/agent-serve.ts +0 -1833
  287. package/src/channels/bitbucket/api.ts +0 -891
  288. package/src/channels/bitbucket/binding.ts +0 -417
  289. package/src/channels/bitbucket/bitbucket-channel.ts +0 -162
  290. package/src/channels/bitbucket/bitbucket-webhook.ts +0 -519
  291. package/src/channels/bitbucket/checks.ts +0 -146
  292. package/src/channels/bitbucket/cursor-account.ts +0 -106
  293. package/src/channels/bitbucket/defaults.ts +0 -100
  294. package/src/channels/bitbucket/events.ts +0 -74
  295. package/src/channels/bitbucket/index.ts +0 -51
  296. package/src/channels/bitbucket/replay.ts +0 -421
  297. package/src/channels/bitbucket/state.ts +0 -59
  298. package/src/channels/bitbucket/types.ts +0 -261
  299. package/src/channels/change-monitors/change-monitors-channel.ts +0 -63
  300. package/src/channels/change-monitors/index.ts +0 -8
  301. package/src/channels/change-monitors/types.ts +0 -42
  302. package/src/channels/checks.ts +0 -185
  303. package/src/channels/deployments/deployments-channel.ts +0 -224
  304. package/src/channels/deployments/index.ts +0 -25
  305. package/src/channels/deployments/types.ts +0 -92
  306. package/src/channels/github/api.ts +0 -526
  307. package/src/channels/github/auth.ts +0 -254
  308. package/src/channels/github/binding.ts +0 -233
  309. package/src/channels/github/checks.ts +0 -145
  310. package/src/channels/github/cursor-account.ts +0 -303
  311. package/src/channels/github/defaults.ts +0 -168
  312. package/src/channels/github/events.ts +0 -67
  313. package/src/channels/github/forward.ts +0 -359
  314. package/src/channels/github/github-channel.ts +0 -2334
  315. package/src/channels/github/index.ts +0 -54
  316. package/src/channels/github/progress.ts +0 -365
  317. package/src/channels/github/replay.ts +0 -372
  318. package/src/channels/github/state.ts +0 -124
  319. package/src/channels/github/types.ts +0 -590
  320. package/src/channels/gitlab/api.ts +0 -329
  321. package/src/channels/gitlab/binding.ts +0 -231
  322. package/src/channels/gitlab/checks.ts +0 -228
  323. package/src/channels/gitlab/cursor-account.ts +0 -105
  324. package/src/channels/gitlab/defaults.ts +0 -80
  325. package/src/channels/gitlab/events.ts +0 -37
  326. package/src/channels/gitlab/gitlab-channel.ts +0 -160
  327. package/src/channels/gitlab/gitlab-webhook.ts +0 -509
  328. package/src/channels/gitlab/index.ts +0 -44
  329. package/src/channels/gitlab/replay.ts +0 -328
  330. package/src/channels/gitlab/state.ts +0 -55
  331. package/src/channels/gitlab/types.ts +0 -247
  332. package/src/channels/issues/index.ts +0 -9
  333. package/src/channels/issues/issues-channel.ts +0 -45
  334. package/src/channels/issues/types.ts +0 -38
  335. package/src/channels/origin/api.ts +0 -507
  336. package/src/channels/origin/binding.ts +0 -114
  337. package/src/channels/origin/checks.ts +0 -250
  338. package/src/channels/origin/cursor-account.ts +0 -58
  339. package/src/channels/origin/defaults.ts +0 -140
  340. package/src/channels/origin/events.ts +0 -35
  341. package/src/channels/origin/index.ts +0 -35
  342. package/src/channels/origin/origin-channel.ts +0 -815
  343. package/src/channels/origin/origin-webhook.ts +0 -296
  344. package/src/channels/origin/reactions.ts +0 -72
  345. package/src/channels/origin/state.ts +0 -54
  346. package/src/channels/origin/types.ts +0 -295
  347. package/src/channels/slack/agentic-delivery.ts +0 -634
  348. package/src/channels/slack/agentic-posted.ts +0 -135
  349. package/src/channels/slack/agentic-signals.ts +0 -231
  350. package/src/channels/slack/api.ts +0 -761
  351. package/src/channels/slack/approvals.ts +0 -279
  352. package/src/channels/slack/assistant.ts +0 -76
  353. package/src/channels/slack/attachments.ts +0 -596
  354. package/src/channels/slack/auth.ts +0 -127
  355. package/src/channels/slack/blocks.ts +0 -131
  356. package/src/channels/slack/bot-mentions.ts +0 -318
  357. package/src/channels/slack/channel-watch.ts +0 -314
  358. package/src/channels/slack/cli-project.ts +0 -249
  359. package/src/channels/slack/code-fences.ts +0 -171
  360. package/src/channels/slack/constants.ts +0 -38
  361. package/src/channels/slack/credentials.ts +0 -88
  362. package/src/channels/slack/defaults.ts +0 -714
  363. package/src/channels/slack/dispatch.ts +0 -1060
  364. package/src/channels/slack/doctor.ts +0 -338
  365. package/src/channels/slack/eval-directive.ts +0 -306
  366. package/src/channels/slack/event-id-dedupe.ts +0 -30
  367. package/src/channels/slack/external-policy.ts +0 -75
  368. package/src/channels/slack/footer.ts +0 -106
  369. package/src/channels/slack/inbound.ts +0 -416
  370. package/src/channels/slack/index.ts +0 -53
  371. package/src/channels/slack/init.ts +0 -169
  372. package/src/channels/slack/interactive.ts +0 -406
  373. package/src/channels/slack/links.ts +0 -23
  374. package/src/channels/slack/live-delivery.ts +0 -489
  375. package/src/channels/slack/log.ts +0 -70
  376. package/src/channels/slack/manifest.ts +0 -240
  377. package/src/channels/slack/message-body.ts +0 -82
  378. package/src/channels/slack/nudge-carrier.ts +0 -224
  379. package/src/channels/slack/nudge-store.ts +0 -334
  380. package/src/channels/slack/paint-start.ts +0 -93
  381. package/src/channels/slack/placeholder.ts +0 -358
  382. package/src/channels/slack/pr-ref.ts +0 -74
  383. package/src/channels/slack/progress-delivery.ts +0 -138
  384. package/src/channels/slack/reasoning-card.ts +0 -125
  385. package/src/channels/slack/reasoning-chip.ts +0 -41
  386. package/src/channels/slack/recording-sink.ts +0 -167
  387. package/src/channels/slack/redact.ts +0 -6
  388. package/src/channels/slack/reply-options.ts +0 -279
  389. package/src/channels/slack/setup.ts +0 -125
  390. package/src/channels/slack/slack-channel.ts +0 -744
  391. package/src/channels/slack/socket-mode.ts +0 -140
  392. package/src/channels/slack/stop.ts +0 -25
  393. package/src/channels/slack/stream.ts +0 -66
  394. package/src/channels/slack/thread-context.ts +0 -485
  395. package/src/channels/slack/tool-approval-events.ts +0 -233
  396. package/src/channels/slack/tool-cards.ts +0 -198
  397. package/src/channels/slack/tool-chip.ts +0 -34
  398. package/src/channels/slack/types.ts +0 -787
  399. package/src/channels/slack/upload.ts +0 -137
  400. package/src/channels.ts +0 -543
  401. package/src/connections.ts +0 -153
  402. package/src/dashboard-session-url.ts +0 -30
  403. package/src/evals/assertions.ts +0 -688
  404. package/src/evals/expect.ts +0 -250
  405. package/src/evals/judge.ts +0 -329
  406. package/src/evals/loaders.ts +0 -111
  407. package/src/evals/matchers.ts +0 -223
  408. package/src/evals/reporters.ts +0 -257
  409. package/src/evals/results.ts +0 -130
  410. package/src/evals/run-facts.ts +0 -306
  411. package/src/evals.ts +0 -709
  412. package/src/extensions/cursor-cloud-agents/extension.ts +0 -131
  413. package/src/extensions/cursor-cloud-agents/lib/backend.ts +0 -386
  414. package/src/extensions/cursor-cloud-agents/lib/channels.ts +0 -11
  415. package/src/extensions/cursor-cloud-agents/lib/fleet.ts +0 -98
  416. package/src/extensions/cursor-cloud-agents/lib/inputs.ts +0 -5
  417. package/src/extensions/cursor-cloud-agents/lib/repos.ts +0 -80
  418. package/src/extensions/cursor-cloud-agents/lib/transcript.ts +0 -19
  419. package/src/extensions/cursor-cloud-agents/skills/handoff.md +0 -37
  420. package/src/extensions/cursor-cloud-agents/tools/cancel.ts +0 -21
  421. package/src/extensions/cursor-cloud-agents/tools/dump.ts +0 -47
  422. package/src/extensions/cursor-cloud-agents/tools/get.ts +0 -18
  423. package/src/extensions/cursor-cloud-agents/tools/launch.ts +0 -62
  424. package/src/extensions/cursor-cloud-agents/tools/list.ts +0 -31
  425. package/src/extensions/cursor-cloud-agents/tools/reply.ts +0 -36
  426. package/src/extensions/improve/extension.ts +0 -69
  427. package/src/extensions/improve/skills/yourself.ts +0 -50
  428. package/src/extensions/jev/extension.ts +0 -95
  429. package/src/extensions/jev/lib/evaluate.ts +0 -266
  430. package/src/extensions/jev/skills/gated-write.md +0 -25
  431. package/src/extensions/jev/skills/questions.md +0 -33
  432. package/src/extensions/jev/tools/evaluate.ts +0 -82
  433. package/src/extensions/slack-communication/evals/harness.ts +0 -705
  434. package/src/extensions/slack-communication/evals/slack-communication.eval.ts +0 -830
  435. package/src/extensions/slack-communication/evals/slack-placeholder.eval.ts +0 -172
  436. package/src/extensions/slack-communication/extension.ts +0 -44
  437. package/src/extensions/slack-communication/skills/slack-voice.ts +0 -56
  438. package/src/extensions/slack-communication/tools/delete-message.ts +0 -33
  439. package/src/extensions/slack-communication/tools/edit-message.ts +0 -42
  440. package/src/extensions/slack-communication/tools/post-card.ts +0 -28
  441. package/src/extensions/slack-communication/tools/post-file.ts +0 -82
  442. package/src/extensions/slack-communication/tools/post-update.ts +0 -40
  443. package/src/extensions/slack-communication/tools/react.ts +0 -30
  444. package/src/extensions/slack-communication/tools/set-status.ts +0 -21
  445. package/src/extensions.ts +0 -179
  446. package/src/files-backends/agent-store-presigned-url.ts +0 -11
  447. package/src/files-backends/cursor-hosted.ts +0 -1212
  448. package/src/files-backends/local-fs.ts +0 -163
  449. package/src/files.ts +0 -293
  450. package/src/filesystem.ts +0 -2005
  451. package/src/hooks.ts +0 -30
  452. package/src/index.ts +0 -259
  453. package/src/internal/advertise-tools.ts +0 -370
  454. package/src/internal/approval-gate.ts +0 -103
  455. package/src/internal/artifacts-store.ts +0 -836
  456. package/src/internal/as-of.ts +0 -257
  457. package/src/internal/auth.ts +0 -46
  458. package/src/internal/authored-alias-hooks.ts +0 -138
  459. package/src/internal/authored-loaders.ts +0 -188
  460. package/src/internal/bounded-int.ts +0 -24
  461. package/src/internal/bounded.ts +0 -25
  462. package/src/internal/brand.ts +0 -28
  463. package/src/internal/browser-origin-guard.ts +0 -67
  464. package/src/internal/builtin-tools/artifacts.ts +0 -62
  465. package/src/internal/builtin-tools/index.ts +0 -53
  466. package/src/internal/builtin-tools/reminders.ts +0 -145
  467. package/src/internal/channel-dispatch.ts +0 -129
  468. package/src/internal/channel-route-dispatch.ts +0 -58
  469. package/src/internal/channel-state.ts +0 -83
  470. package/src/internal/chat-client.ts +0 -594
  471. package/src/internal/cli-ax.ts +0 -2273
  472. package/src/internal/cli-bitbucket.ts +0 -438
  473. package/src/internal/cli-convert-automation.ts +0 -335
  474. package/src/internal/cli-cursor.ts +0 -282
  475. package/src/internal/cli-deploy.ts +0 -2486
  476. package/src/internal/cli-docs.ts +0 -192
  477. package/src/internal/cli-github.ts +0 -806
  478. package/src/internal/cli-gitlab.ts +0 -452
  479. package/src/internal/cli-images.ts +0 -672
  480. package/src/internal/cli-manifest.ts +0 -56
  481. package/src/internal/cli-mcp-oauth.ts +0 -395
  482. package/src/internal/cli-mcp.ts +0 -808
  483. package/src/internal/cli-skills.ts +0 -99
  484. package/src/internal/cli-slack-manual.ts +0 -418
  485. package/src/internal/cli-slack.ts +0 -874
  486. package/src/internal/cloud-merge.ts +0 -51
  487. package/src/internal/cloud-turn-cost.ts +0 -159
  488. package/src/internal/continuation-channel.ts +0 -233
  489. package/src/internal/continuation-identity.ts +0 -935
  490. package/src/internal/conversation-mirror.ts +0 -423
  491. package/src/internal/convert-automation/convert-workflow.ts +0 -1377
  492. package/src/internal/convert-automation/slug.ts +0 -29
  493. package/src/internal/convert-automation/types.ts +0 -212
  494. package/src/internal/cron.ts +0 -76
  495. package/src/internal/cursor/account-mcp.ts +0 -692
  496. package/src/internal/cursor/backend-client.ts +0 -978
  497. package/src/internal/cursor/bound-secret-file.ts +0 -101
  498. package/src/internal/cursor/credentials.ts +0 -560
  499. package/src/internal/cursor/cursor-api-transport.ts +0 -65
  500. package/src/internal/cursor/github-credentials.ts +0 -228
  501. package/src/internal/cursor/hosted-bound-secrets.ts +0 -71
  502. package/src/internal/cursor/hosted-deployment-secrets.ts +0 -100
  503. package/src/internal/cursor/hosted-store-secrets.ts +0 -152
  504. package/src/internal/cursor/session-token.ts +0 -111
  505. package/src/internal/cursor/store-api-client.ts +0 -323
  506. package/src/internal/cursor-account-mcp-auth.ts +0 -303
  507. package/src/internal/cursor-agent-template.ts +0 -50
  508. package/src/internal/cursor-deployment-relay.ts +0 -315
  509. package/src/internal/cursor-event-relay.ts +0 -675
  510. package/src/internal/cursor-relay-core.ts +0 -563
  511. package/src/internal/deferred-channel-session.ts +0 -61
  512. package/src/internal/deploy-client.ts +0 -1504
  513. package/src/internal/deploy-manifest.ts +0 -361
  514. package/src/internal/deploy-source.ts +0 -144
  515. package/src/internal/describe-error.ts +0 -32
  516. package/src/internal/dev-mode.ts +0 -20
  517. package/src/internal/discovery/agent-config.ts +0 -288
  518. package/src/internal/discovery/agent.ts +0 -381
  519. package/src/internal/discovery/channels.ts +0 -100
  520. package/src/internal/discovery/connections.ts +0 -505
  521. package/src/internal/discovery/context.ts +0 -38
  522. package/src/internal/discovery/cursor-plugin.ts +0 -628
  523. package/src/internal/discovery/extension-overlay.ts +0 -247
  524. package/src/internal/discovery/extensions.ts +0 -490
  525. package/src/internal/discovery/fs.ts +0 -103
  526. package/src/internal/discovery/hooks.ts +0 -63
  527. package/src/internal/discovery/info.ts +0 -174
  528. package/src/internal/discovery/instructions.ts +0 -98
  529. package/src/internal/discovery/modules.ts +0 -107
  530. package/src/internal/discovery/names.ts +0 -45
  531. package/src/internal/discovery/project.ts +0 -319
  532. package/src/internal/discovery/reminders.ts +0 -65
  533. package/src/internal/discovery/runtime.ts +0 -158
  534. package/src/internal/discovery/schedules.ts +0 -120
  535. package/src/internal/discovery/seed-files.ts +0 -34
  536. package/src/internal/discovery/services.ts +0 -151
  537. package/src/internal/discovery/skills.ts +0 -174
  538. package/src/internal/discovery/subagent.ts +0 -138
  539. package/src/internal/discovery/tools.ts +0 -170
  540. package/src/internal/discovery.ts +0 -27
  541. package/src/internal/distribution.ts +0 -126
  542. package/src/internal/docs-site.ts +0 -248
  543. package/src/internal/duration.ts +0 -37
  544. package/src/internal/env-file.ts +0 -83
  545. package/src/internal/eval-judge-model.ts +0 -142
  546. package/src/internal/eval-run-store.ts +0 -585
  547. package/src/internal/eval-runner.ts +0 -823
  548. package/src/internal/evals-client.ts +0 -475
  549. package/src/internal/event-log.ts +0 -342
  550. package/src/internal/event-mapper.ts +0 -811
  551. package/src/internal/expected-delivery-failure.ts +0 -34
  552. package/src/internal/factory-resource-channel.ts +0 -103
  553. package/src/internal/filesystem/errors.ts +0 -207
  554. package/src/internal/filesystem/format.ts +0 -253
  555. package/src/internal/filesystem/merge.ts +0 -192
  556. package/src/internal/filesystem/nearest.ts +0 -112
  557. package/src/internal/filesystem/scratch.ts +0 -239
  558. package/src/internal/filesystem/sdk-schemas.ts +0 -204
  559. package/src/internal/filesystem/tools.ts +0 -804
  560. package/src/internal/filesystem/walk.ts +0 -366
  561. package/src/internal/fixtures/units-server.ts +0 -52
  562. package/src/internal/framework-file-storage.ts +0 -357
  563. package/src/internal/framework-storage-selection.ts +0 -156
  564. package/src/internal/frontmatter.ts +0 -108
  565. package/src/internal/github-fanout.ts +0 -144
  566. package/src/internal/guest-network.ts +0 -391
  567. package/src/internal/handleAgentServeTrigger.ts +0 -286
  568. package/src/internal/host-files.ts +0 -341
  569. package/src/internal/host-kv.ts +0 -81
  570. package/src/internal/host-otel.ts +0 -231
  571. package/src/internal/host-platforms.ts +0 -170
  572. package/src/internal/hosted-admission-adapter.ts +0 -47
  573. package/src/internal/hosted-admission-context.ts +0 -37
  574. package/src/internal/hosted-catch-protocol.ts +0 -112
  575. package/src/internal/hosted-catch.ts +0 -179
  576. package/src/internal/hosted-delivery-protocol.ts +0 -787
  577. package/src/internal/hosted-delivery.ts +0 -1152
  578. package/src/internal/hosted-execution-diag.ts +0 -291
  579. package/src/internal/hosted-execution-flush.ts +0 -136
  580. package/src/internal/hosted-execution-latency.ts +0 -301
  581. package/src/internal/hosted-managed-automation.ts +0 -116
  582. package/src/internal/hosting.ts +0 -107
  583. package/src/internal/http-channel-define.ts +0 -25
  584. package/src/internal/http-channel.ts +0 -669
  585. package/src/internal/http-control-plane-session.ts +0 -110
  586. package/src/internal/ids.ts +0 -39
  587. package/src/internal/incoming-headers-to-fetch.ts +0 -45
  588. package/src/internal/init-interview.ts +0 -360
  589. package/src/internal/init-project.ts +0 -711
  590. package/src/internal/init-scaffold.ts +0 -182
  591. package/src/internal/inline-stdio-define-stub.ts +0 -4
  592. package/src/internal/inline-stdio-mcp.ts +0 -230
  593. package/src/internal/install-cursor-skills.ts +0 -601
  594. package/src/internal/is-record.ts +0 -3
  595. package/src/internal/json-schema.ts +0 -95
  596. package/src/internal/legacy-command-guard.ts +0 -54
  597. package/src/internal/listen-port.ts +0 -85
  598. package/src/internal/local-control-plane.ts +0 -442
  599. package/src/internal/local-env.ts +0 -59
  600. package/src/internal/local-ingress.ts +0 -90
  601. package/src/internal/log-ring.ts +0 -59
  602. package/src/internal/logs-client.ts +0 -477
  603. package/src/internal/map-pool.ts +0 -39
  604. package/src/internal/mcp-endpoint.ts +0 -747
  605. package/src/internal/mcp-host.ts +0 -481
  606. package/src/internal/mcp-oauth-on-demand.ts +0 -337
  607. package/src/internal/mcp-oauth-persist.ts +0 -118
  608. package/src/internal/mcp-oauth.ts +0 -549
  609. package/src/internal/net.ts +0 -29
  610. package/src/internal/open-browser.ts +0 -41
  611. package/src/internal/otel/attrs.ts +0 -16
  612. package/src/internal/otel/collector.ts +0 -937
  613. package/src/internal/otel/config.ts +0 -287
  614. package/src/internal/otel/http.ts +0 -122
  615. package/src/internal/otel/mcp.ts +0 -56
  616. package/src/internal/otel/propagation.ts +0 -17
  617. package/src/internal/otel/runtime.ts +0 -441
  618. package/src/internal/package-inline-stdio.ts +0 -114
  619. package/src/internal/peer-connections.ts +0 -96
  620. package/src/internal/platform-schedule-sync.ts +0 -75
  621. package/src/internal/platform-timers.ts +0 -365
  622. package/src/internal/playground/static.ts +0 -278
  623. package/src/internal/playground/toolchain.ts +0 -270
  624. package/src/internal/playground-proxy.ts +0 -564
  625. package/src/internal/process-memory-telemetry.ts +0 -334
  626. package/src/internal/project-layout.ts +0 -31
  627. package/src/internal/prompt-context.ts +0 -116
  628. package/src/internal/reminder-control-plane-protocol.ts +0 -482
  629. package/src/internal/reminder-runner.ts +0 -1559
  630. package/src/internal/reminder-schedule.ts +0 -104
  631. package/src/internal/reminder-store.ts +0 -176
  632. package/src/internal/request-error-status.ts +0 -95
  633. package/src/internal/request-headers.ts +0 -21
  634. package/src/internal/resolve-prod-target.ts +0 -334
  635. package/src/internal/resolved-connections.ts +0 -190
  636. package/src/internal/router.ts +0 -143
  637. package/src/internal/run-client.ts +0 -354
  638. package/src/internal/runtime-dispatch-runner.ts +0 -50
  639. package/src/internal/sanitize-mcp-tool-name.ts +0 -31
  640. package/src/internal/schedule-runner.ts +0 -154
  641. package/src/internal/scm/pr-url.ts +0 -245
  642. package/src/internal/sdk-runner.ts +0 -948
  643. package/src/internal/serve-restart.ts +0 -113
  644. package/src/internal/server.ts +0 -3135
  645. package/src/internal/session-cost.ts +0 -208
  646. package/src/internal/session-engine.ts +0 -5618
  647. package/src/internal/session-links.ts +0 -84
  648. package/src/internal/session-run-log.ts +0 -535
  649. package/src/internal/session-store.ts +0 -307
  650. package/src/internal/session-urls.ts +0 -32
  651. package/src/internal/sessions-client.ts +0 -239
  652. package/src/internal/skill-catalog.ts +0 -66
  653. package/src/internal/skills-sync.ts +0 -55
  654. package/src/internal/slack-provision-client.ts +0 -544
  655. package/src/internal/slack-thread-key.ts +0 -11
  656. package/src/internal/sleep.ts +0 -3
  657. package/src/internal/start-log-store.ts +0 -164
  658. package/src/internal/steering.ts +0 -17
  659. package/src/internal/storage-coordinator.ts +0 -800
  660. package/src/internal/storage-roles.ts +0 -86
  661. package/src/internal/storage.ts +0 -1
  662. package/src/internal/store-api-protocol.ts +0 -205
  663. package/src/internal/store-mirror.ts +0 -73
  664. package/src/internal/stream-progress.ts +0 -294
  665. package/src/internal/terminal-style.ts +0 -133
  666. package/src/internal/testing/factory-resource-fixtures.ts +0 -84
  667. package/src/internal/testing/scm-continuation-fixtures.ts +0 -285
  668. package/src/internal/tool-catalog.ts +0 -104
  669. package/src/internal/tool-policy.ts +0 -222
  670. package/src/internal/tool-result.ts +0 -50
  671. package/src/internal/trajectory.ts +0 -418
  672. package/src/internal/turn-cost.ts +0 -136
  673. package/src/internal/turn-governor.ts +0 -145
  674. package/src/internal/turn-lease-store.ts +0 -144
  675. package/src/internal/turn-outbox.ts +0 -77
  676. package/src/internal/update-check.ts +0 -517
  677. package/src/internal/v2-hosting.ts +0 -52
  678. package/src/internal/workspace-sync.ts +0 -114
  679. package/src/internal/workspace.ts +0 -505
  680. package/src/kv/memory-kv.ts +0 -94
  681. package/src/kv.ts +0 -18
  682. package/src/memory.ts +0 -487
  683. package/src/otel-public.ts +0 -24
  684. package/src/otel.ts +0 -320
  685. package/src/prompt.ts +0 -80
  686. package/src/reminders.ts +0 -65
  687. package/src/schedules.ts +0 -31
  688. package/src/skills.ts +0 -27
  689. package/src/storage-backends/cursor-hosted-v2.ts +0 -204
  690. package/src/storage-backends/cursor-hosted.ts +0 -388
  691. package/src/storage-backends/file-kv.ts +0 -276
  692. package/src/storage-protocol.ts +0 -261
  693. package/src/storage.ts +0 -408
  694. package/src/tools.ts +0 -166
  695. package/src/types.ts +0 -3766
  696. /package/dist/docs/assets/{reference_agent-config.md.DzGI777n.lean.js → reference_agent-config.md.Cj5uBKp4.lean.js} +0 -0
  697. /package/dist/docs/assets/{reference_artifacts.md.CFMNPreZ.lean.js → reference_artifacts.md.CQfKq8F2.lean.js} +0 -0
@@ -1,357 +0,0 @@
1
- /**
2
- * Framework-level file storage for v2 hosted engines.
3
- *
4
- * Hosted deployments carry two file stores with different audiences:
5
- *
6
- * - the **user-level** store (`AGENT_SERVE_STORE_SOURCE_ID`) holds
7
- * author-facing bytes — `ctx.host.files`, skills, memory, artifacts — and
8
- * is browsable from the dashboard and mountable on cloud-runtime VMs;
9
- * - the **framework-level** store (`AGENT_SERVE_FRAMEWORK_STORE_SOURCE_ID`)
10
- * holds engine-owned session state — session records, event transcripts,
11
- * hosted-execution run logs, the continuation index, and the SDK
12
- * conversation mirror — and is never mounted into author code or models.
13
- * The authenticated dashboard may read diagnostic families, but never the
14
- * continuation index.
15
- *
16
- * This module puts framework session state on the framework store. The
17
- * {@link storageKeys} scheme was designed for exactly this: keys are a
18
- * stable versioned contract that sinks may route on, so
19
- * {@link composeFrameworkStorage} splits one {@link StorageConfig} by key
20
- * kind — `session` / `session-events` / `session-runs` / `logs` /
21
- * `continuation` go to the framework file store (file-shaped; the store
22
- * accepts values up to 64 MiB per
23
- * object without chunking, versus the KV proxy's 1 MiB row cap), while
24
- * author `kv`, eval runs, and conditional writes stay on the control-plane
25
- * KV proxy (the dashboard reads them there, and CAS needs a database).
26
- *
27
- * v2 only, by construction: the composite is selected in
28
- * framework-storage-selection.ts, which v1 never reaches with a
29
- * platform-selected definition.
30
- */
31
-
32
- import type { FileSink } from "../files.js";
33
- import type { StorageConfig, StorageEntry } from "../storage.js";
34
- import { AGENTSDK_STORAGE_KEY_ROOT } from "../storage-protocol.js";
35
- import type { JsonValue } from "../types.js";
36
- import { mapBounded } from "./bounded.js";
37
-
38
- /**
39
- * Key kinds (`agentsdk/v1/{agent}/{kind}/…`) that live on the framework
40
- * file store. Everything else stays on the KV sink.
41
- */
42
- const FRAMEWORK_FILE_KINDS: ReadonlySet<string> = new Set([
43
- "session",
44
- "session-events",
45
- "session-runs",
46
- "logs",
47
- "continuation",
48
- ]);
49
-
50
- /**
51
- * Whether a framework-minted key (or list prefix) belongs on the framework
52
- * file store. Prefixes used by the coordinator are always at least
53
- * kind-scoped (`…/{agent}/session/`), so a prefix routes wholly to one side.
54
- */
55
- export function isFrameworkFileKey(key: string): boolean {
56
- if (!key.startsWith(`${AGENTSDK_STORAGE_KEY_ROOT}/`)) {
57
- return false;
58
- }
59
- const rest = key.slice(AGENTSDK_STORAGE_KEY_ROOT.length + 1);
60
- const agentEnd = rest.indexOf("/");
61
- if (agentEnd === -1) {
62
- return false;
63
- }
64
- const afterAgent = rest.slice(agentEnd + 1);
65
- const kindEnd = afterAgent.indexOf("/");
66
- const kind = kindEnd === -1 ? afterAgent : afterAgent.slice(0, kindEnd);
67
- return FRAMEWORK_FILE_KINDS.has(kind);
68
- }
69
-
70
- /**
71
- * The KV core over a {@link FileSink}: one JSON document per key.
72
- * `putMany` stays optional — the KV-proxy core has no batch write, and the
73
- * composite falls back to sequential puts on a side without one.
74
- */
75
- export type FileSinkStorageCore = Required<Pick<StorageConfig, "put" | "get" | "delete" | "list">> &
76
- Pick<StorageConfig, "putMany">;
77
-
78
- /** Parallel per-key reads backing `list` (each is presign + object GET). */
79
- const LIST_READ_CONCURRENCY = 8;
80
-
81
- /**
82
- * A storage key whose path the file store cannot represent (an empty, `.`,
83
- * or `..` segment — possible only through caller-controlled segments such
84
- * as continuation tokens or a caller-supplied session id). Such an object
85
- * can never exist in the store, so reads are a definitive miss rather than
86
- * a per-request 400 that the lazy-restore path would propagate forever.
87
- */
88
- function isUnrepresentableFileKey(key: string): boolean {
89
- return key.split("/").some(segment => segment === "" || segment === "." || segment === "..");
90
- }
91
-
92
- /**
93
- * Adapt a {@link FileSink} to the `defineStorage` KV core. Storage keys are
94
- * framework-minted (URI-encoded, length-bounded segments — see
95
- * {@link storageKeys}), so they are used as file keys verbatim; values are
96
- * stored as JSON bytes. Parse failures throw: on the lazy-restore path a
97
- * corrupt document must fail the follow-up rather than read as a miss, and
98
- * the startup bulk restore already logs-and-skips a throwing `list`.
99
- */
100
- export function fileSinkStorageCore(sink: FileSink): FileSinkStorageCore {
101
- return {
102
- async put(key, value): Promise<void> {
103
- if (isUnrepresentableFileKey(key)) {
104
- // Loud rather than silent: the coordinator logs and drops failed
105
- // mirror writes (at-most-once), and awaited callers must not
106
- // believe an impossible write landed.
107
- throw new Error(
108
- `framework file storage: key "${key}" has a path segment the store cannot represent`,
109
- );
110
- }
111
- await sink.put(key, encodeDocument(key, value));
112
- },
113
- async putMany(entries): Promise<Array<{ key: string; error?: unknown }>> {
114
- const results: Array<{ key: string; error?: unknown }> = entries.map(entry => ({
115
- key: entry.key,
116
- }));
117
- const writable: Array<{ index: number; key: string; body: Uint8Array }> = [];
118
- for (let index = 0; index < entries.length; index += 1) {
119
- const entry = entries[index];
120
- if (entry === undefined) {
121
- continue;
122
- }
123
- if (isUnrepresentableFileKey(entry.key)) {
124
- results[index] = {
125
- key: entry.key,
126
- error: new Error(
127
- `framework file storage: key "${entry.key}" has a path segment the store cannot represent`,
128
- ),
129
- };
130
- continue;
131
- }
132
- writable.push({
133
- index,
134
- key: entry.key,
135
- body: encodeDocument(entry.key, entry.value),
136
- });
137
- }
138
- if (writable.length === 0) {
139
- return results;
140
- }
141
- if (sink.putMany !== undefined) {
142
- // The point of the batch: one backend round trip for the flush.
143
- const settled = await sink.putMany(writable.map(({ key, body }) => ({ key, body })));
144
- for (let i = 0; i < writable.length; i += 1) {
145
- const target = writable[i];
146
- const outcome = settled[i];
147
- if (target === undefined) {
148
- continue;
149
- }
150
- if (outcome?.status === "rejected") {
151
- results[target.index] = { key: target.key, error: outcome.reason };
152
- }
153
- }
154
- return results;
155
- }
156
- // No batch support: sequential puts, preserving the sink's strict
157
- // one-at-a-time ordering contract.
158
- for (const target of writable) {
159
- try {
160
- await sink.put(target.key, target.body);
161
- } catch (error) {
162
- results[target.index] = { key: target.key, error };
163
- }
164
- }
165
- return results;
166
- },
167
- async get(key): Promise<JsonValue | undefined> {
168
- if (isUnrepresentableFileKey(key)) {
169
- return undefined;
170
- }
171
- const body = await sink.get(key);
172
- if (body === undefined) {
173
- return undefined;
174
- }
175
- return decodeDocument(key, body instanceof Uint8Array ? body : body.body);
176
- },
177
- async delete(key): Promise<void> {
178
- if (isUnrepresentableFileKey(key)) {
179
- return;
180
- }
181
- await sink.delete(key);
182
- },
183
- async list(prefix): Promise<StorageEntry[]> {
184
- const entries = await sink.list(prefix);
185
- // FileSink.list returns metadata only, so the values are their own
186
- // reads. Prefer the sink's batched read — on the hosted sink that is
187
- // one control-plane call per 100 keys instead of one per key, which is
188
- // what keeps a big restore under the store's per-deployment rate
189
- // budget — and fall back to bounded per-key gets elsewhere.
190
- const bodies =
191
- sink.getMany !== undefined
192
- ? await sink.getMany(entries.map(entry => entry.key))
193
- : await mapBounded(entries, LIST_READ_CONCURRENCY, entry => sink.get(entry.key));
194
- const out: StorageEntry[] = [];
195
- for (let index = 0; index < entries.length; index += 1) {
196
- const entry = entries[index];
197
- const body = bodies[index];
198
- if (entry === undefined || body === undefined) {
199
- // Deleted between list and read; a miss is not corruption.
200
- continue;
201
- }
202
- out.push({
203
- key: entry.key,
204
- value: decodeDocument(entry.key, body instanceof Uint8Array ? body : body.body),
205
- });
206
- }
207
- return out;
208
- },
209
- };
210
- }
211
-
212
- function frameworkFileKind(key: string): string | undefined {
213
- if (!key.startsWith(`${AGENTSDK_STORAGE_KEY_ROOT}/`)) {
214
- return undefined;
215
- }
216
- const rest = key.slice(AGENTSDK_STORAGE_KEY_ROOT.length + 1);
217
- const agentEnd = rest.indexOf("/");
218
- if (agentEnd === -1) {
219
- return undefined;
220
- }
221
- const afterAgent = rest.slice(agentEnd + 1);
222
- const kindEnd = afterAgent.indexOf("/");
223
- return kindEnd === -1 ? afterAgent : afterAgent.slice(0, kindEnd);
224
- }
225
-
226
- function isLogKey(key: string): boolean {
227
- return frameworkFileKind(key) === "logs";
228
- }
229
-
230
- function encodeDocument(key: string, value: JsonValue): Uint8Array {
231
- // start.log is raw UTF-8, not a JSON document. Stringify would quote
232
- // every line and store a JSON string literal instead of the tee.
233
- if (isLogKey(key)) {
234
- return new TextEncoder().encode(typeof value === "string" ? value : JSON.stringify(value));
235
- }
236
- return new TextEncoder().encode(JSON.stringify(value));
237
- }
238
-
239
- function decodeDocument(key: string, bytes: Uint8Array): JsonValue {
240
- const text = new TextDecoder().decode(bytes);
241
- if (isLogKey(key)) {
242
- return text;
243
- }
244
- try {
245
- return JSON.parse(text) as JsonValue;
246
- } catch (error) {
247
- throw new Error(
248
- `framework file storage: stored document at "${key}" is not JSON (${
249
- error instanceof Error ? error.message : String(error)
250
- })`,
251
- );
252
- }
253
- }
254
-
255
- /**
256
- * Split one storage core by key kind: framework session state to `files`,
257
- * everything else to `kv`. Spread over the KV backend when building the
258
- * full definition so its `evals` group (and the cursor-hosted marker)
259
- * rides along untouched; wrap the KV `cas` group with
260
- * {@link frameworkGuardedCas} rather than spreading it as-is.
261
- */
262
- export function composeFrameworkStorage(input: {
263
- kv: FileSinkStorageCore;
264
- files: FileSinkStorageCore;
265
- }): FileSinkStorageCore & Pick<StorageConfig, "listNewest"> {
266
- const route = (key: string): FileSinkStorageCore =>
267
- isFrameworkFileKey(key) ? input.files : input.kv;
268
- return {
269
- put: (key, value, ctx) => route(key).put(key, value, ctx),
270
- async putMany(entries, ctx) {
271
- // Partition by destination store, batch each side, and reassemble
272
- // per-entry outcomes in input order.
273
- const indexed = entries.map((entry, index) => ({ entry, index }));
274
- const results: Array<{ key: string; error?: unknown }> = entries.map(entry => ({
275
- key: entry.key,
276
- }));
277
- for (const core of [input.files, input.kv]) {
278
- const side = indexed.filter(({ entry }) => route(entry.key) === core);
279
- if (side.length === 0) {
280
- continue;
281
- }
282
- if (core.putMany === undefined) {
283
- // No batch write on this side (the KV proxy): sequential puts,
284
- // preserving the strict one-at-a-time ordering it promises.
285
- for (const { entry, index } of side) {
286
- try {
287
- await core.put(entry.key, entry.value, ctx);
288
- } catch (error) {
289
- results[index] = { key: entry.key, error };
290
- }
291
- }
292
- continue;
293
- }
294
- const settled = await core.putMany(
295
- side.map(({ entry }) => entry),
296
- ctx,
297
- );
298
- for (let i = 0; i < side.length; i += 1) {
299
- const target = side[i];
300
- const outcome = settled[i];
301
- if (target !== undefined && outcome !== undefined) {
302
- results[target.index] = outcome;
303
- }
304
- }
305
- }
306
- return results;
307
- },
308
- get: (key, ctx) => route(key).get(key, ctx),
309
- delete: (key, ctx) => route(key).delete(key, ctx),
310
- list: (prefix, ctx) => route(prefix).list(prefix, ctx),
311
- // Session records — the only `listNewest` consumer — are framework file
312
- // keys, and the file store has no write-time ordering. Spreading the KV
313
- // backend's `listNewest` through would query rows that live elsewhere
314
- // (stale KV leftovers, or nothing), so the composed core explicitly has
315
- // none and the engine falls back to the routed `list`.
316
- listNewest: undefined,
317
- };
318
- }
319
-
320
- /**
321
- * The KV backend's conditional writes, refusing framework-file keys.
322
- *
323
- * CAS runs on the KV proxy (a database row version); the plain core routes
324
- * framework session state to the file store. A future coordination path
325
- * that CASes a `session/` or `continuation/` key would otherwise read and
326
- * write a different store than the plain path — silent split-brain. Fail
327
- * loudly instead; nothing in the package CASes those kinds today.
328
- */
329
- export function frameworkGuardedCas(
330
- cas: NonNullable<StorageConfig["cas"]>,
331
- ): NonNullable<StorageConfig["cas"]> {
332
- const refuse = (key: string): void => {
333
- if (isFrameworkFileKey(key)) {
334
- throw new Error(
335
- `framework file storage: conditional writes are KV-only, but "${key}" routes to the framework file store`,
336
- );
337
- }
338
- };
339
- return {
340
- getWithVersion: (key, ctx) => {
341
- refuse(key);
342
- return cas.getWithVersion(key, ctx);
343
- },
344
- putIfAbsent: (key, value, ctx) => {
345
- refuse(key);
346
- return cas.putIfAbsent(key, value, ctx);
347
- },
348
- putIfVersion: (key, value, expectedVersion, ctx) => {
349
- refuse(key);
350
- return cas.putIfVersion(key, value, expectedVersion, ctx);
351
- },
352
- listKeys: (prefix, ctx) => {
353
- refuse(prefix);
354
- return cas.listKeys(prefix, ctx);
355
- },
356
- };
357
- }
@@ -1,156 +0,0 @@
1
- /**
2
- * Which backend framework session state is mirrored to.
3
- *
4
- * Framework state — session records, event chunks, the continuation index —
5
- * is how a session outlives the process that served it. On architecture v1
6
- * that mirror exists only when the agent author wrote `agent/storage.ts`,
7
- * which makes platform durability an agent-level decision: of the
8
- * first-party agents, some choose `cursorHostedStorage()` and some choose
9
- * `fileKv()` (pod-local disk, lost on pod replacement), and one selects
10
- * between them at runtime by reading the deployment-id environment variable
11
- * itself.
12
- *
13
- * That selection is a hosting-mode question, not an authoring question.
14
- * Architecture v2 moves it here: `agent/storage.ts` is rejected at
15
- * discovery (error diagnostic, so serve and deploy fail early), and the
16
- * platform picks the default. Architecture v1 with no authored file now
17
- * uses the same hosted-vs-self-hosted split, so deleting `agent/storage.ts`
18
- * (required to deploy the same tree onto v2) does not drop the Cursor-hosted
19
- * session mirror on a still-v1 pod.
20
- *
21
- * - **Cursor-managed hosting** (the deployment-generation environment
22
- * variable is set, same signal that registers `GET /v1/manifest`):
23
- * the deployment's **framework-level file store**
24
- * (`AGENT_SERVE_FRAMEWORK_STORE_SOURCE_ID`, bound at task time) holds
25
- * session records, event transcripts, and the continuation index —
26
- * file-shaped state on file storage, apart from the author-facing user
27
- * store. Author `host.kv`, eval runs, and conditional writes ride the
28
- * AgentSDK v2 KV proxy (cursor-hosted-v2.ts), which resolves the
29
- * pod service account to the factorydb deployment row (the v1 Bugbot
30
- * proxy cannot resolve v2 pods at all). Framework session state never
31
- * routes to the KV proxy — the composite splits by key kind — so
32
- * transcripts stay off the author-reachable KV namespace. The API key
33
- * resolves through the full credential chain on every call because hosted
34
- * freeze snapshots listen unsigned and the binder drops the key file
35
- * after restore.
36
- * - **Self-hosted**: no mirror. `--state-root` is the durable copy, which
37
- * is correct when the operator owns the disk.
38
- *
39
- * v1 still honors an authored `agent/storage.ts` when present. Hosted v1
40
- * pods with no authored file get the Cursor-hosted lazy mirror (gated on
41
- * `AGENT_SERVE_DEPLOYMENT_ID`, the same signal the previous authored sinks
42
- * used). Self-hosted v1 with no authored file stays disk-only.
43
- *
44
- * Local disk is not part of this decision. `<stateRoot>/sessions/<id>/`
45
- * already holds `session.json` and `events.ndjson` unconditionally, through
46
- * the session store; what this selects is the durable mirror *beyond* the
47
- * pod's filesystem.
48
- */
49
-
50
- import { cursorHostedFiles } from "../files-backends/cursor-hosted.js";
51
- import { defineStorage, type StorageDefinition } from "../storage.js";
52
- import {
53
- AGENT_SERVE_DEPLOYMENT_ID_ENV_VAR,
54
- cursorHostedStorage,
55
- } from "../storage-backends/cursor-hosted.js";
56
- import { cursorHostedStorageV2 } from "../storage-backends/cursor-hosted-v2.js";
57
- import type { AgentArchitecture } from "../types.js";
58
- import { resolveApiKeySync } from "./cursor/credentials.js";
59
- import {
60
- composeFrameworkStorage,
61
- fileSinkStorageCore,
62
- frameworkGuardedCas,
63
- } from "./framework-file-storage.js";
64
- import { resolveAgentV2Hosting } from "./v2-hosting.js";
65
-
66
- export interface FrameworkStorageSelectionInput {
67
- /** `agent/storage.ts`, when the author wrote one (v1 only: discovery rejects it on v2). */
68
- readonly authored: StorageDefinition | undefined;
69
- /** {@link AgentConfig.architecture}; discovery fills `"v2"` when omitted. */
70
- readonly architecture?: AgentArchitecture | undefined;
71
- /** Environment override for tests; defaults to `process.env`. */
72
- readonly env?: Record<string, string | undefined>;
73
- }
74
-
75
- /**
76
- * Pick the backend for framework session state.
77
- *
78
- * Returns `undefined` when there is no mirror, in which case the pod's local
79
- * disk is the only copy.
80
- */
81
- export function selectFrameworkStorageDefinition(
82
- input: FrameworkStorageSelectionInput,
83
- ): StorageDefinition | undefined {
84
- if (input.architecture !== "v2") {
85
- if (input.authored !== undefined) {
86
- return input.authored;
87
- }
88
- const env = input.env ?? process.env;
89
- if ((env[AGENT_SERVE_DEPLOYMENT_ID_ENV_VAR] ?? "").trim() !== "") {
90
- // Hosted v1 pod with no authored sink: keep the Cursor-hosted
91
- // mirror (lazy restore) so agents can delete `agent/storage.ts`
92
- // without losing durability while they still run architecture v1.
93
- return defineStorage({
94
- name: "cursor-hosted (lazy restore)",
95
- policy: { restore: "off" },
96
- ...cursorHostedStorage(),
97
- });
98
- }
99
- return undefined;
100
- }
101
- if (input.authored !== undefined) {
102
- // Discovery rejects agent/storage.ts on v2 before an engine is built;
103
- // an authored definition reaching this point is a wiring bug. Raise
104
- // rather than silently discard what the author believes is configured.
105
- throw new Error(
106
- 'defineStorage (agent/storage.ts) is not supported on architecture "v2": storage is platform-selected. Delete the file.',
107
- );
108
- }
109
- const hosting = resolveAgentV2Hosting({
110
- architecture: input.architecture,
111
- env: input.env as NodeJS.ProcessEnv | undefined,
112
- });
113
- if (hosting.kind !== "cursor-managed") {
114
- // Self-hosted v2: the state root is the durable copy.
115
- return undefined;
116
- }
117
- // Hosted v2 pods wake per delivery: bulk-restoring up to the default
118
- // 1000 sessions on every boot is waste (and against the file-store
119
- // backend it is per-key HTTP round trips before the listener even
120
- // comes up). Follow-ups restore lazily by continuation or session id;
121
- // GET /v1/sessions lists from the sink either way.
122
- //
123
- // Events flush at turn end. drainSessionDurability still forces the
124
- // record onto the sink before the execution reply.
125
- const policy = {
126
- restore: "off",
127
- } as const;
128
- // Full chain (env → bind file → stored login): frozen engines listen
129
- // unsigned and bind store ids + CURSOR_API_KEY at task time, after this
130
- // definition is constructed.
131
- const resolveApiKey = (): string | undefined => resolveApiKeySync()?.apiKey;
132
- // v2 pods carry a factorydb-bound service account, which the v1 Bugbot
133
- // storage proxy cannot resolve; author KV, CAS coordination, and the
134
- // eval/A-B tables speak the AgentSDK v2 KV proxy instead. It also carries
135
- // the cursor-hosted marker, so GET /v1/sessions prefers the durable list
136
- // (session records are on the framework store, which the composed core
137
- // lists).
138
- const kv = cursorHostedStorageV2({ resolveApiKey });
139
- return defineStorage({
140
- name: "cursor-hosted (framework files)",
141
- policy,
142
- ...kv,
143
- ...composeFrameworkStorage({
144
- kv,
145
- files: fileSinkStorageCore(
146
- cursorHostedFiles({
147
- resolveStoreSourceId: () => hosting.resolveStoreIds().frameworkStoreSourceId,
148
- resolveApiKey,
149
- }),
150
- ),
151
- }),
152
- // CAS stays on the KV proxy but must refuse framework-file keys, or a
153
- // future coordination path would split-brain against the plain core.
154
- cas: frameworkGuardedCas(kv.cas),
155
- });
156
- }
@@ -1,108 +0,0 @@
1
- /**
2
- * Frontmatter parsers. Authored markdown (skill descriptions, schedule cron
3
- * expressions) uses the flat `key: value` scalar subset; Cursor plugin
4
- * markdown is full YAML (folded descriptions, lists).
5
- */
6
-
7
- import { JSON_SCHEMA, load as parseYaml } from "js-yaml";
8
-
9
- export interface ParsedFrontmatter {
10
- data: Record<string, string>;
11
- body: string;
12
- }
13
-
14
- export interface ParsedYamlFrontmatter {
15
- data: Record<string, unknown>;
16
- body: string;
17
- /** Why the block did not parse as a YAML mapping; `data` is then empty. */
18
- error?: string;
19
- }
20
-
21
- const FRONTMATTER_OPEN = /^---\s*$/;
22
- const YAML_FRONTMATTER = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)([\s\S]*)$/;
23
-
24
- /** YAML frontmatter with the JSON schema (no custom tags). */
25
- export function parseYamlFrontmatter(source: string): ParsedYamlFrontmatter {
26
- const match = YAML_FRONTMATTER.exec(source);
27
- if (match === null) {
28
- return { data: {}, body: source };
29
- }
30
- const body = match[2] ?? "";
31
- let data: unknown;
32
- try {
33
- data = parseYaml(match[1] ?? "", { schema: JSON_SCHEMA });
34
- } catch (error) {
35
- const message = error instanceof Error ? error.message : String(error);
36
- return { data: {}, body, error: message };
37
- }
38
- if (data === undefined || data === null) {
39
- return { data: {}, body };
40
- }
41
- if (typeof data !== "object" || Array.isArray(data)) {
42
- return { data: {}, body, error: "frontmatter is not a mapping" };
43
- }
44
- return { data: data as Record<string, unknown>, body };
45
- }
46
-
47
- export function parseFrontmatter(source: string): ParsedFrontmatter {
48
- const lines = source.split(/\r?\n/);
49
- if (lines.length === 0 || !FRONTMATTER_OPEN.test(lines[0] ?? "")) {
50
- return { data: {}, body: source };
51
- }
52
-
53
- let closeIndex = -1;
54
- for (let i = 1; i < lines.length; i++) {
55
- if (FRONTMATTER_OPEN.test(lines[i] ?? "")) {
56
- closeIndex = i;
57
- break;
58
- }
59
- }
60
- if (closeIndex === -1) {
61
- return { data: {}, body: source };
62
- }
63
-
64
- const data: Record<string, string> = {};
65
- for (const line of lines.slice(1, closeIndex)) {
66
- if (line.trim() === "" || line.trim().startsWith("#")) {
67
- continue;
68
- }
69
- const separator = line.indexOf(":");
70
- if (separator === -1) {
71
- continue;
72
- }
73
- const key = line.slice(0, separator).trim();
74
- if (key === "") {
75
- continue;
76
- }
77
- data[key] = unquote(line.slice(separator + 1).trim());
78
- }
79
-
80
- const body = lines
81
- .slice(closeIndex + 1)
82
- .join("\n")
83
- .replace(/^\n+/, "");
84
- return { data, body };
85
- }
86
-
87
- export function serializeFrontmatter(data: Record<string, string>): string {
88
- const lines = Object.entries(data).map(([key, value]) => `${key}: ${quoteIfNeeded(value)}`);
89
- return `---\n${lines.join("\n")}\n---\n`;
90
- }
91
-
92
- function unquote(value: string): string {
93
- if (
94
- value.length >= 2 &&
95
- ((value.startsWith('"') && value.endsWith('"')) ||
96
- (value.startsWith("'") && value.endsWith("'")))
97
- ) {
98
- return value.slice(1, -1);
99
- }
100
- return value;
101
- }
102
-
103
- function quoteIfNeeded(value: string): string {
104
- if (/[:#'"\n]/.test(value)) {
105
- return JSON.stringify(value);
106
- }
107
- return value;
108
- }