@cursor/bdk 0.2.6 → 0.2.8
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.
- package/dist/bin/agent-serve.js +52 -57
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +32 -8
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +37 -29
- package/dist/channels/slack/external-policy.d.ts.map +1 -1
- package/dist/channels/slack/external-policy.js +6 -6
- package/dist/channels/slack/inbound.d.ts +5 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +13 -0
- package/dist/channels/slack/index.d.ts +3 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +3 -0
- package/dist/channels/slack/log.d.ts +1 -1
- package/dist/channels/slack/log.js +1 -1
- package/dist/channels/slack/self-identity.d.ts +15 -0
- package/dist/channels/slack/self-identity.d.ts.map +1 -0
- package/dist/channels/slack/self-identity.js +48 -0
- package/dist/channels/slack/sender-name.d.ts +17 -0
- package/dist/channels/slack/sender-name.d.ts.map +1 -0
- package/dist/channels/slack/sender-name.js +87 -0
- package/dist/channels/slack/setup.js +1 -1
- package/dist/channels/slack/user-info.d.ts +15 -0
- package/dist/channels/slack/user-info.d.ts.map +1 -0
- package/dist/channels/slack/user-info.js +57 -0
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.CJLKDVza.js → app.oyjtOr3W.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.C25zYVuc.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BW9mrQmq.js → VPLocalSearchBox.D0P6J_UJ.js} +1 -1
- package/dist/docs/assets/chunks/{arc.D8ZOvM1m.js → arc.B0LY1J1h.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CXEKhLW-.js → architectureDiagram-Q4EWVU46.dPduLUxY.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.BJkVKblr.js → baseUniq.B_Ohm21h.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DQDbHxor.js → blockDiagram-DXYQGD6D.B4zcanaJ.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.ByMD6LYM.js → c4Diagram-AHTNJAMY.D9Iw21nx.js} +1 -1
- package/dist/docs/assets/chunks/channel.CRUyWDV-.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.Dtq1aVI9.js → chunk-4BX2VUAB.DDVwRShI.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.BL_XrkoQ.js → chunk-4TB4RGXK.DsYcdn1i.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.BDPXu94_.js → chunk-55IACEB6.BzzQvcYp.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DhGOQj4k.js → chunk-EDXVE4YY.BMiXZ7FX.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DSF5nr8v.js → chunk-FMBD7UC4.D_mBcLoc.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Day7wayw.js → chunk-OYMX7WX6.CMVjWVMx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.CpBEC0zA.js → chunk-QZHKN3VN.BG-FrPv9.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.X_7rY1rx.js → chunk-YZCP3GAM.CkFE1ap3.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CG_UObcQ.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CG_UObcQ.js +1 -0
- package/dist/docs/assets/chunks/clone.NYSZ9qZN.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BVRmi2ko.js → cose-bilkent-S5V4N54A.BVNnCTvY.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.Dei9oslB.js → dagre-KV5264BT.CDN5PR9l.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD._M-efGt7.js → diagram-5BDNPKRD.DQRUlT-i.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.D1Vmhfsj.js → diagram-G4DWMVQ6.CoeblYQT.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.cE1bmvAC.js → diagram-MMDJMWI5.DW3ymjl0.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.DkXAfznP.js → diagram-TYMM5635.BP0uN4Jw.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DH_pSwPg.js → erDiagram-SMLLAGMA.DVFUWEn4.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.kAWVN9j1.js → flowDiagram-DWJPFMVM.HU-eHspv.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.8r0w49-p.js → ganttDiagram-T4ZO3ILL.DHNhXijY.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.BDa7Bi1i.js → gitGraphDiagram-UUTBAWPF.DkISXcO3.js} +1 -1
- package/dist/docs/assets/chunks/{graph.BMPXHz_B.js → graph.CCV0fuRR.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.BmlcqewS.js → infoDiagram-42DDH7IO.bgILzOoc.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.CVSEQSul.js → ishikawaDiagram-UXIWVN3A.CuryXC0F.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BpeWJ5n-.js → journeyDiagram-VCZTEJTY.BL1Pr-wu.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.DHbDXuxB.js → kanban-definition-6JOO6SKY.BbGjvk4l.js} +1 -1
- package/dist/docs/assets/chunks/{layout.CzrCDgkP.js → layout.C4PfdldS.js} +1 -1
- package/dist/docs/assets/chunks/{linear.HwBsflwN.js → linear.C3xD1T6X.js} +1 -1
- package/dist/docs/assets/chunks/{min.DqGHolT3.js → min.CzgRAQ9c.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.ZYGlOawh.js → mindmap-definition-QFDTVHPH.CA9rSWum.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.C2KRXlNR.js → pieDiagram-DEJITSTG.B8MprgJu.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CHj3Qefp.js → quadrantDiagram-34T5L4WZ.DndDwbKT.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.B1L4Tf7k.js → requirementDiagram-MS252O5E.Zhfgwlnn.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.dNR2yi1B.js → sankeyDiagram-XADWPNL6.B6RRm6N5.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.BrvQ3C6m.js → sequenceDiagram-FGHM5R23.Bfmz-1PN.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BtehEykA.js → stateDiagram-FHFEXIEX.gbrdNqgj.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DOOmulfQ.js +1 -0
- package/dist/docs/assets/chunks/{theme.BDHBZUkP.js → theme.gpWjytMh.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Bn7nhqEN.js → timeline-definition-GMOUNBTQ.Bl1l7M1f.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.DKhc38sz.js → vennDiagram-DHZGUBPP.Dfle4U0d.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.DOXQ0w8J.js → wardley-RL74JXVD.BJrCW6xc.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.Bbq5B2Ic.js → wardleyDiagram-NUSXRM2D.CM_4lmvZ.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.B77HE1K8.js → xychartDiagram-5P7HB3ND.CHT5X28R.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.BsgDqYPh.js → reference_cli.md.GwugN3n-.js} +5 -5
- package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +1 -0
- package/dist/docs/building-with-agents.html +35 -35
- package/dist/docs/deployment.html +35 -35
- package/dist/docs/evals.html +35 -35
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +35 -35
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +35 -35
- package/dist/docs/guides/gitlab.html +35 -35
- package/dist/docs/guides/grokbot-agents.html +35 -35
- package/dist/docs/guides/hooks.html +35 -35
- package/dist/docs/guides/improve.html +35 -35
- package/dist/docs/guides/jev.html +35 -35
- package/dist/docs/guides/mcp-oauth.html +35 -35
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- package/dist/docs/guides/webhooks.html +35 -35
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +35 -35
- package/dist/docs/llms-full.txt +20 -9
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +35 -35
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +39 -39
- package/dist/docs/reference/cli.md +20 -9
- package/dist/docs/reference/connections.html +35 -35
- package/dist/docs/reference/evals.html +35 -35
- package/dist/docs/reference/extensions.html +35 -35
- package/dist/docs/reference/hooks.html +35 -35
- package/dist/docs/reference/http-api.html +35 -35
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +35 -35
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +35 -35
- package/dist/docs/reference/sessions.html +35 -35
- package/dist/docs/reference/skills.html +35 -35
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +35 -35
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/grokbot-agents.html +35 -35
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +35 -35
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +14 -0
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +5 -0
- package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts +17 -0
- package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/watch.js +99 -0
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.d.ts +19 -0
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +71 -0
- package/dist/extensions/cursor-cloud-agents/skills/handoff.md +9 -5
- package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +3 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -2
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +1 -1
- package/dist/files-backends/cursor-hosted.d.ts +22 -83
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +46 -160
- package/dist/files.d.ts +9 -32
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +7 -32
- package/dist/internal/artifacts-store.d.ts +13 -25
- package/dist/internal/artifacts-store.d.ts.map +1 -1
- package/dist/internal/artifacts-store.js +25 -46
- package/dist/internal/cli-ax.d.ts +10 -17
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +87 -155
- package/dist/internal/cli-bitbucket.js +5 -5
- package/dist/internal/cli-deploy.d.ts +4 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +117 -20
- package/dist/internal/cli-github.js +13 -13
- package/dist/internal/cli-gitlab.js +5 -5
- package/dist/internal/continuation-identity.d.ts +2 -0
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +4 -0
- package/dist/internal/conversation-mirror.d.ts +9 -38
- package/dist/internal/conversation-mirror.d.ts.map +1 -1
- package/dist/internal/conversation-mirror.js +62 -68
- package/dist/internal/cursor/account-mcp.d.ts +1 -1
- package/dist/internal/cursor/account-mcp.js +1 -1
- package/dist/internal/cursor/backend-client.js +1 -1
- package/dist/internal/cursor/github-credentials.js +3 -3
- package/dist/internal/cursor/hosted-bound-secrets.d.ts +6 -2
- package/dist/internal/cursor/hosted-bound-secrets.d.ts.map +1 -1
- package/dist/internal/cursor/hosted-bound-secrets.js +13 -2
- package/dist/internal/cursor/hosted-store-secrets.d.ts +13 -37
- package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +13 -37
- package/dist/internal/cursor/store-api-client.d.ts +17 -39
- package/dist/internal/cursor/store-api-client.d.ts.map +1 -1
- package/dist/internal/cursor/store-api-client.js +15 -37
- package/dist/internal/cursor-deployment-relay.js +3 -3
- package/dist/internal/cursor-event-relay.js +1 -1
- package/dist/internal/cursor-relay-core.d.ts +1 -1
- package/dist/internal/cursor-relay-core.d.ts.map +1 -1
- package/dist/internal/deploy-client.d.ts +55 -63
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +48 -28
- package/dist/internal/discovery/agent.d.ts +1 -1
- package/dist/internal/discovery/agent.d.ts.map +1 -1
- package/dist/internal/discovery/agent.js +4 -0
- package/dist/internal/discovery/extensions.d.ts +2 -1
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +11 -1
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +1 -0
- package/dist/internal/distribution.d.ts +2 -2
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +2 -2
- package/dist/internal/docs-site.js +3 -3
- package/dist/internal/eval-run-store.js +8 -8
- package/dist/internal/framework-file-storage.d.ts +10 -34
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +12 -39
- package/dist/internal/framework-storage-selection.d.ts +10 -46
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +15 -64
- package/dist/internal/github-fanout.js +2 -2
- package/dist/internal/handleAgentServeTrigger.d.ts +5 -8
- package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
- package/dist/internal/handleAgentServeTrigger.js +5 -8
- package/dist/internal/host-files.js +6 -9
- package/dist/internal/host-platforms.js +5 -5
- package/dist/internal/hosted-catch.d.ts +3 -2
- package/dist/internal/hosted-catch.d.ts.map +1 -1
- package/dist/internal/hosted-catch.js +27 -9
- package/dist/internal/hosted-delivery-protocol.d.ts +31 -8
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +102 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +32 -12
- package/dist/internal/hosted-execution-diag.d.ts +13 -24
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +11 -20
- package/dist/internal/hosted-execution-flush.d.ts +22 -10
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
- package/dist/internal/hosted-execution-flush.js +45 -9
- package/dist/internal/hosted-managed-automation.js +5 -5
- package/dist/internal/hosting.d.ts +5 -10
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +5 -10
- package/dist/internal/legacy-command-guard.d.ts +1 -4
- package/dist/internal/legacy-command-guard.d.ts.map +1 -1
- package/dist/internal/legacy-command-guard.js +2 -11
- package/dist/internal/listen-port.js +1 -1
- package/dist/internal/local-control-plane.js +6 -6
- package/dist/internal/logs-client.d.ts +20 -1
- package/dist/internal/logs-client.d.ts.map +1 -1
- package/dist/internal/logs-client.js +89 -1
- package/dist/internal/mcp-endpoint.js +1 -1
- package/dist/internal/otel/collector.js +1 -1
- package/dist/internal/otel/runtime.js +13 -13
- package/dist/internal/platform-schedule-sync.js +2 -2
- package/dist/internal/playground/toolchain.js +6 -6
- package/dist/internal/process-memory-telemetry.js +2 -2
- package/dist/internal/reminder-runner.d.ts +8 -3
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +51 -52
- package/dist/internal/resolve-prod-target.d.ts +1 -12
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +2 -32
- package/dist/internal/resolved-connections.js +8 -8
- package/dist/internal/run-client.d.ts +4 -3
- package/dist/internal/run-client.d.ts.map +1 -1
- package/dist/internal/run-client.js +98 -61
- package/dist/internal/runtime-dispatch-runner.d.ts +1 -0
- package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
- package/dist/internal/runtime-dispatch-runner.js +7 -1
- package/dist/internal/schedule-runner.js +1 -1
- package/dist/internal/sdk-runner.d.ts +4 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +37 -22
- package/dist/internal/server.d.ts +2 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +39 -38
- package/dist/internal/session-engine.d.ts +40 -44
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +108 -97
- package/dist/internal/session-run-log.d.ts +10 -24
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +13 -27
- package/dist/internal/sessions-client.d.ts.map +1 -1
- package/dist/internal/sessions-client.js +6 -3
- package/dist/internal/skills-sync.d.ts +3 -5
- package/dist/internal/skills-sync.d.ts.map +1 -1
- package/dist/internal/skills-sync.js +3 -5
- package/dist/internal/start-log-store.d.ts +7 -18
- package/dist/internal/start-log-store.d.ts.map +1 -1
- package/dist/internal/start-log-store.js +47 -24
- package/dist/internal/storage-coordinator.d.ts +7 -10
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +18 -20
- package/dist/internal/storage-roles.d.ts +5 -0
- package/dist/internal/storage-roles.d.ts.map +1 -1
- package/dist/internal/store-api-protocol.d.ts +12 -33
- package/dist/internal/store-api-protocol.d.ts.map +1 -1
- package/dist/internal/store-api-protocol.js +6 -22
- package/dist/internal/store-mirror.d.ts +4 -5
- package/dist/internal/store-mirror.d.ts.map +1 -1
- package/dist/internal/store-mirror.js +6 -8
- package/dist/internal/turn-cost.d.ts.map +1 -1
- package/dist/internal/turn-cost.js +31 -18
- package/dist/internal/turn-lease-store.d.ts +12 -5
- package/dist/internal/turn-lease-store.d.ts.map +1 -1
- package/dist/internal/turn-lease-store.js +61 -8
- package/dist/internal/v2-hosting.d.ts +4 -7
- package/dist/internal/v2-hosting.d.ts.map +1 -1
- package/dist/internal/v2-hosting.js +4 -7
- package/dist/internal/workspace-sync.d.ts +3 -6
- package/dist/internal/workspace-sync.d.ts.map +1 -1
- package/dist/internal/workspace-sync.js +3 -6
- package/dist/internal/workspace.d.ts +10 -16
- package/dist/internal/workspace.d.ts.map +1 -1
- package/dist/internal/workspace.js +9 -14
- package/dist/memory.d.ts +17 -43
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +34 -80
- package/dist/playground/assets/index-DPKLl4C_.css +1 -0
- package/dist/playground/assets/index-MijLHTbB.js +71 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted-v2.d.ts +8 -36
- package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted-v2.js +9 -37
- package/dist/storage-backends/cursor-hosted.d.ts +17 -30
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +14 -27
- package/dist/storage-protocol.d.ts +13 -38
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +14 -39
- package/dist/types.d.ts +29 -30
- package/dist/types.d.ts.map +1 -1
- package/docs/reference/cli.md +20 -9
- package/package.json +1 -1
- package/templates/pr-autofixer/bot/instructions.md +3 -3
- package/dist/docs/assets/chunks/@localSearchIndexroot.Bq-pxRXm.js +0 -1
- package/dist/docs/assets/chunks/channel.DCU8W1RP.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.DwpXsM06.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DwpXsM06.js +0 -1
- package/dist/docs/assets/chunks/clone.DH6Mx2zB.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.kzD0-U89.js +0 -1
- package/dist/docs/assets/reference_cli.md.BsgDqYPh.lean.js +0 -1
- package/dist/playground/assets/index-6BbTPnaT.css +0 -1
- package/dist/playground/assets/index-CI7FAmOP.js +0 -71
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-execution-diag.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-execution-diag.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hosted-execution-diag.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-execution-diag.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAEL,KAAK,2BAA2B,EAEjC,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,2EAA2E;AAC3E,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,MAAM,MAAM,8BAA8B,GACtC,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,eAAe,CAAC;AAEpB;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,EAAE,OAAO,6BAA6B,CAAC;IACxC,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,8BAA8B,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,2BAA2B,CAAC;CAC9C,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,oCAAoC,YAAY,CAAC;AAmC9D,8CAA8C;AAC9C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAyB9D;AAED,iDAAiD;AACjD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAgB7D;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAClD,8BAA8B,GAAG,SAAS,CAQ5C;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAiFrF;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* `hosted-execution-flush.ts`.
|
|
2
|
+
* Local diagnostic record for one hosted execution. Flushed with durable
|
|
3
|
+
* execution history and process output.
|
|
5
4
|
*/
|
|
6
5
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7
6
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -20,16 +19,12 @@ export const HOSTED_EXECUTION_DIAG_VERSION = 1;
|
|
|
20
19
|
/** Cap so a runaway message cannot fill the guest disk or the host log. */
|
|
21
20
|
export const HOSTED_EXECUTION_DIAG_MAX_BYTES = 4096;
|
|
22
21
|
/**
|
|
23
|
-
* Correlate the
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* delivery's terminal record whenever July never reaches its own write —
|
|
27
|
-
* the 9-minute host POST timeout, a 409 on an expired admission token, or a
|
|
28
|
-
* replayed token that short-circuits on the memoized reply.
|
|
22
|
+
* Correlate the fixed-path record with the execution that produced it. An
|
|
23
|
+
* interrupted attempt can otherwise leave the previous execution's terminal
|
|
24
|
+
* record behind.
|
|
29
25
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* reaches the guest disk or the host logs.
|
|
26
|
+
* Derive the id from the admission token. The one-way digest prevents the
|
|
27
|
+
* token itself from reaching disk or logs.
|
|
33
28
|
*/
|
|
34
29
|
export function hostedExecutionDiagId(admissionToken) {
|
|
35
30
|
return createHash("sha256").update(admissionToken).digest("hex").slice(0, 16);
|
|
@@ -66,13 +61,12 @@ function boundedOptionalString(value, max) {
|
|
|
66
61
|
: value
|
|
67
62
|
: undefined;
|
|
68
63
|
}
|
|
69
|
-
/**
|
|
64
|
+
/** Bounds for a short error stack summary. */
|
|
70
65
|
export const HOSTED_ERROR_STACK_LINE_COUNT = 5;
|
|
71
66
|
export const HOSTED_ERROR_SNIPPET_MAX_CHARS = 700;
|
|
72
67
|
/**
|
|
73
|
-
* Bounded throw text for
|
|
74
|
-
*
|
|
75
|
-
* uses {@link hostedErrorMessageOnly} so customer Datadog stays frame-free.
|
|
68
|
+
* Bounded throw text for diagnostics and non-hosted 500 bodies. Prefers
|
|
69
|
+
* `Error.stack` with its message and first frames.
|
|
76
70
|
*/
|
|
77
71
|
export function hostedErrorStackSnippet(error) {
|
|
78
72
|
var _a;
|
|
@@ -101,10 +95,7 @@ export function hostedErrorStackSnippet(error) {
|
|
|
101
95
|
? `${text.slice(0, HOSTED_ERROR_SNIPPET_MAX_CHARS)}…`
|
|
102
96
|
: text;
|
|
103
97
|
}
|
|
104
|
-
/**
|
|
105
|
-
* Guest throw text without `at` frames. Hosted 500 `message` is ungated on
|
|
106
|
-
* TAS (`hostedGuestMessage` / `last_error`); stack frames stay on `stack`.
|
|
107
|
-
*/
|
|
98
|
+
/** Hosted response text without stack frames. */
|
|
108
99
|
export function hostedErrorMessageOnly(error) {
|
|
109
100
|
const text = error instanceof Error && error.message.trim().length > 0
|
|
110
101
|
? error.message.trim()
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Flush local diagnostics, durable execution history, and process output at
|
|
3
|
+
* the same boundaries.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* so TAS does not treat a previous delivery's terminal record as this one.
|
|
5
|
+
* The lifecycle is running, terminal, then process death when applicable.
|
|
6
|
+
* Process death updates durable state and output while the local diagnostic
|
|
7
|
+
* stays running, preventing a stale terminal record from being reused.
|
|
8
|
+
* Between running and terminal, {@link refreshStartLogWhile} refreshes only
|
|
9
|
+
* process output.
|
|
10
10
|
*/
|
|
11
11
|
import type { HostedFailureClassification } from "./hosted-delivery-protocol.js";
|
|
12
12
|
import { type HostedExecutionDiagAbortReason } from "./hosted-execution-diag.js";
|
|
13
13
|
import type { LogRingEntry } from "./log-ring.js";
|
|
14
14
|
import { type SessionRunAbortReason, type SessionRunExecutionWrite } from "./session-run-log.js";
|
|
15
15
|
export type HostedExecutionFlushSinks = {
|
|
16
|
-
/**
|
|
16
|
+
/** Local diagnostic state directory. Omit to skip the local record. */
|
|
17
17
|
stateRoot?: string;
|
|
18
18
|
persistSessionRun?(write: SessionRunExecutionWrite): Promise<void>;
|
|
19
19
|
flushStartLog?(startLogId: string): Promise<void>;
|
|
@@ -33,10 +33,22 @@ export type HostedExecutionFlushFields = {
|
|
|
33
33
|
error?: unknown;
|
|
34
34
|
};
|
|
35
35
|
/**
|
|
36
|
-
* Write
|
|
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
38
|
*/
|
|
39
39
|
export declare function flushHostedExecutionRecord(sinks: HostedExecutionFlushSinks, fields: HostedExecutionFlushFields): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Each refresh is a store write on the deployment's shared write budget, so
|
|
42
|
+
* keep it coarse. An unchanged tee costs nothing (the store skips the put).
|
|
43
|
+
*/
|
|
44
|
+
export declare const HOSTED_START_LOG_REFRESH_INTERVAL_MS = 30000;
|
|
45
|
+
/**
|
|
46
|
+
* Refresh the tee while `run` (the turn) settles: v2 has no engine to tail,
|
|
47
|
+
* so this snapshot is the only view of a running turn. A tick is skipped
|
|
48
|
+
* while a refresh is still in flight, and the last one settles before this
|
|
49
|
+
* returns so it cannot land after the terminal flush.
|
|
50
|
+
*/
|
|
51
|
+
export declare function refreshStartLogWhile<T>(sinks: HostedExecutionFlushSinks, startLogId: string, run: () => Promise<T>): Promise<T>;
|
|
40
52
|
/**
|
|
41
53
|
* Durable-only crash flush. Leaves `hosted-execution.json` at `running`.
|
|
42
54
|
*/
|
|
@@ -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,
|
|
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,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Flush local diagnostics, durable execution history, and process output at
|
|
3
|
+
* the same boundaries.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* so TAS does not treat a previous delivery's terminal record as this one.
|
|
5
|
+
* The lifecycle is running, terminal, then process death when applicable.
|
|
6
|
+
* Process death updates durable state and output while the local diagnostic
|
|
7
|
+
* stays running, preventing a stale terminal record from being reused.
|
|
8
|
+
* Between running and terminal, {@link refreshStartLogWhile} refreshes only
|
|
9
|
+
* process output.
|
|
10
10
|
*/
|
|
11
11
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
12
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -26,8 +26,8 @@ function boundedMessage(text) {
|
|
|
26
26
|
: text;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* Write
|
|
30
|
-
*
|
|
29
|
+
* Write local diagnostics and durable output together. Soft-fail per sink so
|
|
30
|
+
* a storage outage does not change the hosted response.
|
|
31
31
|
*/
|
|
32
32
|
export function flushHostedExecutionRecord(sinks, fields) {
|
|
33
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -58,6 +58,42 @@ export function flushHostedExecutionRecord(sinks, fields) {
|
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Each refresh is a store write on the deployment's shared write budget, so
|
|
63
|
+
* keep it coarse. An unchanged tee costs nothing (the store skips the put).
|
|
64
|
+
*/
|
|
65
|
+
export const HOSTED_START_LOG_REFRESH_INTERVAL_MS = 30000;
|
|
66
|
+
/**
|
|
67
|
+
* Refresh the tee while `run` (the turn) settles: v2 has no engine to tail,
|
|
68
|
+
* so this snapshot is the only view of a running turn. A tick is skipped
|
|
69
|
+
* while a refresh is still in flight, and the last one settles before this
|
|
70
|
+
* returns so it cannot land after the terminal flush.
|
|
71
|
+
*/
|
|
72
|
+
export function refreshStartLogWhile(sinks, startLogId, run) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const flush = sinks.flushStartLog;
|
|
75
|
+
if (flush === undefined) {
|
|
76
|
+
return yield run();
|
|
77
|
+
}
|
|
78
|
+
let refresh;
|
|
79
|
+
const timer = setInterval(() => {
|
|
80
|
+
// Soft-fail like the other flushes. A rejection left unhandled here would
|
|
81
|
+
// trip the process-death flush.
|
|
82
|
+
refresh !== null && refresh !== void 0 ? refresh : (refresh = flush(startLogId)
|
|
83
|
+
.catch(() => undefined)
|
|
84
|
+
.finally(() => {
|
|
85
|
+
refresh = undefined;
|
|
86
|
+
}));
|
|
87
|
+
}, HOSTED_START_LOG_REFRESH_INTERVAL_MS);
|
|
88
|
+
try {
|
|
89
|
+
return yield run();
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
clearInterval(timer);
|
|
93
|
+
yield refresh;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
61
97
|
/**
|
|
62
98
|
* Durable-only crash flush. Leaves `hosted-execution.json` at `running`.
|
|
63
99
|
*/
|
|
@@ -37,7 +37,7 @@ const MANAGED_AUTOMATION_TTL_MS = 60 * 60000;
|
|
|
37
37
|
const MANAGED_AUTOMATION_MAX_ENTRIES = 10000;
|
|
38
38
|
export function recordHostedManagedAutomation(delivery) {
|
|
39
39
|
if (delivery.managedAutomation === undefined) {
|
|
40
|
-
console.info(`[
|
|
40
|
+
console.info(`[bdk] hosted managedAutomation not recorded deliveryId=${delivery.deliveryId}: admission envelope carried no managedAutomation slice (non-managed delivery, or the control plane resolved no MCP servers and no Slack channels)`);
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
43
|
const managedAutomationByDelivery = managedAutomationTable();
|
|
@@ -48,7 +48,7 @@ export function recordHostedManagedAutomation(delivery) {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
if (managedAutomationByDelivery.size >= MANAGED_AUTOMATION_MAX_ENTRIES) {
|
|
51
|
-
console.info(`[
|
|
51
|
+
console.info(`[bdk] hosted managedAutomation table full (${String(managedAutomationByDelivery.size)} entries); clearing before recording deliveryId=${delivery.deliveryId}`);
|
|
52
52
|
managedAutomationByDelivery.clear();
|
|
53
53
|
}
|
|
54
54
|
managedAutomationByDelivery.set(delivery.deliveryId, {
|
|
@@ -56,7 +56,7 @@ export function recordHostedManagedAutomation(delivery) {
|
|
|
56
56
|
expiresAt: now + MANAGED_AUTOMATION_TTL_MS,
|
|
57
57
|
});
|
|
58
58
|
const slackChannels = delivery.managedAutomation.slackChannels;
|
|
59
|
-
console.info(`[
|
|
59
|
+
console.info(`[bdk] hosted managedAutomation recorded deliveryId=${delivery.deliveryId} automationUuid=${delivery.managedAutomation.automationUuid} mcpServerNames=${String(delivery.managedAutomation.mcpServerNames.length)} slackChannels=${slackChannels === undefined ? "<absent>" : JSON.stringify(slackChannels)} ttlMs=${String(MANAGED_AUTOMATION_TTL_MS)} tableSize=${String(managedAutomationByDelivery.size)}`);
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* The managed automation the control plane attributed to a hosted delivery,
|
|
@@ -67,11 +67,11 @@ export function getHostedManagedAutomation(deliveryId) {
|
|
|
67
67
|
const managedAutomationByDelivery = managedAutomationTable();
|
|
68
68
|
const entry = managedAutomationByDelivery.get(deliveryId);
|
|
69
69
|
if (entry === undefined) {
|
|
70
|
-
console.info(`[
|
|
70
|
+
console.info(`[bdk] hosted managedAutomation lookup miss deliveryId=${deliveryId}: no entry (never recorded in this process, or evicted) tableSize=${String(managedAutomationByDelivery.size)} knownDeliveryIds=${JSON.stringify([...managedAutomationByDelivery.keys()].slice(0, 10))}`);
|
|
71
71
|
return undefined;
|
|
72
72
|
}
|
|
73
73
|
if (entry.expiresAt <= Date.now()) {
|
|
74
|
-
console.info(`[
|
|
74
|
+
console.info(`[bdk] hosted managedAutomation lookup expired deliveryId=${deliveryId} automationUuid=${entry.managedAutomation.automationUuid} expiredMsAgo=${String(Date.now() - entry.expiresAt)}`);
|
|
75
75
|
managedAutomationByDelivery.delete(deliveryId);
|
|
76
76
|
return undefined;
|
|
77
77
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Client-side
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* secrets CLI verbs (actionable errors before any network call). The
|
|
6
|
-
* backend stays authoritative — these exist so mistakes fail fast and
|
|
7
|
-
* locally with the same grammar the server enforces.
|
|
2
|
+
* Client-side validation for hosting configuration and secret commands.
|
|
3
|
+
* These checks catch stable syntax and reserved-name errors before a network
|
|
4
|
+
* request. The server remains authoritative.
|
|
8
5
|
*/
|
|
9
6
|
/** `hosting.egressDomains` cap (the manifest schema and deploy body agree). */
|
|
10
7
|
export declare const MAX_EGRESS_DOMAINS = 64;
|
|
@@ -23,10 +20,8 @@ export declare const MAX_CONTAINER_IMAGE_BYTES: number;
|
|
|
23
20
|
/** Returns a human error message, or undefined when the image name is valid. */
|
|
24
21
|
export declare function validateContainerImageName(name: string): string | undefined;
|
|
25
22
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* sync without importing the storage backend into the CLI graph.
|
|
29
|
-
* Hosted storage is HTTP-proxied; engines never see a database URL.
|
|
23
|
+
* Additional environment names managed by Cursor. Do not include these in
|
|
24
|
+
* `hosting.secretNames` or pass them to secret commands.
|
|
30
25
|
*/
|
|
31
26
|
export declare const PLATFORM_HOSTED_STORAGE_SECRET_NAMES: readonly ["AGENT_SERVE_DEPLOYMENT_ID"];
|
|
32
27
|
/** Returns a human error message, or undefined when the domain is valid. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosting.d.ts","sourceRoot":"","sources":["../../src/internal/hosting.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hosting.d.ts","sourceRoot":"","sources":["../../src/internal/hosting.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,kCAAkC;AAClC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,sCAAsC;AACtC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,8BAA8B;AAC9B,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,mEAAmE;AACnE,eAAO,MAAM,2BAA2B,YAAY,CAAC;AACrD,oEAAoE;AACpE,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,EAAE,MAA+B,CAAC;AAIxE,gFAAgF;AAChF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK3E;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,YAAI,2BAA2B,CAAU,CAAC;AAW3F,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASvE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQnE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE;IAC3C,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,GAAG,MAAM,EAAE,CAmBX;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS3E;AAID,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5D"}
|
package/dist/internal/hosting.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Client-side
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* secrets CLI verbs (actionable errors before any network call). The
|
|
6
|
-
* backend stays authoritative — these exist so mistakes fail fast and
|
|
7
|
-
* locally with the same grammar the server enforces.
|
|
2
|
+
* Client-side validation for hosting configuration and secret commands.
|
|
3
|
+
* These checks catch stable syntax and reserved-name errors before a network
|
|
4
|
+
* request. The server remains authoritative.
|
|
8
5
|
*/
|
|
9
6
|
/** `hosting.egressDomains` cap (the manifest schema and deploy body agree). */
|
|
10
7
|
export const MAX_EGRESS_DOMAINS = 64;
|
|
@@ -29,10 +26,8 @@ export function validateContainerImageName(name) {
|
|
|
29
26
|
return `Invalid image name "${name}": use 2–64 lowercase letters, digits, ".", "_" or "-", starting and ending with a letter or digit.`;
|
|
30
27
|
}
|
|
31
28
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* sync without importing the storage backend into the CLI graph.
|
|
35
|
-
* Hosted storage is HTTP-proxied; engines never see a database URL.
|
|
29
|
+
* Additional environment names managed by Cursor. Do not include these in
|
|
30
|
+
* `hosting.secretNames` or pass them to secret commands.
|
|
36
31
|
*/
|
|
37
32
|
export const PLATFORM_HOSTED_STORAGE_SECRET_NAMES = ["AGENT_SERVE_DEPLOYMENT_ID"];
|
|
38
33
|
const SECRET_NAME_PATTERN = /^[A-Z][A-Z0-9_]*$/;
|
|
@@ -14,14 +14,11 @@ export declare function deploymentArchitecture(args: {
|
|
|
14
14
|
}): Promise<"v1" | "v2">;
|
|
15
15
|
/** `run --prod` returns a delivery; read the session after it is allocated. */
|
|
16
16
|
export declare function v2HostedVerifyHint(slug?: string): string;
|
|
17
|
-
|
|
18
|
-
export type LegacyProdCommand = "eval" | "logs";
|
|
19
|
-
export declare function unsupportedV2LegacyCommandError(slug: string, command?: LegacyProdCommand): DeployApiError;
|
|
17
|
+
export declare function unsupportedV2LegacyCommandError(slug: string): DeployApiError;
|
|
20
18
|
export declare function isUnsupportedV2LegacyCommandError(error: unknown): error is DeployApiError;
|
|
21
19
|
export declare function rejectV2ForLegacyCommand(args: {
|
|
22
20
|
client: AgentServeDeployClient;
|
|
23
21
|
teamId: number;
|
|
24
22
|
slug: string;
|
|
25
|
-
command?: LegacyProdCommand;
|
|
26
23
|
}): Promise<void>;
|
|
27
24
|
//# sourceMappingURL=legacy-command-guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-command-guard.d.ts","sourceRoot":"","sources":["../../src/internal/legacy-command-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGjF;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAavB;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,SAAW,GAAG,MAAM,CAO1D;AAED,
|
|
1
|
+
{"version":3,"file":"legacy-command-guard.d.ts","sourceRoot":"","sources":["../../src/internal/legacy-command-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGjF;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAavB;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,SAAW,GAAG,MAAM,CAO1D;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAM5E;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAMzF;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhB"}
|
|
@@ -41,16 +41,7 @@ export function v2HostedVerifyHint(slug = "<slug>") {
|
|
|
41
41
|
`Poll the delivery until the session is allocated, then ` +
|
|
42
42
|
`\`${CLI_COMMAND_NAME} session <ses_> --prod --slug ${slug}\`.`);
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
eval: () => `Run \`${CLI_COMMAND_NAME} eval\` locally, or pass --url for a running server.`,
|
|
46
|
-
logs: slug => `Use \`${CLI_COMMAND_NAME} deployment ${slug}\` for rollout status and ` +
|
|
47
|
-
`\`${CLI_COMMAND_NAME} session <ses_> --prod --slug ${slug}\` for a session's runs and logs.`,
|
|
48
|
-
};
|
|
49
|
-
export function unsupportedV2LegacyCommandError(slug, command) {
|
|
50
|
-
if (command !== undefined) {
|
|
51
|
-
return new DeployApiError(`\`${CLI_COMMAND_NAME} ${command} --prod\` is not supported for architecture v2 deployment "${slug}". ` +
|
|
52
|
-
V2_ALTERNATIVE[command](slug), 409);
|
|
53
|
-
}
|
|
44
|
+
export function unsupportedV2LegacyCommandError(slug) {
|
|
54
45
|
return new DeployApiError(`This command is not supported for architecture v2 deployment "${slug}". ` +
|
|
55
46
|
`call and sessions stay on the v1 API. ${v2HostedVerifyHint(slug)}`, 409);
|
|
56
47
|
}
|
|
@@ -63,7 +54,7 @@ export function rejectV2ForLegacyCommand(args) {
|
|
|
63
54
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
55
|
const architecture = yield deploymentArchitecture(args);
|
|
65
56
|
if (architecture === "v2") {
|
|
66
|
-
throw unsupportedV2LegacyCommandError(args.slug
|
|
57
|
+
throw unsupportedV2LegacyCommandError(args.slug);
|
|
67
58
|
}
|
|
68
59
|
});
|
|
69
60
|
}
|
|
@@ -59,7 +59,7 @@ export function listenHttpServer(args) {
|
|
|
59
59
|
server.listen(port, host);
|
|
60
60
|
yield once(server, "listening");
|
|
61
61
|
if (port !== startPort) {
|
|
62
|
-
logger(`[
|
|
62
|
+
logger(`[bdk] port ${startPort} in use; listening on ${port} instead (pass --port to pick)`);
|
|
63
63
|
}
|
|
64
64
|
return port;
|
|
65
65
|
}
|
|
@@ -83,7 +83,7 @@ export function createLocalControlPlane(opts) {
|
|
|
83
83
|
continue;
|
|
84
84
|
}
|
|
85
85
|
void opts.fireSchedule(name).catch(error => {
|
|
86
|
-
logger(`[
|
|
86
|
+
logger(`[bdk] schedule "${name}" dispatch failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
}
|
|
@@ -106,7 +106,7 @@ export function createLocalControlPlane(opts) {
|
|
|
106
106
|
const timer = setTimeout(() => {
|
|
107
107
|
reminderTimers.delete(record.id);
|
|
108
108
|
void onReminderDue(record.id).catch(error => {
|
|
109
|
-
logger(`[
|
|
109
|
+
logger(`[bdk] reminder "${record.id}" dispatch failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
110
110
|
});
|
|
111
111
|
}, delay);
|
|
112
112
|
(_a = timer.unref) === null || _a === void 0 ? void 0 : _a.call(timer);
|
|
@@ -174,7 +174,7 @@ export function createLocalControlPlane(opts) {
|
|
|
174
174
|
outcome = yield opts.executeReminder(descriptor);
|
|
175
175
|
}
|
|
176
176
|
catch (error) {
|
|
177
|
-
logger(`[
|
|
177
|
+
logger(`[bdk] reminder "${id}" guest execution failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
178
178
|
outcome = {
|
|
179
179
|
kind: "retry",
|
|
180
180
|
delayMs: 1000,
|
|
@@ -183,7 +183,7 @@ export function createLocalControlPlane(opts) {
|
|
|
183
183
|
}
|
|
184
184
|
const result = yield applyReminderOutcome(claimFromDescriptor(descriptor), outcome);
|
|
185
185
|
if (!result.applied) {
|
|
186
|
-
logger(`[
|
|
186
|
+
logger(`[bdk] reminder "${id}" outcome not applied: ${result.reason}`);
|
|
187
187
|
}
|
|
188
188
|
return;
|
|
189
189
|
}
|
|
@@ -200,7 +200,7 @@ export function createLocalControlPlane(opts) {
|
|
|
200
200
|
yield opts.fireReminder(current.id, current.fireCount);
|
|
201
201
|
}
|
|
202
202
|
catch (error) {
|
|
203
|
-
logger(`[
|
|
203
|
+
logger(`[bdk] reminder "${id}" dispatch failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
204
204
|
}
|
|
205
205
|
});
|
|
206
206
|
}
|
|
@@ -210,7 +210,7 @@ export function createLocalControlPlane(opts) {
|
|
|
210
210
|
attachScmEvents(relay) {
|
|
211
211
|
scmRelay = relay;
|
|
212
212
|
relay.start();
|
|
213
|
-
logger("[
|
|
213
|
+
logger("[bdk] cursor-events: control-plane ingest started");
|
|
214
214
|
},
|
|
215
215
|
upsertSchedule(input) {
|
|
216
216
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Customer-facing output never includes hosting URLs, tokens, or infra jargon.
|
|
5
5
|
*/
|
|
6
|
-
import { type DeploymentDetail, type DeploymentProgress } from "./deploy-client.js";
|
|
6
|
+
import { type AgentkitSessionLog, type DeploymentDetail, type DeploymentProgress } from "./deploy-client.js";
|
|
7
7
|
import { type RequestAuth } from "./request-headers.js";
|
|
8
8
|
export interface LogRingEntry {
|
|
9
9
|
index: number;
|
|
@@ -76,4 +76,23 @@ export interface RunLogsTailOptions {
|
|
|
76
76
|
sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
|
|
77
77
|
}
|
|
78
78
|
export declare function runLogsTail(options: RunLogsTailOptions): Promise<void>;
|
|
79
|
+
export interface FollowHostedLogsOptions {
|
|
80
|
+
slug: string;
|
|
81
|
+
read: (signal?: AbortSignal) => Promise<AgentkitSessionLog[]>;
|
|
82
|
+
/** One session: print its lines without `==> ses_… <==` headers. */
|
|
83
|
+
scoped: boolean;
|
|
84
|
+
once: boolean;
|
|
85
|
+
json: boolean;
|
|
86
|
+
signal?: AbortSignal;
|
|
87
|
+
intervalMs?: number;
|
|
88
|
+
write?: (text: string) => void;
|
|
89
|
+
err?: (text: string) => void;
|
|
90
|
+
sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* `logs --prod` on architecture v2: poll the recent sessions' output and print
|
|
94
|
+
* lines not seen yet. Like `tail -f` over several files, a `==> ses_… <==`
|
|
95
|
+
* header marks each switch to another session.
|
|
96
|
+
*/
|
|
97
|
+
export declare function followHostedLogs(options: FollowHostedLogsOptions): Promise<void>;
|
|
79
98
|
//# sourceMappingURL=logs-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs-client.d.ts","sourceRoot":"","sources":["../../src/internal/logs-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"logs-client.d.ts","sourceRoot":"","sources":["../../src/internal/logs-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
12
12
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
13
13
|
});
|
|
14
14
|
};
|
|
15
|
-
import { DeployApiError } from "./deploy-client.js";
|
|
15
|
+
import { DeployApiError, } from "./deploy-client.js";
|
|
16
16
|
import { mergeRequestHeaders } from "./request-headers.js";
|
|
17
17
|
import { resolveProdTarget } from "./resolve-prod-target.js";
|
|
18
18
|
import { stderrPalette } from "./terminal-style.js";
|
|
@@ -321,6 +321,94 @@ function followRuntimeLogs(args) {
|
|
|
321
321
|
}
|
|
322
322
|
});
|
|
323
323
|
}
|
|
324
|
+
/** Same poll cadence as the portal's logs view. */
|
|
325
|
+
const HOSTED_POLL_INTERVAL_MS = 5000;
|
|
326
|
+
/** Sessions whose last read is kept for diffing. Older ones age out. */
|
|
327
|
+
const HOSTED_TRACKED_SESSIONS = 100;
|
|
328
|
+
/**
|
|
329
|
+
* `logs --prod` on architecture v2: poll the recent sessions' output and print
|
|
330
|
+
* lines not seen yet. Like `tail -f` over several files, a `==> ses_… <==`
|
|
331
|
+
* header marks each switch to another session.
|
|
332
|
+
*/
|
|
333
|
+
export function followHostedLogs(options) {
|
|
334
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
335
|
+
var _a, _b, _c, _d, _e;
|
|
336
|
+
const write = (_a = options.write) !== null && _a !== void 0 ? _a : ((text) => void process.stdout.write(text));
|
|
337
|
+
const err = (_b = options.err) !== null && _b !== void 0 ? _b : ((text) => void process.stderr.write(text));
|
|
338
|
+
const sleep = (_c = options.sleep) !== null && _c !== void 0 ? _c : sleepMs;
|
|
339
|
+
const seen = new Map();
|
|
340
|
+
let current;
|
|
341
|
+
if (!options.once) {
|
|
342
|
+
err(stderrPalette().dim(`Tailing logs for ${options.slug}… (Ctrl-C to stop)\n`));
|
|
343
|
+
}
|
|
344
|
+
while (!isAborted(options.signal)) {
|
|
345
|
+
let sessions;
|
|
346
|
+
try {
|
|
347
|
+
sessions = yield options.read(options.signal);
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
if (isAborted(options.signal)) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
throw error;
|
|
354
|
+
}
|
|
355
|
+
for (const session of sessions) {
|
|
356
|
+
// A session's output never shrinks to empty, so an empty read missed.
|
|
357
|
+
// Keep the last one or the next read reprints it all.
|
|
358
|
+
if (session.lines.length === 0) {
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
const fresh = unseenLines((_d = seen.get(session.sessionId)) !== null && _d !== void 0 ? _d : [], session.lines);
|
|
362
|
+
remember(seen, session.sessionId, session.lines);
|
|
363
|
+
if (fresh.length === 0) {
|
|
364
|
+
continue;
|
|
365
|
+
}
|
|
366
|
+
if (!options.scoped && !options.json && current !== session.sessionId) {
|
|
367
|
+
const channel = session.channelId === undefined ? "" : ` (${session.channelId})`;
|
|
368
|
+
write(`${current === undefined ? "" : "\n"}==> ${session.sessionId}${channel} <==\n`);
|
|
369
|
+
}
|
|
370
|
+
current = session.sessionId;
|
|
371
|
+
for (const line of fresh) {
|
|
372
|
+
write(options.json
|
|
373
|
+
? `${JSON.stringify({ type: "log", sessionId: session.sessionId, line })}\n`
|
|
374
|
+
: `${line}\n`);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
if (options.once) {
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
yield sleep((_e = options.intervalMs) !== null && _e !== void 0 ? _e : HOSTED_POLL_INTERVAL_MS, options.signal);
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Lines of `next` past the longest suffix of `prev` that starts `next`. The
|
|
386
|
+
* server returns a sliding tail, so one snapshot is not a prefix of the next.
|
|
387
|
+
*/
|
|
388
|
+
function unseenLines(prev, next) {
|
|
389
|
+
for (let overlap = Math.min(prev.length, next.length); overlap > 0; overlap--) {
|
|
390
|
+
const start = prev.length - overlap;
|
|
391
|
+
let index = 0;
|
|
392
|
+
while (index < overlap && next[index] === prev[start + index]) {
|
|
393
|
+
index++;
|
|
394
|
+
}
|
|
395
|
+
if (index === overlap) {
|
|
396
|
+
return next.slice(overlap);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return [...next];
|
|
400
|
+
}
|
|
401
|
+
/** Map order is recency: the first key is the stalest session. */
|
|
402
|
+
function remember(seen, sessionId, lines) {
|
|
403
|
+
seen.delete(sessionId);
|
|
404
|
+
seen.set(sessionId, lines);
|
|
405
|
+
for (const oldest of seen.keys()) {
|
|
406
|
+
if (seen.size <= HOSTED_TRACKED_SESSIONS) {
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
seen.delete(oldest);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
324
412
|
function customerDeployLookupError(error) {
|
|
325
413
|
if (error instanceof DeployApiError) {
|
|
326
414
|
return new Error(`Could not look up deployment: ${sanitizeCustomerError(error.message)}`);
|
|
@@ -87,7 +87,7 @@ export function handleStatelessMcpRequest(args) {
|
|
|
87
87
|
return yield transport.handleRequest(args.request);
|
|
88
88
|
}
|
|
89
89
|
catch (error) {
|
|
90
|
-
logger(`[
|
|
90
|
+
logger(`[bdk] ${args.label} request failed: ${describeError(error)}`);
|
|
91
91
|
return new Response(JSON.stringify({
|
|
92
92
|
jsonrpc: "2.0",
|
|
93
93
|
error: { code: -32603, message: "Internal server error." },
|
|
@@ -22,7 +22,7 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
22
22
|
handle(event, session);
|
|
23
23
|
}
|
|
24
24
|
catch (error) {
|
|
25
|
-
log(`[
|
|
25
|
+
log(`[bdk:otel] collector failed on ${event.type}: ${error instanceof Error ? error.message : String(error)}`);
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
close() {
|