@cursor/bdk 0.2.14 → 0.2.15

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 (294) hide show
  1. package/AGENTS.md +51 -52
  2. package/README.md +1 -1
  3. package/dist/bin/agent-sdk.js +0 -0
  4. package/dist/bin/agent-serve.js +0 -0
  5. package/dist/channels/slack/attachments.d.ts +2 -0
  6. package/dist/channels/slack/attachments.d.ts.map +1 -1
  7. package/dist/channels/slack/attachments.js +17 -5
  8. package/dist/channels/slack/channel-watch.d.ts +4 -2
  9. package/dist/channels/slack/channel-watch.d.ts.map +1 -1
  10. package/dist/channels/slack/channel-watch.js +4 -2
  11. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  12. package/dist/channels/slack/slack-channel.js +4 -2
  13. package/dist/channels/slack/types.d.ts +6 -4
  14. package/dist/channels/slack/types.d.ts.map +1 -1
  15. package/dist/connections.d.ts +29 -0
  16. package/dist/connections.d.ts.map +1 -1
  17. package/dist/connections.js +54 -0
  18. package/dist/docs/404.html +2 -2
  19. package/dist/docs/assets/{app.BN3sgOOo.js → app.CRMxF0qX.js} +4 -4
  20. package/dist/docs/assets/{building-with-agents.md.Df87rAe1.js → building-with-agents.md.Bi9CQ-bR.js} +3 -3
  21. package/dist/docs/assets/{building-with-agents.md.Df87rAe1.lean.js → building-with-agents.md.Bi9CQ-bR.lean.js} +1 -1
  22. package/dist/docs/assets/chunks/@localSearchIndexroot.BZwvb2LN.js +1 -0
  23. package/dist/docs/assets/chunks/{VPLocalSearchBox.CbA00dML.js → VPLocalSearchBox.C4BiQe53.js} +1 -1
  24. package/dist/docs/assets/chunks/{arc.Byug8CZM.js → arc.D1TA2Mxn.js} +1 -1
  25. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.D1_qmnQy.js → architectureDiagram-Q4EWVU46.CA-hBJCN.js} +1 -1
  26. package/dist/docs/assets/chunks/{baseUniq.Dj-Nurf-.js → baseUniq.CzsSgiab.js} +1 -1
  27. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BZwq3EIg.js → blockDiagram-DXYQGD6D.sxrH_f0l.js} +1 -1
  28. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.dx75urO7.js → c4Diagram-AHTNJAMY.D_Z3mqAl.js} +1 -1
  29. package/dist/docs/assets/chunks/channel.D7DtboxW.js +1 -0
  30. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CIoddsDQ.js → chunk-4BX2VUAB.BS6_uTUf.js} +1 -1
  31. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.O3VsVBES.js → chunk-4TB4RGXK.D-URAeTU.js} +1 -1
  32. package/dist/docs/assets/chunks/{chunk-55IACEB6.WNNWh0Pe.js → chunk-55IACEB6.b4SZc5kO.js} +1 -1
  33. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BKVQwEME.js → chunk-EDXVE4YY.DLKEEDkN.js} +1 -1
  34. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.Cv5iBz7A.js → chunk-FMBD7UC4.3SyQHgpY.js} +1 -1
  35. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.wCDCToee.js → chunk-OYMX7WX6.DBKKaFeS.js} +1 -1
  36. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D3IGXhXA.js → chunk-QZHKN3VN.BhCYeR7H.js} +1 -1
  37. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CAPPh-E7.js → chunk-YZCP3GAM.Cpg0VgI7.js} +1 -1
  38. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.irslOV8B.js +1 -0
  39. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.irslOV8B.js +1 -0
  40. package/dist/docs/assets/chunks/clone.DosLeDYL.js +1 -0
  41. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BQCFH3M5.js → cose-bilkent-S5V4N54A.4q0YNZN6.js} +1 -1
  42. package/dist/docs/assets/chunks/{dagre-KV5264BT.lHmdrh7L.js → dagre-KV5264BT.Bk_CcQPr.js} +1 -1
  43. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.EtSPnHgD.js → diagram-5BDNPKRD.CgreoM_Z.js} +1 -1
  44. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DCyUnQT8.js → diagram-G4DWMVQ6.DlZGpm6W.js} +1 -1
  45. package/dist/docs/assets/chunks/{diagram-MMDJMWI5._E0Qqblb.js → diagram-MMDJMWI5.BxtXxgIR.js} +1 -1
  46. package/dist/docs/assets/chunks/{diagram-TYMM5635.BDj4oyy_.js → diagram-TYMM5635.DSzlJp2D.js} +1 -1
  47. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.CrvnO6a3.js → erDiagram-SMLLAGMA.BN1YUmEV.js} +1 -1
  48. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.DIhYc-2F.js → flowDiagram-DWJPFMVM.B61NGNYu.js} +1 -1
  49. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.hFqm_vio.js → ganttDiagram-T4ZO3ILL.DR-tto3M.js} +1 -1
  50. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.N3GDaVDD.js → gitGraphDiagram-UUTBAWPF.CBPs2W_2.js} +1 -1
  51. package/dist/docs/assets/chunks/{graph.DK28rMBx.js → graph.DmlaqzCE.js} +1 -1
  52. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.DHmE6W9M.js → infoDiagram-42DDH7IO.obPv-fFg.js} +1 -1
  53. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.ByUJuOYm.js → ishikawaDiagram-UXIWVN3A.CXHTUcM3.js} +1 -1
  54. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BIUChFMh.js → journeyDiagram-VCZTEJTY.BoVHerYZ.js} +1 -1
  55. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CNgFXwo-.js → kanban-definition-6JOO6SKY.CfYmPHZg.js} +1 -1
  56. package/dist/docs/assets/chunks/{layout.BDnwE4ET.js → layout.621UdAhB.js} +1 -1
  57. package/dist/docs/assets/chunks/{linear.DmrYLXFs.js → linear.Cz_zRKjr.js} +1 -1
  58. package/dist/docs/assets/chunks/{min.BbYcWakN.js → min.ON4GjCH7.js} +1 -1
  59. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.C9x-klkv.js → mindmap-definition-QFDTVHPH.DLPMLJlv.js} +1 -1
  60. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.iufpEbi0.js → pieDiagram-DEJITSTG.BFp11AYt.js} +1 -1
  61. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DdoXbWL9.js → quadrantDiagram-34T5L4WZ.ChX7xo6B.js} +1 -1
  62. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.XL1-_pNk.js → requirementDiagram-MS252O5E.DbKtHG_Q.js} +1 -1
  63. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DySXofNs.js → sankeyDiagram-XADWPNL6.Spw8tv-7.js} +1 -1
  64. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Cp0GZoOU.js → sequenceDiagram-FGHM5R23.BYso9LlE.js} +1 -1
  65. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.DvK-sXUX.js → stateDiagram-FHFEXIEX.D8l54jqW.js} +1 -1
  66. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CAYMmzGj.js +1 -0
  67. package/dist/docs/assets/chunks/{theme.Clup4iIo.js → theme.m_Ethbkv.js} +2 -2
  68. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.gHI9ZLm6.js → timeline-definition-GMOUNBTQ.BLdhhyy9.js} +1 -1
  69. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.G2N2zXYe.js → vennDiagram-DHZGUBPP.CyGT2F_P.js} +1 -1
  70. package/dist/docs/assets/chunks/{wardley-RL74JXVD.C46G0P5a.js → wardley-RL74JXVD.C5JJS3bh.js} +1 -1
  71. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.BgUKEagd.js → wardleyDiagram-NUSXRM2D.p_Sz9p1i.js} +1 -1
  72. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CwH7oege.js → xychartDiagram-5P7HB3ND.DtXsNUaf.js} +1 -1
  73. package/dist/docs/assets/deployment.md.hKKN9I4c.js +31 -0
  74. package/dist/docs/assets/{deployment.md.BYuEcDBv.lean.js → deployment.md.hKKN9I4c.lean.js} +1 -1
  75. package/dist/docs/assets/{evals.md.C851kViu.js → evals.md.CHR34K1Y.js} +3 -7
  76. package/dist/docs/assets/{evals.md.C851kViu.lean.js → evals.md.CHR34K1Y.lean.js} +1 -1
  77. package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.js +9 -0
  78. package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.lean.js +1 -0
  79. package/dist/docs/assets/guides_grokbot-agents.md.BwAykJ7U.js +15 -0
  80. package/dist/docs/assets/{guides_grokbot-agents.md.tD1smFhU.lean.js → guides_grokbot-agents.md.BwAykJ7U.lean.js} +1 -1
  81. package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.js → guides_hooks.md.B_bKG1oA.js} +1 -1
  82. package/dist/docs/assets/{guides_improve.md.CRrYq22s.js → guides_improve.md.CZKVt1cT.js} +2 -3
  83. package/dist/docs/assets/{guides_improve.md.CRrYq22s.lean.js → guides_improve.md.CZKVt1cT.lean.js} +1 -1
  84. package/dist/docs/assets/{guides_mcp-oauth.md.DR3zhC9r.js → guides_mcp-oauth.md.BM_eFC0L.js} +3 -15
  85. package/dist/docs/assets/guides_mcp-oauth.md.BM_eFC0L.lean.js +1 -0
  86. package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.js → guides_webhooks.md.Cpdc3BDX.js} +13 -12
  87. package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.lean.js → guides_webhooks.md.Cpdc3BDX.lean.js} +1 -1
  88. package/dist/docs/assets/{index.md.Dxxr7pFa.js → index.md.BIBHIQtU.js} +1 -1
  89. package/dist/docs/assets/{quickstart.md.BK5gjHM2.js → quickstart.md.CduLGBAB.js} +1 -1
  90. package/dist/docs/assets/reference_channels.md.DYg0CLud.js +22 -0
  91. package/dist/docs/assets/{reference_channels.md.LbNIJBwd.lean.js → reference_channels.md.DYg0CLud.lean.js} +1 -1
  92. package/dist/docs/assets/{reference_cli.md.dYCAL2lB.js → reference_cli.md.BYNIHwbi.js} +15 -12
  93. package/dist/docs/assets/{reference_cli.md.dYCAL2lB.lean.js → reference_cli.md.BYNIHwbi.lean.js} +1 -1
  94. package/dist/docs/assets/{reference_connections.md.DLrgAd5f.js → reference_connections.md.CxbLpaaP.js} +4 -5
  95. package/dist/docs/assets/{reference_connections.md.DLrgAd5f.lean.js → reference_connections.md.CxbLpaaP.lean.js} +1 -1
  96. package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.js → reference_evals.md.if--BLd0.js} +1 -1
  97. package/dist/docs/assets/{reference_hooks.md.B-eGa2km.js → reference_hooks.md.DbJC8mcZ.js} +1 -1
  98. package/dist/docs/assets/reference_http-api.md.CrqhTv6S.js +11 -0
  99. package/dist/docs/assets/{reference_http-api.md.DbFNOubV.lean.js → reference_http-api.md.CrqhTv6S.lean.js} +1 -1
  100. package/dist/docs/assets/reference_playground.md.q4MI-0td.js +1 -0
  101. package/dist/docs/assets/reference_playground.md.q4MI-0td.lean.js +1 -0
  102. package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.js → reference_schedules.md.03Ryy9ca.js} +5 -5
  103. package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.lean.js → reference_schedules.md.03Ryy9ca.lean.js} +1 -1
  104. package/dist/docs/assets/reference_sessions.md.C_uzIWuy.js +1 -0
  105. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.Ckddg6KX.js} +1 -1
  106. package/dist/docs/assets/{reference_tools.md.DzIY9JzY.js → reference_tools.md.08XR7lIl.js} +3 -14
  107. package/dist/docs/assets/reference_tools.md.08XR7lIl.lean.js +1 -0
  108. package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.js → templates_grokbot-agents.md.DgpPEs7B.js} +1 -1
  109. package/dist/docs/assets/troubleshooting.md.PCafNCb5.js +1 -0
  110. package/dist/docs/assets/{troubleshooting.md.x-GBa7wN.lean.js → troubleshooting.md.PCafNCb5.lean.js} +1 -1
  111. package/dist/docs/building-with-agents.html +37 -37
  112. package/dist/docs/building-with-agents.md +5 -5
  113. package/dist/docs/deployment.html +43 -41
  114. package/dist/docs/deployment.md +70 -33
  115. package/dist/docs/evals.html +38 -42
  116. package/dist/docs/evals.md +1 -16
  117. package/dist/docs/guides/agent-to-agent.html +35 -35
  118. package/dist/docs/guides/bitbucket.html +35 -35
  119. package/dist/docs/guides/cloud-agents.html +38 -39
  120. package/dist/docs/guides/cloud-agents.md +2 -8
  121. package/dist/docs/guides/convert-automation.html +35 -35
  122. package/dist/docs/guides/github.html +35 -35
  123. package/dist/docs/guides/gitlab.html +35 -35
  124. package/dist/docs/guides/grokbot-agents.html +37 -38
  125. package/dist/docs/guides/grokbot-agents.md +9 -13
  126. package/dist/docs/guides/hooks.html +37 -37
  127. package/dist/docs/guides/hooks.md +0 -1
  128. package/dist/docs/guides/improve.html +37 -38
  129. package/dist/docs/guides/improve.md +4 -6
  130. package/dist/docs/guides/jev.html +35 -35
  131. package/dist/docs/guides/mcp-oauth.html +39 -51
  132. package/dist/docs/guides/mcp-oauth.md +17 -40
  133. package/dist/docs/guides/migrate.html +35 -35
  134. package/dist/docs/guides/opentelemetry.html +35 -35
  135. package/dist/docs/guides/slack.html +35 -35
  136. package/dist/docs/guides/webhooks.html +47 -46
  137. package/dist/docs/guides/webhooks.md +35 -18
  138. package/dist/docs/hashmap.json +1 -1
  139. package/dist/docs/hillclimbing.html +35 -35
  140. package/dist/docs/index.html +36 -36
  141. package/dist/docs/index.md +1 -1
  142. package/dist/docs/llms-full.txt +347 -269
  143. package/dist/docs/llms.txt +4 -4
  144. package/dist/docs/quickstart.html +37 -37
  145. package/dist/docs/quickstart.md +2 -2
  146. package/dist/docs/reference/agent-config.html +35 -35
  147. package/dist/docs/reference/artifacts.html +35 -35
  148. package/dist/docs/reference/channels.html +42 -43
  149. package/dist/docs/reference/channels.md +29 -13
  150. package/dist/docs/reference/cli.html +49 -46
  151. package/dist/docs/reference/cli.md +113 -40
  152. package/dist/docs/reference/connections.html +39 -40
  153. package/dist/docs/reference/connections.md +6 -5
  154. package/dist/docs/reference/evals.html +37 -37
  155. package/dist/docs/reference/evals.md +2 -4
  156. package/dist/docs/reference/extensions.html +35 -35
  157. package/dist/docs/reference/hooks.html +37 -37
  158. package/dist/docs/reference/hooks.md +0 -1
  159. package/dist/docs/reference/http-api.html +38 -38
  160. package/dist/docs/reference/http-api.md +7 -17
  161. package/dist/docs/reference/instructions.html +35 -35
  162. package/dist/docs/reference/playground.html +37 -37
  163. package/dist/docs/reference/playground.md +1 -4
  164. package/dist/docs/reference/project-layout.html +35 -35
  165. package/dist/docs/reference/prompt.html +35 -35
  166. package/dist/docs/reference/schedules.html +39 -39
  167. package/dist/docs/reference/schedules.md +26 -3
  168. package/dist/docs/reference/sessions.html +36 -36
  169. package/dist/docs/reference/sessions.md +1 -2
  170. package/dist/docs/reference/skills.html +37 -37
  171. package/dist/docs/reference/skills.md +1 -1
  172. package/dist/docs/reference/subagents.html +35 -35
  173. package/dist/docs/reference/tools.html +39 -50
  174. package/dist/docs/reference/tools.md +2 -28
  175. package/dist/docs/templates/agentic-owners.html +35 -35
  176. package/dist/docs/templates/grokbot-agents.html +37 -37
  177. package/dist/docs/templates/grokbot-agents.md +1 -1
  178. package/dist/docs/templates/security-reviewer.html +35 -35
  179. package/dist/docs/templates/thermo-quality-review.html +35 -35
  180. package/dist/docs/templates/thermo-review.html +35 -35
  181. package/dist/docs/templates/triage.html +35 -35
  182. package/dist/docs/troubleshooting.html +36 -36
  183. package/dist/docs/troubleshooting.md +12 -7
  184. package/dist/extensions/cursor-cloud-agents/extension.d.ts +5 -1
  185. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  186. package/dist/extensions/cursor-cloud-agents/extension.js +4 -0
  187. package/dist/extensions/cursor-cloud-agents/lib/channels.d.ts.map +1 -1
  188. package/dist/extensions/cursor-cloud-agents/lib/channels.js +5 -1
  189. package/dist/internal/cli-deploy.d.ts.map +1 -1
  190. package/dist/internal/cli-deploy.js +14 -0
  191. package/dist/internal/continuation-identity.js +1 -1
  192. package/dist/internal/discovery/agent-config.d.ts +6 -0
  193. package/dist/internal/discovery/agent-config.d.ts.map +1 -1
  194. package/dist/internal/discovery/agent-config.js +19 -0
  195. package/dist/internal/discovery/agent.d.ts.map +1 -1
  196. package/dist/internal/discovery/agent.js +2 -1
  197. package/dist/internal/hosted-catch-protocol.d.ts +2 -0
  198. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  199. package/dist/internal/hosted-catch-protocol.js +2 -0
  200. package/dist/internal/hosted-catch.d.ts +2 -3
  201. package/dist/internal/hosted-catch.d.ts.map +1 -1
  202. package/dist/internal/hosted-catch.js +2 -3
  203. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  204. package/dist/internal/hosted-delivery.js +22 -12
  205. package/dist/internal/hosted-execution-flush.d.ts +6 -3
  206. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  207. package/dist/internal/hosted-execution-flush.js +28 -31
  208. package/dist/internal/peer-connections.d.ts +6 -2
  209. package/dist/internal/peer-connections.d.ts.map +1 -1
  210. package/dist/internal/peer-connections.js +23 -19
  211. package/dist/internal/sdk-runner.d.ts.map +1 -1
  212. package/dist/internal/sdk-runner.js +5 -2
  213. package/dist/internal/server.d.ts.map +1 -1
  214. package/dist/internal/server.js +6 -5
  215. package/dist/internal/session-engine.d.ts.map +1 -1
  216. package/dist/internal/session-engine.js +3 -0
  217. package/dist/internal/session-run-log.d.ts.map +1 -1
  218. package/dist/internal/session-run-log.js +26 -11
  219. package/dist/playground/assets/index-BVYWBxLU.css +1 -0
  220. package/dist/playground/assets/{index-ClxRl2Cw.js → index-DCsq6f_I.js} +37 -37
  221. package/dist/playground/index.html +2 -2
  222. package/dist/types.d.ts +16 -0
  223. package/dist/types.d.ts.map +1 -1
  224. package/docs/README.md +1 -1
  225. package/docs/building-with-agents.md +5 -5
  226. package/docs/deployment.md +70 -33
  227. package/docs/evals.md +1 -16
  228. package/docs/guides/cloud-agents.md +3 -9
  229. package/docs/guides/grokbot-agents.md +10 -14
  230. package/docs/guides/hooks.md +0 -1
  231. package/docs/guides/improve.md +4 -6
  232. package/docs/guides/mcp-oauth.md +18 -41
  233. package/docs/guides/webhooks.md +35 -18
  234. package/docs/quickstart.md +2 -2
  235. package/docs/reference/channels.md +29 -13
  236. package/docs/reference/cli.md +113 -40
  237. package/docs/reference/connections.md +6 -5
  238. package/docs/reference/evals.md +2 -4
  239. package/docs/reference/hooks.md +0 -1
  240. package/docs/reference/http-api.md +7 -17
  241. package/docs/reference/playground.md +2 -5
  242. package/docs/reference/schedules.md +26 -3
  243. package/docs/reference/sessions.md +1 -2
  244. package/docs/reference/skills.md +1 -1
  245. package/docs/reference/tools.md +3 -29
  246. package/docs/templates/grokbot-agents.md +1 -1
  247. package/docs/troubleshooting.md +12 -7
  248. package/package.json +35 -35
  249. package/skills/create-agent/SKILL.md +9 -6
  250. package/skills/debug/SKILL.md +3 -4
  251. package/skills/evals/SKILL.md +2 -2
  252. package/skills/framework-map/SKILL.md +10 -10
  253. package/skills/mcp-auth/SKILL.md +10 -34
  254. package/skills/migrate-v2/SKILL.md +13 -9
  255. package/skills/setup-slack/SKILL.md +0 -13
  256. package/templates/agents-md/README.md +3 -3
  257. package/templates/agents-md/bot/channels/queue.ts +3 -8
  258. package/templates/agents-md/bot/instructions.md +1 -2
  259. package/templates/agents-md/bot/tools/apply_agents.ts +0 -1
  260. package/templates/agents-md/evals/agents.eval.ts +2 -2
  261. package/templates/demo/bot/channels/queue.ts +5 -15
  262. package/templates/grokbot-agents/.gitignore +4 -0
  263. package/templates/pr-autofixer/bot/channels/drive.ts +3 -16
  264. package/templates/security-help/.gitignore +4 -0
  265. package/templates/triage/bot/channels/queue.ts +11 -22
  266. package/templates/triage/bot/channels/webhook.ts +3 -6
  267. package/templates/triage/bot/lib/parse-queue-event.ts +0 -6
  268. package/dist/docs/assets/chunks/@localSearchIndexroot.CzrtdJ8s.js +0 -1
  269. package/dist/docs/assets/chunks/channel.6ebHhoF9.js +0 -1
  270. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BJ-CwKwu.js +0 -1
  271. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BJ-CwKwu.js +0 -1
  272. package/dist/docs/assets/chunks/clone.DfV2fkWH.js +0 -1
  273. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DNdUCJyd.js +0 -1
  274. package/dist/docs/assets/deployment.md.BYuEcDBv.js +0 -29
  275. package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.js +0 -10
  276. package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.lean.js +0 -1
  277. package/dist/docs/assets/guides_grokbot-agents.md.tD1smFhU.js +0 -16
  278. package/dist/docs/assets/guides_mcp-oauth.md.DR3zhC9r.lean.js +0 -1
  279. package/dist/docs/assets/reference_channels.md.LbNIJBwd.js +0 -23
  280. package/dist/docs/assets/reference_http-api.md.DbFNOubV.js +0 -11
  281. package/dist/docs/assets/reference_playground.md.1hx0gcIu.js +0 -1
  282. package/dist/docs/assets/reference_playground.md.1hx0gcIu.lean.js +0 -1
  283. package/dist/docs/assets/reference_sessions.md.CyM7ARz1.js +0 -1
  284. package/dist/docs/assets/reference_tools.md.DzIY9JzY.lean.js +0 -1
  285. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +0 -1
  286. package/dist/playground/assets/index-BKSsuEMw.css +0 -1
  287. /package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.lean.js → guides_hooks.md.B_bKG1oA.lean.js} +0 -0
  288. /package/dist/docs/assets/{index.md.Dxxr7pFa.lean.js → index.md.BIBHIQtU.lean.js} +0 -0
  289. /package/dist/docs/assets/{quickstart.md.BK5gjHM2.lean.js → quickstart.md.CduLGBAB.lean.js} +0 -0
  290. /package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.lean.js → reference_evals.md.if--BLd0.lean.js} +0 -0
  291. /package/dist/docs/assets/{reference_hooks.md.B-eGa2km.lean.js → reference_hooks.md.DbJC8mcZ.lean.js} +0 -0
  292. /package/dist/docs/assets/{reference_sessions.md.CyM7ARz1.lean.js → reference_sessions.md.C_uzIWuy.lean.js} +0 -0
  293. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.Ckddg6KX.lean.js} +0 -0
  294. /package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.lean.js → templates_grokbot-agents.md.DgpPEs7B.lean.js} +0 -0
