@cursor/bdk 0.2.11 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/dist/bin/agent-serve.js +28 -26
  2. package/dist/channels/bitbucket/api.js +8 -8
  3. package/dist/channels/bitbucket/binding.js +4 -4
  4. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  5. package/dist/channels/bitbucket/bitbucket-webhook.js +1 -1
  6. package/dist/channels/bitbucket/checks.js +1 -1
  7. package/dist/channels/bitbucket/cursor-account.js +1 -1
  8. package/dist/channels/bitbucket/events.js +1 -1
  9. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  10. package/dist/channels/checks.js +2 -2
  11. package/dist/channels/deployments/deployments-channel.js +1 -1
  12. package/dist/channels/github/cursor-account.js +3 -3
  13. package/dist/channels/github/defaults.js +3 -3
  14. package/dist/channels/github/events.js +1 -1
  15. package/dist/channels/github/forward.js +8 -8
  16. package/dist/channels/github/github-channel.js +2 -2
  17. package/dist/channels/github/index.d.ts +22 -12
  18. package/dist/channels/github/index.d.ts.map +1 -1
  19. package/dist/channels/github/index.js +11 -12
  20. package/dist/channels/gitlab/binding.js +4 -4
  21. package/dist/channels/gitlab/checks.js +1 -1
  22. package/dist/channels/gitlab/cursor-account.js +1 -1
  23. package/dist/channels/gitlab/events.js +1 -1
  24. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  25. package/dist/channels/gitlab/gitlab-webhook.js +1 -1
  26. package/dist/channels/gitlab/replay.js +2 -2
  27. package/dist/channels/origin/binding.js +3 -3
  28. package/dist/channels/origin/checks.js +1 -1
  29. package/dist/channels/origin/cursor-account.js +1 -1
  30. package/dist/channels/origin/events.js +1 -1
  31. package/dist/channels/origin/index.d.ts +21 -11
  32. package/dist/channels/origin/index.d.ts.map +1 -1
  33. package/dist/channels/origin/index.js +10 -11
  34. package/dist/channels/origin/origin-channel.js +1 -1
  35. package/dist/channels/origin/origin-webhook.js +2 -2
  36. package/dist/channels/slack/agentic-delivery.js +3 -3
  37. package/dist/channels/slack/agentic-signals.js +1 -1
  38. package/dist/channels/slack/api.js +5 -5
  39. package/dist/channels/slack/approvals.js +1 -1
  40. package/dist/channels/slack/attachments.js +3 -3
  41. package/dist/channels/slack/blocks.js +3 -3
  42. package/dist/channels/slack/bot-mentions.js +4 -4
  43. package/dist/channels/slack/channel-watch.js +4 -4
  44. package/dist/channels/slack/cli-project.js +3 -3
  45. package/dist/channels/slack/dispatch.js +1 -1
  46. package/dist/channels/slack/doctor.js +1 -1
  47. package/dist/channels/slack/eval-directive.js +1 -1
  48. package/dist/channels/slack/footer.js +1 -1
  49. package/dist/channels/slack/interactive.js +2 -2
  50. package/dist/channels/slack/log.d.ts.map +1 -1
  51. package/dist/channels/slack/log.js +1 -1
  52. package/dist/channels/slack/manifest.js +1 -1
  53. package/dist/channels/slack/nudge-carrier.js +1 -1
  54. package/dist/channels/slack/nudge-store.js +2 -2
  55. package/dist/channels/slack/recording-sink.js +6 -6
  56. package/dist/channels/slack/reply-options.js +6 -6
  57. package/dist/channels/slack/self-identity.d.ts +7 -4
  58. package/dist/channels/slack/self-identity.d.ts.map +1 -1
  59. package/dist/channels/slack/self-identity.js +17 -8
  60. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  61. package/dist/channels/slack/sender-name.js +2 -6
  62. package/dist/channels/slack/setup.d.ts.map +1 -1
  63. package/dist/channels/slack/setup.js +1 -1
  64. package/dist/channels/slack/slack-channel.js +2 -2
  65. package/dist/channels/slack/socket-mode.js +2 -2
  66. package/dist/channels/slack/thread-context.js +8 -8
  67. package/dist/channels/slack/tool-cards.js +1 -1
  68. package/dist/channels/slack/user-info.d.ts +2 -1
  69. package/dist/channels/slack/user-info.d.ts.map +1 -1
  70. package/dist/channels/slack/user-info.js +16 -1
  71. package/dist/channels.js +1 -1
  72. package/dist/docs/404.html +3 -3
  73. package/dist/docs/assets/{app.DXI7bwox.js → app.CaLG1pPt.js} +4 -4
  74. package/dist/docs/assets/chunks/@localSearchIndexroot.DvlKuIO-.js +1 -0
  75. package/dist/docs/assets/chunks/{VPLocalSearchBox.BrbO5mEe.js → VPLocalSearchBox.YsP_2wqD.js} +2 -2
  76. package/dist/docs/assets/chunks/{arc.BOG1yms8.js → arc.C2j9hR7c.js} +1 -1
  77. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.C0hsMZnZ.js → architectureDiagram-Q4EWVU46.C5qkGp7y.js} +1 -1
  78. package/dist/docs/assets/chunks/{baseUniq.H044KjKs.js → baseUniq.U6GgTHOD.js} +1 -1
  79. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BsRW6GoB.js → blockDiagram-DXYQGD6D.D51mJop2.js} +1 -1
  80. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.B9HV5PFR.js → c4Diagram-AHTNJAMY.w1d6QxV7.js} +1 -1
  81. package/dist/docs/assets/chunks/channel.BRSFxCcD.js +1 -0
  82. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CPoT_ajl.js → chunk-4BX2VUAB.B_A815un.js} +1 -1
  83. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DZBwWuCL.js → chunk-4TB4RGXK.DMrm-ZCb.js} +1 -1
  84. package/dist/docs/assets/chunks/{chunk-55IACEB6.CZ3yTiyq.js → chunk-55IACEB6.8qw6Xdal.js} +1 -1
  85. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.6DfvHSd8.js → chunk-EDXVE4YY.Cq_nHODn.js} +1 -1
  86. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CpBj8HfK.js → chunk-FMBD7UC4.B67ohCYn.js} +1 -1
  87. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.BdKo8YqS.js → chunk-OYMX7WX6.Bo8rQI8F.js} +1 -1
  88. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnXNyxJx.js → chunk-QZHKN3VN.BERUMfE9.js} +1 -1
  89. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.Cg1OcF8G.js → chunk-YZCP3GAM.DWG2tXIX.js} +1 -1
  90. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Cmtm6WkN.js +1 -0
  91. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Cmtm6WkN.js +1 -0
  92. package/dist/docs/assets/chunks/clone.JMC96Eo6.js +1 -0
  93. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.1SP8al9c.js → cose-bilkent-S5V4N54A.tezXBs9b.js} +1 -1
  94. package/dist/docs/assets/chunks/{dagre-KV5264BT.DS1L6hJt.js → dagre-KV5264BT.aSbEUwT7.js} +1 -1
  95. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.ChsausbG.js → diagram-5BDNPKRD.vnT6aJ57.js} +1 -1
  96. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.3XsptNWj.js → diagram-G4DWMVQ6.hGYdrDa2.js} +1 -1
  97. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DPA9Dk_P.js → diagram-MMDJMWI5.CmdSUP6L.js} +1 -1
  98. package/dist/docs/assets/chunks/{diagram-TYMM5635.BVswXWrB.js → diagram-TYMM5635.BbAnLEBB.js} +1 -1
  99. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BSak5OSP.js → erDiagram-SMLLAGMA.H40W4HWE.js} +1 -1
  100. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CQgN4TTz.js → flowDiagram-DWJPFMVM.BFMtUSv-.js} +1 -1
  101. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.GrT0kA4a.js → ganttDiagram-T4ZO3ILL.CbYiu7Dt.js} +1 -1
  102. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CdS7Ucll.js → gitGraphDiagram-UUTBAWPF.Cyc5mzZD.js} +1 -1
  103. package/dist/docs/assets/chunks/{graph.BVqKRmRo.js → graph.BRptDG1H.js} +1 -1
  104. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.C3C9FRto.js → infoDiagram-42DDH7IO.Bz6KCA3a.js} +1 -1
  105. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js → ishikawaDiagram-UXIWVN3A.DDJ_7_Fq.js} +1 -1
  106. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CaHMfK4b.js → journeyDiagram-VCZTEJTY.D0t_ltlb.js} +1 -1
  107. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CjhIUwcA.js → kanban-definition-6JOO6SKY.DyyNsMfi.js} +1 -1
  108. package/dist/docs/assets/chunks/{layout.CGU3gfSf.js → layout.Cbxq-Rhp.js} +1 -1
  109. package/dist/docs/assets/chunks/{linear.DaihpW_n.js → linear.DxGYL0MP.js} +1 -1
  110. package/dist/docs/assets/chunks/{min.BS-j8kHQ.js → min.DA5KL8wu.js} +1 -1
  111. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BVJ1Bbnk.js → mindmap-definition-QFDTVHPH.Bc72Utls.js} +1 -1
  112. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.Cz1WIv9r.js → pieDiagram-DEJITSTG.BtpHnIB_.js} +1 -1
  113. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DKLFxcjy.js → quadrantDiagram-34T5L4WZ.Cx4oCSRR.js} +1 -1
  114. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.BHegiK7x.js → requirementDiagram-MS252O5E.BC0hXWlW.js} +1 -1
  115. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DYkY6yPc.js → sankeyDiagram-XADWPNL6.Dg8T1SEp.js} +1 -1
  116. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DYQ1QUrI.js → sequenceDiagram-FGHM5R23.CWSdHYAF.js} +1 -1
  117. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.Iru8BsFo.js → stateDiagram-FHFEXIEX.0MVPRI28.js} +1 -1
  118. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.N4Am6sXd.js +1 -0
  119. package/dist/docs/assets/chunks/{theme.DaplWQhQ.js → theme.DO1avLBn.js} +2 -2
  120. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BwFA8hiX.js → timeline-definition-GMOUNBTQ.BuRinAVi.js} +1 -1
  121. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CZ60W1C_.js → vennDiagram-DHZGUBPP.DXf0PCoJ.js} +1 -1
  122. package/dist/docs/assets/chunks/wardley-RL74JXVD._eATmGtu.js +162 -0
  123. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.B69D2r8-.js → wardleyDiagram-NUSXRM2D.T4ThngYV.js} +1 -1
  124. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CLPZEIU9.js → xychartDiagram-5P7HB3ND.b4pZF3D5.js} +1 -1
  125. package/dist/docs/assets/{reference_connections.md.Bljpve-y.js → reference_connections.md.DLrgAd5f.js} +1 -1
  126. package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.js → reference_hooks.md.B-eGa2km.js} +3 -3
  127. package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.lean.js → reference_hooks.md.B-eGa2km.lean.js} +1 -1
  128. package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.js → reference_sessions.md.CyM7ARz1.js} +1 -1
  129. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  130. package/dist/docs/assets/{reference_tools.md.v3SXVSs_.js → reference_tools.md.DzIY9JzY.js} +3 -3
  131. package/dist/docs/assets/{reference_tools.md.v3SXVSs_.lean.js → reference_tools.md.DzIY9JzY.lean.js} +1 -1
  132. package/dist/docs/assets/{style.C130MVnH.css → style.Dwls12uf.css} +1 -1
  133. package/dist/docs/building-with-agents.html +37 -37
  134. package/dist/docs/deployment.html +37 -37
  135. package/dist/docs/evals.html +37 -37
  136. package/dist/docs/guides/agent-to-agent.html +37 -37
  137. package/dist/docs/guides/bitbucket.html +37 -37
  138. package/dist/docs/guides/cloud-agents.html +37 -37
  139. package/dist/docs/guides/convert-automation.html +37 -37
  140. package/dist/docs/guides/github.html +37 -37
  141. package/dist/docs/guides/gitlab.html +37 -37
  142. package/dist/docs/guides/grokbot-agents.html +37 -37
  143. package/dist/docs/guides/hooks.html +37 -37
  144. package/dist/docs/guides/improve.html +37 -37
  145. package/dist/docs/guides/jev.html +37 -37
  146. package/dist/docs/guides/mcp-oauth.html +37 -37
  147. package/dist/docs/guides/migrate.html +37 -37
  148. package/dist/docs/guides/opentelemetry.html +37 -37
  149. package/dist/docs/guides/slack.html +37 -37
  150. package/dist/docs/guides/webhooks.html +37 -37
  151. package/dist/docs/hashmap.json +1 -1
  152. package/dist/docs/hillclimbing.html +37 -37
  153. package/dist/docs/index.html +37 -37
  154. package/dist/docs/llms-full.txt +15 -2
  155. package/dist/docs/quickstart.html +37 -37
  156. package/dist/docs/reference/agent-config.html +37 -37
  157. package/dist/docs/reference/artifacts.html +37 -37
  158. package/dist/docs/reference/channels.html +37 -37
  159. package/dist/docs/reference/cli.html +37 -37
  160. package/dist/docs/reference/connections.html +39 -39
  161. package/dist/docs/reference/connections.md +2 -1
  162. package/dist/docs/reference/evals.html +37 -37
  163. package/dist/docs/reference/extensions.html +37 -37
  164. package/dist/docs/reference/hooks.html +39 -39
  165. package/dist/docs/reference/hooks.md +1 -0
  166. package/dist/docs/reference/http-api.html +37 -37
  167. package/dist/docs/reference/instructions.html +37 -37
  168. package/dist/docs/reference/playground.html +36 -36
  169. package/dist/docs/reference/project-layout.html +37 -37
  170. package/dist/docs/reference/prompt.html +37 -37
  171. package/dist/docs/reference/schedules.html +37 -37
  172. package/dist/docs/reference/sessions.html +37 -37
  173. package/dist/docs/reference/sessions.md +1 -1
  174. package/dist/docs/reference/skills.html +40 -40
  175. package/dist/docs/reference/subagents.html +37 -37
  176. package/dist/docs/reference/tools.html +39 -39
  177. package/dist/docs/reference/tools.md +11 -0
  178. package/dist/docs/templates/agentic-owners.html +37 -37
  179. package/dist/docs/templates/grokbot-agents.html +37 -37
  180. package/dist/docs/templates/security-reviewer.html +37 -37
  181. package/dist/docs/templates/thermo-quality-review.html +37 -37
  182. package/dist/docs/templates/thermo-review.html +37 -37
  183. package/dist/docs/templates/triage.html +37 -37
  184. package/dist/docs/troubleshooting.html +36 -36
  185. package/dist/evals/assertions.d.ts.map +1 -1
  186. package/dist/evals/assertions.js +21 -19
  187. package/dist/evals/expect.js +1 -1
  188. package/dist/evals/judge.js +1 -1
  189. package/dist/evals/reporters.js +8 -8
  190. package/dist/evals/run-facts.js +2 -2
  191. package/dist/evals.js +6 -6
  192. package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
  193. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  194. package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
  195. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +16 -0
  196. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  197. package/dist/extensions/cursor-cloud-agents/lib/backend.js +44 -3
  198. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  199. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts +23 -0
  200. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts.map +1 -0
  201. package/dist/extensions/cursor-cloud-agents/lib/launch-agent.js +32 -0
  202. package/dist/extensions/cursor-cloud-agents/lib/repos.js +2 -2
  203. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -2
  204. package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts.map +1 -1
  205. package/dist/extensions/cursor-cloud-agents/lib/watch.js +1 -1
  206. package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
  207. package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -8
  208. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  209. package/dist/extensions/cursor-grokbot-agents/extension.js +3 -3
  210. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  211. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +3 -3
  212. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +4 -4
  213. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  214. package/dist/extensions/improve/skills/yourself.js +1 -1
  215. package/dist/extensions/jev/extension.js +2 -2
  216. package/dist/extensions/jev/tools/evaluate.js +1 -1
  217. package/dist/extensions/slack-communication/tools/react.js +1 -1
  218. package/dist/files-backends/cursor-hosted.js +8 -8
  219. package/dist/files-backends/local-fs.js +1 -1
  220. package/dist/filesystem.d.ts.map +1 -1
  221. package/dist/filesystem.js +15 -15
  222. package/dist/internal/advertise-tools.d.ts +3 -2
  223. package/dist/internal/advertise-tools.d.ts.map +1 -1
  224. package/dist/internal/advertise-tools.js +11 -9
  225. package/dist/internal/approval-gate.js +1 -1
  226. package/dist/internal/artifacts-store.js +13 -13
  227. package/dist/internal/as-of.js +2 -2
  228. package/dist/internal/authored-alias-hooks.d.ts +4 -3
  229. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  230. package/dist/internal/authored-alias-hooks.js +16 -7
  231. package/dist/internal/authored-loaders.d.ts.map +1 -1
  232. package/dist/internal/authored-loaders.js +21 -5
  233. package/dist/internal/builtin-tools/reminders.js +2 -2
  234. package/dist/internal/chat-client.js +5 -5
  235. package/dist/internal/cli-ax.js +14 -14
  236. package/dist/internal/cli-bitbucket.js +10 -10
  237. package/dist/internal/cli-convert-automation.js +2 -2
  238. package/dist/internal/cli-cursor.js +2 -2
  239. package/dist/internal/cli-deploy.d.ts.map +1 -1
  240. package/dist/internal/cli-deploy.js +40 -40
  241. package/dist/internal/cli-docs.js +5 -5
  242. package/dist/internal/cli-github.js +15 -15
  243. package/dist/internal/cli-gitlab.js +10 -10
  244. package/dist/internal/cli-images.js +16 -16
  245. package/dist/internal/cli-manifest.js +1 -1
  246. package/dist/internal/cli-mcp-oauth.js +5 -5
  247. package/dist/internal/cli-mcp.js +3 -3
  248. package/dist/internal/cli-migrate.js +1 -1
  249. package/dist/internal/cli-skills.js +2 -2
  250. package/dist/internal/cli-slack.js +5 -5
  251. package/dist/internal/cloud-turn-cost.js +1 -1
  252. package/dist/internal/continuation-identity.js +6 -6
  253. package/dist/internal/conversation-mirror.js +5 -5
  254. package/dist/internal/convert-automation/convert-workflow.js +24 -24
  255. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  256. package/dist/internal/cursor/account-mcp.js +20 -20
  257. package/dist/internal/cursor/backend-client.js +6 -6
  258. package/dist/internal/cursor/credentials.js +1 -1
  259. package/dist/internal/cursor/store-api-client.js +1 -1
  260. package/dist/internal/cursor-account-mcp-auth.js +9 -9
  261. package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
  262. package/dist/internal/cursor-deployment-relay.js +9 -9
  263. package/dist/internal/cursor-event-relay.js +10 -10
  264. package/dist/internal/cursor-relay-core.js +2 -2
  265. package/dist/internal/deploy-manifest.d.ts +14 -0
  266. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  267. package/dist/internal/deploy-manifest.js +33 -10
  268. package/dist/internal/discovery/agent-config.js +2 -2
  269. package/dist/internal/discovery/agent.js +6 -6
  270. package/dist/internal/discovery/connections.js +5 -5
  271. package/dist/internal/discovery/cursor-plugin.js +12 -12
  272. package/dist/internal/discovery/extension-overlay.js +3 -3
  273. package/dist/internal/discovery/extensions.js +6 -6
  274. package/dist/internal/discovery/info.js +9 -9
  275. package/dist/internal/discovery/instructions.js +1 -1
  276. package/dist/internal/discovery/project.js +3 -3
  277. package/dist/internal/discovery/services.js +1 -1
  278. package/dist/internal/discovery/tools.js +1 -1
  279. package/dist/internal/docs-site.js +2 -2
  280. package/dist/internal/env-file.js +1 -1
  281. package/dist/internal/eval-run-store.js +7 -7
  282. package/dist/internal/eval-runner.d.ts.map +1 -1
  283. package/dist/internal/eval-runner.js +14 -14
  284. package/dist/internal/eval-transport.js +1 -1
  285. package/dist/internal/evals-client.d.ts.map +1 -1
  286. package/dist/internal/evals-client.js +4 -4
  287. package/dist/internal/event-log.js +8 -8
  288. package/dist/internal/event-mapper.js +13 -13
  289. package/dist/internal/expected-delivery-failure.js +2 -2
  290. package/dist/internal/filesystem/format.js +2 -2
  291. package/dist/internal/filesystem/nearest.js +3 -3
  292. package/dist/internal/filesystem/scratch.js +3 -3
  293. package/dist/internal/filesystem/tools.js +6 -6
  294. package/dist/internal/filesystem/walk.d.ts.map +1 -1
  295. package/dist/internal/filesystem/walk.js +2 -2
  296. package/dist/internal/framework-file-storage.d.ts.map +1 -1
  297. package/dist/internal/framework-file-storage.js +6 -5
  298. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  299. package/dist/internal/framework-storage-selection.js +4 -2
  300. package/dist/internal/github-fanout.d.ts.map +1 -1
  301. package/dist/internal/github-fanout.js +3 -3
  302. package/dist/internal/guest-network.js +4 -4
  303. package/dist/internal/host-files.js +1 -1
  304. package/dist/internal/host-kv.js +2 -2
  305. package/dist/internal/hosted-catch-protocol.js +1 -1
  306. package/dist/internal/hosted-catch.js +1 -1
  307. package/dist/internal/hosted-delivery-protocol.d.ts +24 -0
  308. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  309. package/dist/internal/hosted-delivery-protocol.js +58 -14
  310. package/dist/internal/hosted-delivery.d.ts +6 -0
  311. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  312. package/dist/internal/hosted-delivery.js +64 -13
  313. package/dist/internal/hosted-eval-cases.js +4 -4
  314. package/dist/internal/hosted-execution-diag.js +3 -3
  315. package/dist/internal/hosted-managed-automation.d.ts +3 -3
  316. package/dist/internal/hosted-managed-automation.js +3 -3
  317. package/dist/internal/hosting.js +1 -1
  318. package/dist/internal/http-channel.js +1 -1
  319. package/dist/internal/http-control-plane-session.js +2 -2
  320. package/dist/internal/init-interview.js +7 -7
  321. package/dist/internal/init-project.d.ts.map +1 -1
  322. package/dist/internal/init-project.js +12 -12
  323. package/dist/internal/inline-stdio-mcp.js +2 -2
  324. package/dist/internal/install-cursor-skills.js +11 -11
  325. package/dist/internal/json-schema.js +1 -1
  326. package/dist/internal/local-control-plane.js +3 -3
  327. package/dist/internal/local-env.js +3 -3
  328. package/dist/internal/log-ring.js +1 -1
  329. package/dist/internal/logs-client.js +1 -1
  330. package/dist/internal/mcp-endpoint.js +8 -8
  331. package/dist/internal/mcp-host.d.ts.map +1 -1
  332. package/dist/internal/mcp-host.js +5 -5
  333. package/dist/internal/mcp-oauth-on-demand.js +3 -3
  334. package/dist/internal/mcp-oauth.js +5 -5
  335. package/dist/internal/net.js +2 -2
  336. package/dist/internal/otel/config.js +3 -3
  337. package/dist/internal/otel/runtime.js +13 -13
  338. package/dist/internal/peer-connections.js +2 -2
  339. package/dist/internal/persistent-stage-log-mirror.d.ts +57 -0
  340. package/dist/internal/persistent-stage-log-mirror.d.ts.map +1 -0
  341. package/dist/internal/persistent-stage-log-mirror.js +231 -0
  342. package/dist/internal/platform-schedule-sync.js +1 -1
  343. package/dist/internal/platform-timers.js +1 -1
  344. package/dist/internal/playground/static.js +2 -2
  345. package/dist/internal/playground/toolchain.js +2 -2
  346. package/dist/internal/playground-proxy.js +3 -3
  347. package/dist/internal/process-memory-telemetry.js +1 -1
  348. package/dist/internal/reminder-runner.d.ts +1 -1
  349. package/dist/internal/reminder-runner.d.ts.map +1 -1
  350. package/dist/internal/reminder-runner.js +14 -16
  351. package/dist/internal/reminder-store.js +1 -1
  352. package/dist/internal/resolved-connections.js +8 -8
  353. package/dist/internal/router.js +4 -4
  354. package/dist/internal/run-client.js +2 -2
  355. package/dist/internal/schedule-runner.d.ts +13 -2
  356. package/dist/internal/schedule-runner.d.ts.map +1 -1
  357. package/dist/internal/schedule-runner.js +48 -9
  358. package/dist/internal/sdk-runner.d.ts +2 -1
  359. package/dist/internal/sdk-runner.d.ts.map +1 -1
  360. package/dist/internal/sdk-runner.js +13 -8
  361. package/dist/internal/serve-restart.js +1 -1
  362. package/dist/internal/server.d.ts.map +1 -1
  363. package/dist/internal/server.js +101 -76
  364. package/dist/internal/session-cost.js +3 -3
  365. package/dist/internal/session-engine.d.ts +8 -0
  366. package/dist/internal/session-engine.d.ts.map +1 -1
  367. package/dist/internal/session-engine.js +183 -118
  368. package/dist/internal/session-live-publisher.d.ts +48 -0
  369. package/dist/internal/session-live-publisher.d.ts.map +1 -0
  370. package/dist/internal/session-live-publisher.js +415 -0
  371. package/dist/internal/session-run-log.js +6 -6
  372. package/dist/internal/sessions-client.js +3 -3
  373. package/dist/internal/skill-catalog.js +2 -2
  374. package/dist/internal/sleep.js +1 -1
  375. package/dist/internal/start-log-store.d.ts +5 -1
  376. package/dist/internal/start-log-store.d.ts.map +1 -1
  377. package/dist/internal/start-log-store.js +5 -3
  378. package/dist/internal/storage-coordinator.js +12 -12
  379. package/dist/internal/store-api-protocol.d.ts +51 -0
  380. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  381. package/dist/internal/store-api-protocol.js +39 -2
  382. package/dist/internal/store-mirror.js +4 -4
  383. package/dist/internal/stream-progress.d.ts.map +1 -1
  384. package/dist/internal/stream-progress.js +4 -0
  385. package/dist/internal/terminal-style.js +2 -2
  386. package/dist/internal/testing/conversation-identity-vectors.d.ts +48 -0
  387. package/dist/internal/testing/conversation-identity-vectors.d.ts.map +1 -0
  388. package/dist/internal/testing/conversation-identity-vectors.js +136 -0
  389. package/dist/internal/tool-call-retry.d.ts +87 -0
  390. package/dist/internal/tool-call-retry.d.ts.map +1 -0
  391. package/dist/internal/tool-call-retry.js +387 -0
  392. package/dist/internal/tool-result.js +3 -3
  393. package/dist/internal/trajectory.js +7 -7
  394. package/dist/internal/turn-governor.js +2 -2
  395. package/dist/internal/turn-outbox.js +1 -1
  396. package/dist/internal/update-check.d.ts.map +1 -1
  397. package/dist/internal/update-check.js +4 -2
  398. package/dist/internal/v2-hosting.d.ts +6 -0
  399. package/dist/internal/v2-hosting.d.ts.map +1 -1
  400. package/dist/internal/v2-hosting.js +7 -1
  401. package/dist/internal/workspace.js +4 -4
  402. package/dist/kv/memory-kv.js +3 -3
  403. package/dist/playground/assets/index-CzttDc-d.css +1 -0
  404. package/dist/playground/assets/{index-Be0-1hw2.js → index-DIiKbZ25.js} +42 -42
  405. package/dist/playground/index.html +2 -2
  406. package/dist/prompt.js +1 -1
  407. package/dist/storage-backends/cursor-hosted-v2.js +2 -2
  408. package/dist/storage-backends/file-kv.js +7 -7
  409. package/dist/storage-protocol.d.ts +7 -0
  410. package/dist/storage-protocol.d.ts.map +1 -1
  411. package/dist/storage-protocol.js +7 -0
  412. package/dist/storage.js +3 -3
  413. package/dist/types.d.ts +21 -4
  414. package/dist/types.d.ts.map +1 -1
  415. package/dist/types.js +4 -4
  416. package/docs/reference/connections.md +2 -1
  417. package/docs/reference/hooks.md +1 -0
  418. package/docs/reference/sessions.md +1 -1
  419. package/docs/reference/tools.md +11 -0
  420. package/package.json +6 -6
  421. package/templates/agentic-owners/bot/channels/github.ts +2 -2
  422. package/templates/agentic-owners/bot/lib/github.ts +7 -5
  423. package/templates/agentic-owners/bot/lib/owners/decision.ts +9 -9
  424. package/templates/agentic-owners/bot/lib/owners/handles.ts +2 -2
  425. package/templates/agentic-owners/bot/lib/owners/match.ts +5 -3
  426. package/templates/agentic-owners/bot/lib/owners/matching.ts +1 -1
  427. package/templates/agentic-owners/bot/lib/owners/parse.ts +4 -4
  428. package/templates/agentic-owners/bot/lib/owners/prompt.ts +1 -1
  429. package/templates/agentic-owners/bot/lib/review.ts +18 -17
  430. package/templates/agentic-owners/evals/owners.eval.ts +2 -2
  431. package/templates/agents-md/bot/lib/collect.ts +6 -6
  432. package/templates/agents-md/bot/lib/config.ts +1 -1
  433. package/templates/agents-md/bot/tools/apply_agents.ts +4 -4
  434. package/templates/code-wiki/bot/channels/github.ts +3 -3
  435. package/templates/code-wiki/bot/lib/repos.ts +1 -1
  436. package/templates/code-wiki/bot/tools/apply_wiki.ts +2 -2
  437. package/templates/demo/bot/lib/collect.ts +1 -1
  438. package/templates/demo/bot/lib/repos.ts +1 -1
  439. package/templates/demo/bot/tools/record_demo.ts +1 -1
  440. package/templates/pr-autofixer/bot/channels/github.ts +2 -2
  441. package/templates/pr-autofixer/bot/lib/merge-watch.ts +2 -2
  442. package/templates/pr-autofixer/bot/lib/repos.ts +2 -2
  443. package/templates/pr-autofixer/bot/lib/webhook-routing.ts +1 -1
  444. package/templates/security-help/bot/lib/repos.ts +1 -1
  445. package/templates/security-reviewer/bot/lib/repos.ts +1 -1
  446. package/templates/triage/bot/lib/actuate.ts +15 -15
  447. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +0 -1
  448. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +0 -1
  449. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +0 -1
  450. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +0 -1
  451. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +0 -1
  452. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +0 -1
  453. package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +0 -162
  454. package/dist/playground/assets/index-Clz6uHj9.css +0 -1
  455. /package/dist/docs/assets/{reference_connections.md.Bljpve-y.lean.js → reference_connections.md.DLrgAd5f.lean.js} +0 -0
  456. /package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.lean.js → reference_sessions.md.CyM7ARz1.lean.js} +0 -0
  457. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -74,8 +74,8 @@ function resumeProjectionJson(record) {
74
74
  /** Session records out of raw sink entries; rows without a usable id are dropped. */
75
75
  function sessionRecordsOf(entries) {
76
76
  return entries
77
- .map(entry => entry.value)
78
- .filter(record => record != null && typeof record.sessionId === "string" && record.sessionId !== "");
77
+ .map((entry) => entry.value)
78
+ .filter((record) => record != null && typeof record.sessionId === "string" && record.sessionId !== "");
79
79
  }
80
80
  export class StorageCoordinator {
81
81
  constructor(options) {
@@ -186,7 +186,7 @@ export class StorageCoordinator {
186
186
  // A terminal event can arrive through a debounce-policy timer flush,
187
187
  // where eventDispatched never ran: detect it from the buffered events
188
188
  // so a finished session's record is exact under either policy.
189
- const exact = exactRecord || events.some(event => TERMINAL_SESSION_EVENTS.has(event.type));
189
+ const exact = exactRecord || events.some((event) => TERMINAL_SESSION_EVENTS.has(event.type));
190
190
  // Exact flushes repair earlier volatile-only skips: when the buffer no
191
191
  // longer holds a record, the newest skipped one still gets written.
192
192
  const record = buffer?.record ??
@@ -272,7 +272,7 @@ export class StorageCoordinator {
272
272
  const putMany = this.definition.putMany?.bind(this.definition);
273
273
  if (putMany !== undefined) {
274
274
  return {
275
- label: `putMany(${puts.map(entry => entry.key).join(", ")})`,
275
+ label: `putMany(${puts.map((entry) => entry.key).join(", ")})`,
276
276
  run: async (ctx) => {
277
277
  const results = await putMany(puts, ctx);
278
278
  let recordFailed = false;
@@ -290,7 +290,7 @@ export class StorageCoordinator {
290
290
  };
291
291
  }
292
292
  return {
293
- label: `put(${puts.map(entry => entry.key).join(", ")})`,
293
+ label: `put(${puts.map((entry) => entry.key).join(", ")})`,
294
294
  run: async (ctx) => {
295
295
  let recordFailed = false;
296
296
  for (const entry of puts) {
@@ -334,14 +334,14 @@ export class StorageCoordinator {
334
334
  putOp(key, value) {
335
335
  return {
336
336
  label: `put(${key})`,
337
- run: ctx => this.definition.put(key, value, ctx),
337
+ run: (ctx) => this.definition.put(key, value, ctx),
338
338
  };
339
339
  }
340
340
  /** KV delete op on the sink's `delete` (skipped when the hook is absent). */
341
341
  deleteOp(key) {
342
342
  return {
343
343
  label: `delete(${key})`,
344
- run: ctx => this.definition.delete?.(key, ctx),
344
+ run: (ctx) => this.definition.delete?.(key, ctx),
345
345
  };
346
346
  }
347
347
  // ==========================================================================
@@ -366,8 +366,8 @@ export class StorageCoordinator {
366
366
  async listSessions() {
367
367
  const entries = await this.tryList(this.keys.sessionPrefix(this.agentName));
368
368
  return entries
369
- .map(entry => entry.value)
370
- .filter(record => record != null);
369
+ .map((entry) => entry.value)
370
+ .filter((record) => record != null);
371
371
  }
372
372
  /**
373
373
  * Session records from the sink for the sessions API. Unlike
@@ -537,7 +537,7 @@ export class StorageCoordinator {
537
537
  this.enqueue([
538
538
  {
539
539
  label: `evals.put(${run.runId})`,
540
- run: ctx => table.put(snapshot, ctx),
540
+ run: (ctx) => table.put(snapshot, ctx),
541
541
  },
542
542
  ], "policy");
543
543
  },
@@ -545,7 +545,7 @@ export class StorageCoordinator {
545
545
  this.enqueue([
546
546
  {
547
547
  label: `evals.delete(${runId})`,
548
- run: ctx => table.delete(runId, ctx),
548
+ run: (ctx) => table.delete(runId, ctx),
549
549
  },
550
550
  ], "policy");
551
551
  },
@@ -586,7 +586,7 @@ export class StorageCoordinator {
586
586
  let timer;
587
587
  const drained = await Promise.race([
588
588
  this.queue.then(() => true),
589
- new Promise(resolve => {
589
+ new Promise((resolve) => {
590
590
  timer = setTimeout(() => resolve(false), CLOSE_DRAIN_TIMEOUT_MS);
591
591
  timer.unref?.();
592
592
  }),
@@ -110,4 +110,55 @@ export type MemoryReadResponse = {
110
110
  * (`{ code, error }`) with a matching HTTP status.
111
111
  */
112
112
  export declare const memoryReadResponseSchema: z.ZodType<MemoryReadResponse>;
113
+ /**
114
+ * Live session relay: the engine posts batches of session events, and the
115
+ * service keeps them only while a viewer is watching that session. The
116
+ * stored transcript stays the durable copy.
117
+ */
118
+ export declare const STORE_API_SESSION_LIVE_CALL = "session.live";
119
+ /**
120
+ * Cap on one serialized live event. A larger event crosses as a stub with
121
+ * `liveTruncated: true`; viewers reread the stored transcript after the turn.
122
+ */
123
+ export declare const SESSION_LIVE_MAX_EVENT_BYTES: number;
124
+ /** Cap on one batch's serialized `events`, enforced on both sides. */
125
+ export declare const SESSION_LIVE_MAX_BATCH_BYTES: number;
126
+ export declare const SESSION_LIVE_MAX_BATCH_EVENTS = 500;
127
+ /**
128
+ * One session event as it crosses the live wire. `index` orders and
129
+ * deduplicates events; everything else passes through.
130
+ */
131
+ export type SessionLiveEventWire = {
132
+ index: number;
133
+ type: string;
134
+ } & Record<string, unknown>;
135
+ export declare const sessionLiveEventWireSchema: z.ZodType<SessionLiveEventWire>;
136
+ /** `session.live` validated payload. An empty batch is a subscription probe. */
137
+ export type SessionLiveWirePayload = {
138
+ sessionId: string;
139
+ events: SessionLiveEventWire[];
140
+ };
141
+ export declare const sessionLivePayloadSchema: z.ZodType<SessionLiveWirePayload>;
142
+ /** The versioned request body for the `session.live` call. */
143
+ export type SessionLiveEnvelope = {
144
+ v: typeof STORE_API_PROTOCOL_VERSION;
145
+ call: typeof STORE_API_SESSION_LIVE_CALL;
146
+ payload: SessionLiveWirePayload;
147
+ };
148
+ /** The whole request body. Unknown envelope fields are stripped (= ignored). */
149
+ export declare const sessionLiveEnvelopeSchema: z.ZodType<SessionLiveEnvelope>;
150
+ /**
151
+ * `session.live` success body. `subscribed` says whether a viewer is
152
+ * watching (the service kept nothing when false), `recheckAfterMs` is the
153
+ * earliest next probe while unsubscribed, and `replayFromIndex` asks the
154
+ * engine to resend its local log from that index.
155
+ */
156
+ export type SessionLiveResponse = {
157
+ v: typeof STORE_API_PROTOCOL_VERSION;
158
+ ok: true;
159
+ subscribed: boolean;
160
+ recheckAfterMs: number;
161
+ replayFromIndex: number | null;
162
+ };
163
+ export declare const sessionLiveResponseSchema: z.ZodType<SessionLiveResponse>;
113
164
  //# sourceMappingURL=store-api-protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-api-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/store-api-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store-api-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/store-api-protocol.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ export const memoryAppendPayloadSchema = z.object({
53
53
  .string()
54
54
  .min(1)
55
55
  .max(256)
56
- .refine(name => !name.includes("/") && !name.includes("\\") && name !== "." && name !== "..", {
56
+ .refine((name) => !name.includes("/") && !name.includes("\\") && name !== "." && name !== "..", {
57
57
  message: "agent must be a single store key segment",
58
58
  }),
59
59
  record: turnMemoryRecordWireSchema,
@@ -82,7 +82,7 @@ export const memoryReadPayloadSchema = z.object({
82
82
  .string()
83
83
  .min(1)
84
84
  .max(256)
85
- .refine(name => !name.includes("/") && !name.includes("\\") && name !== "." && name !== "..", {
85
+ .refine((name) => !name.includes("/") && !name.includes("\\") && name !== "." && name !== "..", {
86
86
  message: "agent must be a single store key segment",
87
87
  }),
88
88
  });
@@ -106,3 +106,40 @@ export const memoryReadResponseSchema = z.object({
106
106
  })
107
107
  .nullable(),
108
108
  });
109
+ /**
110
+ * Live session relay: the engine posts batches of session events, and the
111
+ * service keeps them only while a viewer is watching that session. The
112
+ * stored transcript stays the durable copy.
113
+ */
114
+ export const STORE_API_SESSION_LIVE_CALL = "session.live";
115
+ /**
116
+ * Cap on one serialized live event. A larger event crosses as a stub with
117
+ * `liveTruncated: true`; viewers reread the stored transcript after the turn.
118
+ */
119
+ export const SESSION_LIVE_MAX_EVENT_BYTES = 16 * 1024;
120
+ /** Cap on one batch's serialized `events`, enforced on both sides. */
121
+ export const SESSION_LIVE_MAX_BATCH_BYTES = 256 * 1024;
122
+ export const SESSION_LIVE_MAX_BATCH_EVENTS = 500;
123
+ export const sessionLiveEventWireSchema = z
124
+ .object({
125
+ index: z.number().int().min(0),
126
+ type: z.string().min(1),
127
+ })
128
+ .passthrough();
129
+ export const sessionLivePayloadSchema = z.object({
130
+ sessionId: z.string().regex(/^[A-Za-z0-9_-]{1,128}$/),
131
+ events: z.array(sessionLiveEventWireSchema).max(SESSION_LIVE_MAX_BATCH_EVENTS),
132
+ });
133
+ /** The whole request body. Unknown envelope fields are stripped (= ignored). */
134
+ export const sessionLiveEnvelopeSchema = z.object({
135
+ v: z.literal(STORE_API_PROTOCOL_VERSION),
136
+ call: z.literal(STORE_API_SESSION_LIVE_CALL),
137
+ payload: sessionLivePayloadSchema,
138
+ });
139
+ export const sessionLiveResponseSchema = z.object({
140
+ v: z.literal(STORE_API_PROTOCOL_VERSION),
141
+ ok: z.literal(true),
142
+ subscribed: z.boolean(),
143
+ recheckAfterMs: z.number().int().min(0),
144
+ replayFromIndex: z.number().int().min(0).nullable(),
145
+ });
@@ -13,11 +13,11 @@ import { FileConflictError } from "../files.js";
13
13
  */
14
14
  export async function mirrorToStore(args) {
15
15
  await Promise.all([...args.desired].map(([key, body]) => putLastWriterWins(args.sink, key, body)));
16
- const listed = await Promise.all([args.prefix, ...(args.legacyPrefixes ?? [])].map(prefix => args.sink.list(prefix)));
16
+ const listed = await Promise.all([args.prefix, ...(args.legacyPrefixes ?? [])].map((prefix) => args.sink.list(prefix)));
17
17
  await Promise.all(listed
18
18
  .flat()
19
- .filter(entry => !args.desired.has(entry.key))
20
- .map(entry => args.sink.delete(entry.key)));
19
+ .filter((entry) => !args.desired.has(entry.key))
20
+ .map((entry) => args.sink.delete(entry.key)));
21
21
  }
22
22
  /**
23
23
  * Same refusals as local materialization's `resolveInside`: a rel that
@@ -31,7 +31,7 @@ export function storeRelPath(relPath, what) {
31
31
  relPath.includes("\\") ||
32
32
  posix.isAbsolute(relPath) ||
33
33
  relPath.endsWith("/") ||
34
- relPath.split("/").some(seg => seg === ".." || seg === ".") ||
34
+ relPath.split("/").some((seg) => seg === ".." || seg === ".") ||
35
35
  posix.normalize(relPath) !== relPath) {
36
36
  throw new Error(`Refusing ${what} path "${relPath}" (must be a normalized relative path)`);
37
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream-progress.d.ts","sourceRoot":"","sources":["../../src/internal/stream-progress.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,cAAc,CA2NjB"}
1
+ {"version":3,"file":"stream-progress.d.ts","sourceRoot":"","sources":["../../src/internal/stream-progress.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,cAAc,CAmOjB"}
@@ -124,6 +124,10 @@ export function createStreamProgress(options) {
124
124
  write(` ${mark} ${c.bold(event.data.connection)} ${c.dim(event.data.decision === "approve" ? "connected" : "denied")}\n`);
125
125
  break;
126
126
  }
127
+ case "action.tool_retry": {
128
+ write(` ${c.yellow("↻")} ${c.bold(event.data.toolName)} ${c.dim(`again as try ${event.data.attempt} (${event.data.reason})`)}\n`);
129
+ break;
130
+ }
127
131
  case "action.result": {
128
132
  if (event.data.toolName === "task" && event.data.parentCallId === undefined) {
129
133
  break;
@@ -69,7 +69,7 @@ export function terminalHyperlink(url, label, enabled = colorEnabledFor()) {
69
69
  export function formatTerminalBox(lines, options) {
70
70
  const color = options?.color ?? IDENTITY;
71
71
  const padding = options?.padding ?? 1;
72
- const contentWidth = Math.max(options?.minWidth ?? 0, ...lines.map(line => visibleWidth(line)), 1);
72
+ const contentWidth = Math.max(options?.minWidth ?? 0, ...lines.map((line) => visibleWidth(line)), 1);
73
73
  const inner = contentWidth + padding * 2;
74
74
  const padLine = (line) => {
75
75
  const extra = contentWidth - visibleWidth(line);
@@ -78,7 +78,7 @@ export function formatTerminalBox(lines, options) {
78
78
  const paint = (line) => color(line);
79
79
  const box = [
80
80
  paint(`╭${"─".repeat(inner)}╮`),
81
- ...lines.map(line => paint(padLine(line))),
81
+ ...lines.map((line) => paint(padLine(line))),
82
82
  paint(`╰${"─".repeat(inner)}╯`),
83
83
  ].join("\n");
84
84
  return box;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Logical resources shared by the July and control-plane conversation
3
+ * identity suites. Each vector exercises both claim minting and mailbox
4
+ * extraction for one typed conversation.
5
+ *
6
+ * Pure data: server-shared loads this module without importing July runtime
7
+ * code into the control plane.
8
+ */
9
+ type RepoNumberClaim = {
10
+ type: "pr" | "issue" | "origin-pr" | "gitlab-mr" | "bitbucket-pr";
11
+ resource: {
12
+ fullName: string;
13
+ number: number;
14
+ };
15
+ };
16
+ type ConversationIdentityClaim = RepoNumberClaim | {
17
+ type: "thread";
18
+ resource: {
19
+ channelId: string;
20
+ threadTs: string;
21
+ };
22
+ } | {
23
+ type: "deployment";
24
+ resource: {
25
+ deploymentId: string;
26
+ };
27
+ } | {
28
+ type: "change-monitor-checkpoint";
29
+ resource: {
30
+ checkpointName: string;
31
+ };
32
+ } | {
33
+ type: "factory-issue";
34
+ resource: {
35
+ issueName: string;
36
+ };
37
+ };
38
+ export type ConversationIdentityVector = {
39
+ name: string;
40
+ kind: "github" | "slack" | "origin" | "gitlab" | "bitbucket" | "deployments" | "change_monitors" | "issues";
41
+ claim: ConversationIdentityClaim;
42
+ eventName: string;
43
+ payload: Record<string, unknown>;
44
+ expectedKey: string;
45
+ };
46
+ export declare const CONVERSATION_IDENTITY_VECTORS: readonly ConversationIdentityVector[];
47
+ export {};
48
+ //# sourceMappingURL=conversation-identity-vectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-identity-vectors.d.ts","sourceRoot":"","sources":["../../../src/internal/testing/conversation-identity-vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,CAAC;IAClE,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,KAAK,yBAAyB,GAC1B,eAAe,GACf;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC,GACD;IACE,IAAI,EAAE,2BAA2B,CAAC;IAClC,QAAQ,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACA,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,aAAa,GACb,iBAAiB,GACjB,QAAQ,CAAC;IACb,KAAK,EAAE,yBAAyB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,SAAS,0BAA0B,EA+H9E,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Logical resources shared by the July and control-plane conversation
3
+ * identity suites. Each vector exercises both claim minting and mailbox
4
+ * extraction for one typed conversation.
5
+ *
6
+ * Pure data: server-shared loads this module without importing July runtime
7
+ * code into the control plane.
8
+ */
9
+ export const CONVERSATION_IDENTITY_VECTORS = [
10
+ {
11
+ name: "GitHub pull request",
12
+ kind: "github",
13
+ claim: {
14
+ type: "pr",
15
+ resource: { fullName: "Acme/Widgets", number: 12 },
16
+ },
17
+ eventName: "pull_request",
18
+ payload: {
19
+ repository: { full_name: "Acme/Widgets" },
20
+ pull_request: { number: 12 },
21
+ },
22
+ expectedKey: "cont:github-pr:Acme/Widgets#12",
23
+ },
24
+ {
25
+ name: "GitHub issue",
26
+ kind: "github",
27
+ claim: {
28
+ type: "issue",
29
+ resource: { fullName: "Acme/Widgets", number: 34 },
30
+ },
31
+ eventName: "issues",
32
+ payload: {
33
+ repository: { full_name: "Acme/Widgets" },
34
+ issue: { number: 34 },
35
+ },
36
+ expectedKey: "cont:github-issue:Acme/Widgets#34",
37
+ },
38
+ {
39
+ name: "Slack thread",
40
+ kind: "slack",
41
+ claim: {
42
+ type: "thread",
43
+ resource: { channelId: "C123", threadTs: "1719.000" },
44
+ },
45
+ eventName: "message",
46
+ payload: {
47
+ type: "event_callback",
48
+ event: {
49
+ type: "message",
50
+ channel: "C123",
51
+ ts: "1720.000",
52
+ thread_ts: "1719.000",
53
+ },
54
+ },
55
+ expectedKey: "cont:C123:1719.000",
56
+ },
57
+ {
58
+ name: "Origin pull request",
59
+ kind: "origin",
60
+ claim: {
61
+ type: "origin-pr",
62
+ resource: { fullName: "Acme/Widgets", number: 42 },
63
+ },
64
+ eventName: "pull_request.created",
65
+ payload: {
66
+ pullRequest: { number: 42 },
67
+ repository: { name: "Widgets", owner: { slug: "Acme" } },
68
+ },
69
+ expectedKey: "cont:origin-pr:Acme/Widgets#42",
70
+ },
71
+ {
72
+ name: "GitLab merge request",
73
+ kind: "gitlab",
74
+ claim: {
75
+ type: "gitlab-mr",
76
+ resource: { fullName: "Acme/Platform/API", number: 56 },
77
+ },
78
+ eventName: "merge_request",
79
+ payload: {
80
+ project: { path_with_namespace: "Acme/Platform/API" },
81
+ object_attributes: { iid: 56 },
82
+ },
83
+ expectedKey: "cont:gitlab-mr:acme/platform/api!56",
84
+ },
85
+ {
86
+ name: "Bitbucket pull request",
87
+ kind: "bitbucket",
88
+ claim: {
89
+ type: "bitbucket-pr",
90
+ resource: { fullName: "ACME/Widgets", number: 78 },
91
+ },
92
+ eventName: "pullrequest:created",
93
+ payload: {
94
+ repository: { full_name: "ACME/Widgets" },
95
+ pullrequest: { id: 78 },
96
+ },
97
+ expectedKey: "cont:bitbucket-pr:acme/widgets#78",
98
+ },
99
+ {
100
+ name: "deployment",
101
+ kind: "deployments",
102
+ claim: {
103
+ type: "deployment",
104
+ resource: { deploymentId: "dep-90" },
105
+ },
106
+ eventName: "deployment.created",
107
+ payload: { deploymentId: "dep-90" },
108
+ expectedKey: "cont:deployments:dep-90",
109
+ },
110
+ {
111
+ name: "change monitor checkpoint",
112
+ kind: "change_monitors",
113
+ claim: {
114
+ type: "change-monitor-checkpoint",
115
+ resource: {
116
+ checkpointName: "changeMonitors/cm-1/checkpoints/cp-2",
117
+ },
118
+ },
119
+ eventName: "checkpoint.created",
120
+ payload: {
121
+ checkpoint: { name: "changeMonitors/cm-1/checkpoints/cp-2" },
122
+ },
123
+ expectedKey: "cont:change_monitors:changeMonitors/cm-1/checkpoints/cp-2",
124
+ },
125
+ {
126
+ name: "factory issue",
127
+ kind: "issues",
128
+ claim: {
129
+ type: "factory-issue",
130
+ resource: { issueName: "issues/iss-3" },
131
+ },
132
+ eventName: "issue.created",
133
+ payload: { issue: { name: "issues/iss-3" } },
134
+ expectedKey: "cont:issues:issues/iss-3",
135
+ },
136
+ ];
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Transient retry for a read-effect tool call that already executed.
3
+ *
4
+ * Writes, unclassified tools, dry-run stubs, approval denials, and
5
+ * validation failures never reach this helper. Auth, elicitation, and a
6
+ * timeout that already ran long enough to repeat are not transient.
7
+ *
8
+ * Backoff is full jitter (base 500ms, cap 4s) and at most 10s asleep per
9
+ * call. An attempt that already ran longer than 15s is not retried, so
10
+ * one slow call plus the backoff budget stays under 30s. Sleep yields the
11
+ * event loop, so a timer can still fire during the wait.
12
+ */
13
+ import { type Meter } from "@opentelemetry/api";
14
+ import type { ToolEffect } from "../types.js";
15
+ /** Total tries, including the first, for a read-effect call. */
16
+ export declare const TOOL_RETRY_DEFAULT_MAX_ATTEMPTS = 3;
17
+ export declare const TOOL_RETRY_BACKOFF_BASE_MS = 500;
18
+ export declare const TOOL_RETRY_BACKOFF_CAP_MS = 4000;
19
+ /** Cumulative sleep per call. */
20
+ export declare const TOOL_RETRY_BACKOFF_BUDGET_MS = 10000;
21
+ /**
22
+ * An attempt slower than this is not retried. Paired with the backoff
23
+ * budget, the extra wait stays under 30s.
24
+ */
25
+ export declare const TOOL_RETRY_MAX_ATTEMPT_MS = 15000;
26
+ /** Quiet-stream limit the extra wait must stay under. */
27
+ export declare const TOOL_RETRY_STALL_FAIL_MS = 30000;
28
+ export type ToolRetryReason = "transport" | "http_429" | "http_502" | "http_503" | "http_504" | "mcp_transient";
29
+ export type ToolRetryOutcome = "recovered" | "exhausted" | "not_eligible";
30
+ export interface ToolRetryNotice {
31
+ /** The try that is about to run (2 = first retry). */
32
+ readonly attempt: number;
33
+ readonly reason: ToolRetryReason;
34
+ readonly backoffMs: number;
35
+ readonly connection?: string;
36
+ }
37
+ /**
38
+ * Vendor-reported MCP `isError` result. Distinct from a thrown transport
39
+ * failure so the classifier can require an explicit transient phrase.
40
+ */
41
+ export declare class McpToolError extends Error {
42
+ readonly connection: string;
43
+ readonly toolName: string;
44
+ readonly vendorMessage: string;
45
+ constructor(args: {
46
+ connection: string;
47
+ toolName: string;
48
+ vendorMessage: string;
49
+ });
50
+ }
51
+ export type ToolFailureVerdict = {
52
+ readonly transient: false;
53
+ } | {
54
+ readonly transient: true;
55
+ readonly reason: ToolRetryReason;
56
+ readonly retryAfterMs?: number;
57
+ };
58
+ type SleepFn = (ms: number, signal: AbortSignal | undefined) => Promise<void>;
59
+ /** @internal Test seam. `undefined` restores the real timer. */
60
+ export declare function setToolRetrySleepForTests(sleep: SleepFn | undefined): void;
61
+ /** @internal Test seam. `undefined` restores `Math.random`. */
62
+ export declare function setToolRetryRandomForTests(random: (() => number) | undefined): void;
63
+ /** @internal Test seam. `undefined` restores the global meter. */
64
+ export declare function setToolRetryMeterForTests(meter: Meter | undefined): void;
65
+ export declare function classifyToolFailure(error: unknown): ToolFailureVerdict;
66
+ /**
67
+ * Full-jitter delay for the backoff after `failedAttempt` (1 = first try
68
+ * failed). `Retry-After` replaces the jittered delay and is still capped.
69
+ * Returns `undefined` when the cumulative budget is already spent.
70
+ */
71
+ export declare function toolRetryBackoffMs(args: {
72
+ failedAttempt: number;
73
+ random: number;
74
+ retryAfterMs?: number;
75
+ spentMs: number;
76
+ }): number | undefined;
77
+ export declare function retryReadOnlyToolCall<T>(args: {
78
+ toolName: string;
79
+ connection?: string;
80
+ effect: ToolEffect | undefined;
81
+ signal?: AbortSignal;
82
+ now?: () => number;
83
+ onRetry?: (notice: ToolRetryNotice) => void;
84
+ execute: () => T | Promise<T>;
85
+ }): Promise<T>;
86
+ export {};
87
+ //# sourceMappingURL=tool-call-retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-retry.d.ts","sourceRoot":"","sources":["../../src/internal/tool-call-retry.ts"],"names":[],"mappings":"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"}