@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
|
@@ -57,7 +57,7 @@ export function createOtelRuntime(config, log, options) {
|
|
|
57
57
|
}
|
|
58
58
|
const proto = (_a = process.env.OTEL_EXPORTER_OTLP_PROTOCOL) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();
|
|
59
59
|
if (proto === "grpc") {
|
|
60
|
-
log("[
|
|
60
|
+
log("[bdk:otel] OTEL_EXPORTER_OTLP_PROTOCOL=grpc is unsupported; using http/protobuf");
|
|
61
61
|
}
|
|
62
62
|
ensureW3cPropagator();
|
|
63
63
|
const sdk = startOtelSdk(config, log, options === null || options === void 0 ? void 0 : options.resolveExport);
|
|
@@ -101,18 +101,18 @@ export function raceOtelForceFlush(work_1, log_1) {
|
|
|
101
101
|
clearTimeout(timer);
|
|
102
102
|
}
|
|
103
103
|
if (result === "timeout") {
|
|
104
|
-
log(`[
|
|
104
|
+
log(`[bdk:otel] forceFlush exceeded ${timeoutMs}ms; continuing`);
|
|
105
105
|
}
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
108
|
function startOtelSdk(config, logger, resolveExport) {
|
|
109
109
|
var _a, _b;
|
|
110
110
|
diag.setLogger({
|
|
111
|
-
verbose: m => logger(`[
|
|
112
|
-
debug: m => logger(`[
|
|
113
|
-
info: m => logger(`[
|
|
114
|
-
warn: m => logger(`[
|
|
115
|
-
error: m => logger(`[
|
|
111
|
+
verbose: m => logger(`[bdk:otel] ${m}`),
|
|
112
|
+
debug: m => logger(`[bdk:otel] ${m}`),
|
|
113
|
+
info: m => logger(`[bdk:otel] ${m}`),
|
|
114
|
+
warn: m => logger(`[bdk:otel] warn: ${m}`),
|
|
115
|
+
error: m => logger(`[bdk:otel] error: ${m}`),
|
|
116
116
|
}, DiagLogLevel.ERROR);
|
|
117
117
|
const resource = buildResource(config);
|
|
118
118
|
let tracerProvider;
|
|
@@ -123,7 +123,7 @@ function startOtelSdk(config, logger, resolveExport) {
|
|
|
123
123
|
if (traceOpts !== false) {
|
|
124
124
|
const exporters = exportersForSignal(config.exporters, "traces");
|
|
125
125
|
if (hasRealTracerProvider()) {
|
|
126
|
-
logger("[
|
|
126
|
+
logger("[bdk:otel] TracerProvider already registered; reusing global (BDK OTLP exporters not attached)");
|
|
127
127
|
}
|
|
128
128
|
else {
|
|
129
129
|
const spanProcessors = [];
|
|
@@ -162,7 +162,7 @@ function startOtelSdk(config, logger, resolveExport) {
|
|
|
162
162
|
meterProvider = provider;
|
|
163
163
|
}
|
|
164
164
|
else {
|
|
165
|
-
logger("[
|
|
165
|
+
logger("[bdk:otel] MeterProvider already registered; reusing global (BDK OTLP exporters not attached)");
|
|
166
166
|
void provider.shutdown();
|
|
167
167
|
}
|
|
168
168
|
}
|
|
@@ -179,16 +179,16 @@ function startOtelSdk(config, logger, resolveExport) {
|
|
|
179
179
|
loggerProvider = provider;
|
|
180
180
|
}
|
|
181
181
|
else {
|
|
182
|
-
logger("[
|
|
182
|
+
logger("[bdk:otel] LoggerProvider already registered; reusing global (BDK OTLP exporters not attached)");
|
|
183
183
|
void provider.shutdown();
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
187
|
if (memoryExporter === undefined) {
|
|
188
|
-
logger(`[
|
|
188
|
+
logger(`[bdk] otel enabled service=${config.serviceName} exporters=${config.exporters.length} traces=${config.traces !== false} metrics=${config.metrics !== false} logs=${config.logs !== false}`);
|
|
189
189
|
}
|
|
190
190
|
else {
|
|
191
|
-
logger(`[
|
|
191
|
+
logger(`[bdk] otel recording service=${config.serviceName} (export on flush when OTLP exporters resolve)`);
|
|
192
192
|
}
|
|
193
193
|
const flushDeferred = () => __awaiter(this, void 0, void 0, function* () {
|
|
194
194
|
var _a;
|
|
@@ -256,7 +256,7 @@ function exportQueuedSpans(spans, destinations, logger, resource) {
|
|
|
256
256
|
return results.every(ok => ok);
|
|
257
257
|
}
|
|
258
258
|
catch (error) {
|
|
259
|
-
logger(`[
|
|
259
|
+
logger(`[bdk:otel] deferred export failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
260
260
|
return false;
|
|
261
261
|
}
|
|
262
262
|
finally {
|
|
@@ -30,7 +30,7 @@ export function syncHostedPlatformSchedules(args) {
|
|
|
30
30
|
}
|
|
31
31
|
catch (error) {
|
|
32
32
|
failedDeletes.push(name);
|
|
33
|
-
args.logger(`[
|
|
33
|
+
args.logger(`[bdk] platform timer delete failed for schedule "${name}": ${error instanceof Error ? error.message : String(error)}`);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
for (const schedule of args.schedules) {
|
|
@@ -41,7 +41,7 @@ export function syncHostedPlatformSchedules(args) {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
catch (error) {
|
|
44
|
-
args.logger(`[
|
|
44
|
+
args.logger(`[bdk] platform timer upsert failed for schedule "${schedule.name}": ${error instanceof Error ? error.message : String(error)}`);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
// Keep failed removals in the catalog so the next boot retries them.
|
|
@@ -107,7 +107,7 @@ export function runPlaygroundBuild() {
|
|
|
107
107
|
if (toolchain === undefined) {
|
|
108
108
|
throw new Error("playground vite toolchain unavailable (need playground/ sources and the vite package)");
|
|
109
109
|
}
|
|
110
|
-
logger("[
|
|
110
|
+
logger("[bdk] building playground (vite)...");
|
|
111
111
|
const code = yield spawnVite(toolchain, ["build", "--config", VITE_CONFIG], {
|
|
112
112
|
env: process.env,
|
|
113
113
|
});
|
|
@@ -117,7 +117,7 @@ export function runPlaygroundBuild() {
|
|
|
117
117
|
if (!playgroundBundleExists()) {
|
|
118
118
|
throw new Error("playground vite build finished but dist/playground/index.html is missing");
|
|
119
119
|
}
|
|
120
|
-
logger("[
|
|
120
|
+
logger("[bdk] playground build complete");
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
@@ -131,7 +131,7 @@ export function ensurePlaygroundBundle() {
|
|
|
131
131
|
return;
|
|
132
132
|
}
|
|
133
133
|
if (resolvePlaygroundToolchain() === undefined) {
|
|
134
|
-
logger("[
|
|
134
|
+
logger("[bdk] playground bundle missing and vite toolchain unavailable; /playground will show a build hint");
|
|
135
135
|
return;
|
|
136
136
|
}
|
|
137
137
|
yield runPlaygroundBuild(logger);
|
|
@@ -178,7 +178,7 @@ export function startPlaygroundDevServer(options) {
|
|
|
178
178
|
(_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (chunk) => {
|
|
179
179
|
const text = chunk.toString().trimEnd();
|
|
180
180
|
if (text !== "") {
|
|
181
|
-
logger(`[
|
|
181
|
+
logger(`[bdk] playground: ${text}`);
|
|
182
182
|
}
|
|
183
183
|
});
|
|
184
184
|
let stopped = false;
|
|
@@ -186,14 +186,14 @@ export function startPlaygroundDevServer(options) {
|
|
|
186
186
|
if (stopped) {
|
|
187
187
|
return;
|
|
188
188
|
}
|
|
189
|
-
logger(`[
|
|
189
|
+
logger(`[bdk] playground spawn failed: ${err.message} — static /playground still served when built`);
|
|
190
190
|
});
|
|
191
191
|
child.on("exit", (code, signal) => {
|
|
192
192
|
if (stopped) {
|
|
193
193
|
return;
|
|
194
194
|
}
|
|
195
195
|
if (code !== 0 && code !== null) {
|
|
196
|
-
logger(`[
|
|
196
|
+
logger(`[bdk] playground exited (code ${code}${signal ? `, signal ${signal}` : ""}) — static /playground still served when built`);
|
|
197
197
|
}
|
|
198
198
|
});
|
|
199
199
|
return {
|
|
@@ -93,7 +93,7 @@ export function collectMemoryHealthFields(args) {
|
|
|
93
93
|
}
|
|
94
94
|
export function formatMemoryLogLine(args) {
|
|
95
95
|
const ratio = heapUsedRatio(args.memory);
|
|
96
|
-
return (`[
|
|
96
|
+
return (`[bdk:memory] agent=${args.agentName}` +
|
|
97
97
|
` heap_used_mb=${mb(args.memory.heapUsedBytes)}` +
|
|
98
98
|
` heap_total_mb=${mb(args.memory.heapTotalBytes)}` +
|
|
99
99
|
` heap_limit_mb=${mb(args.memory.heapLimitBytes)}` +
|
|
@@ -172,7 +172,7 @@ export function startProcessMemoryTelemetry(options) {
|
|
|
172
172
|
const post = (_c = options.postSeries) !== null && _c !== void 0 ? _c : defaultPostSeries;
|
|
173
173
|
inFlight = post(datadog, body).catch((error) => {
|
|
174
174
|
const message = error instanceof Error ? error.message : String(error);
|
|
175
|
-
logger(`[
|
|
175
|
+
logger(`[bdk:memory] datadog flush failed: ${message}`);
|
|
176
176
|
});
|
|
177
177
|
};
|
|
178
178
|
sample();
|
|
@@ -15,7 +15,10 @@ export declare class UnknownReminderError extends Error {
|
|
|
15
15
|
constructor(reminderId: string, availableReminderIds: string[]);
|
|
16
16
|
}
|
|
17
17
|
export interface ReminderRunnerOptions {
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Discovered `agent/reminders/*` handlers, keyed by module stem, and
|
|
20
|
+
* mounted extensions' `reminders/*` handlers, keyed `<ns>__<name>`.
|
|
21
|
+
*/
|
|
19
22
|
namedHandlers?: readonly DiscoveredReminder[];
|
|
20
23
|
/**
|
|
21
24
|
* Architecture v2: reject anonymous `run` and function `until` at create
|
|
@@ -176,7 +179,7 @@ export declare class ReminderRunner {
|
|
|
176
179
|
* Follow-ups must use the bound session's principal. If the session is gone,
|
|
177
180
|
* disarm rather than creating a fresh APP_AUTH conversation.
|
|
178
181
|
*/
|
|
179
|
-
private
|
|
182
|
+
private boundSession;
|
|
180
183
|
private deliverPrompt;
|
|
181
184
|
/**
|
|
182
185
|
* Where a prompt fire joins. The pod's own store first; on a hosted guest
|
|
@@ -192,7 +195,9 @@ export declare class ReminderRunner {
|
|
|
192
195
|
* Join the reminder's existing session. Control-plane (`/v2`) channels
|
|
193
196
|
* refuse authored `continuationToken`; pass the stored key as
|
|
194
197
|
* {@link EngineSendOptions.mailboxContinuation} so the engine reuses the
|
|
195
|
-
* CP-selected identity without channel admission.
|
|
198
|
+
* CP-selected identity without channel admission. A one-shot key (an HTTP
|
|
199
|
+
* session's) names the event that opened the session and never joins, so
|
|
200
|
+
* the follow-up names the bound session itself.
|
|
196
201
|
*/
|
|
197
202
|
private followupSendOptions;
|
|
198
203
|
private channelUsesControlPlaneContinuation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reminder-runner.d.ts","sourceRoot":"","sources":["../../src/internal/reminder-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,WAAW,EAEX,kBAAkB,EAIlB,mBAAmB,EAKnB,YAAY,EACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"reminder-runner.d.ts","sourceRoot":"","sources":["../../src/internal/reminder-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,WAAW,EAEX,kBAAkB,EAIlB,mBAAmB,EAKnB,YAAY,EACZ,cAAc,EAIf,MAAM,aAAa,CAAC;AAKrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAG5B,MAAM,sCAAsC,CAAC;AAU9C,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,EAAE,MAAkB,CAAC;AAEzD,qBAAa,oBAAqB,SAAQ,KAAK;IAG3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE;IAFzC,YACE,UAAU,EAAE,MAAM,EACT,oBAAoB,EAAE,MAAM,EAAE,EAIxC;CACF;AAOD,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,0BAA0B,CAAC;CAC1C;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;CAChD;AAED;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,GACjC,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,yBAAyB,GACzB,iBAAiB,GACjB,UAAU,GACV,UAAU,GACV,eAAe,GACf,UAAU,GACV,MAAM,GACN,iBAAiB,GACjB,YAAY,CAAC;AAEjB,eAAO,MAAM,4BAA4B,oCAAoC,CAAC;AAmD9E;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAEV;AA0GD,qBAAa,cAAc;IAqBvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAtBlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyC;IACvE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAC3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyC;IACrE;;;OAGG;IACH,OAAO,CAAC,6BAA6B,CAAS;IAE9C,YACmB,MAAM,EAAE,aAAa,EACrB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACzC,cAAc,CAAC,EAAE,cAAc,YAAA,EAChD,OAAO,GAAE,qBAA0B,EAUpC;IAED,qEAAqE;IACrE,OAAO,KAAK,wBAAwB,GAEnC;IAED;;;;;OAKG;IACH,OAAO,KAAK,cAAc,GAKzB;IAED,OAAO,CAAC,0BAA0B;IAYlC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAmD7B;IAED,4EAA4E;IACtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAsC3B;YAEa,OAAO;YAOP,SAAS;IAoBvB;;;;OAIG;YACW,UAAU;IAoBxB;;;OAGG;YACW,cAAc;IA4B5B,IAAI,IAAI,IAAI,CAOX;IAEK,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAiJ9D;IAEK,IAAI,CAAC,MAAM,CAAC,EAAE;QAClB,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA+B1B;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,SAAoB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CA8BtF;IAED,iFAAiF;IAC3E,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUtF;IAED;;;;;OAKG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB9F;IAED,uEAAuE;IACjE,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAO,GACxC,OAAO,CAAC;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAeD;IAED;;;;OAIG;IACG,WAAW,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAsBvF;YAEa,OAAO;IAyErB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,QAAQ;IAoChB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,mBAAmB;YAIb,IAAI;YAkHJ,aAAa;IAM3B,OAAO,CAAC,eAAe;IAgBvB;;;OAGG;IACH,OAAO,CAAC,YAAY;YAIN,aAAa;IAI3B;;;;;;OAMG;YACW,qBAAqB;YAuBrB,iBAAiB;YAmDjB,cAAc;IAiB5B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,mCAAmC;IAe3C;;;;;OAKG;YACW,cAAc;YAgBd,YAAY;IA+C1B,OAAO,CAAC,gBAAgB;IAyDxB,OAAO,CAAC,iBAAiB;YAeX,MAAM;YAYN,SAAS;CAmFxB;AAGD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -14,7 +14,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
14
14
|
};
|
|
15
15
|
import { randomBytes } from "node:crypto";
|
|
16
16
|
import { channelContinuationIdentity, httpContinuationIdentity } from "./continuation-channel.js";
|
|
17
|
-
import { continuationSource } from "./continuation-identity.js";
|
|
17
|
+
import { continuationSource, isOneShotContinuationKey } from "./continuation-identity.js";
|
|
18
18
|
import { NAME_PATTERN } from "./discovery/names.js";
|
|
19
19
|
import { parseDuration } from "./duration.js";
|
|
20
20
|
import { REMINDER_CP_PROTOCOL_VERSION, scheduleSpecFromCreateInput, toWireReschedule, } from "./reminder-control-plane-protocol.js";
|
|
@@ -181,7 +181,7 @@ export class ReminderRunner {
|
|
|
181
181
|
return;
|
|
182
182
|
}
|
|
183
183
|
this.controlPlaneReadFailureLogged = true;
|
|
184
|
-
this.logger(`[
|
|
184
|
+
this.logger(`[bdk] reminders: control-plane ${what} failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
185
185
|
}
|
|
186
186
|
/**
|
|
187
187
|
* Load reminder documents from the control plane into memory. Does not
|
|
@@ -210,7 +210,7 @@ export class ReminderRunner {
|
|
|
210
210
|
// The CP owns status; a fire whose handler is missing reports `stop`
|
|
211
211
|
// from executeFire instead of the guest writing a disarm.
|
|
212
212
|
if (remote.length > 0) {
|
|
213
|
-
this.logger(`[
|
|
213
|
+
this.logger(`[bdk] reminders: hydrated ${remote.length} reminder(s) from control plane`);
|
|
214
214
|
}
|
|
215
215
|
return;
|
|
216
216
|
}
|
|
@@ -233,7 +233,7 @@ export class ReminderRunner {
|
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
if (remote.length > 0 || disarmedOrphan > 0) {
|
|
236
|
-
this.logger(`[
|
|
236
|
+
this.logger(`[bdk] reminders: hydrated ${remote.length} reminder(s) from control plane` +
|
|
237
237
|
(disarmedOrphan > 0 ? `; disarmed ${disarmedOrphan} without live handlers` : ""));
|
|
238
238
|
}
|
|
239
239
|
});
|
|
@@ -272,7 +272,7 @@ export class ReminderRunner {
|
|
|
272
272
|
restored += 1;
|
|
273
273
|
}
|
|
274
274
|
if (restored > 0 || disarmedOrphan > 0) {
|
|
275
|
-
this.logger(`[
|
|
275
|
+
this.logger(`[bdk] reminders: restored ${restored} armed reminder(s)` +
|
|
276
276
|
(disarmedOrphan > 0 ? `; disarmed ${disarmedOrphan} without live handlers` : ""));
|
|
277
277
|
}
|
|
278
278
|
});
|
|
@@ -411,12 +411,15 @@ export class ReminderRunner {
|
|
|
411
411
|
if (name === "") {
|
|
412
412
|
throw new ReminderValidationError("handler name is required");
|
|
413
413
|
}
|
|
414
|
-
|
|
414
|
+
// A mounted extension's handler registers as `<ns>__<name>`, a name no
|
|
415
|
+
// authored stem may take.
|
|
416
|
+
const registered = this.namedHandlers.has(name);
|
|
417
|
+
if (!registered && !isValidReminderHandlerName(name)) {
|
|
415
418
|
throw new ReminderValidationError(name.includes("__")
|
|
416
|
-
? `Invalid reminder handler name "${name}": may not contain "__"`
|
|
419
|
+
? `Invalid reminder handler name "${name}": may not contain "__" (reserved for mounted extensions' <ns>__<name> handlers)`
|
|
417
420
|
: `Invalid reminder handler name "${name}": must match ${NAME_PATTERN}`);
|
|
418
421
|
}
|
|
419
|
-
if (
|
|
422
|
+
if (!registered) {
|
|
420
423
|
throw new ReminderValidationError(`Unknown reminder handler "${name}" (expected reminders/${name}.ts under the project root)`);
|
|
421
424
|
}
|
|
422
425
|
if (input.args !== undefined && !isJsonObject(input.args)) {
|
|
@@ -660,7 +663,7 @@ export class ReminderRunner {
|
|
|
660
663
|
}
|
|
661
664
|
}
|
|
662
665
|
catch (error) {
|
|
663
|
-
this.logger(`[
|
|
666
|
+
this.logger(`[bdk] reminder "${record.id}" until() failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
664
667
|
}
|
|
665
668
|
}
|
|
666
669
|
if (yield this.isSessionBusy(record.channelId, record.continuationToken)) {
|
|
@@ -714,7 +717,7 @@ export class ReminderRunner {
|
|
|
714
717
|
* beside the control plane's `timed_work.fire` count.
|
|
715
718
|
*/
|
|
716
719
|
recordFireOutcome(record, fire) {
|
|
717
|
-
this.logger(`[
|
|
720
|
+
this.logger(`[bdk] reminder fire_outcome kind=${fire.kind} reason=${fire.reason}` +
|
|
718
721
|
` reminderId=${record.id} purpose=${record.purpose}` +
|
|
719
722
|
` channelId=${record.channelId} fireCount=${record.fireCount}` +
|
|
720
723
|
(fire.turnStatus === undefined ? "" : ` turn=${fire.turnStatus}`) +
|
|
@@ -732,7 +735,7 @@ export class ReminderRunner {
|
|
|
732
735
|
});
|
|
733
736
|
}
|
|
734
737
|
catch (error) {
|
|
735
|
-
this.logger(`[
|
|
738
|
+
this.logger(`[bdk] reminder fire_outcome metric failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
736
739
|
}
|
|
737
740
|
}
|
|
738
741
|
recordFromDescriptor(descriptor) {
|
|
@@ -771,7 +774,7 @@ export class ReminderRunner {
|
|
|
771
774
|
const delay = Math.min(MAX_TIMER_MS, Math.max(0, nextFireAtMs - Date.now()));
|
|
772
775
|
const timer = setTimeout(() => {
|
|
773
776
|
void this.fire(record.id).catch((error) => __awaiter(this, void 0, void 0, function* () {
|
|
774
|
-
this.logger(`[
|
|
777
|
+
this.logger(`[bdk] reminder "${record.id}" fire failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
775
778
|
// Keep recurring reminders alive after unexpected throws.
|
|
776
779
|
// One-shots stay armed so a failed wake can be retried / dispatched.
|
|
777
780
|
try {
|
|
@@ -786,7 +789,7 @@ export class ReminderRunner {
|
|
|
786
789
|
yield this.afterFire(current, "skip");
|
|
787
790
|
}
|
|
788
791
|
catch (rescheduleError) {
|
|
789
|
-
this.logger(`[
|
|
792
|
+
this.logger(`[bdk] reminder "${record.id}" reschedule after failure failed: ${rescheduleError instanceof Error ? rescheduleError.message : String(rescheduleError)}`);
|
|
790
793
|
}
|
|
791
794
|
}));
|
|
792
795
|
}, delay);
|
|
@@ -844,13 +847,13 @@ export class ReminderRunner {
|
|
|
844
847
|
}
|
|
845
848
|
}
|
|
846
849
|
catch (error) {
|
|
847
|
-
this.logger(`[
|
|
850
|
+
this.logger(`[bdk] reminder "${id}" until() failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
848
851
|
}
|
|
849
852
|
}
|
|
850
853
|
if (yield this.isSessionBusy(record.channelId, record.continuationToken)) {
|
|
851
854
|
if (record.busyPolicy === "skipIfBusy") {
|
|
852
855
|
yield this.afterFire(record, "skip");
|
|
853
|
-
this.logger(`[
|
|
856
|
+
this.logger(`[bdk] reminder "${id}" (${record.purpose}) skipped: session busy`);
|
|
854
857
|
return { outcome: "fired", reason: "skipped_busy" };
|
|
855
858
|
}
|
|
856
859
|
yield this.whenSessionIdle(record.channelId, record.continuationToken);
|
|
@@ -883,7 +886,7 @@ export class ReminderRunner {
|
|
|
883
886
|
if (result.action === "stop") {
|
|
884
887
|
if (latest !== undefined && latest.status === "armed") {
|
|
885
888
|
yield this.disarm(latest, "run_stop");
|
|
886
|
-
this.logger(`[
|
|
889
|
+
this.logger(`[bdk] reminder "${id}" (${record.purpose}) disarmed: run_stop`);
|
|
887
890
|
return { outcome: "fired", reason: "run_stop" };
|
|
888
891
|
}
|
|
889
892
|
return {
|
|
@@ -896,11 +899,11 @@ export class ReminderRunner {
|
|
|
896
899
|
}
|
|
897
900
|
if (result.action === "skip") {
|
|
898
901
|
yield this.afterFire(latest, "skip", result.reschedule);
|
|
899
|
-
this.logger(`[
|
|
902
|
+
this.logger(`[bdk] reminder "${id}" (${record.purpose}) skipped`);
|
|
900
903
|
return { outcome: "fired", reason: "skipped" };
|
|
901
904
|
}
|
|
902
905
|
yield this.afterFire(latest, "delivered", result.reschedule);
|
|
903
|
-
this.logger(`[
|
|
906
|
+
this.logger(`[bdk] reminder "${id}" (${record.purpose}) fired`);
|
|
904
907
|
return { outcome: "fired", reason: "delivered" };
|
|
905
908
|
}
|
|
906
909
|
finally {
|
|
@@ -936,14 +939,8 @@ export class ReminderRunner {
|
|
|
936
939
|
* Follow-ups must use the bound session's principal. If the session is gone,
|
|
937
940
|
* disarm rather than creating a fresh APP_AUTH conversation.
|
|
938
941
|
*/
|
|
939
|
-
|
|
940
|
-
return
|
|
941
|
-
const existing = yield this.engine.sessions.findByContinuation(channelId, continuationToken);
|
|
942
|
-
if (existing !== undefined) {
|
|
943
|
-
return existing.auth;
|
|
944
|
-
}
|
|
945
|
-
return undefined;
|
|
946
|
-
});
|
|
942
|
+
boundSession(record) {
|
|
943
|
+
return this.engine.sessions.findByContinuation(record.channelId, record.continuationToken);
|
|
947
944
|
}
|
|
948
945
|
deliverPrompt(record) {
|
|
949
946
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -959,9 +956,9 @@ export class ReminderRunner {
|
|
|
959
956
|
*/
|
|
960
957
|
resolveFollowupTarget(record) {
|
|
961
958
|
return __awaiter(this, void 0, void 0, function* () {
|
|
962
|
-
const local = yield this.
|
|
959
|
+
const local = yield this.boundSession(record);
|
|
963
960
|
if (local !== undefined) {
|
|
964
|
-
return { auth: local, reached: "session_joined" };
|
|
961
|
+
return { auth: local.auth, sessionId: local.sessionId, reached: "session_joined" };
|
|
965
962
|
}
|
|
966
963
|
if (this.hostedGuest === undefined) {
|
|
967
964
|
return { auth: undefined, reached: "session_gone" };
|
|
@@ -972,20 +969,20 @@ export class ReminderRunner {
|
|
|
972
969
|
if (!restored) {
|
|
973
970
|
return { auth: undefined, reached: "session_gone" };
|
|
974
971
|
}
|
|
975
|
-
const
|
|
976
|
-
return
|
|
972
|
+
const session = yield this.boundSession(record);
|
|
973
|
+
return session === undefined
|
|
977
974
|
? { auth: undefined, reached: "session_unreadable" }
|
|
978
|
-
: { auth, reached: "session_restored" };
|
|
975
|
+
: { auth: session.auth, sessionId: session.sessionId, reached: "session_restored" };
|
|
979
976
|
});
|
|
980
977
|
}
|
|
981
978
|
deliverPromptFire(record) {
|
|
982
979
|
return __awaiter(this, void 0, void 0, function* () {
|
|
983
980
|
const target = yield this.resolveFollowupTarget(record);
|
|
984
981
|
if (target.auth !== undefined) {
|
|
985
|
-
return this.promptDelivery(record, target
|
|
982
|
+
return this.promptDelivery(record, target, target.reached);
|
|
986
983
|
}
|
|
987
984
|
if (target.reached === "session_unreadable") {
|
|
988
|
-
this.logger(`[
|
|
985
|
+
this.logger(`[bdk] reminder "${record.id}" (${record.purpose}) durable session did not materialize locally; not opening a new one`);
|
|
989
986
|
return { result: { action: "stop" }, reason: "session_gone" };
|
|
990
987
|
}
|
|
991
988
|
if (this.hostedGuest !== undefined &&
|
|
@@ -1004,7 +1001,7 @@ export class ReminderRunner {
|
|
|
1004
1001
|
};
|
|
1005
1002
|
}
|
|
1006
1003
|
try {
|
|
1007
|
-
return yield this.promptDelivery(record, fireAuth, "session_opened");
|
|
1004
|
+
return yield this.promptDelivery(record, { auth: fireAuth }, "session_opened");
|
|
1008
1005
|
}
|
|
1009
1006
|
catch (error) {
|
|
1010
1007
|
if (!(error instanceof SessionAuthError)) {
|
|
@@ -1013,7 +1010,7 @@ export class ReminderRunner {
|
|
|
1013
1010
|
// A session landed on this key under another principal between the
|
|
1014
1011
|
// lookup and the send. That does not change on retry, so stop
|
|
1015
1012
|
// rather than let the control plane re-admit until its attempt cap.
|
|
1016
|
-
this.logger(`[
|
|
1013
|
+
this.logger(`[bdk] reminder "${record.id}" (${record.purpose}) cannot join session on its continuation: ${error.message}`);
|
|
1017
1014
|
return { result: { action: "stop" }, reason: "session_gone" };
|
|
1018
1015
|
}
|
|
1019
1016
|
}
|
|
@@ -1025,11 +1022,11 @@ export class ReminderRunner {
|
|
|
1025
1022
|
return { result: { action: "stop" }, reason: "session_gone" };
|
|
1026
1023
|
});
|
|
1027
1024
|
}
|
|
1028
|
-
promptDelivery(record,
|
|
1025
|
+
promptDelivery(record, address, delivered) {
|
|
1029
1026
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1030
1027
|
var _a;
|
|
1031
1028
|
const settle = {};
|
|
1032
|
-
const result = yield this.sendFollowup(record, buildFirePrompt(record),
|
|
1029
|
+
const result = yield this.sendFollowup(record, buildFirePrompt(record), address, settle);
|
|
1033
1030
|
return {
|
|
1034
1031
|
result,
|
|
1035
1032
|
reason: result.action === "skip" ? ((_a = settle.skipReason) !== null && _a !== void 0 ? _a : "busy") : delivered,
|
|
@@ -1041,14 +1038,16 @@ export class ReminderRunner {
|
|
|
1041
1038
|
* Join the reminder's existing session. Control-plane (`/v2`) channels
|
|
1042
1039
|
* refuse authored `continuationToken`; pass the stored key as
|
|
1043
1040
|
* {@link EngineSendOptions.mailboxContinuation} so the engine reuses the
|
|
1044
|
-
* CP-selected identity without channel admission.
|
|
1041
|
+
* CP-selected identity without channel admission. A one-shot key (an HTTP
|
|
1042
|
+
* session's) names the event that opened the session and never joins, so
|
|
1043
|
+
* the follow-up names the bound session itself.
|
|
1045
1044
|
*/
|
|
1046
|
-
followupSendOptions(record,
|
|
1045
|
+
followupSendOptions(record, address) {
|
|
1046
|
+
const { auth, sessionId } = address;
|
|
1047
1047
|
if (this.channelUsesControlPlaneContinuation(record.channelId)) {
|
|
1048
|
-
return {
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
};
|
|
1048
|
+
return Object.assign({ auth, mailboxContinuation: { key: record.continuationToken } }, (sessionId !== undefined && isOneShotContinuationKey(record.continuationToken)
|
|
1049
|
+
? { hostedSessionId: sessionId }
|
|
1050
|
+
: {}));
|
|
1052
1051
|
}
|
|
1053
1052
|
return {
|
|
1054
1053
|
auth,
|
|
@@ -1087,9 +1086,9 @@ export class ReminderRunner {
|
|
|
1087
1086
|
}
|
|
1088
1087
|
});
|
|
1089
1088
|
}
|
|
1090
|
-
sendFollowup(record, message,
|
|
1089
|
+
sendFollowup(record, message, address, settle, extra) {
|
|
1091
1090
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1092
|
-
const sendOptions = Object.assign(Object.assign({}, this.followupSendOptions(record,
|
|
1091
|
+
const sendOptions = Object.assign(Object.assign({}, this.followupSendOptions(record, address)), { state: extra === null || extra === void 0 ? void 0 : extra.state, refreshState: extra === null || extra === void 0 ? void 0 : extra.refreshState, title: extra === null || extra === void 0 ? void 0 : extra.title, clearCloudOverride: extra === null || extra === void 0 ? void 0 : extra.clearCloudOverride });
|
|
1093
1092
|
try {
|
|
1094
1093
|
const session = yield this.engine.send(record.channelId, message, sendOptions);
|
|
1095
1094
|
yield this.settleFollowup(session, settle);
|
|
@@ -1110,7 +1109,7 @@ export class ReminderRunner {
|
|
|
1110
1109
|
return { action: "delivered" };
|
|
1111
1110
|
}
|
|
1112
1111
|
catch (retryError) {
|
|
1113
|
-
this.logger(`[
|
|
1112
|
+
this.logger(`[bdk] reminder "${record.id}" followup failed after wait: ${retryError instanceof Error ? retryError.message : String(retryError)}`);
|
|
1114
1113
|
if (settle !== undefined) {
|
|
1115
1114
|
settle.skipReason = "followup_failed";
|
|
1116
1115
|
}
|
|
@@ -1137,16 +1136,16 @@ export class ReminderRunner {
|
|
|
1137
1136
|
followup(args) {
|
|
1138
1137
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1139
1138
|
const target = yield self.resolveFollowupTarget(record);
|
|
1140
|
-
let
|
|
1139
|
+
let address = target.auth === undefined ? undefined : target;
|
|
1141
1140
|
// `openAuth` opens only when nothing exists anywhere: an unreadable
|
|
1142
1141
|
// durable session must not be shadowed by a second one on the same
|
|
1143
1142
|
// key (prompt-fire parity).
|
|
1144
|
-
if (
|
|
1143
|
+
if (address === undefined &&
|
|
1145
1144
|
target.reached === "session_gone" &&
|
|
1146
1145
|
args.openAuth !== undefined) {
|
|
1147
|
-
|
|
1146
|
+
address = { auth: args.openAuth };
|
|
1148
1147
|
}
|
|
1149
|
-
if (
|
|
1148
|
+
if (address === undefined) {
|
|
1150
1149
|
// Under the CP protocol the guest never writes reminder status;
|
|
1151
1150
|
// the fire's `stop` outcome carries the reason instead.
|
|
1152
1151
|
if (!self.usesControlPlaneProtocol) {
|
|
@@ -1154,11 +1153,11 @@ export class ReminderRunner {
|
|
|
1154
1153
|
}
|
|
1155
1154
|
throw new Error(`Reminder "${record.id}" followup: session gone for continuation`);
|
|
1156
1155
|
}
|
|
1157
|
-
const result = yield self.sendFollowup(record, args.message,
|
|
1156
|
+
const result = yield self.sendFollowup(record, args.message, address, undefined, args);
|
|
1158
1157
|
if (result.action === "skip") {
|
|
1159
1158
|
throw new Error(`Reminder "${record.id}" followup skipped: session busy`);
|
|
1160
1159
|
}
|
|
1161
|
-
const existing = yield self.
|
|
1160
|
+
const existing = yield self.boundSession(record);
|
|
1162
1161
|
if (existing === undefined) {
|
|
1163
1162
|
throw new Error(`Reminder "${record.id}" followup: session not found for continuation`);
|
|
1164
1163
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resolve a hosted (managed) agent-sdk deployment into a base URL +
|
|
3
|
-
* request headers for chat/run/call
|
|
3
|
+
* request headers for chat/run/call `--prod`.
|
|
4
4
|
*
|
|
5
5
|
* Uses short-lived `engineAccess` from the deployment status route
|
|
6
6
|
* (Cursor API key on the management API; `X-Anyrun-Port-Token` on the
|
|
7
7
|
* engine). Alias tokens are out of scope here.
|
|
8
8
|
*/
|
|
9
|
-
import { type LegacyProdCommand } from "./legacy-command-guard.js";
|
|
10
9
|
/**
|
|
11
10
|
* Interactive CLI keep-alive for hosted engines. Without these, a hibernated
|
|
12
11
|
* Anyrun pod returns 417 `pod_hibernated` and never wakes. Matches the
|
|
@@ -24,8 +23,6 @@ export interface ResolveProdTargetOptions {
|
|
|
24
23
|
err?: (text: string) => void;
|
|
25
24
|
/** Skip when the caller already ran {@link rejectV2ForLegacyCommand}. */
|
|
26
25
|
skipLegacyArchitectureCheck?: boolean;
|
|
27
|
-
/** Names the command in the {@link rejectV2ForLegacyCommand} v2 error. */
|
|
28
|
-
command?: LegacyProdCommand;
|
|
29
26
|
/** Test seam for reachability-retry backoff. */
|
|
30
27
|
sleep?: (ms: number) => Promise<void>;
|
|
31
28
|
}
|
|
@@ -70,14 +67,6 @@ export interface ResolvedProdPlayground {
|
|
|
70
67
|
export declare function resolveProdPlaygroundUrl(options: ResolveProdTargetOptions & {
|
|
71
68
|
sessionId?: string;
|
|
72
69
|
}): Promise<ResolvedProdPlayground>;
|
|
73
|
-
/**
|
|
74
|
-
* Look up a running deployment and return its stable alias playground URL.
|
|
75
|
-
* Does not mint `engineAccess` — the browser signs in with the alias token.
|
|
76
|
-
* Throws {@link Error} with a CLI-ready message on failure.
|
|
77
|
-
*/
|
|
78
|
-
export declare function resolveProdAliasPlaygroundUrl(options: ResolveProdTargetOptions & {
|
|
79
|
-
sessionId?: string;
|
|
80
|
-
}): Promise<ResolvedProdAliasPlayground>;
|
|
81
70
|
/** Resolve the deployment slug the same way `deploy` does for a single dir. */
|
|
82
71
|
export declare function resolveProdSlug(options: {
|
|
83
72
|
dir: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-prod-target.d.ts","sourceRoot":"","sources":["../../src/internal/resolve-prod-target.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"resolve-prod-target.d.ts","sourceRoot":"","sources":["../../src/internal/resolve-prod-target.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGrE,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,yEAAyE;IACzE,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,gDAAgD;IAChD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAGtC,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;IAFxD,YACE,OAAO,EAAE,MAAM,EACN,OAAO,GAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAiB,EAItE;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA2F7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,wBAAwB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,sBAAsB,CAAC,CAsCjC;AAwDD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAgB7F"}
|