@@ -25,6 +25,7 @@ import { CLI_COMMAND_NAME as CLI } from "./distribution.js";
25
25
  import { isReservedSecretName, isValidCursorEventRepo, validateSettableSecretName, } from "./hosting.js";
26
26
  import { deploymentArchitecture, rejectV2ForLegacyCommand } from "./legacy-command-guard.js";
27
27
  import { deployProgressLabel, sanitizeCustomerError } from "./logs-client.js";
28
+ import { peerConnectionRefs } from "./peer-connections.js";
28
29
  import { sleep } from "./sleep.js";
29
30
  import { stderrPalette } from "./terminal-style.js";
30
31
  const DEFAULT_POLL_INTERVAL_MS = 3_000;
@@ -146,6 +147,9 @@ export async function cmdDeploy(options) {
146
147
  manifests.push(await readDeployManifest(target.dir));
147
148
  }
148
149
  if (manifests.every((manifest) => manifest.architecture === "v2")) {
150
+ for (const [index, target] of targets.entries()) {
151
+ warnPeerConnections(ctx, target.slug, manifests[index]?.peerConnections ?? []);
152
+ }
149
153
  return deployAgentsdkApplication(ctx, options, targets, {
150
154
  // `persistent` is per child agent, like `agentPath`: each release
151
155
  // component carries its own.
@@ -487,6 +491,7 @@ async function deployOne(ctx, options, target, extras) {
487
491
  .map((channelId) => `/v1/channels/${channelId}`)
488
492
  .join(", ")}: publicEndpoint() sits beside sharedSecretAuth()/hmacSignatureAuth() — auth chains are any-of, so every request is admitted and those secret policies never run. Drop publicEndpoint() to enforce them, or drop them to make the intent explicit.\n`);
489
493
  }
494
+ warnPeerConnections(ctx, slug, manifest?.peerConnections ?? []);
490
495
  if (manifest?.architecture === "v2") {
491
496
  if (!ctx.json) {
492
497
  ctx.err(` architecture: v2${manifest.persistent ? " (persistent)" : ""}${manifest.image === undefined ? "" : `\n image: ${manifest.image}`}\n`);
@@ -847,6 +852,7 @@ async function readDeployManifest(dir) {
847
852
  cursorAccountConnections: project.agent.connections.flatMap((connection) => isCursorAccountTransport(connection.transport)
848
853
  ? [{ name: connection.name, servers: connection.transport.servers }]
849
854
  : []),
855
+ peerConnections: peerConnectionRefs(project).map(({ name }) => name),
850
856
  publicChannelIds: project.channels
851
857
  .filter((channel) => (channel.definition.auth ?? []).some(isPublicEndpointPolicy))
852
858
  .map((channel) => channel.id),
@@ -894,6 +900,14 @@ function declaredSecretNames(manifests) {
894
900
  ])),
895
901
  ];
896
902
  }
903
+ /** Hosting serves each agent on its own, so its peer connections never resolve there. */
904
+ function warnPeerConnections(ctx, slug, peers) {
905
+ if (ctx.json || peers.length === 0) {
906
+ return;
907
+ }
908
+ ctx.err(`warning: ${slug} has peer connections (${peers.join(", ")}); hosted deploys run without peer tools today.\n` +
909
+ ` Use a subagent, drop the connection, or self-host both agents in one multi-agent \`${CLI} serve\`.\n`);
910
+ }
897
911
  /**
898
912
  * Friendly post-deploy nudge: the manifest declares secrets the agent
899
913
  * expects, but the deployment does not have them all set yet.
@@ -65,7 +65,7 @@ export const BUILTINS = [
65
65
  {
66
66
  type: "thread",
67
67
  kind: "slack",
68
- events: ["message", "app_mention", "reaction_added", "block_actions"],
68
+ events: ["message", "message.bot", "app_mention", "reaction_added", "block_actions"],
69
69
  format: "{channelId}:{threadTs}",
70
70
  },
71
71
  {
@@ -46,4 +46,10 @@ export declare function isValidModelSetting(model: unknown): model is ModelSetti
46
46
  * half-applied chain would retry onto a model the author did not name.
47
47
  */
48
48
  export declare function resolveModelFallbacks(ctx: DiscoveryContext, configPath: string, fallbacks: unknown): readonly ModelSetting[] | undefined;
49
+ /**
50
+ * Authored `fallbackAfterStream` on `defineAgent`. A non-boolean is a
51
+ * discovery error and leaves the default, which never restarts a turn that
52
+ * has already streamed.
53
+ */
54
+ export declare function resolveFallbackAfterStream(ctx: DiscoveryContext, configPath: string, fallbackAfterStream: unknown): boolean | undefined;
49
55
  //# sourceMappingURL=agent-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/agent-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAExB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AAI3E,wBAAgB,qCAAqC,CAAC,KAAK,EAAE;IAC3D,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,GAAG,MAAM,GAAG,SAAS,CAIrB;AAED,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,EAAE,iBAAwB,CAAC;AAElE,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,iBAAiB,GAAG,SAAS,GAC1C,iBAAiB,GAAG,SAAS,CAa/B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,YAAY,EAAE,iBAAiB,GAAG,SAAS,GAC1C,IAAI,GAAG,SAAS,CAuBlB;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CASpB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,oBAAoB,EAAE,MAAM,GAAG,SAAS,GACvC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAY7B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,UAAU,EAAE,SAAS,mBAAmB,EAAE,GACzC,mBAAmB,GAAG,SAAS,CAsCjC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,uBAAuB,GAAG,SAAS,GAC/C,uBAAuB,GAAG,SAAS,CAmBrC;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA4B5C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAUzE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,GACjB,SAAS,YAAY,EAAE,GAAG,SAAS,CAcrC"}
1
+ {"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/agent-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAExB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AAI3E,wBAAgB,qCAAqC,CAAC,KAAK,EAAE;IAC3D,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,GAAG,MAAM,GAAG,SAAS,CAIrB;AAED,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,EAAE,iBAAwB,CAAC;AAElE,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,iBAAiB,GAAG,SAAS,GAC1C,iBAAiB,GAAG,SAAS,CAa/B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,YAAY,EAAE,iBAAiB,GAAG,SAAS,GAC1C,IAAI,GAAG,SAAS,CAuBlB;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CASpB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,oBAAoB,EAAE,MAAM,GAAG,SAAS,GACvC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAY7B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,UAAU,EAAE,SAAS,mBAAmB,EAAE,GACzC,mBAAmB,GAAG,SAAS,CAsCjC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,uBAAuB,GAAG,SAAS,GAC/C,uBAAuB,GAAG,SAAS,CAmBrC;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA4B5C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAUzE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,GACjB,SAAS,YAAY,EAAE,GAAG,SAAS,CAcrC;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,OAAO,GAC3B,OAAO,GAAG,SAAS,CAarB"}
@@ -209,3 +209,22 @@ export function resolveModelFallbacks(ctx, configPath, fallbacks) {
209
209
  }
210
210
  return fallbacks.length > 0 ? fallbacks : undefined;
211
211
  }
