@cursor/bdk 0.2.8 → 0.2.10

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 (581) hide show
  1. package/dist/artifacts.js +3 -5
  2. package/dist/bin/agent-serve.d.ts +1 -0
  3. package/dist/bin/agent-serve.d.ts.map +1 -1
  4. package/dist/bin/agent-serve.js +820 -807
  5. package/dist/channels/bitbucket/api.js +305 -321
  6. package/dist/channels/bitbucket/binding.js +97 -61
  7. package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
  8. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
  9. package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
  10. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
  11. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  12. package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
  13. package/dist/channels/bitbucket/checks.js +9 -21
  14. package/dist/channels/bitbucket/cursor-account.js +1 -1
  15. package/dist/channels/bitbucket/defaults.js +14 -4
  16. package/dist/channels/bitbucket/events.js +1 -2
  17. package/dist/channels/bitbucket/index.d.ts +6 -2
  18. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  19. package/dist/channels/bitbucket/index.js +6 -2
  20. package/dist/channels/bitbucket/replay.js +80 -56
  21. package/dist/channels/bitbucket/state.js +16 -7
  22. package/dist/channels/bitbucket/types.d.ts +11 -2
  23. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  24. package/dist/channels/checks.js +18 -28
  25. package/dist/channels/deployments/deployments-channel.js +26 -34
  26. package/dist/channels/github/api.js +216 -210
  27. package/dist/channels/github/auth.d.ts +5 -1
  28. package/dist/channels/github/auth.d.ts.map +1 -1
  29. package/dist/channels/github/auth.js +157 -174
  30. package/dist/channels/github/binding.js +48 -39
  31. package/dist/channels/github/checks.js +9 -14
  32. package/dist/channels/github/cursor-account.js +6 -11
  33. package/dist/channels/github/defaults.js +105 -130
  34. package/dist/channels/github/forward.js +13 -17
  35. package/dist/channels/github/github-channel.d.ts +43 -2
  36. package/dist/channels/github/github-channel.d.ts.map +1 -1
  37. package/dist/channels/github/github-channel.js +1228 -958
  38. package/dist/channels/github/progress.js +145 -146
  39. package/dist/channels/github/replay.js +30 -39
  40. package/dist/channels/github/state.js +40 -16
  41. package/dist/channels/github/types.d.ts +30 -6
  42. package/dist/channels/github/types.d.ts.map +1 -1
  43. package/dist/channels/gitlab/api.js +100 -114
  44. package/dist/channels/gitlab/binding.js +52 -33
  45. package/dist/channels/gitlab/checks.js +28 -29
  46. package/dist/channels/gitlab/cursor-account.js +1 -1
  47. package/dist/channels/gitlab/defaults.js +9 -3
  48. package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
  49. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
  50. package/dist/channels/gitlab/gitlab-channel.js +95 -42
  51. package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
  52. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
  53. package/dist/channels/gitlab/gitlab-webhook.js +282 -249
  54. package/dist/channels/gitlab/index.d.ts +6 -2
  55. package/dist/channels/gitlab/index.d.ts.map +1 -1
  56. package/dist/channels/gitlab/index.js +6 -2
  57. package/dist/channels/gitlab/replay.js +50 -27
  58. package/dist/channels/gitlab/state.js +14 -6
  59. package/dist/channels/gitlab/types.d.ts +13 -2
  60. package/dist/channels/gitlab/types.d.ts.map +1 -1
  61. package/dist/channels/origin/api.js +100 -116
  62. package/dist/channels/origin/binding.js +15 -16
  63. package/dist/channels/origin/checks.js +30 -28
  64. package/dist/channels/origin/defaults.js +50 -65
  65. package/dist/channels/origin/origin-channel.js +266 -272
  66. package/dist/channels/origin/origin-webhook.js +70 -88
  67. package/dist/channels/origin/reactions.js +9 -21
  68. package/dist/channels/origin/state.js +13 -5
  69. package/dist/channels/slack/agentic-delivery.js +426 -478
  70. package/dist/channels/slack/agentic-posted.js +9 -10
  71. package/dist/channels/slack/agentic-signals.js +2 -3
  72. package/dist/channels/slack/api.js +417 -427
  73. package/dist/channels/slack/approvals.js +1 -1
  74. package/dist/channels/slack/assistant.js +37 -47
  75. package/dist/channels/slack/attachments.js +188 -206
  76. package/dist/channels/slack/auth.js +8 -6
  77. package/dist/channels/slack/bot-mentions.js +31 -45
  78. package/dist/channels/slack/channel-watch.js +42 -48
  79. package/dist/channels/slack/cli-project.js +112 -137
  80. package/dist/channels/slack/code-fences.js +3 -5
  81. package/dist/channels/slack/constants.js +2 -2
  82. package/dist/channels/slack/credentials.js +23 -38
  83. package/dist/channels/slack/defaults.js +292 -331
  84. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  85. package/dist/channels/slack/dispatch.js +533 -460
  86. package/dist/channels/slack/doctor.js +200 -214
  87. package/dist/channels/slack/eval-directive.js +79 -96
  88. package/dist/channels/slack/event-id-dedupe.js +1 -1
  89. package/dist/channels/slack/external-policy.js +26 -39
  90. package/dist/channels/slack/footer.js +28 -41
  91. package/dist/channels/slack/inbound.d.ts +1 -0
  92. package/dist/channels/slack/inbound.d.ts.map +1 -1
  93. package/dist/channels/slack/inbound.js +50 -31
  94. package/dist/channels/slack/init.d.ts +1 -5
  95. package/dist/channels/slack/init.d.ts.map +1 -1
  96. package/dist/channels/slack/init.js +42 -59
  97. package/dist/channels/slack/interactive.d.ts +9 -3
  98. package/dist/channels/slack/interactive.d.ts.map +1 -1
  99. package/dist/channels/slack/interactive.js +160 -162
  100. package/dist/channels/slack/links.js +1 -2
  101. package/dist/channels/slack/live-delivery.js +172 -190
  102. package/dist/channels/slack/manifest.d.ts.map +1 -1
  103. package/dist/channels/slack/manifest.js +44 -23
  104. package/dist/channels/slack/message-body.js +2 -2
  105. package/dist/channels/slack/nudge-carrier.js +30 -42
  106. package/dist/channels/slack/nudge-store.js +164 -191
  107. package/dist/channels/slack/paint-start.js +66 -81
  108. package/dist/channels/slack/placeholder.js +123 -152
  109. package/dist/channels/slack/pr-ref.js +1 -1
  110. package/dist/channels/slack/progress-delivery.js +65 -78
  111. package/dist/channels/slack/reasoning-card.js +36 -49
  112. package/dist/channels/slack/recording-sink.js +12 -24
  113. package/dist/channels/slack/reply-options.js +7 -12
  114. package/dist/channels/slack/self-identity.js +27 -35
  115. package/dist/channels/slack/sender-name.d.ts +12 -3
  116. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  117. package/dist/channels/slack/sender-name.js +57 -61
  118. package/dist/channels/slack/setup.js +2 -4
  119. package/dist/channels/slack/slack-channel.d.ts +6 -4
  120. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  121. package/dist/channels/slack/slack-channel.js +441 -308
  122. package/dist/channels/slack/socket-mode.js +38 -52
  123. package/dist/channels/slack/thread-context.js +143 -160
  124. package/dist/channels/slack/tool-approval-events.js +149 -166
  125. package/dist/channels/slack/tool-cards.js +6 -11
  126. package/dist/channels/slack/tool-chip.js +1 -2
  127. package/dist/channels/slack/types.d.ts +15 -17
  128. package/dist/channels/slack/types.d.ts.map +1 -1
  129. package/dist/channels/slack/upload.js +84 -97
  130. package/dist/channels/slack/user-info.js +27 -41
  131. package/dist/channels.js +9 -20
  132. package/dist/dashboard-session-url.js +3 -4
  133. package/dist/docs/404.html +2 -2
  134. package/dist/docs/assets/{app.oyjtOr3W.js → app.DXI7bwox.js} +4 -4
  135. package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
  136. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
  137. package/dist/docs/assets/chunks/{VPLocalSearchBox.D0P6J_UJ.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
  138. package/dist/docs/assets/chunks/{arc.B0LY1J1h.js → arc.BOG1yms8.js} +1 -1
  139. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.dPduLUxY.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
  140. package/dist/docs/assets/chunks/{baseUniq.B_Ohm21h.js → baseUniq.H044KjKs.js} +1 -1
  141. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.B4zcanaJ.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
  142. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.D9Iw21nx.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
  143. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
  144. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.DDVwRShI.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
  145. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DsYcdn1i.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
  146. package/dist/docs/assets/chunks/{chunk-55IACEB6.BzzQvcYp.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
  147. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BMiXZ7FX.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
  148. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.D_mBcLoc.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
  149. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CMVjWVMx.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
  150. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BG-FrPv9.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
  151. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CkFE1ap3.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
  152. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
  153. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
  154. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
  155. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BVNnCTvY.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
  156. package/dist/docs/assets/chunks/{dagre-KV5264BT.CDN5PR9l.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
  157. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DQRUlT-i.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
  158. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.CoeblYQT.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
  159. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DW3ymjl0.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
  160. package/dist/docs/assets/chunks/{diagram-TYMM5635.BP0uN4Jw.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
  161. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DVFUWEn4.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
  162. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.HU-eHspv.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
  163. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DHNhXijY.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
  164. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DkISXcO3.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
  165. package/dist/docs/assets/chunks/{graph.CCV0fuRR.js → graph.BVqKRmRo.js} +1 -1
  166. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.bgILzOoc.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
  167. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.CuryXC0F.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
  168. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BL1Pr-wu.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
  169. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BbGjvk4l.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
  170. package/dist/docs/assets/chunks/{layout.C4PfdldS.js → layout.CGU3gfSf.js} +1 -1
  171. package/dist/docs/assets/chunks/{linear.C3xD1T6X.js → linear.DaihpW_n.js} +1 -1
  172. package/dist/docs/assets/chunks/{min.CzgRAQ9c.js → min.BS-j8kHQ.js} +1 -1
  173. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CA9rSWum.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
  174. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.B8MprgJu.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
  175. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DndDwbKT.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
  176. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.Zhfgwlnn.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
  177. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.B6RRm6N5.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
  178. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Bfmz-1PN.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
  179. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.gbrdNqgj.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
  180. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
  181. package/dist/docs/assets/chunks/{theme.gpWjytMh.js → theme.DaplWQhQ.js} +2 -2
  182. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Bl1l7M1f.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
  183. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.Dfle4U0d.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
  184. package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +162 -0
  185. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.CM_4lmvZ.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
  186. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CHT5X28R.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
  187. package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
  188. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
  189. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
  190. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
  191. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
  192. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
  193. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
  194. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
  195. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
  196. package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
  197. package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
  198. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  199. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  200. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  201. package/dist/docs/building-with-agents.html +37 -37
  202. package/dist/docs/building-with-agents.md +2 -0
  203. package/dist/docs/deployment.html +38 -38
  204. package/dist/docs/deployment.md +7 -0
  205. package/dist/docs/evals.html +36 -36
  206. package/dist/docs/guides/agent-to-agent.html +35 -35
  207. package/dist/docs/guides/bitbucket.html +38 -38
  208. package/dist/docs/guides/bitbucket.md +9 -1
  209. package/dist/docs/guides/cloud-agents.html +35 -35
  210. package/dist/docs/guides/convert-automation.html +35 -35
  211. package/dist/docs/guides/github.html +39 -39
  212. package/dist/docs/guides/github.md +20 -4
  213. package/dist/docs/guides/gitlab.html +38 -38
  214. package/dist/docs/guides/gitlab.md +9 -1
  215. package/dist/docs/guides/grokbot-agents.html +35 -35
  216. package/dist/docs/guides/hooks.html +35 -35
  217. package/dist/docs/guides/improve.html +35 -35
  218. package/dist/docs/guides/jev.html +35 -35
  219. package/dist/docs/guides/mcp-oauth.html +35 -35
  220. package/dist/docs/guides/migrate.html +66 -0
  221. package/dist/docs/guides/migrate.md +122 -0
  222. package/dist/docs/guides/opentelemetry.html +35 -35
  223. package/dist/docs/guides/slack.html +35 -35
  224. package/dist/docs/guides/webhooks.html +35 -35
  225. package/dist/docs/hashmap.json +1 -1
  226. package/dist/docs/hillclimbing.html +35 -35
  227. package/dist/docs/index.html +35 -35
  228. package/dist/docs/llms-full.txt +214 -6
  229. package/dist/docs/llms.txt +1 -0
  230. package/dist/docs/quickstart.html +35 -35
  231. package/dist/docs/reference/agent-config.html +35 -35
  232. package/dist/docs/reference/artifacts.html +35 -35
  233. package/dist/docs/reference/channels.html +35 -35
  234. package/dist/docs/reference/cli.html +39 -38
  235. package/dist/docs/reference/cli.md +39 -0
  236. package/dist/docs/reference/connections.html +35 -35
  237. package/dist/docs/reference/evals.html +35 -35
  238. package/dist/docs/reference/extensions.html +35 -35
  239. package/dist/docs/reference/hooks.html +35 -35
  240. package/dist/docs/reference/http-api.html +35 -35
  241. package/dist/docs/reference/instructions.html +35 -35
  242. package/dist/docs/reference/playground.html +35 -35
  243. package/dist/docs/reference/project-layout.html +35 -35
  244. package/dist/docs/reference/prompt.html +35 -35
  245. package/dist/docs/reference/schedules.html +35 -35
  246. package/dist/docs/reference/sessions.html +35 -35
  247. package/dist/docs/reference/skills.html +38 -38
  248. package/dist/docs/reference/subagents.html +35 -35
  249. package/dist/docs/reference/tools.html +35 -35
  250. package/dist/docs/templates/agentic-owners.html +35 -35
  251. package/dist/docs/templates/grokbot-agents.html +35 -35
  252. package/dist/docs/templates/security-reviewer.html +35 -35
  253. package/dist/docs/templates/thermo-quality-review.html +35 -35
  254. package/dist/docs/templates/thermo-review.html +35 -35
  255. package/dist/docs/templates/triage.html +35 -35
  256. package/dist/docs/troubleshooting.html +36 -36
  257. package/dist/docs/troubleshooting.md +1 -0
  258. package/dist/evals/assertions.js +20 -34
  259. package/dist/evals/expect.js +3 -6
  260. package/dist/evals/judge.js +5 -8
  261. package/dist/evals/loaders.js +45 -62
  262. package/dist/evals/matchers.js +2 -3
  263. package/dist/evals/reporters.js +43 -67
  264. package/dist/evals/results.js +1 -1
  265. package/dist/evals/run-facts.js +5 -6
  266. package/dist/evals.js +27 -15
  267. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  268. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +0 -1
  269. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  270. package/dist/extensions/cursor-cloud-agents/lib/backend.js +101 -130
  271. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  272. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  273. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  274. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  275. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  276. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  277. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  278. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  279. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  280. package/dist/extensions/cursor-cloud-agents/tools/list.d.ts.map +1 -1
  281. package/dist/extensions/cursor-cloud-agents/tools/list.js +9 -20
  282. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  283. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  284. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  285. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  286. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  287. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  288. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  289. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  290. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  291. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  292. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  293. package/dist/extensions/jev/extension.js +3 -3
  294. package/dist/extensions/jev/lib/evaluate.js +43 -60
  295. package/dist/extensions/jev/tools/evaluate.js +6 -17
  296. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  297. package/dist/extensions.js +3 -5
  298. package/dist/files-backends/cursor-hosted.js +504 -523
  299. package/dist/files-backends/local-fs.js +72 -134
  300. package/dist/files.js +3 -3
  301. package/dist/filesystem.js +562 -861
  302. package/dist/index.js +16 -35
  303. package/dist/internal/advertise-tools.js +74 -86
  304. package/dist/internal/artifacts-store.js +298 -361
  305. package/dist/internal/as-of.js +2 -4
  306. package/dist/internal/authored-alias-hooks.js +6 -4
  307. package/dist/internal/authored-loaders.js +37 -52
  308. package/dist/internal/bounded-int.js +1 -2
  309. package/dist/internal/bounded.js +13 -24
  310. package/dist/internal/brand.js +1 -1
  311. package/dist/internal/browser-origin-guard.js +4 -4
  312. package/dist/internal/builtin-tools/artifacts.js +15 -27
  313. package/dist/internal/builtin-tools/index.js +2 -3
  314. package/dist/internal/builtin-tools/reminders.js +33 -52
  315. package/dist/internal/channel-architecture.d.ts +21 -0
  316. package/dist/internal/channel-architecture.d.ts.map +1 -0
  317. package/dist/internal/channel-architecture.js +41 -0
  318. package/dist/internal/channel-dispatch.js +3 -4
  319. package/dist/internal/channel-route-dispatch.js +40 -51
  320. package/dist/internal/channel-state.js +1 -1
  321. package/dist/internal/chat-client.js +319 -340
  322. package/dist/internal/cli-ax.js +1262 -1294
  323. package/dist/internal/cli-bitbucket.js +244 -272
  324. package/dist/internal/cli-convert-automation.js +137 -151
  325. package/dist/internal/cli-cursor.js +126 -147
  326. package/dist/internal/cli-deploy.d.ts.map +1 -1
  327. package/dist/internal/cli-deploy.js +1457 -1507
  328. package/dist/internal/cli-docs.js +130 -147
  329. package/dist/internal/cli-github.js +437 -476
  330. package/dist/internal/cli-gitlab.js +259 -288
  331. package/dist/internal/cli-images.js +266 -334
  332. package/dist/internal/cli-manifest.js +25 -37
  333. package/dist/internal/cli-mcp-oauth.js +228 -247
  334. package/dist/internal/cli-mcp.js +358 -383
  335. package/dist/internal/cli-migrate.d.ts +18 -0
  336. package/dist/internal/cli-migrate.d.ts.map +1 -0
  337. package/dist/internal/cli-migrate.js +136 -0
  338. package/dist/internal/cli-skills.js +35 -47
  339. package/dist/internal/cli-slack-manual.d.ts +0 -1
  340. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  341. package/dist/internal/cli-slack-manual.js +175 -204
  342. package/dist/internal/cli-slack.d.ts +1 -1
  343. package/dist/internal/cli-slack.d.ts.map +1 -1
  344. package/dist/internal/cli-slack.js +416 -456
  345. package/dist/internal/cloud-merge.js +7 -3
  346. package/dist/internal/cloud-turn-cost.js +8 -1
  347. package/dist/internal/connection-env.js +5 -6
  348. package/dist/internal/continuation-channel.js +10 -7
  349. package/dist/internal/continuation-identity.js +85 -67
  350. package/dist/internal/conversation-mirror.js +112 -131
  351. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  352. package/dist/internal/cron.js +3 -3
  353. package/dist/internal/cursor/account-mcp.js +147 -146
  354. package/dist/internal/cursor/backend-client.js +290 -320
  355. package/dist/internal/cursor/bound-secret-file.js +3 -3
  356. package/dist/internal/cursor/credentials.d.ts +1 -0
  357. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  358. package/dist/internal/cursor/credentials.js +130 -142
  359. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  360. package/dist/internal/cursor/github-credentials.js +91 -108
  361. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  362. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  363. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  364. package/dist/internal/cursor/session-token.js +36 -48
  365. package/dist/internal/cursor/store-api-client.js +77 -92
  366. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  367. package/dist/internal/cursor-agent-template.js +1 -1
  368. package/dist/internal/cursor-deployment-relay.js +33 -54
  369. package/dist/internal/cursor-event-relay.js +65 -59
  370. package/dist/internal/cursor-relay-core.js +258 -286
  371. package/dist/internal/deferred-channel-session.js +3 -12
  372. package/dist/internal/deploy-client.js +410 -475
  373. package/dist/internal/deploy-manifest.d.ts +17 -0
  374. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  375. package/dist/internal/deploy-manifest.js +71 -21
  376. package/dist/internal/deploy-source.js +31 -43
  377. package/dist/internal/discovery/agent-config.js +45 -59
  378. package/dist/internal/discovery/agent.js +276 -280
  379. package/dist/internal/discovery/channels.js +67 -80
  380. package/dist/internal/discovery/connections.js +286 -296
  381. package/dist/internal/discovery/context.js +2 -13
  382. package/dist/internal/discovery/cursor-plugin.js +223 -259
  383. package/dist/internal/discovery/extension-overlay.js +104 -131
  384. package/dist/internal/discovery/extensions.js +276 -281
  385. package/dist/internal/discovery/fs.js +56 -79
  386. package/dist/internal/discovery/hooks.js +39 -50
  387. package/dist/internal/discovery/info.js +17 -19
  388. package/dist/internal/discovery/instructions.js +58 -71
  389. package/dist/internal/discovery/modules.js +45 -58
  390. package/dist/internal/discovery/project.d.ts.map +1 -1
  391. package/dist/internal/discovery/project.js +192 -215
  392. package/dist/internal/discovery/reminders.js +41 -52
  393. package/dist/internal/discovery/runtime.js +1 -1
  394. package/dist/internal/discovery/schedules.js +71 -82
  395. package/dist/internal/discovery/seed-files.js +21 -32
  396. package/dist/internal/discovery/services.js +74 -96
  397. package/dist/internal/discovery/skills.js +77 -94
  398. package/dist/internal/discovery/subagent.js +79 -95
  399. package/dist/internal/discovery/tools.js +12 -23
  400. package/dist/internal/distribution.js +2 -2
  401. package/dist/internal/docs-site.js +30 -45
  402. package/dist/internal/duration.js +1 -1
  403. package/dist/internal/env-file.js +48 -64
  404. package/dist/internal/eval-judge-model.js +17 -28
  405. package/dist/internal/eval-run-store.js +265 -254
  406. package/dist/internal/eval-runner.d.ts +8 -0
  407. package/dist/internal/eval-runner.d.ts.map +1 -1
  408. package/dist/internal/eval-runner.js +406 -408
  409. package/dist/internal/eval-transport.d.ts +24 -0
  410. package/dist/internal/eval-transport.d.ts.map +1 -0
  411. package/dist/internal/eval-transport.js +22 -0
  412. package/dist/internal/evals-client.js +242 -246
  413. package/dist/internal/event-log.js +72 -120
  414. package/dist/internal/event-mapper.js +30 -31
  415. package/dist/internal/factory-resource-channel.js +16 -30
  416. package/dist/internal/filesystem/errors.js +6 -6
  417. package/dist/internal/filesystem/format.js +10 -13
  418. package/dist/internal/filesystem/merge.js +52 -94
  419. package/dist/internal/filesystem/nearest.js +15 -27
  420. package/dist/internal/filesystem/scratch.js +65 -85
  421. package/dist/internal/filesystem/tools.js +221 -241
  422. package/dist/internal/filesystem/walk.js +76 -143
  423. package/dist/internal/framework-file-storage.js +118 -139
  424. package/dist/internal/framework-storage-selection.js +21 -13
  425. package/dist/internal/frontmatter.js +4 -6
  426. package/dist/internal/github-fanout.js +50 -64
  427. package/dist/internal/guest-network.js +96 -109
  428. package/dist/internal/handleAgentServeTrigger.js +121 -126
  429. package/dist/internal/host-files.js +73 -88
  430. package/dist/internal/host-kv.js +21 -36
  431. package/dist/internal/host-otel.js +22 -19
  432. package/dist/internal/host-platforms.js +49 -63
  433. package/dist/internal/hosted-catch-protocol.d.ts +1 -0
  434. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  435. package/dist/internal/hosted-catch-protocol.js +1 -0
  436. package/dist/internal/hosted-catch.d.ts +5 -3
  437. package/dist/internal/hosted-catch.d.ts.map +1 -1
  438. package/dist/internal/hosted-catch.js +84 -93
  439. package/dist/internal/hosted-delivery-protocol.js +32 -8
  440. package/dist/internal/hosted-delivery.d.ts +13 -1
  441. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  442. package/dist/internal/hosted-delivery.js +614 -584
  443. package/dist/internal/hosted-eval-cases.d.ts +21 -0
  444. package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
  445. package/dist/internal/hosted-eval-cases.js +162 -0
  446. package/dist/internal/hosted-execution-diag.js +38 -30
  447. package/dist/internal/hosted-execution-flush.js +75 -66
  448. package/dist/internal/hosted-execution-latency.js +16 -8
  449. package/dist/internal/hosted-managed-automation.js +2 -2
  450. package/dist/internal/hosting.js +2 -3
  451. package/dist/internal/http-channel-define.js +4 -1
  452. package/dist/internal/http-channel.js +101 -112
  453. package/dist/internal/http-control-plane-session.d.ts +18 -1
  454. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  455. package/dist/internal/http-control-plane-session.js +66 -32
  456. package/dist/internal/incoming-headers-to-fetch.js +1 -2
  457. package/dist/internal/init-interview.js +73 -93
  458. package/dist/internal/init-project.js +182 -214
  459. package/dist/internal/init-scaffold.js +10 -21
  460. package/dist/internal/inline-stdio-mcp.js +80 -86
  461. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  462. package/dist/internal/install-cursor-skills.js +238 -274
  463. package/dist/internal/legacy-command-guard.js +18 -31
  464. package/dist/internal/listen-port.js +34 -45
  465. package/dist/internal/local-control-plane.js +293 -307
  466. package/dist/internal/local-env.js +1 -1
  467. package/dist/internal/local-ingress.js +15 -9
  468. package/dist/internal/log-ring.js +1 -2
  469. package/dist/internal/logs-client.js +207 -227
  470. package/dist/internal/map-pool.js +24 -38
  471. package/dist/internal/mcp-endpoint.js +204 -180
  472. package/dist/internal/mcp-host.js +165 -168
  473. package/dist/internal/mcp-oauth-on-demand.js +170 -207
  474. package/dist/internal/mcp-oauth-persist.js +15 -29
  475. package/dist/internal/mcp-oauth.js +209 -266
  476. package/dist/internal/named-webhook-secret.d.ts +39 -0
  477. package/dist/internal/named-webhook-secret.d.ts.map +1 -0
  478. package/dist/internal/named-webhook-secret.js +47 -0
  479. package/dist/internal/open-browser.js +2 -3
  480. package/dist/internal/otel/collector.js +104 -68
  481. package/dist/internal/otel/config.js +24 -37
  482. package/dist/internal/otel/http.js +5 -7
  483. package/dist/internal/otel/mcp.js +3 -12
  484. package/dist/internal/otel/runtime.js +69 -83
  485. package/dist/internal/package-inline-stdio.js +57 -65
  486. package/dist/internal/peer-connections.js +9 -5
  487. package/dist/internal/platform-schedule-sync.js +39 -54
  488. package/dist/internal/platform-timers.js +176 -210
  489. package/dist/internal/playground/static.js +1 -2
  490. package/dist/internal/playground/toolchain.js +37 -53
  491. package/dist/internal/playground-proxy.js +230 -270
  492. package/dist/internal/process-memory-telemetry.js +33 -51
  493. package/dist/internal/prompt-context.js +3 -6
  494. package/dist/internal/reminder-control-plane-protocol.js +46 -13
  495. package/dist/internal/reminder-runner.js +770 -785
  496. package/dist/internal/reminder-schedule.js +1 -1
  497. package/dist/internal/reminder-store.js +57 -78
  498. package/dist/internal/request-error-status.js +1 -3
  499. package/dist/internal/request-headers.js +2 -2
  500. package/dist/internal/resolve-prod-target.js +119 -135
  501. package/dist/internal/resolved-connections.js +16 -6
  502. package/dist/internal/run-client.js +221 -229
  503. package/dist/internal/runtime-dispatch-runner.js +18 -43
  504. package/dist/internal/schedule-runner.js +49 -58
  505. package/dist/internal/scm/pr-url.js +7 -6
  506. package/dist/internal/sdk-runner.js +388 -363
  507. package/dist/internal/serve-restart.js +26 -39
  508. package/dist/internal/server.d.ts.map +1 -1
  509. package/dist/internal/server.js +1283 -1244
  510. package/dist/internal/session-cost.js +7 -9
  511. package/dist/internal/session-engine.d.ts +3 -1
  512. package/dist/internal/session-engine.d.ts.map +1 -1
  513. package/dist/internal/session-engine.js +2801 -2777
  514. package/dist/internal/session-links.js +12 -16
  515. package/dist/internal/session-run-log.js +134 -82
  516. package/dist/internal/session-store.js +133 -164
  517. package/dist/internal/sessions-client.js +97 -118
  518. package/dist/internal/skill-catalog.js +18 -23
  519. package/dist/internal/skills-sync.js +16 -30
  520. package/dist/internal/slack-provision-client.js +90 -116
  521. package/dist/internal/start-log-store.js +48 -67
  522. package/dist/internal/steering.js +1 -2
  523. package/dist/internal/storage-coordinator.js +160 -196
  524. package/dist/internal/store-mirror.js +16 -30
  525. package/dist/internal/stream-progress.js +6 -8
  526. package/dist/internal/terminal-style.js +3 -4
  527. package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
  528. package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
  529. package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
  530. package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
  531. package/dist/internal/tool-catalog.js +11 -5
  532. package/dist/internal/tool-result.js +1 -1
  533. package/dist/internal/trajectory.js +19 -22
  534. package/dist/internal/turn-cost.js +52 -62
  535. package/dist/internal/turn-governor.js +5 -8
  536. package/dist/internal/turn-lease-store.js +85 -105
  537. package/dist/internal/turn-outbox.js +28 -43
  538. package/dist/internal/update-check.js +231 -259
  539. package/dist/internal/v2-hosting.js +1 -2
  540. package/dist/internal/workspace-sync.js +25 -41
  541. package/dist/internal/workspace.js +111 -139
  542. package/dist/kv/memory-kv.js +27 -51
  543. package/dist/memory.js +106 -148
  544. package/dist/otel.js +5 -8
  545. package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
  546. package/dist/playground/assets/{index-MijLHTbB.js → index-JekUQERK.js} +45 -45
  547. package/dist/playground/index.html +2 -2
  548. package/dist/prompt.js +2 -4
  549. package/dist/storage-backends/cursor-hosted-v2.js +53 -83
  550. package/dist/storage-backends/cursor-hosted.js +105 -145
  551. package/dist/storage-backends/file-kv.js +100 -128
  552. package/dist/storage-protocol.js +3 -5
  553. package/dist/storage.js +17 -26
  554. package/dist/types.d.ts +68 -0
  555. package/dist/types.d.ts.map +1 -1
  556. package/dist/types.js +20 -18
  557. package/docs/building-with-agents.md +2 -0
  558. package/docs/deployment.md +7 -0
  559. package/docs/guides/bitbucket.md +9 -1
  560. package/docs/guides/github.md +20 -4
  561. package/docs/guides/gitlab.md +9 -1
  562. package/docs/guides/migrate.md +127 -0
  563. package/docs/reference/cli.md +39 -0
  564. package/docs/troubleshooting.md +1 -0
  565. package/package.json +1 -1
  566. package/skills/debug/SKILL.md +1 -0
  567. package/skills/github/SKILL.md +23 -0
  568. package/skills/migrate-v2/SKILL.md +264 -0
  569. package/dist/docs/assets/chunks/@localSearchIndexroot.C25zYVuc.js +0 -1
  570. package/dist/docs/assets/chunks/channel.CRUyWDV-.js +0 -1
  571. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CG_UObcQ.js +0 -1
  572. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CG_UObcQ.js +0 -1
  573. package/dist/docs/assets/chunks/clone.NYSZ9qZN.js +0 -1
  574. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DOOmulfQ.js +0 -1
  575. package/dist/docs/assets/chunks/wardley-RL74JXVD.BJrCW6xc.js +0 -162
  576. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
  577. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
  578. package/dist/playground/assets/index-DPKLl4C_.css +0 -1
  579. /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
  580. /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
  581. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -10,15 +10,6 @@
10
10
  * a send waits for an in-flight turn to settle first, so a reply always
11
11
  * attributes to the message that prompted it.
12
12
  */
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
13
  import extension from "../extension.js";
23
14
  import { resolveAgentName } from "./agents.js";
24
15
  import { grokBotAgentsBackend, } from "./backend.js";
@@ -38,116 +29,107 @@ const MIN_IDLE_POLLS_WITHOUT_BUSY = 4;
38
29
  * was created by the call that fetched it; the allowance covers clock skew
39
30
  * between this host and the backend.
40
31
  */
41
- const CREATED_WINDOW_MS = 60000;
32
+ const CREATED_WINDOW_MS = 60_000;
42
33
  /** The transcript tail of an agent nobody has spoken to. */
43
34
  const EMPTY_TRANSCRIPT_TAIL = "-1";
44
35
  const agentLocks = new KeyedLock();
45
- export function ask(ctx, input) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- const name = resolveAgentName(input.agent, extension.config.agents);
48
- const backend = grokBotAgentsBackend();
49
- const startedAt = Date.now();
50
- const session = yield backend.session(name);
51
- return agentLocks.run(session.sessionId, () => __awaiter(this, void 0, void 0, function* () {
52
- var _a, _b;
53
- const contact = (yield listContacts(ctx)).find(candidate => candidate.sessionId === session.sessionId);
54
- const created = contact === undefined &&
55
- session.latestUpdatedSeq === EMPTY_TRANSCRIPT_TAIL &&
56
- session.createdAtMs >= startedAt - CREATED_WINDOW_MS;
57
- const deadline = Date.now() + input.waitSeconds * 1000;
58
- // A turn already in flight, from an earlier message or from the person
59
- // in the app, must settle first; otherwise its deliveries would read as
60
- // the reply to this message. Nothing is persisted on the way out, so
61
- // `check` still returns whatever landed meanwhile.
62
- const before = yield collectReplies(backend, session.sessionId, {
63
- cursor: (_a = contact === null || contact === void 0 ? void 0 : contact.cursor) !== null && _a !== void 0 ? _a : session.latestUpdatedSeq,
64
- deadline,
65
- confirmIdle: false,
66
- });
67
- if (before.status === "running") {
68
- throw new Error(`"${session.name}" is still working on an earlier message; nothing was sent. Call check to read that reply, wait, or interrupt it.`);
69
- }
70
- yield backend.send(session.sessionId, input.message);
71
- const replies = yield collectReplies(backend, session.sessionId, {
72
- cursor: before.cursor,
73
- deadline,
74
- confirmIdle: true,
75
- });
76
- const now = ctx.now().toISOString();
77
- yield saveContact(ctx, {
78
- name: session.name,
79
- sessionId: session.sessionId,
80
- cursor: replies.cursor,
81
- firstContactAt: (_b = contact === null || contact === void 0 ? void 0 : contact.firstContactAt) !== null && _b !== void 0 ? _b : now,
82
- lastContactAt: now,
83
- });
84
- const notes = [
85
- created
86
- ? `No Grok Bot agent named "${session.name}" existed on this account, so an empty one was created. Check the name if that is unexpected.`
87
- : undefined,
88
- runningNote(session.name, replies.status),
89
- ].filter(note => note !== undefined);
90
- return {
91
- agent: session.name,
92
- sessionId: session.sessionId,
93
- status: replies.status,
94
- reply: joinReplies(replies.deliveries),
95
- earlierReplies: before.deliveries.length === 0 ? undefined : before.deliveries,
96
- created: created ? true : undefined,
97
- note: notes.length === 0 ? undefined : notes.join(" "),
98
- };
99
- }));
100
- });
101
- }
102
- export function check(ctx, input) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- const contact = yield knownContact(ctx, input.agent);
105
- const backend = grokBotAgentsBackend();
106
- return agentLocks.run(contact.sessionId, () => __awaiter(this, void 0, void 0, function* () {
107
- var _a;
108
- // Re-read under the lock: a parallel call may have moved the cursor.
109
- const current = (_a = (yield listContacts(ctx)).find(candidate => candidate.sessionId === contact.sessionId)) !== null && _a !== void 0 ? _a : contact;
110
- const replies = yield collectReplies(backend, current.sessionId, {
111
- cursor: current.cursor,
112
- deadline: Date.now() + input.waitSeconds * 1000,
113
- confirmIdle: true,
114
- });
115
- yield saveContact(ctx, Object.assign(Object.assign({}, current), { cursor: replies.cursor }));
116
- return {
117
- agent: current.name,
118
- sessionId: current.sessionId,
119
- status: replies.status,
120
- reply: joinReplies(replies.deliveries),
121
- note: runningNote(current.name, replies.status),
122
- };
123
- }));
36
+ export async function ask(ctx, input) {
37
+ const name = resolveAgentName(input.agent, extension.config.agents);
38
+ const backend = grokBotAgentsBackend();
39
+ const startedAt = Date.now();
40
+ const session = await backend.session(name);
41
+ return agentLocks.run(session.sessionId, async () => {
42
+ const contact = (await listContacts(ctx)).find(candidate => candidate.sessionId === session.sessionId);
43
+ const created = contact === undefined &&
44
+ session.latestUpdatedSeq === EMPTY_TRANSCRIPT_TAIL &&
45
+ session.createdAtMs >= startedAt - CREATED_WINDOW_MS;
46
+ const deadline = Date.now() + input.waitSeconds * 1000;
47
+ // A turn already in flight, from an earlier message or from the person
48
+ // in the app, must settle first; otherwise its deliveries would read as
49
+ // the reply to this message. Nothing is persisted on the way out, so
50
+ // `check` still returns whatever landed meanwhile.
51
+ const before = await collectReplies(backend, session.sessionId, {
52
+ cursor: contact?.cursor ?? session.latestUpdatedSeq,
53
+ deadline,
54
+ confirmIdle: false,
55
+ });
56
+ if (before.status === "running") {
57
+ throw new Error(`"${session.name}" is still working on an earlier message; nothing was sent. Call check to read that reply, wait, or interrupt it.`);
58
+ }
59
+ await backend.send(session.sessionId, input.message);
60
+ const replies = await collectReplies(backend, session.sessionId, {
61
+ cursor: before.cursor,
62
+ deadline,
63
+ confirmIdle: true,
64
+ });
65
+ const now = ctx.now().toISOString();
66
+ await saveContact(ctx, {
67
+ name: session.name,
68
+ sessionId: session.sessionId,
69
+ cursor: replies.cursor,
70
+ firstContactAt: contact?.firstContactAt ?? now,
71
+ lastContactAt: now,
72
+ });
73
+ const notes = [
74
+ created
75
+ ? `No Grok Bot agent named "${session.name}" existed on this account, so an empty one was created. Check the name if that is unexpected.`
76
+ : undefined,
77
+ runningNote(session.name, replies.status),
78
+ ].filter(note => note !== undefined);
79
+ return {
80
+ agent: session.name,
81
+ sessionId: session.sessionId,
82
+ status: replies.status,
83
+ reply: joinReplies(replies.deliveries),
84
+ earlierReplies: before.deliveries.length === 0 ? undefined : before.deliveries,
85
+ created: created ? true : undefined,
86
+ note: notes.length === 0 ? undefined : notes.join(" "),
87
+ };
124
88
  });
125
89
  }
126
- export function interrupt(ctx, input) {
127
- return __awaiter(this, void 0, void 0, function* () {
128
- const contact = yield knownContact(ctx, input.agent);
129
- yield grokBotAgentsBackend().interrupt(contact.sessionId, "Interrupted from the Agent SDK.");
90
+ export async function check(ctx, input) {
91
+ const contact = await knownContact(ctx, input.agent);
92
+ const backend = grokBotAgentsBackend();
93
+ return agentLocks.run(contact.sessionId, async () => {
94
+ // Re-read under the lock: a parallel call may have moved the cursor.
95
+ const current = (await listContacts(ctx)).find(candidate => candidate.sessionId === contact.sessionId) ??
96
+ contact;
97
+ const replies = await collectReplies(backend, current.sessionId, {
98
+ cursor: current.cursor,
99
+ deadline: Date.now() + input.waitSeconds * 1000,
100
+ confirmIdle: true,
101
+ });
102
+ await saveContact(ctx, { ...current, cursor: replies.cursor });
130
103
  return {
131
- agent: contact.name,
132
- sessionId: contact.sessionId,
133
- interrupted: true,
104
+ agent: current.name,
105
+ sessionId: current.sessionId,
106
+ status: replies.status,
107
+ reply: joinReplies(replies.deliveries),
108
+ note: runningNote(current.name, replies.status),
134
109
  };
135
110
  });
136
111
  }
112
+ export async function interrupt(ctx, input) {
113
+ const contact = await knownContact(ctx, input.agent);
114
+ await grokBotAgentsBackend().interrupt(contact.sessionId, "Interrupted from the Agent SDK.");
115
+ return {
116
+ agent: contact.name,
117
+ sessionId: contact.sessionId,
118
+ interrupted: true,
119
+ };
120
+ }
137
121
  /**
138
122
  * The caller's record of the named agent. Only `ask` resolves a name on the
139
123
  * backend, because that creates an agent when none matches; the other tools
140
124
  * reach agents the caller has already spoken to.
141
125
  */
142
- function knownContact(ctx, requested) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- const name = resolveAgentName(requested, extension.config.agents);
145
- const contact = findContact(yield listContacts(ctx), name);
146
- if (contact === undefined) {
147
- throw new Error(`You have not asked "${name}" anything yet; call ask first.`);
148
- }
149
- return contact;
150
- });
126
+ async function knownContact(ctx, requested) {
127
+ const name = resolveAgentName(requested, extension.config.agents);
128
+ const contact = findContact(await listContacts(ctx), name);
129
+ if (contact === undefined) {
130
+ throw new Error(`You have not asked "${name}" anything yet; call ask first.`);
131
+ }
132
+ return contact;
151
133
  }
152
134
  /**
153
135
  * Read the transcript after `cursor` until the agent's turn settles or the
@@ -157,36 +139,34 @@ function knownContact(ctx, requested) {
157
139
  * {@link MIN_IDLE_POLLS_WITHOUT_BUSY} idle polls unless the turn was seen
158
140
  * busy; without it, the first idle report settles.
159
141
  */
160
- function collectReplies(backend, sessionId, options) {
161
- return __awaiter(this, void 0, void 0, function* () {
162
- const deliveries = [];
163
- let cursor = options.cursor;
164
- let sawBusy = false;
165
- let idlePolls = 0;
166
- while (true) {
167
- const page = yield backend.entries(sessionId, cursor);
168
- cursor = page.latestUpdatedSeq;
169
- for (const entry of page.entries) {
170
- if (entry.kind === "send-message" && entry.text !== undefined) {
171
- deliveries.push(entry.text);
172
- }
173
- }
174
- const busy = isBusy(page.turn);
175
- if (busy) {
176
- sawBusy = true;
177
- }
178
- if (page.entries.length === 0 && !busy && page.turn.idle) {
179
- idlePolls += 1;
180
- if (sawBusy || !options.confirmIdle || idlePolls >= MIN_IDLE_POLLS_WITHOUT_BUSY) {
181
- return { status: "finished", deliveries, cursor };
182
- }
142
+ async function collectReplies(backend, sessionId, options) {
143
+ const deliveries = [];
144
+ let cursor = options.cursor;
145
+ let sawBusy = false;
146
+ let idlePolls = 0;
147
+ while (true) {
148
+ const page = await backend.entries(sessionId, cursor);
149
+ cursor = page.latestUpdatedSeq;
150
+ for (const entry of page.entries) {
151
+ if (entry.kind === "send-message" && entry.text !== undefined) {
152
+ deliveries.push(entry.text);
183
153
  }
184
- if (Date.now() >= options.deadline) {
185
- return { status: "running", deliveries, cursor };
154
+ }
155
+ const busy = isBusy(page.turn);
156
+ if (busy) {
157
+ sawBusy = true;
158
+ }
159
+ if (page.entries.length === 0 && !busy && page.turn.idle) {
160
+ idlePolls += 1;
161
+ if (sawBusy || !options.confirmIdle || idlePolls >= MIN_IDLE_POLLS_WITHOUT_BUSY) {
162
+ return { status: "finished", deliveries, cursor };
186
163
  }
187
- yield sleep(extension.config.pollIntervalMs);
188
164
  }
189
- });
165
+ if (Date.now() >= options.deadline) {
166
+ return { status: "running", deliveries, cursor };
167
+ }
168
+ await sleep(extension.config.pollIntervalMs);
169
+ }
190
170
  }
191
171
  function isBusy(turn) {
192
172
  return turn.inFlight || turn.queued > 0;
@@ -10,8 +10,7 @@ export class KeyedLock {
10
10
  this.chains = new Map();
11
11
  }
12
12
  run(key, task) {
13
- var _a;
14
- const previous = (_a = this.chains.get(key)) !== null && _a !== void 0 ? _a : Promise.resolve();
13
+ const previous = this.chains.get(key) ?? Promise.resolve();
15
14
  const run = previous.then(task, task);
16
15
  const settled = run.then(() => undefined, () => undefined);
17
16
  this.chains.set(key, settled);
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { z } from "zod";
11
2
  import { defineTool } from "../../../tools.js";
12
3
  import extension from "../extension.js";
@@ -24,13 +15,11 @@ const ask = defineTool({
24
15
  .describe("What to tell or ask the agent. Self-contained: who is asking, the facts it needs, and what you want back."),
25
16
  wait_seconds: waitSeconds,
26
17
  }),
27
- execute(input, ctx) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- return askAgent(ctx, {
30
- agent: input.agent,
31
- message: input.message,
32
- waitSeconds: input.wait_seconds,
33
- });
18
+ async execute(input, ctx) {
19
+ return askAgent(ctx, {
20
+ agent: input.agent,
21
+ message: input.message,
22
+ waitSeconds: input.wait_seconds,
34
23
  });
35
24
  },
36
25
  });
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { z } from "zod";
11
2
  import { defineTool } from "../../../tools.js";
12
3
  import { check as checkAgent } from "../lib/conversation.js";
@@ -20,12 +11,10 @@ const check = defineTool({
20
11
  agent: agentName,
21
12
  wait_seconds: waitSeconds,
22
13
  }),
23
- execute(input, ctx) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- return checkAgent(ctx, {
26
- agent: input.agent,
27
- waitSeconds: input.wait_seconds,
28
- });
14
+ async execute(input, ctx) {
15
+ return checkAgent(ctx, {
16
+ agent: input.agent,
17
+ waitSeconds: input.wait_seconds,
29
18
  });
30
19
  },
31
20
  });
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { z } from "zod";
11
2
  import { defineTool } from "../../../tools.js";
12
3
  import { interrupt as interruptAgent } from "../lib/conversation.js";
@@ -15,10 +6,8 @@ const interrupt = defineTool({
15
6
  description: "Stop what a Grok Bot agent you asked is doing right now. It keeps its conversation; ask it again to continue.",
16
7
  effect: "write",
17
8
  inputSchema: z.object({ agent: agentName }),
18
- execute(input, ctx) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- return interruptAgent(ctx, { agent: input.agent });
21
- });
9
+ async execute(input, ctx) {
10
+ return interruptAgent(ctx, { agent: input.agent });
22
11
  },
23
12
  });
24
13
  export default interrupt;
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { z } from "zod";
11
2
  import { defineTool } from "../../../tools.js";
12
3
  import extension from "../extension.js";
@@ -15,20 +6,17 @@ const list = defineTool({
15
6
  description: "List the Grok Bot agents you can talk to: the ones configured for this agent, with what each is for, and the ones you have already asked, most recent first.",
16
7
  effect: "read",
17
8
  inputSchema: z.object({}),
18
- execute(_input, ctx) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- var _a;
21
- const contacts = yield listContacts(ctx);
22
- return {
23
- configured: (_a = extension.config.agents) !== null && _a !== void 0 ? _a : [],
24
- contacted: contacts.map(contact => ({
25
- name: contact.name,
26
- sessionId: contact.sessionId,
27
- firstContactAt: contact.firstContactAt,
28
- lastContactAt: contact.lastContactAt,
29
- })),
30
- };
31
- });
9
+ async execute(_input, ctx) {
10
+ const contacts = await listContacts(ctx);
11
+ return {
12
+ configured: extension.config.agents ?? [],
13
+ contacted: contacts.map(contact => ({
14
+ name: contact.name,
15
+ sessionId: contact.sessionId,
16
+ firstContactAt: contact.firstContactAt,
17
+ lastContactAt: contact.lastContactAt,
18
+ })),
19
+ };
32
20
  },
33
21
  });
