@cursor/bdk 0.2.17 → 0.2.18

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 (165) hide show
  1. package/dist/bin/agent-serve.js +7 -0
  2. package/dist/channels/runs/index.d.ts +4 -0
  3. package/dist/channels/runs/index.d.ts.map +1 -0
  4. package/dist/channels/runs/index.js +2 -0
  5. package/dist/channels/runs/runs-channel.d.ts +5 -0
  6. package/dist/channels/runs/runs-channel.d.ts.map +1 -0
  7. package/dist/channels/runs/runs-channel.js +34 -0
  8. package/dist/channels/runs/types.d.ts +34 -0
  9. package/dist/channels/runs/types.d.ts.map +1 -0
  10. package/dist/channels/runs/types.js +1 -0
  11. package/dist/docs/404.html +2 -2
  12. package/dist/docs/assets/{app.CUNuFTSm.js → app.CJ-XZTK5.js} +4 -4
  13. package/dist/docs/assets/chunks/@localSearchIndexroot.ylB4B_Ud.js +1 -0
  14. package/dist/docs/assets/chunks/{VPLocalSearchBox.Dez74k0W.js → VPLocalSearchBox.CpbYgURZ.js} +1 -1
  15. package/dist/docs/assets/chunks/{arc.CJ3FhK7H.js → arc.B081PemO.js} +1 -1
  16. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CfUdbHsa.js → architectureDiagram-Q4EWVU46.DPaT_hi-.js} +1 -1
  17. package/dist/docs/assets/chunks/{baseUniq.D93LawU9.js → baseUniq.Buu61NLg.js} +1 -1
  18. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.Zvsd6UHP.js → blockDiagram-DXYQGD6D.C6t63owh.js} +1 -1
  19. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.CGX5xZ9d.js → c4Diagram-AHTNJAMY.BtKabdXR.js} +1 -1
  20. package/dist/docs/assets/chunks/channel.BgjgeSqp.js +1 -0
  21. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CCIf0QCo.js → chunk-4BX2VUAB.DQpNaR8N.js} +1 -1
  22. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.D_N1RPyi.js → chunk-4TB4RGXK.DrhL-6Rv.js} +1 -1
  23. package/dist/docs/assets/chunks/{chunk-55IACEB6.B1oecjzx.js → chunk-55IACEB6.DRLIBfNR.js} +1 -1
  24. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BzUNVPGX.js → chunk-EDXVE4YY.kuUuFkIg.js} +1 -1
  25. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DheI8WSO.js → chunk-FMBD7UC4.BlrVxprw.js} +1 -1
  26. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Bg4iL0sM.js → chunk-OYMX7WX6.CZCfYeQA.js} +1 -1
  27. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.CSQjDhAD.js → chunk-QZHKN3VN.C7rwVEMV.js} +1 -1
  28. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.BDdxnPU4.js → chunk-YZCP3GAM.CGseJtT_.js} +1 -1
  29. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CIVv63wE.js +1 -0
  30. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CIVv63wE.js +1 -0
  31. package/dist/docs/assets/chunks/clone.HcW7h-70.js +1 -0
  32. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.AT0weO8r.js → cose-bilkent-S5V4N54A.BWlczAK4.js} +1 -1
  33. package/dist/docs/assets/chunks/{dagre-KV5264BT.CJ30TxV0.js → dagre-KV5264BT.Cw0tT0bB.js} +1 -1
  34. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.KtE--1fW.js → diagram-5BDNPKRD.Cm96ah9V.js} +1 -1
  35. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.BFGygSUQ.js → diagram-G4DWMVQ6.Cl0AoWYM.js} +1 -1
  36. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BLU-79eb.js → diagram-MMDJMWI5.Bp7mlzKs.js} +1 -1
  37. package/dist/docs/assets/chunks/{diagram-TYMM5635.CdjfJdVG.js → diagram-TYMM5635.ClVeqpcW.js} +1 -1
  38. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.Dj1Iwypl.js → erDiagram-SMLLAGMA.Bi8dojF9.js} +1 -1
  39. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BXqj_Su2.js → flowDiagram-DWJPFMVM.Bb4urpfG.js} +1 -1
  40. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.CNfgGSst.js → ganttDiagram-T4ZO3ILL.whR4wFze.js} +1 -1
  41. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.2tgvFDBr.js → gitGraphDiagram-UUTBAWPF.6oVMi6-3.js} +1 -1
  42. package/dist/docs/assets/chunks/{graph.CWHZMxx6.js → graph.D8AJDOFK.js} +1 -1
  43. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.DhLIK8m1.js → infoDiagram-42DDH7IO.nTpsf5Vk.js} +1 -1
  44. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.BIN11n1G.js → ishikawaDiagram-UXIWVN3A.DhYDOwyB.js} +1 -1
  45. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BARmNJ0n.js → journeyDiagram-VCZTEJTY.Bg7Rudw3.js} +1 -1
  46. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BrTJYFyF.js → kanban-definition-6JOO6SKY.D80D_ZAR.js} +1 -1
  47. package/dist/docs/assets/chunks/{layout.CPZIIywK.js → layout.e9hmuC-K.js} +1 -1
  48. package/dist/docs/assets/chunks/{linear.DTpmzI5S.js → linear.D6hEyqVB.js} +1 -1
  49. package/dist/docs/assets/chunks/{min.BBLQmXwZ.js → min.BPAdvB9D.js} +1 -1
  50. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.5qkWJvdl.js → mindmap-definition-QFDTVHPH.tm2Sov2Q.js} +1 -1
  51. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.-4wufv_f.js → pieDiagram-DEJITSTG.BKHZ497m.js} +1 -1
  52. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.C0jrp1-8.js → quadrantDiagram-34T5L4WZ.CPj7gSp6.js} +1 -1
  53. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DUDpANfe.js → requirementDiagram-MS252O5E._U68yVUd.js} +1 -1
  54. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.74Lvg6Gu.js → sankeyDiagram-XADWPNL6._6jrIQPb.js} +1 -1
  55. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.BHDIH286.js → sequenceDiagram-FGHM5R23.D9UlmB6F.js} +1 -1
  56. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.Dr-HIuLb.js → stateDiagram-FHFEXIEX.BQSaiJCe.js} +1 -1
  57. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.B5d7jT7E.js +1 -0
  58. package/dist/docs/assets/chunks/{theme.H8zSBhlM.js → theme.25ZC61Iy.js} +2 -2
  59. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.GtyCaSiL.js → timeline-definition-GMOUNBTQ.d-17NZ3L.js} +1 -1
  60. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.DLId0rxH.js → vennDiagram-DHZGUBPP.DE9AGEjG.js} +1 -1
  61. package/dist/docs/assets/chunks/wardley-RL74JXVD.BcY0KddE.js +162 -0
  62. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.CI6mGYNG.js → wardleyDiagram-NUSXRM2D.D9SDNipV.js} +1 -1
  63. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CG1n865F.js → xychartDiagram-5P7HB3ND.DM1sIMf8.js} +1 -1
  64. package/dist/docs/building-with-agents.html +35 -35
  65. package/dist/docs/deployment.html +35 -35
  66. package/dist/docs/evals.html +35 -35
  67. package/dist/docs/guides/agent-to-agent.html +35 -35
  68. package/dist/docs/guides/bitbucket.html +35 -35
  69. package/dist/docs/guides/cloud-agents.html +35 -35
  70. package/dist/docs/guides/convert-automation.html +35 -35
  71. package/dist/docs/guides/github.html +35 -35
  72. package/dist/docs/guides/gitlab.html +35 -35
  73. package/dist/docs/guides/grokbot-agents.html +35 -35
  74. package/dist/docs/guides/hooks.html +35 -35
  75. package/dist/docs/guides/improve.html +35 -35
  76. package/dist/docs/guides/jev.html +35 -35
  77. package/dist/docs/guides/mcp-oauth.html +35 -35
  78. package/dist/docs/guides/migrate.html +35 -35
  79. package/dist/docs/guides/opentelemetry.html +35 -35
  80. package/dist/docs/guides/slack.html +35 -35
  81. package/dist/docs/guides/webhooks.html +35 -35
  82. package/dist/docs/hillclimbing.html +35 -35
  83. package/dist/docs/index.html +35 -35
  84. package/dist/docs/quickstart.html +35 -35
  85. package/dist/docs/reference/agent-config.html +35 -35
  86. package/dist/docs/reference/artifacts.html +35 -35
  87. package/dist/docs/reference/channels.html +35 -35
  88. package/dist/docs/reference/cli.html +35 -35
  89. package/dist/docs/reference/connections.html +35 -35
  90. package/dist/docs/reference/evals.html +35 -35
  91. package/dist/docs/reference/extensions.html +35 -35
  92. package/dist/docs/reference/hooks.html +35 -35
  93. package/dist/docs/reference/http-api.html +35 -35
  94. package/dist/docs/reference/instructions.html +35 -35
  95. package/dist/docs/reference/playground.html +35 -35
  96. package/dist/docs/reference/project-layout.html +35 -35
  97. package/dist/docs/reference/prompt.html +35 -35
  98. package/dist/docs/reference/schedules.html +35 -35
  99. package/dist/docs/reference/sessions.html +35 -35
  100. package/dist/docs/reference/skills.html +35 -35
  101. package/dist/docs/reference/subagents.html +35 -35
  102. package/dist/docs/reference/tools.html +35 -35
  103. package/dist/docs/templates/agentic-owners.html +35 -35
  104. package/dist/docs/templates/grokbot-agents.html +35 -35
  105. package/dist/docs/templates/security-reviewer.html +35 -35
  106. package/dist/docs/templates/thermo-quality-review.html +35 -35
  107. package/dist/docs/templates/thermo-review.html +35 -35
  108. package/dist/docs/templates/triage.html +35 -35
  109. package/dist/docs/troubleshooting.html +35 -35
  110. package/dist/internal/cli-deploy.d.ts.map +1 -1
  111. package/dist/internal/cli-deploy.js +0 -14
  112. package/dist/internal/cloud-turn-cost.js +2 -2
  113. package/dist/internal/continuation-channel.d.ts.map +1 -1
  114. package/dist/internal/continuation-channel.js +6 -0
  115. package/dist/internal/continuation-identity.d.ts +6 -3
  116. package/dist/internal/continuation-identity.d.ts.map +1 -1
  117. package/dist/internal/continuation-identity.js +43 -0
  118. package/dist/internal/http-channel.d.ts.map +1 -1
  119. package/dist/internal/http-channel.js +20 -1
  120. package/dist/internal/http-control-plane-session.d.ts +5 -2
  121. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  122. package/dist/internal/http-control-plane-session.js +38 -2
  123. package/dist/internal/model-config.d.ts +7 -0
  124. package/dist/internal/model-config.d.ts.map +1 -0
  125. package/dist/internal/model-config.js +67 -0
  126. package/dist/internal/peer-connections.d.ts +17 -8
  127. package/dist/internal/peer-connections.d.ts.map +1 -1
  128. package/dist/internal/peer-connections.js +41 -10
  129. package/dist/internal/request-error-status.d.ts.map +1 -1
  130. package/dist/internal/request-error-status.js +4 -1
  131. package/dist/internal/resolved-connections.d.ts +4 -1
  132. package/dist/internal/resolved-connections.d.ts.map +1 -1
  133. package/dist/internal/resolved-connections.js +9 -4
  134. package/dist/internal/sdk-runner.d.ts.map +1 -1
  135. package/dist/internal/sdk-runner.js +11 -1
  136. package/dist/internal/server.d.ts.map +1 -1
  137. package/dist/internal/server.js +2 -1
  138. package/dist/internal/session-engine.d.ts +3 -1
  139. package/dist/internal/session-engine.d.ts.map +1 -1
  140. package/dist/internal/session-engine.js +74 -19
  141. package/dist/internal/storage-coordinator.d.ts +9 -9
  142. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  143. package/dist/internal/storage-coordinator.js +116 -36
  144. package/dist/internal/testing/factory-resource-fixtures.d.ts +16 -0
  145. package/dist/internal/testing/factory-resource-fixtures.d.ts.map +1 -1
  146. package/dist/internal/testing/factory-resource-fixtures.js +14 -0
  147. package/dist/internal/turn-cost.d.ts +1 -1
  148. package/dist/internal/turn-cost.d.ts.map +1 -1
  149. package/dist/internal/turn-cost.js +8 -8
  150. package/dist/playground/assets/cursor-icons-16-DBmD_cqy.woff2 +0 -0
  151. package/dist/playground/assets/index-BDPd0Sec.css +1 -0
  152. package/dist/playground/assets/{index-U3TRnwAP.js → index-BrXDwbrN.js} +1 -1
  153. package/dist/playground/index.html +2 -2
  154. package/dist/types.d.ts +44 -0
  155. package/dist/types.d.ts.map +1 -1
  156. package/package.json +11 -4
  157. package/dist/docs/assets/chunks/@localSearchIndexroot.3c56VHUt.js +0 -1
  158. package/dist/docs/assets/chunks/channel.S8-FFjmE.js +0 -1
  159. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BB98tFjZ.js +0 -1
  160. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BB98tFjZ.js +0 -1
  161. package/dist/docs/assets/chunks/clone.B98w8OEv.js +0 -1
  162. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DW_lwpZY.js +0 -1
  163. package/dist/docs/assets/chunks/wardley-RL74JXVD.CSlECTHi.js +0 -162
  164. package/dist/playground/assets/cursor-icons-16-4RnoYH3n.woff2 +0 -0
  165. package/dist/playground/assets/index-7fVUOA5l.css +0 -1