212
+ /**
213
+ * Authored `fallbackAfterStream` on `defineAgent`. A non-boolean is a
214
+ * discovery error and leaves the default, which never restarts a turn that
215
+ * has already streamed.
216
+ */
217
+ export function resolveFallbackAfterStream(ctx, configPath, fallbackAfterStream) {
218
+ if (fallbackAfterStream === undefined) {
219
+ return undefined;
220
+ }
221
+ if (typeof fallbackAfterStream !== "boolean") {
222
+ ctx.diagnostics.push({
223
+ severity: "error",
224
+ path: displayPath(ctx, configPath),
225
+ message: "fallbackAfterStream must be a boolean.",
226
+ });
227
+ return undefined;
228
+ }
229
+ return fallbackAfterStream;
230
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,EAAE,KAAK,gBAAgB,EAAe,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAc9D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,IAAI,CAChB,sBAAsB,EACtB,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAC/D,CAAC;CACH;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,eAAe,CAAC,CA0R1B;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C7F"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,EAAE,KAAK,gBAAgB,EAAe,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAc9D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,IAAI,CAChB,sBAAsB,EACtB,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAC/D,CAAC;CACH;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,eAAe,CAAC,CA+R1B;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C7F"}
@@ -6,7 +6,7 @@ import { canonicalizeFileSystemToolName, FileSystemConfigError, resolveFileSyste
6
6
  import { DEFAULT_MODEL, } from "../../types.js";
7
7
  import { synthesizedFileSystemToolNames } from "../filesystem/tools.js";
8
8
  import { withIdentityPreamble } from "../workspace.js";
9
- import { isValidModelSetting, loadAgentConfig, resolveAgentCwd, resolveArchitecture, resolveConcurrency, resolveHosting, resolveLocalCwd, resolveModelFallbacks, resolvePersistent, runtimeArchitectureCompatibilityError, } from "./agent-config.js";
9
+ import { isValidModelSetting, loadAgentConfig, resolveAgentCwd, resolveArchitecture, resolveConcurrency, resolveFallbackAfterStream, resolveHosting, resolveLocalCwd, resolveModelFallbacks, resolvePersistent, runtimeArchitectureCompatibilityError, } from "./agent-config.js";
10
10
  import { loadConnections, loadHostConnections } from "./connections.js";
11
11
  import { displayPath } from "./context.js";
12
12
  import { appendExtensions } from "./extensions.js";
@@ -254,6 +254,7 @@ export async function loadAgent(ctx, agentDir, options) {
254
254
  // Root agents always get a concrete model: authored value or DEFAULT_MODEL.
255
255
  model: isValidModelSetting(config?.model) ? config.model : DEFAULT_MODEL,
256
256
  modelFallbacks: resolveModelFallbacks(ctx, join(agentDir, "agent.ts"), config?.fallbacks),
257
+ fallbackAfterStream: resolveFallbackAfterStream(ctx, join(agentDir, "agent.ts"), config?.fallbackAfterStream),
257
258
  instructions,
258
259
  runtime,
259
260
  ...(root === undefined ? {} : { root }),
@@ -21,6 +21,8 @@ export declare const AGENT_SDK_HTTP_CHANNEL_ID = "http";
21
21
  export declare const AGENT_SDK_HTTP_CHANNEL_KIND = "http";
22
22
  export declare const AGENT_SDK_SESSION_RESUME_KEY_PREFIX = "cont:session:";
23
23
  export declare const AGENT_SDK_CATCH_MAX_BODY_BYTES: number;
24
+ /** Header a replayed request carries so handlers can dedupe on delivery. */
25
+ export declare const CATCH_DELIVERY_ID_HEADER = "x-agent-sdk-delivery-id";
24
26
  export declare const AGENT_SDK_CATCH_ROUTE_METHODS: readonly ["GET", "POST", "PUT", "PATCH", "DELETE"];
25
27
  export type CatchRouteMethod = (typeof AGENT_SDK_CATCH_ROUTE_METHODS)[number];
26
28
  export type CatchRequestEnvelope = {
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-catch-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-catch-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,eAAO,MAAM,6BAA6B,WAAW,CAAC;AACtD,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAChD,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAClD,eAAO,MAAM,mCAAmC,kBAAkB,CAAC;AACnE,eAAO,MAAM,8BAA8B,EAAE,MAAmB,CAAC;AAEjE,eAAO,MAAM,6BAA6B,YAAI,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAChG,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,EAAE,CAAC,CAAC;IACL,MAAM,EAAE,gBAAgB,CAAC;IACzB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3D,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAEtE;AASD,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CA2C1F;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,MAAM,CAK1E"}
1
+ {"version":3,"file":"hosted-catch-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-catch-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,eAAO,MAAM,6BAA6B,WAAW,CAAC;AACtD,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAChD,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAClD,eAAO,MAAM,mCAAmC,kBAAkB,CAAC;AACnE,eAAO,MAAM,8BAA8B,EAAE,MAAmB,CAAC;AACjE,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,4BAA4B,CAAC;AAElE,eAAO,MAAM,6BAA6B,YAAI,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAChG,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,EAAE,CAAC,CAAC;IACL,MAAM,EAAE,gBAAgB,CAAC;IACzB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3D,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAEtE;AASD,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CA2C1F;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,MAAM,CAK1E"}
@@ -22,6 +22,8 @@ export const AGENT_SDK_HTTP_CHANNEL_ID = "http";
22
22
  export const AGENT_SDK_HTTP_CHANNEL_KIND = "http";
23
23
  export const AGENT_SDK_SESSION_RESUME_KEY_PREFIX = "cont:session:";
24
24
  export const AGENT_SDK_CATCH_MAX_BODY_BYTES = 256 * 1024;
25
+ /** Header a replayed request carries so handlers can dedupe on delivery. */
26
+ export const CATCH_DELIVERY_ID_HEADER = "x-agent-sdk-delivery-id";
25
27
  export const AGENT_SDK_CATCH_ROUTE_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE"];
26
28
  /**
27
29
  * Mailbox key the control plane stamps on an explicit `ses_…` resume. The
@@ -10,9 +10,8 @@
10
10
  * a handler that answers without sending is a `skip`.
11
11
  */
12
12
  import type { AuthContext, ChannelDefinition, ChannelHandlerArgs, ChannelRoute } from "../types.js";
13
- import { type CatchRequestEnvelope } from "./hosted-catch-protocol.js";
14
- /** Header a replayed request carries so handlers can dedupe on delivery. */
15
- export declare const CATCH_DELIVERY_ID_HEADER = "x-agent-sdk-delivery-id";
13
+ import { CATCH_DELIVERY_ID_HEADER, type CatchRequestEnvelope } from "./hosted-catch-protocol.js";
14
+ export { CATCH_DELIVERY_ID_HEADER };
16
15
  /**
17
16
  * Principal for a replayed request. The deployment secret was checked by
18
17
  * the control plane before compute existed; the channel's own auth chain
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-catch.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-catch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMpG,OAAO,EAGL,KAAK,oBAAoB,EAG1B,MAAM,4BAA4B,CAAC;AAIpC,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,4BAA4B,CAAC;AAIlE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAIhC,CAAC;AAIF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,oBAAoB,CAAC;CAChC,GAAG,OAAO,CAcV;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,kBAAkB,CAAC;CAC1B,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiFpB;AAgBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,EACtC,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,IAAI,CAgBN"}
1
+ {"version":3,"file":"hosted-catch.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-catch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMpG,OAAO,EAGL,wBAAwB,EACxB,KAAK,oBAAoB,EAG1B,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAIpC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAIhC,CAAC;AAIF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,oBAAoB,CAAC;CAChC,GAAG,OAAO,CAcV;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,kBAAkB,CAAC;CAC1B,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiFpB;AAgBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,EACtC,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,IAAI,CAgBN"}
@@ -14,11 +14,10 @@ import { classifyHostedAdmissionRejection } from "./hosted-delivery-protocol.js"
14
14
  import { invokeChannelRoute } from "./channel-route-dispatch.js";
15
15
  import { DeferredChannelSessionError } from "./deferred-channel-session.js";
16
16
  import { attachHostedAdmissionAdapter } from "./hosted-admission-adapter.js";
17
- import { AGENT_SDK_CATCH_EVENT_TYPE, AGENT_SDK_CUSTOM_CHANNEL_KIND, decodeCatchBody, parseCatchRequestEnvelope, } from "./hosted-catch-protocol.js";
17
+ import { AGENT_SDK_CATCH_EVENT_TYPE, AGENT_SDK_CUSTOM_CHANNEL_KIND, CATCH_DELIVERY_ID_HEADER, decodeCatchBody, parseCatchRequestEnvelope, } from "./hosted-catch-protocol.js";
18
18
  import { errorResponse } from "./http-channel.js";
19
19
  import { Router } from "./router.js";
20
- /** Header a replayed request carries so handlers can dedupe on delivery. */
21
- export const CATCH_DELIVERY_ID_HEADER = "x-agent-sdk-delivery-id";
20
+ export { CATCH_DELIVERY_ID_HEADER };
22
21
  /** Placeholder origin for replayed requests; handlers see a well-formed URL. */
23
22
  const CATCH_REQUEST_ORIGIN = "http://agent-sdk.hosted";
24
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ import { getHostedAdmissionAdapter, } from "./hosted-admission-adapter.js";
11
11
  import { HostedAdmissionLocalSendError, runDuringHostedAdmission, } from "./hosted-admission-context.js";
12
12
  import { HOSTED_ADMISSION_PATH, HOSTED_DELIVERY_HEADER, HOSTED_DELIVERY_PROTOCOL_VERSION, HOSTED_EXECUTION_PATH, HOSTED_GUEST_RETRY_TERMINAL, HOSTED_GUEST_RETRY_TRANSIENT, HOSTED_MAX_CONSUMED_DELIVERY_IDS, hostedFailureClassification, hostedGuestErrorResponse, isHostedReminderAdmission, isHostedScheduleAdmission, parseHostedAdmissionHandlerRejection, parseHostedAdmission, parseHostedExecution, parseHostedReminderFireDescriptorPayload, parseHostedReminderFirePayload, parseHostedScheduleFirePayload, } from "./hosted-delivery-protocol.js";
13
13
  import { abortReasonFromTurnStatus, HOSTED_EXECUTION_DIAG_RUNNING_STATUS, hostedExecutionDiagId, } from "./hosted-execution-diag.js";
14
- import { flushHostedExecutionRecord, refreshStartLogWhile, } from "./hosted-execution-flush.js";
14
+ import { flushDurableHostedExecutionRecord, refreshStartLogWhile, writeLocalHostedExecutionRecord, } from "./hosted-execution-flush.js";
15
15
  import { finalizeHostedExecutionLatency, formatHostedExecutionLatencyServerTiming, hostedExecutionNow, runWithHostedExecutionLatency, } from "./hosted-execution-latency.js";
16
16
  import { recordHostedManagedAutomation } from "./hosted-managed-automation.js";
17
17
  import { readJsonObject } from "./http-channel.js";
@@ -697,11 +697,14 @@ export function registerHostedDeliveryRoute(input) {
697
697
  ...(input.flushStartLog === undefined ? {} : { flushStartLog: input.flushStartLog }),
698
698
  ...(input.snapshotLogs === undefined ? {} : { snapshotLogs: input.snapshotLogs }),
699
699
  };
700
- const writeDiag = async (fields) => {
700
+ // Store writes are chained so a slow `running` write cannot land
701
+ // after the terminal one.
702
+ let durableWrites = Promise.resolve();
703
+ const writeDiag = async (fields, options) => {
701
704
  const classification = fields.failureCode === undefined
702
705
  ? undefined
703
706
  : hostedFailureClassification(fields.failureCode);
704
- await flushHostedExecutionRecord(sinks, {
707
+ const record = {
705
708
  executionId,
706
709
  sessionPublicId: execution.sessionPublicId,
707
710
  sessionId: fields.sessionId,
@@ -713,16 +716,23 @@ export function registerHostedDeliveryRoute(input) {
713
716
  ...(fields.errorCode === undefined ? {} : { errorCode: fields.errorCode }),
714
717
  classification,
715
718
  ...(fields.error === undefined ? {} : { error: fields.error }),
716
- });
719
+ };
720
+ const writtenAt = new Date().toISOString();
721
+ await writeLocalHostedExecutionRecord(sinks, record, writtenAt);
722
+ durableWrites = durableWrites.then(() => flushDurableHostedExecutionRecord(sinks, record, writtenAt));
723
+ if (options.awaitDurable) {
724
+ await durableWrites;
725
+ }
717
726
  };
718
- // Claim the file before the turn runs. If a later status request
719
- // fails, the host reads this record while the turn may still be
720
- // running; the marker prevents it from surfacing the previous
721
- // delivery's terminal record.
727
+ // Claim the local file before the turn runs. If a later status
728
+ // request fails, the host reads this record while the turn may
729
+ // still be running; the marker prevents it from surfacing the
730
+ // previous delivery's terminal record. The store copies are
731
+ // dashboard history, so the turn does not wait on them.
722
732
  await writeDiag({
723
733
  sessionId: "",
724
734
  turnStatus: HOSTED_EXECUTION_DIAG_RUNNING_STATUS,
725
- });
735
+ }, { awaitDurable: false });
726
736
  let sessionId = "";
727
737
  const owner = {
728
738
  primaryDeliveryId: admitted.deliveryId,
@@ -758,7 +768,7 @@ export function registerHostedDeliveryRoute(input) {
758
768
  await writeDiag({
759
769
  sessionId,
760
770
  turnStatus: HOSTED_EXECUTION_DIAG_RUNNING_STATUS,
761
- });
771
+ }, { awaitDurable: false });
762
772
  const outcome = await refreshStartLogWhile(sinks, execution.sessionPublicId, () => session.waitForCompletion());
763
773
  completionAt = hostedExecutionNow();
764
774
  // Status is the owner turn. waitForCompletion still waited
@@ -796,7 +806,7 @@ export function registerHostedDeliveryRoute(input) {
796
806
  abortReason: abortReasonFromTurnStatus(outcome.status, outcome.cancellationReason),
797
807
  failureCode: hostedFailure?.error,
798
808
  ...(outcome.errorCode === undefined ? {} : { errorCode: outcome.errorCode }),
799
- });
809
+ }, { awaitDurable: true });
800
810
  const reply = hostedFailure !== undefined