34
22
  export default list;
@@ -31,12 +31,12 @@ const config = z
31
31
  skills: z.boolean().default(true),
32
32
  })
33
33
  .default({})
34
- .transform(options => { var _a; return ({
34
+ .transform(options => ({
35
35
  apiKey: options.apiKey,
36
- model: (_a = options.model) !== null && _a !== void 0 ? _a : DEFAULT_EVALUATION_MODEL,
36
+ model: options.model ?? DEFAULT_EVALUATION_MODEL,
37
37
  harnessTools: options.harnessTools,
38
38
  skills: options.skills,
39
- }); });
39
+ }));
40
40
  const jev = defineExtension({
41
41
  root: import.meta.dirname,
42
42
  description: "Ask Jev for typed choice, score, and boolean answers.",
@@ -36,15 +36,6 @@
36
36
  * Auth is `TYPESAFE_API_KEY`. `model` is a TypeSafe id (`jev-latest` by
37
37
  * default).
38
38
  */
39
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
40
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
41
- return new (P || (P = Promise))(function (resolve, reject) {
42
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
43
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
44
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
45
- step((generator = generator.apply(thisArg, _arguments || [])).next());
46
- });
47
- };
48
39
  /** TypeSafe model used when {@link EvaluateArgs.model} is omitted. */
49
40
  export const DEFAULT_EVALUATION_MODEL = "jev-latest";
50
41
  /** Default bar for {@link needsHuman} when the caller does not pass one. */
@@ -55,8 +46,7 @@ export const DEFAULT_TYPESAFE_HOST = new URL(DEFAULT_BASE_URL).hostname;
55
46
  /** Environment variable holding the TypeSafe key when a call passes no `apiKey`. */
56
47
  export const TYPESAFE_API_KEY_ENV = "TYPESAFE_API_KEY";
57
48
  function resolveApiKey(explicit) {
58
- var _a;
59
- const key = (_a = (explicit !== null && explicit !== void 0 ? explicit : process.env[TYPESAFE_API_KEY_ENV])) === null || _a === void 0 ? void 0 : _a.trim();
49
+ const key = (explicit ?? process.env[TYPESAFE_API_KEY_ENV])?.trim();
60
50
  if (key === undefined || key === "") {
61
51
  throw new Error(`evaluate requires ${TYPESAFE_API_KEY_ENV}`);
62
52
  }
@@ -101,61 +91,54 @@ function decodeAnswer(question, raw) {
101
91
  probabilities: asRecord(value.probabilities, "score probabilities are missing"),
102
92
  };
103
93
  }
104
- function postSystemOne(args) {
105
- return __awaiter(this, void 0, void 0, function* () {
106
- const response = yield args.fetch(args.url, {
107
- method: "POST",
108
- headers: {
109
- Authorization: `Bearer ${args.apiKey}`,
110
- "Content-Type": "application/json",
111
- },
112
- body: JSON.stringify(args.body),
113
- });
114
- const text = yield response.text();
115
- let parsed;
116
- try {
117
- parsed = text.length === 0 ? {} : JSON.parse(text);
118
- }
119
- catch (_a) {
120
- throw new Error(`evaluate returned non-JSON (${response.status})`);
121
- }
122
- if (!response.ok) {
123
- throw new Error(`evaluate failed (${response.status}): ${text.slice(0, 240)}`);
124
- }
125
- return asRecord(asRecord(parsed, "response is not an object").answers, "response is missing answers");
94
+ async function postSystemOne(args) {
95
+ const response = await args.fetch(args.url, {
96
+ method: "POST",
97
+ headers: {
98
+ Authorization: `Bearer ${args.apiKey}`,
99
+ "Content-Type": "application/json",
100
+ },
101
+ body: JSON.stringify(args.body),
126
102
  });
103
+ const text = await response.text();
104
+ let parsed;
105
+ try {
106
+ parsed = text.length === 0 ? {} : JSON.parse(text);
107
+ }
108
+ catch {
109
+ throw new Error(`evaluate returned non-JSON (${response.status})`);
110
+ }
111
+ if (!response.ok) {
112
+ throw new Error(`evaluate failed (${response.status}): ${text.slice(0, 240)}`);
113
+ }
114
+ return asRecord(asRecord(parsed, "response is not an object").answers, "response is missing answers");
127
115
  }
128
116
  /** Ask Jev for typed answers over one state. */
129
- export function evaluate(args) {
130
- return __awaiter(this, void 0, void 0, function* () {
131
- var _a, _b, _c;
132
- const questions = {};
133
- for (const [id, question] of Object.entries(args.questions)) {
134
- questions[id] = toWireQuestion(question);
135
- }
136
- const raw = yield postSystemOne({
137
- url: `${((_a = args.baseUrl) !== null && _a !== void 0 ? _a : DEFAULT_BASE_URL).replace(/\/$/u, "")}/systemone`,
138
- apiKey: resolveApiKey(args.apiKey),
139
- fetch: (_b = args.fetch) !== null && _b !== void 0 ? _b : globalThis.fetch,
140
- body: {
141
- model: (_c = args.model) !== null && _c !== void 0 ? _c : DEFAULT_EVALUATION_MODEL,
142
- state: args.state,
143
- questions,
144
- },
145
- });
146
- const answers = {};
147
- for (const id of Object.keys(args.questions)) {
148
- answers[id] = decodeAnswer(args.questions[id], raw[id]);
149
- }
150
- return { answers };
117
+ export async function evaluate(args) {
118
+ const questions = {};
119
+ for (const [id, question] of Object.entries(args.questions)) {
120
+ questions[id] = toWireQuestion(question);
121
+ }
122
+ const raw = await postSystemOne({
123
+ url: `${(args.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/u, "")}/systemone`,
124
+ apiKey: resolveApiKey(args.apiKey),
125
+ fetch: args.fetch ?? globalThis.fetch,
126
+ body: {
127
+ model: args.model ?? DEFAULT_EVALUATION_MODEL,
128
+ state: args.state,
129
+ questions,
130
+ },
151
131
  });
132
+ const answers = {};
133
+ for (const id of Object.keys(args.questions)) {
134
+ answers[id] = decodeAnswer(args.questions[id], raw[id]);
135
+ }
136
+ return { answers };
152
137
  }
153
138
  /** Same as {@link evaluate}, returning only `answers`. */
154
- export function decide(args) {
155
- return __awaiter(this, void 0, void 0, function* () {
156
- const result = yield evaluate(args);
157
- return result.answers;
158
- });
139
+ export async function decide(args) {
140
+ const result = await evaluate(args);
141
+ return result.answers;
159
142
  }
160
143
  export function above(answer, threshold) {
161
144
  if (answer.type === "boolean") {
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { z } from "zod";
11
2
  import { defineTool } from "../../../tools.js";
12
3
  import extension from "../extension.js";
@@ -69,14 +60,12 @@ const evaluateTool = defineTool({
69
60
  .describe("One or more typed questions over the same state."),
70
61
  })
71
62
  .refine(input => new Set(input.questions.map(item => item.id)).size === input.questions.length, "questions must not repeat an id"),
72
- execute(input) {
73
- return __awaiter(this, void 0, void 0, function* () {
74
- return evaluate({
75
- state: input.state,
76
- questions: toQuestionMap(input.questions),
77
- apiKey: extension.config.apiKey,
78
- model: extension.config.model,
79
- });
63
+ async execute(input) {
64
+ return evaluate({
65
+ state: input.state,
66
+ questions: toQuestionMap(input.questions),
67
+ apiKey: extension.config.apiKey,
68
+ model: extension.config.model,
80
69
  });
81
70
  },
82
71
  });
@@ -47,7 +47,7 @@ const postFile = defineTool({
47
47
  try {
48
48
  realPath = realpathSync(path);
49
49
  }
50
- catch (_a) {
50
+ catch {
51
51
  return `No such file: ${path}`;
52
52
  }
53
53
  const workspaceRoot = realpathSync(ctx.workspaceDir);