@@ -262,6 +262,7 @@ export class CursorSdkRunner {
262
262
  */
263
263
  async runTurnWithTransportRetry(request, onStreamed) {
264
264
  let sawUpdate = false;
265
+ let mintedSdkAgentId;
265
266
  const tracked = {
266
267
  ...request,
267
268
  onUpdate: (update) => {
@@ -269,6 +270,10 @@ export class CursorSdkRunner {
269
270
  onStreamed();
270
271
  return request.onUpdate(update);
271
272
  },
273
+ onSdkAgentId: async (sdkAgentId) => {
274
+ mintedSdkAgentId = sdkAgentId;
275
+ await request.onSdkAgentId?.(sdkAgentId);
276
+ },
272
277
  };
273
278
  const outcome = await this.runTurnAttempt(tracked);
274
279
  if (outcome.status !== "error" || sawUpdate || request.signal?.aborted === true) {
@@ -281,8 +286,13 @@ export class CursorSdkRunner {
281
286
  // Log the original error even when the retry succeeds so the expiry
282
287
  // still shows up in Datadog.
283
288
  this.log(`[bdk] session ${request.sessionId}: ${reason}: ${outcome.errorMessage}; retrying the turn`);
289
+ // The failed attempt already minted this cloud agent; resuming it is what
290
+ // keeps one trigger from leaving two `bc-…` agents behind.
291
+ const retried = mintedSdkAgentId !== undefined && isServerMintedCloudAgentId(mintedSdkAgentId)
292
+ ? { ...tracked, sdkAgentId: mintedSdkAgentId }
293
+ : tracked;
284
294
  try {
285
- return await this.runTurnAttempt(tracked);
295
+ return await this.runTurnAttempt(retried);
286
296
  }
287
297
  catch {
288
298
  return outcome;
@@ -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,CA0nC3B;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,CA2nC3B;AAkmDD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,cAAc,EACnB,MAAM,SAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAkDf"}
@@ -481,7 +481,7 @@ export async function startServer(mounts, options = {}) {
481
481
  // Validate peer MCP connections (defineConnection({ agent })) against the
482
482
  // mount set before anything starts. URLs resolve after listen, once the
483
483
  // port is known.
484
- const peerRefsBySlug = collectPeerConnections(mounts, logger);
484
+ const peerRefsBySlug = collectPeerConnections(mounts, logger, options.peersUrl);
485
485
  // Cursor account MCP connections (defineConnection({ cursorAccount: true }))
486
486
  // need a signed-in host: their tools execute on the Cursor backend with
487
487
  // the account's stored OAuth credentials. Fail fast at serve start instead
@@ -929,6 +929,7 @@ export async function startServer(mounts, options = {}) {
929
929
  : {}),
930
930
  ...(options.publicUrl === undefined ? {} : { publicUrl: options.publicUrl }),
931
931
  ...(options.authToken === undefined ? {} : { authToken: options.authToken }),
932
+ peersUrl: options.peersUrl,
932
933
  cloudToolsBridge: options.cloudToolsUrl !== undefined,
933
934
  logger,
934
935
  });
@@ -364,6 +364,7 @@ export declare class SessionEngine {
364
364
  * up `(agentId, cKey)` from a mailbox stamp or structured claim.
365
365
  */
366
366
  send(channelId: string, message: string, options?: EngineSendOptions): Promise<ChannelSession>;
367
+ private rejectMismatchedModelConfig;
367
368
  /**
368
369
  * Atomically validate and rotate an HTTP follow-up credential, then admit
369
370
  * the message to its exact session without changing the owning channel key.
@@ -371,7 +372,7 @@ export declare class SessionEngine {
371
372
  followUpHttp(sessionId: string, token: {
372
373
  channelId: string;
373
374
  key: string;
374
- }, message: string): Promise<string | undefined>;
375
+ }, message: string, modelConfig?: unknown): Promise<string | undefined>;
375
376
  /** Whether a continuation token already maps to a session on this channel. */
376
377
  hasContinuationSession(channelId: string, continuationToken: string): Promise<boolean>;
377
378
  /** Look up a session as a channel-scoped handle. */
@@ -515,6 +516,7 @@ export declare class SessionEngine {
515
516
  * durable state directory instead.
516
517
  */
517
518
  private cloudStore;
519
+ private turnModel;
518
520
  private buildTurnRequest;
519
521
  /**
520
522
  * Connection names a cloud turn can only reach through the host connection
@@ -1 +1 @@
1
- {"version":3,"file":"session-engine.d.ts","sourceRoot":"","sources":["../../src/internal/session-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-engine.d.ts","sourceRoot":"","sources":["../../src/internal/session-engine.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ import { isFileSystemToolAlias, isMutatingFileSystemTool, localFileSystem, resol
19
19
  import { storageKeysForArchitecture } from "../storage.js";
20
20
  import { DEFAULT_MODEL, DIRECT_TOOL_CALL_CHANNEL_ID, isCursorAccountTransport, isHostOauthConnectionTransport, isSymbolicConnectionTransport, } from "../types.js";
21
21
  import { resolveAdvertisedTools } from "./advertise-tools.js";
22
+ import { InvalidModelConfigError, modelConfigForDryRun } from "./model-config.js";
22
23
  import { ApprovalGate } from "./approval-gate.js";
23
24
  import { ArtifactsStore } from "./artifacts-store.js";
24
25
  import { assertTimeArgs, normalizeAsOf, schemaTimeWindowKeys, sessionClock } from "./as-of.js";
@@ -65,7 +66,7 @@ import { TurnGovernor } from "./turn-governor.js";
65
66
  import { TurnLeaseStore } from "./turn-lease-store.js";
66
67
  import { TurnOutbox } from "./turn-outbox.js";
67
68
  import { isCursorManagedV2Hosting, resolveAgentV2Hosting } from "./v2-hosting.js";
68
- import { buildAgentsMdContent, buildCloudMemorySection, buildCloudSessionWorkspaceSection, buildCloudWorkspaceSection, ensureOwnGitRoot, isNestedInGitRepo, materializeWorkspace, SERVER_TOOLS_MCP_SERVER_NAME, } from "./workspace.js";
69
+ import { buildAgentsMdContent, buildCloudMemorySection, buildCloudSessionWorkspaceSection, buildCloudWorkspaceSection, ensureOwnGitRoot, isNestedInGitRepo, materializeWorkspace, SERVER_TOOLS_MCP_SERVER_NAME, withIdentityPreamble, } from "./workspace.js";
69
70
  import { syncSessionWorkspaceFiles, syncWorkspaceToStore, WorkspaceFileRefusal, wipeSessionWorkspace, } from "./workspace-sync.js";
70
71
  export const HTTP_CHANNEL_ID = "http";
71
72
  export { mergeChannelStateSkipNull } from "./channel-state.js";
@@ -703,6 +704,9 @@ export class SessionEngine {
703
704
  if (!samePrincipal(existing.auth, auth)) {
704
705
  throw new SessionAuthError(existing.sessionId);
705
706
  }
707
+ if (sendOptions.modelConfig !== undefined) {
708
+ this.rejectMismatchedModelConfig(existing, sendOptions.modelConfig);
709
+ }
706
710
  // Refresh harness cwd when the caller supplies a newer worktree (e.g. PR
707
711
  // synchronize). Leave the durable continuation key unchanged.
708
712
  let record = existing;
@@ -766,6 +770,7 @@ export class SessionEngine {
766
770
  if (sendOptions.hostedEnqueueOnly === true) {
767
771
  throw new HostedEnqueueNotActiveError(sendOptions.hostedSessionId);
768
772
  }
773
+ const instructions = dryRunInstructionsOverride(sendOptions);
769
774
  const now = new Date().toISOString();
770
775
  const channelState = this.initialChannelState(channelId, sendOptions.state);
771
776
  const purpose = sendOptions.purpose === "eval" ? "eval" : "live";
@@ -778,6 +783,8 @@ export class SessionEngine {
778
783
  purpose,
779
784
  dryRun: sendOptions.dryRun === true ? true : undefined,
780
785
  asOf: frozenAsOf,
786
+ modelConfig: modelConfigForDryRun(sendOptions.modelConfig, sendOptions.dryRun),
787
+ instructions,
781
788
  continuationKey: sendOptions.continuationToken ?? newContinuationKey(),
782
789
  auth,
783
790
  title: sendOptions.title,
@@ -809,11 +816,23 @@ export class SessionEngine {
809
816
  });
810
817
  return this.channelSession(record.sessionId, record, true, false, since);
811
818
  }
819
+ rejectMismatchedModelConfig(existing, modelConfig) {
820
+ const next = modelConfigForDryRun(modelConfig, existing.dryRun);
821
+ if (JSON.stringify(existing.modelConfig ?? null) !== JSON.stringify(next ?? null)) {
822
+ throw new InvalidModelConfigError("invalid argument: modelConfig does not match this session");
823
+ }
824
+ }
812
825
  /**
813
826
  * Atomically validate and rotate an HTTP follow-up credential, then admit
814
827
  * the message to its exact session without changing the owning channel key.
815
828
  */
816
- async followUpHttp(sessionId, token, message) {
829
+ async followUpHttp(sessionId, token, message, modelConfig) {
830
+ if (modelConfig !== undefined) {
831
+ const record = await this.sessions.get(sessionId);
832
+ if (record !== undefined) {
833
+ this.rejectMismatchedModelConfig(record, modelConfig);
834
+ }
835
+ }
817
836
  const next = newContinuationKey();
818
837
  const stale = new Error("stale HTTP continuation");
819
838
  let previous;
@@ -1831,7 +1850,7 @@ export class SessionEngine {
1831
1850
  }, eventContext);
1832
1851
  if (finalUsage !== undefined) {
1833
1852
  this.stampTurnCost(sessionId, completed, {
1834
- model: this.project.agent.model ?? DEFAULT_MODEL,
1853
+ model: this.turnModel(record).model ?? DEFAULT_MODEL,
1835
1854
  usage: finalUsage,
1836
1855
  agentId: record.sdkAgentId,
1837
1856
  conversationId: record.sdkAgentId ?? sessionId,
@@ -2031,8 +2050,24 @@ export class SessionEngine {
2031
2050
  }
2032
2051
  return undefined;
2033
2052
  }
2053
+ turnModel(record) {
2054
+ const config = record?.modelConfig;
2055
+ const agent = this.project.agent;
2056
+ return config === undefined
2057
+ ? {
2058
+ model: agent.model,
2059
+ modelFallbacks: agent.modelFallbacks,
2060
+ fallbackAfterStream: agent.fallbackAfterStream,
2061
+ }
2062
+ : {
2063
+ model: config.model,
2064
+ modelFallbacks: config.fallbacks ?? [],
2065
+ fallbackAfterStream: undefined,
2066
+ };
2067
+ }
2034
2068
  async buildTurnRequest(record, turnId, prompt, isFirstTurn, emit, eventContext, onUpdate, signal, images) {
2035
2069
  const agent = this.project.agent;
2070
+ const instructionsAgent = agentWithInstructionsOverride(agent, record.instructions);
2036
2071
  // Per-session cloud attach (channel/tool handoff) forces cloud runtime
2037
2072
  // even when the agent defaults to local for chat server tools.
2038
2073
  const runtime = resolveSessionRuntime({
@@ -2128,7 +2163,7 @@ export class SessionEngine {
2128
2163
  const sections = [];
2129
2164
  const pending = record.pendingWorkspaceFiles;
2130
2165
  if (isFirstTurn) {
2131
- preamble = buildAgentsMdContent(agent, {
2166
+ preamble = buildAgentsMdContent(instructionsAgent, {
2132
2167
  includeScripts: true,
2133
2168
  serverToolsMcpName: this.cloudServerToolsConnection === undefined
2134
2169
  ? undefined
@@ -2177,12 +2212,13 @@ export class SessionEngine {
2177
2212
  // synthesized file tools and embedded script bodies.
2178
2213
  const localInstructions = runtime === "local"
2179
2214
  ? authoredRoot
2180
- ? buildAgentsMdContent({ ...agent, tools: [...agent.tools, ...synthesized] }, { includeScripts: true })
2181
- : buildAgentsMdContent(agent, {
2215
+ ? buildAgentsMdContent({ ...instructionsAgent, tools: [...instructionsAgent.tools, ...synthesized] }, { includeScripts: true })
2216
+ : buildAgentsMdContent(instructionsAgent, {
2182
2217
  includeScripts: this.hasBorrowedWorkspace(record),
2183
2218
  })
2184
2219
  : undefined;
2185
2220
  const childFiles = authoredRoot && root !== undefined ? createRootSubagentInherit(root) : undefined;
2221
+ const selection = this.turnModel(record);
2186
2222
  return {
2187
2223
  sessionId: record.sessionId,
2188
2224
  ...(record.sdkAgentId === undefined ? {} : { sdkAgentId: record.sdkAgentId }),
@@ -2201,11 +2237,13 @@ export class SessionEngine {
2201
2237
  prompt: turnPrompt,
2202
2238
  isFirstTurn,
2203
2239
  ...(images !== undefined && images.length > 0 ? { images } : {}),
2204
- ...(agent.model === undefined ? {} : { model: agent.model }),
2205
- ...(agent.modelFallbacks === undefined ? {} : { modelFallbacks: agent.modelFallbacks }),
2206
- ...(agent.fallbackAfterStream === undefined
2240
+ ...(selection.model === undefined ? {} : { model: selection.model }),
2241
+ ...(selection.modelFallbacks === undefined
2207
2242
  ? {}
2208
- : { fallbackAfterStream: agent.fallbackAfterStream }),
2243
+ : { modelFallbacks: selection.modelFallbacks }),
2244
+ ...(selection.fallbackAfterStream === undefined
2245
+ ? {}
2246
+ : { fallbackAfterStream: selection.fallbackAfterStream }),
2209
2247
  runtime,
2210
2248
  agentName: agent.name,
2211
2249
  ...(mergedCloud === undefined ? {} : { cloud: mergedCloud }),
@@ -2218,7 +2256,7 @@ export class SessionEngine {
2218
2256
  // (PR worktree, shared checkout); otherwise the catalog references the
2219
2257
  // on-disk paths under the harness cwd.
2220
2258
  instructions: runtime === "grokbot"
2221
- ? buildAgentsMdContent(agent, { includeScripts: true })
2259
+ ? buildAgentsMdContent(instructionsAgent, { includeScripts: true })
2222
2260
  : localInstructions,
2223
2261
  ...(runtime === "cloud" && !isCursorHostedFilesAvailable()
2224
2262
  ? { agentServeAgent: this.project.name }
@@ -2413,10 +2451,10 @@ export class SessionEngine {
2413
2451
  };
2414
2452
  continue;
2415
2453
  }
2416
- servers[resolved.name] = {
2454
+ servers[resolved.name] = resolveConnectionEnvTemplates({
2417
2455
  url,
2418
2456
  headers: resolved.headers,
2419
- };
2457
+ });
2420
2458
  }
2421
2459
  if (runtime === "cloud" &&
2422
2460
  sessionId !== undefined &&
@@ -4037,11 +4075,10 @@ export class SessionEngine {
4037
4075
  if (cost === undefined || completed.type !== "turn.completed") {
4038
4076
  return;
4039
4077
  }
4078
+ // Same object the turn.completed hook is waiting on.
4079
+ completed.data = { ...completed.data, cost };
4040
4080
  const log = await this.logs.get(sessionId);
4041
- log.replace(completed.index, {
4042
- ...completed,
4043
- data: { ...completed.data, cost },
4044
- });
4081
+ log.replace(completed.index, completed);
4045
4082
  })
4046
4083
  .catch((error) => {
4047
4084
  this.logger(`[bdk] turn cost stamp failed for ${sessionId}: ${describeError(error)}`);
@@ -4070,7 +4107,7 @@ export class SessionEngine {
4070
4107
  const sdkAgentId = (record.sdkAgentId !== undefined && record.sdkAgentId !== ""
4071
4108
  ? record.sdkAgentId
4072
4109
  : undefined) ?? cloudSdkAgentIdFromEvents(events);
4073
- const model = this.project.agent.model ?? DEFAULT_MODEL;
4110
+ const model = this.turnModel(record).model ?? DEFAULT_MODEL;
4074
4111
  const priced = await this.estimateTurnCost({
4075
4112
  model,
4076
4113
  agentId: sdkAgentId,
@@ -4166,7 +4203,7 @@ export class SessionEngine {
4166
4203
  if (billed === undefined) {
4167
4204
  return;
4168
4205
  }
4169
- const model = this.project.agent.model ?? DEFAULT_MODEL;
4206
+ const model = this.turnModel(record).model ?? DEFAULT_MODEL;
4170
4207
  const patched = applyCloudUsageToEvents(events, billed, model);
4171
4208
  if (patched === undefined) {
4172
4209
  return;
@@ -4537,6 +4574,24 @@ function mergePendingWorkspaceFiles(current, incoming) {
4537
4574
  }
4538
4575
  return { ...current, ...incoming };
4539
4576
  }
4577
+ const INSTRUCTIONS_REQUIRE_DRY_RUN = "invalid argument: instructions is only allowed when dryRun is true";
4578
+ /** instructions.md body for a dry-run session, or undefined to keep the deploy's file. */
4579
+ function dryRunInstructionsOverride(options) {
4580
+ const instructions = options.instructions?.trim() ?? "";
4581
+ if (instructions === "") {
4582
+ return undefined;
4583
+ }
4584
+ if (options.dryRun !== true) {
4585
+ throw new Error(INSTRUCTIONS_REQUIRE_DRY_RUN);
4586
+ }
4587
+ return instructions;
4588
+ }
4589
+ function agentWithInstructionsOverride(agent, instructions) {
4590
+ if (instructions === undefined) {
4591
+ return agent;
4592
+ }
4593
+ return { ...agent, instructions: withIdentityPreamble(agent.name, instructions) };
4594
+ }
4540
4595
  function eventsNdjson(events) {
4541
4596
  if (events.length === 0) {
4542
4597
  return undefined;
@@ -52,8 +52,9 @@ export declare class StorageCoordinator implements FrameworkSessionStore, Author
52
52
  /** Per-session pending state (events + coalesced record). */
53
53
  private readonly buffers;
54
54
  /**
55
- * Last continuation key written to the sink per session, so a token
56
- * change emits a delete for the stale index entry alongside the new put.
55
+ * Last continuation key this process has seen for a session. A hit
56
+ * avoids a durable read; a miss reads the stored session record so a
57
+ * fresh process still deletes the previous pointer.
57
58
  */
58
59
  private readonly continuationIndex;
59
60
  /**
@@ -103,14 +104,13 @@ export declare class StorageCoordinator implements FrameworkSessionStore, Author
103
104
  */
104
105
  private putsOp;
105
106
  /**
106
- * Index maintenance for `continuation/{channelId}/{token}` → sessionId:
107
- * put the current token, delete the previous one when it changed.
107
+ * Index maintenance for `continuation/{channelId}/{token}` → sessionId.
108
+ * Put the current token and delete the previous one. The in-process
109
+ * index is a fast path; a fresh process reads the durable session
110
+ * record (before this flush overwrites it) and deletes that key too.
111
+ * Leading ops must run before the session-record put.
108
112
  */
109
- private continuationOps;
110
- /** KV upsert op on the sink's `put`. */
111
- private putOp;
112
- /** KV delete op on the sink's `delete` (skipped when the hook is absent). */
113
- private deleteOp;
113
+ private planContinuation;
114
114
  /** Whether the sink can serve the startup bulk restore (`list`). */
115
115
  get canBulkRestore(): boolean;
116
116
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"storage-coordinator.d.ts","sourceRoot":"","sources":["../../src/internal/storage-coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-coordinator.d.ts","sourceRoot":"","sources":["../../src/internal/storage-coordinator.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,17 @@ export const MAX_VOLATILE_RECORD_SKIPS = 20;
71
71
  function resumeProjectionJson(record) {
72
72
  return JSON.stringify({ ...record, turnCount: 0, updatedAt: "" });
73
73
  }
74
+ /**
75
+ * Stamp written with a continuation pointer. Newer than the durable
76
+ * record's `updatedAt` means the record write lagged the pointer.
77
+ */
78
+ function continuationPointerUpdatedAt(pointer) {
79
+ if (typeof pointer !== "object" || pointer === null || Array.isArray(pointer)) {
80
+ return undefined;
81
+ }
82
+ const stamp = pointer.recordUpdatedAt;
83
+ return typeof stamp === "string" && stamp.length > 0 ? stamp : undefined;
84
+ }
74
85
  /** Session records out of raw sink entries; rows without a usable id are dropped. */
75
86
  function sessionRecordsOf(entries) {
76
87
  return entries
@@ -82,8 +93,9 @@ export class StorageCoordinator {
82
93
  /** Per-session pending state (events + coalesced record). */
83
94
  this.buffers = new Map();
84
95
  /**
85
- * Last continuation key written to the sink per session, so a token
86
- * change emits a delete for the stale index entry alongside the new put.
96
+ * Last continuation key this process has seen for a session. A hit
97
+ * avoids a durable read; a miss reads the stored session record so a
98
+ * fresh process still deletes the previous pointer.
87
99
  */
88
100
  this.continuationIndex = new Map();
89
101
  /**
@@ -231,11 +243,15 @@ export class StorageCoordinator {
231
243
  recordAck = { sessionId, json: recordJson, projection };
232
244
  }
233
245
  }
246
+ const continuation = record === undefined ? undefined : this.planContinuation(record);
247
+ if (continuation !== undefined) {
248
+ ops.push(...continuation.leading);
249
+ }
234
250
  if (puts.length > 0) {
235
251
  ops.push(this.putsOp(puts, recordAck));
236
252
  }
237
- if (record !== undefined) {
238
- ops.push(...this.continuationOps(record));
253
+ if (continuation !== undefined) {
254
+ ops.push(...continuation.trailing);
239
255
  }
240
256
  if (ops.length > 0) {
241
257
  this.enqueue(ops, reason);
@@ -309,39 +325,76 @@ export class StorageCoordinator {
309
325
  };
310
326
  }
311
327
  /**
312
- * Index maintenance for `continuation/{channelId}/{token}` → sessionId:
313
- * put the current token, delete the previous one when it changed.
328
+ * Index maintenance for `continuation/{channelId}/{token}` → sessionId.
329
+ * Put the current token and delete the previous one. The in-process
330
+ * index is a fast path; a fresh process reads the durable session
331
+ * record (before this flush overwrites it) and deletes that key too.
332
+ * Leading ops must run before the session-record put.
314
333
  */
315
- continuationOps(record) {
316
- const previous = this.continuationIndex.get(record.sessionId);
334
+ planContinuation(record) {
317
335
  const next = record.continuationKey;
318
- if (previous === next) {
319
- return [];
336
+ const indexKnows = this.continuationIndex.has(record.sessionId);
337
+ const known = indexKnows ? this.continuationIndex.get(record.sessionId) : undefined;
338
+ if (indexKnows && known === next) {
339
+ return undefined;
320
340
  }
321
- this.continuationIndex.set(record.sessionId, next);
322
- const ops = [];
323
- if (previous != null) {
324
- ops.push(this.deleteOp(this.keys.continuation(this.agentName, record.channelId, previous)));
341
+ const staleKeys = [];
342
+ if (indexKnows && typeof known === "string" && known !== next) {
343
+ staleKeys.push(this.keys.continuation(this.agentName, record.channelId, known));
325
344
  }
326
- if (next != null) {
327
- ops.push(this.putOp(this.keys.continuation(this.agentName, record.channelId, next), {
328
- sessionId: record.sessionId,
329
- }));
345
+ this.continuationIndex.set(record.sessionId, next);
346
+ const leading = [];
347
+ const get = this.definition.get;
348
+ if (!indexKnows && get !== undefined) {
349
+ leading.push({
350
+ label: `continuation-previous(${record.sessionId})`,
351
+ run: async (ctx) => {
352
+ const stored = (await get(this.keys.session(this.agentName, record.sessionId), ctx));
353
+ const previous = stored?.continuationKey;
354
+ if (typeof previous !== "string" || previous.length === 0 || previous === next) {
355
+ return;
356
+ }
357
+ const channelId = stored != null && typeof stored.channelId === "string" && stored.channelId.length > 0
358
+ ? stored.channelId
359
+ : record.channelId;
360
+ staleKeys.push(this.keys.continuation(this.agentName, channelId, previous));
361
+ },
362
+ });
330
363
  }
331
- return ops;
332
- }
333
- /** KV upsert op on the sink's `put`. */
334
- putOp(key, value) {
335
- return {
336
- label: `put(${key})`,
337
- run: (ctx) => this.definition.put(key, value, ctx),
338
- };
339
- }
340
- /** KV delete op on the sink's `delete` (skipped when the hook is absent). */
341
- deleteOp(key) {
342
364
  return {
343
- label: `delete(${key})`,
344
- run: (ctx) => this.definition.delete?.(key, ctx),
365
+ leading,
366
+ trailing: [
367
+ {
368
+ label: `continuation(${record.sessionId})`,
369
+ run: async (ctx) => {
370
+ // A delete failure must not skip the new pointer. These used to
371
+ // be separate queue ops, so a thrown delete still reached the put.
372
+ for (const key of staleKeys) {
373
+ try {
374
+ await this.definition.delete?.(key, ctx);
375
+ }
376
+ catch (error) {
377
+ this.logger(`[bdk] storage delete(${key}) failed: ${describeError(error)}`);
378
+ }
379
+ }
380
+ if (next == null) {
381
+ return;
382
+ }
383
+ try {
384
+ await this.definition.put(this.keys.continuation(this.agentName, record.channelId, next), {
385
+ sessionId: record.sessionId,
386
+ recordUpdatedAt: record.updatedAt,
387
+ }, ctx);
388
+ }
389
+ catch (error) {
390
+ // Plan time already advanced the in-process index. Drop it so
391
+ // a later flush retries this pointer instead of treating it as current.
392
+ this.continuationIndex.delete(record.sessionId);
393
+ throw error;
394
+ }
395
+ },
396
+ },
397
+ ],
345
398
  };
346
399
  }
347
400
  // ==========================================================================
@@ -472,11 +525,38 @@ export class StorageCoordinator {
472
525
  this.logger(`[bdk] storage continuation entry points at missing session ${sessionId}; treating as a miss`);
473
526
  return undefined;
474
527
  }
475
- // The sink must answer for the exact key it was asked about — a
476
- // mismatched row is a broken store, not a miss; treating it as a miss
477
- // would fork the continuation token onto a new session.
478
- if (record.channelId !== channelId || record.continuationKey !== continuationKey) {
479
- throw new Error(`storage returned a session that does not match the requested continuation (channel ${channelId})`);
528
+ // A different channel is a broken store. Same channel with a different
529
+ // key is a leftover pointer when the durable record is newer, and the
530
+ // live token when that record write lagged the pointer.
531
+ if (record.channelId !== channelId) {
532
+ throw new Error(`storage returned a session that does not match the requested continuation (channel ${channelId}, requestedContinuationKey=${continuationKey}, recordChannelId=${record.channelId}, recordContinuationKey=${String(record.continuationKey)})`);
533
+ }
534
+ if (record.continuationKey !== continuationKey) {
535
+ const pointerUpdatedAt = continuationPointerUpdatedAt(pointer);
536
+ const recordUpdatedAt = typeof record.updatedAt === "string" ? record.updatedAt : undefined;
537
+ // The pointer was written for a newer record than the one that landed.
538
+ // Deleting it would drop the live token; the record is the one that lagged.
539
+ if (pointerUpdatedAt !== undefined &&
540
+ recordUpdatedAt !== undefined &&
541
+ pointerUpdatedAt > recordUpdatedAt) {
542
+ this.logger(`[bdk] storage continuation record lags the pointer for channel ${channelId}; keeping the pointer`);
543
+ // The caller persists this record. Leaving the old token on it makes
544
+ // the next flush advance `updatedAt` past the pointer stamp, and the
545
+ // following lookup of the live key then deletes that pointer.
546
+ return {
547
+ ...record,
548
+ continuationKey,
549
+ updatedAt: pointerUpdatedAt,
550
+ };
551
+ }
552
+ this.logger(`[bdk] storage continuation pointer is stale for channel ${channelId}; treating as a miss`);
553
+ try {
554
+ await this.definition.delete?.(this.keys.continuation(this.agentName, channelId, continuationKey), ctx);
555
+ }
556
+ catch (error) {
557
+ this.logger(`[bdk] storage delete of stale continuation pointer failed: ${describeError(error)}`);
558
+ }
559
+ return undefined;
480
560
  }
481
561
  return record;
482
562
  }