801
811
  ? {
802
812
  status: 503,
@@ -845,7 +855,7 @@ export function registerHostedDeliveryRoute(input) {
845
855
  failureCode: "internal_error",
846
856
  error,
847
857
  ...(thrownErrorCode === undefined ? {} : { errorCode: thrownErrorCode }),
848
- });
858
+ }, { awaitDurable: true });
849
859
  const endedAt = hostedExecutionNow();
850
860
  // Preserve completion/drain marks when the failure happened
851
861
  // during post-drain work; otherwise collapse to endedAt.
@@ -32,11 +32,14 @@ export type HostedExecutionFlushFields = {
32
32
  classification?: HostedFailureClassification;
33
33
  error?: unknown;
34
34
  };
35
+ /** The guest-disk diagnostic the host reads after a failed execute. */
36
+ export declare function writeLocalHostedExecutionRecord(sinks: HostedExecutionFlushSinks, fields: HostedExecutionFlushFields, writtenAt: string): Promise<void>;
35
37
  /**
36
- * Write local diagnostics and durable output together. Soft-fail per sink so
37
- * a storage outage does not change the hosted response.
38
+ * Store-backed execution history and process output. Never rejects. Both
39
+ * sinks start synchronously, so their crash-flush state is stamped before
40
+ * either store round trip.
38
41
  */
39
- export declare function flushHostedExecutionRecord(sinks: HostedExecutionFlushSinks, fields: HostedExecutionFlushFields): Promise<void>;
42
+ export declare function flushDurableHostedExecutionRecord(sinks: HostedExecutionFlushSinks, fields: HostedExecutionFlushFields, writtenAt: string): Promise<void>;
40
43
  /**
41
44
  * Each refresh is a store write on the deployment's shared write budget, so
42
45
  * keep it coarse. An unchanged tee costs nothing (the store skips the put).
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-execution-flush.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-execution-flush.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EACL,KAAK,8BAA8B,EAGpC,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAG9B,MAAM,sBAAsB,CAAC;AAU9B,MAAM,MAAM,yBAAyB,GAAG;IACtC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,CAAC,IAAI,YAAY,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,8BAA8B,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,2BAA2B,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,yBAAyB,EAChC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,IAAI,CAAC,CAgDf;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAE3D;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,KAAK,EAAE,yBAAyB,EAChC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,CAAC,CAAC,CAqBZ;AAED;;GAEG;AACH,wBAAsB,gCAAgC,CAAC,IAAI,EAAE;IAC3D,iBAAiB,EAAE,CACjB,MAAM,EAAE,OAAO,CACb,qBAAqB,EACrB,cAAc,GAAG,oBAAoB,GAAG,qBAAqB,CAC9D,EACD,KAAK,CAAC,EAAE,OAAO,KACZ,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CACb,qBAAqB,EACrB,cAAc,GAAG,oBAAoB,GAAG,qBAAqB,CAC9D,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhB"}
1
+ {"version":3,"file":"hosted-execution-flush.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-execution-flush.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EACL,KAAK,8BAA8B,EAGpC,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAG9B,MAAM,sBAAsB,CAAC;AAU9B,MAAM,MAAM,yBAAyB,GAAG;IACtC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,CAAC,IAAI,YAAY,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,8BAA8B,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,2BAA2B,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,uEAAuE;AACvE,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,yBAAyB,EAChC,MAAM,EAAE,0BAA0B,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;;;GAIG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,yBAAyB,EAChC,MAAM,EAAE,0BAA0B,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAE3D;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,KAAK,EAAE,yBAAyB,EAChC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,CAAC,CAAC,CAqBZ;AAED;;GAEG;AACH,wBAAsB,gCAAgC,CAAC,IAAI,EAAE;IAC3D,iBAAiB,EAAE,CACjB,MAAM,EAAE,OAAO,CACb,qBAAqB,EACrB,cAAc,GAAG,oBAAoB,GAAG,qBAAqB,CAC9D,EACD,KAAK,CAAC,EAAE,OAAO,KACZ,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CACb,qBAAqB,EACrB,cAAc,GAAG,oBAAoB,GAAG,qBAAqB,CAC9D,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhB"}
@@ -16,15 +16,11 @@ function boundedMessage(text) {
16
16
  ? `${text.slice(0, MAX_ERROR_MESSAGE_LENGTH)}…`
17
17
  : text;
18
18
  }
19
- /**
20
- * Write local diagnostics and durable output together. Soft-fail per sink so
21
- * a storage outage does not change the hosted response.
22
- */
23
- export async function flushHostedExecutionRecord(sinks, fields) {
24
- const writtenAt = new Date().toISOString();
25
- const message = fields.message === undefined ? undefined : boundedMessage(fields.message);
26
- const stack = fields.error === undefined ? undefined : hostedErrorStackSnippet(fields.error);
19
+ /** The guest-disk diagnostic the host reads after a failed execute. */
20
+ export async function writeLocalHostedExecutionRecord(sinks, fields, writtenAt) {
27
21
  if (sinks.stateRoot !== undefined) {
22
+ const message = fields.message === undefined ? undefined : boundedMessage(fields.message);
23
+ const stack = fields.error === undefined ? undefined : hostedErrorStackSnippet(fields.error);
28
24
  await writeHostedExecutionDiag(sinks.stateRoot, {
29
25
  v: 1,
30
26
  executionId: fields.executionId,
@@ -42,34 +38,35 @@ export async function flushHostedExecutionRecord(sinks, fields) {
42
38
  classification: fields.classification,
43
39
  });
44
40
  }
41
+ }
42
+ /**
43
+ * Store-backed execution history and process output. Never rejects. Both
44
+ * sinks start synchronously, so their crash-flush state is stamped before
45
+ * either store round trip.
46
+ */
47
+ export async function flushDurableHostedExecutionRecord(sinks, fields, writtenAt) {
48
+ const writes = [];
45
49
  if (sinks.persistSessionRun !== undefined) {
50
+ const message = fields.message === undefined ? undefined : boundedMessage(fields.message);
46
51
  const error = fields.error === undefined ? undefined : serializeSessionRunError(fields.error);
47
- try {
48
- await sinks.persistSessionRun({
49
- executionId: fields.executionId,
50
- writtenAt,
51
- sessionPublicId: fields.sessionPublicId,
52
- sessionId: fields.sessionId,
53
- turnStatus: fields.turnStatus,
54
- durationMs: fields.durationMs,
55
- ...(fields.abortReason === undefined ? {} : { abortReason: fields.abortReason }),
56
- ...(message === undefined ? {} : { message }),
57
- ...(error === undefined ? {} : { error }),
58
- logs: snapshotSessionRunLogs(sinks.snapshotLogs?.() ?? []),
59
- });
60
- }
61
- catch {
62
- // Soft-fail: a store outage must not change the HTTP reply.
63
- }
52
+ writes.push(sinks.persistSessionRun({
53
+ executionId: fields.executionId,
54
+ writtenAt,
55
+ sessionPublicId: fields.sessionPublicId,
56
+ sessionId: fields.sessionId,
57
+ turnStatus: fields.turnStatus,
58
+ durationMs: fields.durationMs,
59
+ ...(fields.abortReason === undefined ? {} : { abortReason: fields.abortReason }),
60
+ ...(message === undefined ? {} : { message }),
61
+ ...(error === undefined ? {} : { error }),
62
+ logs: snapshotSessionRunLogs(sinks.snapshotLogs?.() ?? []),
63
+ }));
64
64
  }
65
65
  if (sinks.flushStartLog !== undefined) {
66
- try {
67
- await sinks.flushStartLog(fields.sessionPublicId);
68
- }
69
- catch {
70
- // Soft-fail: same posture as the session-run persist.
71
- }
66
+ writes.push(sinks.flushStartLog(fields.sessionPublicId));
72
67
  }
68
+ // Soft-fail: a store outage must not change the HTTP reply.
69
+ await Promise.allSettled(writes);
73
70
  }
74
71
  /**
75
72
  * Each refresh is a store write on the deployment's shared write budget, so
@@ -19,15 +19,19 @@ export interface PeerConnectionRef {
19
19
  /** Slug of the peer agent mount this connection targets. */
20
20
  targetSlug: string;
21
21
  }
22
+ /** Every peer connection an agent declares, host connections included. */
23
+ export declare function peerConnectionRefs(project: AgentProject): PeerConnectionRef[];
22
24
  /**
23
25
  * Validate every peer MCP connection across `mounts` and return them grouped by
24
26
  * the referencing mount's slug. Throws on references to unknown slugs and on
25
- * self-references (an agent asking itself recurses forever).
27
+ * self-references (an agent asking itself recurses forever). A single-mode
28
+ * serve, as on every hosted deploy, mounts no other agents, so its peers are
29
+ * omitted with a warning instead of failing boot.
26
30
  */
27
31
  export declare function collectPeerConnections(mounts: Array<{
28
32
  slug: string;
29
33
  project: AgentProject;
30
- }>): Map<string, PeerConnectionRef[]>;
34
+ }>, logger: (line: string) => void): Map<string, PeerConnectionRef[]>;
31
35
  /**
32
36
  * Resolve validated peer refs to concrete MCP URLs once the server is
33
37
  * listening. `serverUrl` is the loopback base (`http://127.0.0.1:<port>`);
@@ -1 +1 @@
1
- {"version":3,"file":"peer-connections.d.ts","sourceRoot":"","sources":["../../src/internal/peer-connections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,aAAa,CAAC;AAE3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,GACrD,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAgClC;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,wBAAwB,EAAE,CAa7B"}
1
+ {"version":3,"file":"peer-connections.d.ts","sourceRoot":"","sources":["../../src/internal/peer-connections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,aAAa,CAAC;AAE3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,iBAAiB,EAAE,CAK7E;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,EACtD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAgClC;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,wBAAwB,EAAE,CAa7B"}
@@ -12,33 +12,37 @@
12
12
  */
13
13
  import { isPeerConnectionTransport } from "../types.js";
14
14
  import { MCP_ENDPOINT_PATH } from "./mcp-endpoint.js";
15
+ /** Every peer connection an agent declares, host connections included. */
16
+ export function peerConnectionRefs(project) {
17
+ return [...project.agent.connections, ...(project.agent.hostConnections ?? [])].flatMap(({ name, transport }) => isPeerConnectionTransport(transport) ? [{ name, targetSlug: transport.agent }] : []);
18
+ }
15
19
  /**
16
20
  * Validate every peer MCP connection across `mounts` and return them grouped by
17
21
  * the referencing mount's slug. Throws on references to unknown slugs and on
18
- * self-references (an agent asking itself recurses forever).
22
+ * self-references (an agent asking itself recurses forever). A single-mode
23
+ * serve, as on every hosted deploy, mounts no other agents, so its peers are
24
+ * omitted with a warning instead of failing boot.
19
25
  */
20
- export function collectPeerConnections(mounts) {
21
- const knownSlugs = new Set(mounts.map(({ slug }) => slug).filter((slug) => slug !== ""));
26
+ export function collectPeerConnections(mounts, logger) {
27
+ const [solo] = mounts;
28
+ if (mounts.length === 1 && solo?.slug === "") {
29
+ const names = peerConnectionRefs(solo.project).map(({ name }) => name);
30
+ if (names.length > 0) {
31
+ logger(`[bdk] warning: agent "${solo.project.name}" has peer MCP connections (${names.join(", ")}) but --mode single mounts no other agents, so they are omitted; peers resolve only in multi-agent serve.`);
32
+ }
33
+ return new Map();
34
+ }
35
+ const knownSlugs = new Set(mounts.map(({ slug }) => slug));
22
36
  const bySlug = new Map();
23
37
  for (const { slug, project } of mounts) {
24
- const refs = [];
25
- for (const connection of [
26
- ...project.agent.connections,
27
- ...(project.agent.hostConnections ?? []),
28
- ]) {
29
- if (!isPeerConnectionTransport(connection.transport)) {
30
- continue;
31
- }
32
- const targetSlug = connection.transport.agent;
33
- const label = slug === "" ? project.name : slug;
34
- if (targetSlug === slug) {
35
- throw new Error(`Agent "${label}" connection "${connection.name}" references itself (agent: "${targetSlug}"); an agent cannot be its own peer.`);
38
+ const refs = peerConnectionRefs(project);
39
+ for (const ref of refs) {
40
+ if (ref.targetSlug === slug) {
41
+ throw new Error(`Agent "${slug}" connection "${ref.name}" references itself (agent: "${ref.targetSlug}"); an agent cannot be its own peer.`);
36
42
  }
37
- if (!knownSlugs.has(targetSlug)) {
38
- const available = [...knownSlugs].sort().join(", ") || "(none)";
39
- throw new Error(`Agent "${label}" connection "${connection.name}" references unknown peer agent "${targetSlug}". Mounted agents: ${available}. Peers require multi-agent serve (each agent mounted under its directory-name slug).`);
43
+ if (!knownSlugs.has(ref.targetSlug)) {
44
+ throw new Error(`Agent "${slug}" connection "${ref.name}" references unknown peer agent "${ref.targetSlug}". Mounted agents: ${[...knownSlugs].sort().join(", ")}.`);
40
45
  }
41
- refs.push({ name: connection.name, targetSlug });
42
46
  }
43
47
  if (refs.length > 0) {
44
48
  bySlug.set(slug, refs);
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-runner.d.ts","sourceRoot":"","sources":["../../src/internal/sdk-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk-runner.d.ts","sourceRoot":"","sources":["../../src/internal/sdk-runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEnB,KAAK,SAAS,EAEf,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAKnE,gFAAgF;AAChF,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAE1E,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,KAAK,CAAC,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/E;;;;;OAKG;IACH,OAAO,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,iBAAiB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,iBAAiB,EACf,cAAc,GACd,gBAAgB,GAChB,SAAS,GACT,OAAO,GACP,iBAAiB,GACjB,YAAY,GACZ,mBAAmB,GACnB,WAAW,GACX,OAAO,CACV,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAA4B,CAAC;AAE7E;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE;IACxD,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,MAAM,GAAG,SAAS,CAYrB;AAED,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAwBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAKvE;AAqBD;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGxE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAQT;AAED,wEAAwE;AACxE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAKhF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEhF;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAErF;AAED,0GAA0G;AAC1G,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAMT;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGxE;AAyDD,qBAAa,eAAgB,YAAW,WAAW;IAOrC,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAClE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;IAEpE,YAA6B,OAAO,GAAE,sBAA2B,EAOhE;IAEK,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAgD9D;IAED;;;;;OAKG;YACW,yBAAyB;IAiCvC,OAAO,CAAC,gBAAgB;YAWV,cAAc;IA6HtB,KAAK,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAelF;IAED;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAKpE;IAED;;;;;;;;;;OAUG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMpC;IAEK,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;IAED,OAAO,CAAC,YAAY;IAWd,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAa7B;IAED,OAAO,CAAC,QAAQ;IA0BhB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,GAAG;IAIX;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,kBAAkB;IAkB1B;;;OAGG;YACW,iBAAiB;YAgCjB,SAAS;YAOT,cAAc;YAoCd,cAAc;IA4C5B,OAAO,CAAC,YAAY;IAQpB;;;OAGG;YACW,mBAAmB;IAiBjC,OAAO,CAAC,QAAQ;CAajB;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAMlF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAQpE;AA+FD,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,CAExE"}
@@ -203,6 +203,9 @@ export class CursorSdkRunner {
203
203
  throw new Error(`Session ${request.sessionId} is a grokbot turn, which the local and cloud turn runner cannot execute. Serve must route grokbot turns to the Grok Bot runner.`);
204
204
  }
205
205
  const models = modelAttemptChain(request);
206
+ // Restarting replays whatever the rejected model streamed, so only an
207
+ // agent that delivers its result at the end of the turn opts in.
208
+ const streamedStopsFallback = request.fallbackAfterStream !== true;
206
209
  let lastError;
207
210
  for (let attempt = 0; attempt < models.length; attempt++) {
208
211
  const model = models[attempt];
@@ -213,7 +216,7 @@ export class CursorSdkRunner {
213
216
  streamed = true;
214
217
  });
215
218
  if (outcome.status !== "error" ||
216
- streamed ||
219
+ (streamed && streamedStopsFallback) ||
217
220
  request.signal?.aborted === true ||
218
221
  !shouldFallbackToNextModel(outcome.errorMessage, outcome.errorCode) ||
219
222
  attempt === models.length - 1) {
@@ -223,7 +226,7 @@ export class CursorSdkRunner {
223
226
  }
224
227
  catch (error) {
225
228
  lastError = error;
226
- if (streamed ||
229
+ if ((streamed && streamedStopsFallback) ||
227
230
  request.signal?.aborted === true ||
228
231
  !shouldFallbackToNextModelOnError(error) ||
229
232
  attempt === models.length - 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAsC,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AA6CpF,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAQhB,YAAY,EACb,MAAM,aAAa,CAAC;AA6FrB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAgDpE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAUpE,OAAO,EAEL,wBAAwB,EAEzB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAsB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAW/E,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAuCD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,yEAAyE;IACzE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAC5D,wEAAwE;IACxE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,YAAY,GAAG,0BAA+B,GACtD,OAAO,CAAC,gBAAgB,CAAC,CAynC3B;AAkmDD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,cAAc,EACnB,MAAM,SAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAkDf"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAsC,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AA6CpF,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAQhB,YAAY,EACb,MAAM,aAAa,CAAC;AA6FrB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAgDpE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAUpE,OAAO,EAEL,wBAAwB,EAEzB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAsB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAW/E,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAuCD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,yEAAyE;IACzE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAC5D,wEAAwE;IACxE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,YAAY,GAAG,0BAA+B,GACtD,OAAO,CAAC,gBAAgB,CAAC,CA0nC3B;AAkmDD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,cAAc,EACnB,MAAM,SAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAkDf"}
@@ -409,8 +409,9 @@ export async function startServer(mounts, options = {}) {
409
409
  // Persistent slots keep writing /state/logs between turns, so this timer
410
410
  // belongs to the process. Freeze pods never select a mirror.
411
411
  let persistentStageLogMirrors = [];
412
- // The running claim stamps this before the turn; process-death flush
413
- // reuses it so the tee snapshot lands under the same ses_ key.
412
+ // Stamped when the running claim's background store flush starts, which is
413
+ // before the turn; process-death flush reuses it so the tee snapshot lands
414
+ // under the same ses_ key.
414
415
  let lastStartLogId;
415
416
  const flushStartLog = async (startLogId) => {
416
417
  lastStartLogId = startLogId;
@@ -478,9 +479,9 @@ export async function startServer(mounts, options = {}) {
478
479
  const channelStopHooks = [];
479
480
  let githubAuthWarmed = false;
480
481
  // Validate peer MCP connections (defineConnection({ agent })) against the
481
- // mount set before anything starts: unknown slugs and self-references are
482
- // authoring errors. URLs resolve after listen, once the port is known.
483
- const peerRefsBySlug = collectPeerConnections(mounts);
482
+ // mount set before anything starts. URLs resolve after listen, once the
483
+ // port is known.
484
+ const peerRefsBySlug = collectPeerConnections(mounts, logger);
484
485
  // Cursor account MCP connections (defineConnection({ cursorAccount: true }))
485
486
  // need a signed-in host: their tools execute on the Cursor backend with
486
487
  // the account's stored OAuth credentials. Fail fast at serve start instead