@cursor/bdk 0.2.11 → 0.2.12
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 +28 -26
- package/dist/channels/bitbucket/api.js +8 -8
- package/dist/channels/bitbucket/binding.js +4 -4
- package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
- package/dist/channels/bitbucket/bitbucket-webhook.js +1 -1
- package/dist/channels/bitbucket/checks.js +1 -1
- package/dist/channels/bitbucket/cursor-account.js +1 -1
- package/dist/channels/bitbucket/events.js +1 -1
- package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
- package/dist/channels/checks.js +2 -2
- package/dist/channels/deployments/deployments-channel.js +1 -1
- package/dist/channels/github/cursor-account.js +3 -3
- package/dist/channels/github/defaults.js +3 -3
- package/dist/channels/github/events.js +1 -1
- package/dist/channels/github/forward.js +8 -8
- package/dist/channels/github/github-channel.js +2 -2
- package/dist/channels/gitlab/binding.js +4 -4
- package/dist/channels/gitlab/checks.js +1 -1
- package/dist/channels/gitlab/cursor-account.js +1 -1
- package/dist/channels/gitlab/events.js +1 -1
- package/dist/channels/gitlab/gitlab-channel.js +1 -1
- package/dist/channels/gitlab/gitlab-webhook.js +1 -1
- package/dist/channels/gitlab/replay.js +2 -2
- package/dist/channels/origin/binding.js +3 -3
- package/dist/channels/origin/checks.js +1 -1
- package/dist/channels/origin/cursor-account.js +1 -1
- package/dist/channels/origin/events.js +1 -1
- package/dist/channels/origin/origin-channel.js +1 -1
- package/dist/channels/origin/origin-webhook.js +2 -2
- package/dist/channels/slack/agentic-delivery.js +3 -3
- package/dist/channels/slack/agentic-signals.js +1 -1
- package/dist/channels/slack/api.js +5 -5
- package/dist/channels/slack/approvals.js +1 -1
- package/dist/channels/slack/attachments.js +3 -3
- package/dist/channels/slack/blocks.js +3 -3
- package/dist/channels/slack/bot-mentions.js +4 -4
- package/dist/channels/slack/channel-watch.js +4 -4
- package/dist/channels/slack/cli-project.js +3 -3
- package/dist/channels/slack/dispatch.js +1 -1
- package/dist/channels/slack/doctor.js +1 -1
- package/dist/channels/slack/eval-directive.js +1 -1
- package/dist/channels/slack/footer.js +1 -1
- package/dist/channels/slack/interactive.js +2 -2
- package/dist/channels/slack/log.d.ts.map +1 -1
- package/dist/channels/slack/log.js +1 -1
- package/dist/channels/slack/manifest.js +1 -1
- package/dist/channels/slack/nudge-carrier.js +1 -1
- package/dist/channels/slack/nudge-store.js +2 -2
- package/dist/channels/slack/recording-sink.js +6 -6
- package/dist/channels/slack/reply-options.js +6 -6
- package/dist/channels/slack/self-identity.d.ts +7 -4
- package/dist/channels/slack/self-identity.d.ts.map +1 -1
- package/dist/channels/slack/self-identity.js +17 -8
- package/dist/channels/slack/sender-name.d.ts.map +1 -1
- package/dist/channels/slack/sender-name.js +2 -6
- package/dist/channels/slack/setup.d.ts.map +1 -1
- package/dist/channels/slack/setup.js +1 -1
- package/dist/channels/slack/slack-channel.js +2 -2
- package/dist/channels/slack/socket-mode.js +2 -2
- package/dist/channels/slack/thread-context.js +8 -8
- package/dist/channels/slack/tool-cards.js +1 -1
- package/dist/channels/slack/user-info.d.ts +2 -1
- package/dist/channels/slack/user-info.d.ts.map +1 -1
- package/dist/channels/slack/user-info.js +16 -1
- package/dist/channels.js +1 -1
- package/dist/docs/404.html +3 -3
- package/dist/docs/assets/{app.DXI7bwox.js → app.CKta5zX1.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.DtlCe4t6.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BrbO5mEe.js → VPLocalSearchBox.4vRM3EDG.js} +2 -2
- package/dist/docs/assets/chunks/{arc.BOG1yms8.js → arc.CofbA8tA.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.C0hsMZnZ.js → architectureDiagram-Q4EWVU46.Mt2UV5M-.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.H044KjKs.js → baseUniq.C_W0Aqp4.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BsRW6GoB.js → blockDiagram-DXYQGD6D.dAc4goE-.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.B9HV5PFR.js → c4Diagram-AHTNJAMY.dnbRC3Dm.js} +1 -1
- package/dist/docs/assets/chunks/channel.DpljPUVU.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CPoT_ajl.js → chunk-4BX2VUAB.B42ltSTd.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DZBwWuCL.js → chunk-4TB4RGXK.2GbAul_E.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.CZ3yTiyq.js → chunk-55IACEB6.pjzY-v-B.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.6DfvHSd8.js → chunk-EDXVE4YY.BB1GXLj2.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CpBj8HfK.js → chunk-FMBD7UC4.B2WxZkoA.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.BdKo8YqS.js → chunk-OYMX7WX6.BMvb2w73.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnXNyxJx.js → chunk-QZHKN3VN.Bmu_2lNr.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.Cg1OcF8G.js → chunk-YZCP3GAM.Cth65EaC.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.DFNHq2OM.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DFNHq2OM.js +1 -0
- package/dist/docs/assets/chunks/clone.DssygCzX.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.1SP8al9c.js → cose-bilkent-S5V4N54A.CrfA7Iw_.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.DS1L6hJt.js → dagre-KV5264BT.PCD6KQDb.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.ChsausbG.js → diagram-5BDNPKRD.CGNlYlP1.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.3XsptNWj.js → diagram-G4DWMVQ6.C0cvryPD.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DPA9Dk_P.js → diagram-MMDJMWI5.DHlkZHNV.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.BVswXWrB.js → diagram-TYMM5635.DDGqH_4B.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BSak5OSP.js → erDiagram-SMLLAGMA.4gOY_C3v.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CQgN4TTz.js → flowDiagram-DWJPFMVM.8i7zsxuh.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.GrT0kA4a.js → ganttDiagram-T4ZO3ILL.BEKHYdM-.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CdS7Ucll.js → gitGraphDiagram-UUTBAWPF.ACzeLGiB.js} +1 -1
- package/dist/docs/assets/chunks/{graph.BVqKRmRo.js → graph.08C3hS6m.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.C3C9FRto.js → infoDiagram-42DDH7IO.D8R9obOH.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js → ishikawaDiagram-UXIWVN3A.CmgYpCWL.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CaHMfK4b.js → journeyDiagram-VCZTEJTY.DUzjGfoZ.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CjhIUwcA.js → kanban-definition-6JOO6SKY.DbcW2iZ0.js} +1 -1
- package/dist/docs/assets/chunks/{layout.CGU3gfSf.js → layout.BaDEpJzu.js} +1 -1
- package/dist/docs/assets/chunks/{linear.DaihpW_n.js → linear.B_zRQgCU.js} +1 -1
- package/dist/docs/assets/chunks/{min.BS-j8kHQ.js → min.BYscCdSu.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BVJ1Bbnk.js → mindmap-definition-QFDTVHPH.Ggu0jg86.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.Cz1WIv9r.js → pieDiagram-DEJITSTG.D_q4SVDT.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DKLFxcjy.js → quadrantDiagram-34T5L4WZ.D3zGj5ok.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.BHegiK7x.js → requirementDiagram-MS252O5E.DVTg7zr2.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DYkY6yPc.js → sankeyDiagram-XADWPNL6.D3X8jm57.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DYQ1QUrI.js → sequenceDiagram-FGHM5R23.Dpjai9YP.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.Iru8BsFo.js → stateDiagram-FHFEXIEX.D_AbQBuP.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CWKWRxRx.js +1 -0
- package/dist/docs/assets/chunks/{theme.DaplWQhQ.js → theme.BcgOnbZ6.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BwFA8hiX.js → timeline-definition-GMOUNBTQ.Cp3DKBe2.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CZ60W1C_.js → vennDiagram-DHZGUBPP.Bcvg-Aqu.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.CCpdcUSq.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.B69D2r8-.js → wardleyDiagram-NUSXRM2D.L0yehCc5.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CLPZEIU9.js → xychartDiagram-5P7HB3ND.Cw8-tJmw.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.Bljpve-y.js → reference_connections.md.DLrgAd5f.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.js → reference_hooks.md.B-eGa2km.js} +3 -3
- package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.lean.js → reference_hooks.md.B-eGa2km.lean.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.js → reference_sessions.md.CyM7ARz1.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.v3SXVSs_.js → reference_tools.md.DzIY9JzY.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.v3SXVSs_.lean.js → reference_tools.md.DzIY9JzY.lean.js} +1 -1
- package/dist/docs/assets/{style.C130MVnH.css → style.Dwls12uf.css} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/deployment.html +37 -37
- package/dist/docs/evals.html +37 -37
- package/dist/docs/guides/agent-to-agent.html +37 -37
- package/dist/docs/guides/bitbucket.html +37 -37
- package/dist/docs/guides/cloud-agents.html +37 -37
- package/dist/docs/guides/convert-automation.html +37 -37
- package/dist/docs/guides/github.html +37 -37
- package/dist/docs/guides/gitlab.html +37 -37
- package/dist/docs/guides/grokbot-agents.html +37 -37
- package/dist/docs/guides/hooks.html +37 -37
- package/dist/docs/guides/improve.html +37 -37
- package/dist/docs/guides/jev.html +37 -37
- package/dist/docs/guides/mcp-oauth.html +37 -37
- package/dist/docs/guides/migrate.html +37 -37
- package/dist/docs/guides/opentelemetry.html +37 -37
- package/dist/docs/guides/slack.html +37 -37
- package/dist/docs/guides/webhooks.html +37 -37
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +37 -37
- package/dist/docs/index.html +37 -37
- package/dist/docs/llms-full.txt +15 -2
- package/dist/docs/quickstart.html +37 -37
- package/dist/docs/reference/agent-config.html +37 -37
- package/dist/docs/reference/artifacts.html +37 -37
- package/dist/docs/reference/channels.html +37 -37
- package/dist/docs/reference/cli.html +37 -37
- package/dist/docs/reference/connections.html +39 -39
- package/dist/docs/reference/connections.md +2 -1
- package/dist/docs/reference/evals.html +37 -37
- package/dist/docs/reference/extensions.html +37 -37
- package/dist/docs/reference/hooks.html +39 -39
- package/dist/docs/reference/hooks.md +1 -0
- package/dist/docs/reference/http-api.html +37 -37
- package/dist/docs/reference/instructions.html +37 -37
- package/dist/docs/reference/playground.html +36 -36
- package/dist/docs/reference/project-layout.html +37 -37
- package/dist/docs/reference/prompt.html +37 -37
- package/dist/docs/reference/schedules.html +37 -37
- package/dist/docs/reference/sessions.html +37 -37
- package/dist/docs/reference/sessions.md +1 -1
- package/dist/docs/reference/skills.html +37 -37
- package/dist/docs/reference/subagents.html +37 -37
- package/dist/docs/reference/tools.html +39 -39
- package/dist/docs/reference/tools.md +11 -0
- package/dist/docs/templates/agentic-owners.html +37 -37
- package/dist/docs/templates/grokbot-agents.html +37 -37
- package/dist/docs/templates/security-reviewer.html +37 -37
- package/dist/docs/templates/thermo-quality-review.html +37 -37
- package/dist/docs/templates/thermo-review.html +37 -37
- package/dist/docs/templates/triage.html +37 -37
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/evals/assertions.d.ts.map +1 -1
- package/dist/evals/assertions.js +21 -19
- package/dist/evals/expect.js +1 -1
- package/dist/evals/judge.js +1 -1
- package/dist/evals/reporters.js +8 -8
- package/dist/evals/run-facts.js +2 -2
- package/dist/evals.js +6 -6
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +16 -0
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +44 -3
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts +23 -0
- package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/launch-agent.js +32 -0
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +2 -2
- package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -2
- package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/watch.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -8
- package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/extension.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +4 -4
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
- package/dist/extensions/improve/skills/yourself.js +1 -1
- package/dist/extensions/jev/extension.js +2 -2
- package/dist/extensions/jev/tools/evaluate.js +1 -1
- package/dist/extensions/slack-communication/tools/react.js +1 -1
- package/dist/files-backends/cursor-hosted.js +8 -8
- package/dist/files-backends/local-fs.js +1 -1
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +15 -15
- package/dist/internal/advertise-tools.d.ts +3 -2
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +11 -9
- package/dist/internal/approval-gate.js +1 -1
- package/dist/internal/artifacts-store.js +13 -13
- package/dist/internal/as-of.js +2 -2
- package/dist/internal/authored-alias-hooks.js +1 -1
- package/dist/internal/builtin-tools/reminders.js +2 -2
- package/dist/internal/chat-client.js +5 -5
- package/dist/internal/cli-ax.js +14 -14
- package/dist/internal/cli-bitbucket.js +10 -10
- package/dist/internal/cli-convert-automation.js +2 -2
- package/dist/internal/cli-cursor.js +2 -2
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +40 -40
- package/dist/internal/cli-docs.js +5 -5
- package/dist/internal/cli-github.js +15 -15
- package/dist/internal/cli-gitlab.js +10 -10
- package/dist/internal/cli-images.js +16 -16
- package/dist/internal/cli-manifest.js +1 -1
- package/dist/internal/cli-mcp-oauth.js +5 -5
- package/dist/internal/cli-mcp.js +3 -3
- package/dist/internal/cli-migrate.js +1 -1
- package/dist/internal/cli-skills.js +2 -2
- package/dist/internal/cli-slack.js +5 -5
- package/dist/internal/cloud-turn-cost.js +1 -1
- package/dist/internal/continuation-identity.js +6 -6
- package/dist/internal/conversation-mirror.js +5 -5
- package/dist/internal/convert-automation/convert-workflow.js +24 -24
- package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
- package/dist/internal/cursor/account-mcp.js +20 -20
- package/dist/internal/cursor/backend-client.js +6 -6
- package/dist/internal/cursor/credentials.js +1 -1
- package/dist/internal/cursor/store-api-client.js +1 -1
- package/dist/internal/cursor-account-mcp-auth.js +9 -9
- package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
- package/dist/internal/cursor-deployment-relay.js +9 -9
- package/dist/internal/cursor-event-relay.js +10 -10
- package/dist/internal/cursor-relay-core.js +2 -2
- package/dist/internal/deploy-manifest.js +10 -10
- package/dist/internal/discovery/agent-config.js +2 -2
- package/dist/internal/discovery/agent.js +6 -6
- package/dist/internal/discovery/connections.js +5 -5
- package/dist/internal/discovery/cursor-plugin.js +12 -12
- package/dist/internal/discovery/extension-overlay.js +3 -3
- package/dist/internal/discovery/extensions.js +6 -6
- package/dist/internal/discovery/info.js +9 -9
- package/dist/internal/discovery/instructions.js +1 -1
- package/dist/internal/discovery/project.js +3 -3
- package/dist/internal/discovery/services.js +1 -1
- package/dist/internal/discovery/tools.js +1 -1
- package/dist/internal/docs-site.js +2 -2
- package/dist/internal/env-file.js +1 -1
- package/dist/internal/eval-run-store.js +7 -7
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +14 -14
- package/dist/internal/eval-transport.js +1 -1
- package/dist/internal/evals-client.js +4 -4
- package/dist/internal/event-log.js +8 -8
- package/dist/internal/event-mapper.js +13 -13
- package/dist/internal/expected-delivery-failure.js +2 -2
- package/dist/internal/filesystem/format.js +2 -2
- package/dist/internal/filesystem/nearest.js +3 -3
- package/dist/internal/filesystem/scratch.js +3 -3
- package/dist/internal/filesystem/tools.js +6 -6
- package/dist/internal/filesystem/walk.d.ts.map +1 -1
- package/dist/internal/filesystem/walk.js +2 -2
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +6 -5
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +4 -2
- package/dist/internal/github-fanout.d.ts.map +1 -1
- package/dist/internal/github-fanout.js +3 -3
- package/dist/internal/guest-network.js +4 -4
- package/dist/internal/host-files.js +1 -1
- package/dist/internal/host-kv.js +2 -2
- package/dist/internal/hosted-catch-protocol.js +1 -1
- package/dist/internal/hosted-catch.js +1 -1
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +14 -14
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +23 -9
- package/dist/internal/hosted-eval-cases.js +4 -4
- package/dist/internal/hosted-execution-diag.js +3 -3
- package/dist/internal/hosting.js +1 -1
- package/dist/internal/http-channel.js +1 -1
- package/dist/internal/http-control-plane-session.js +2 -2
- package/dist/internal/init-interview.js +7 -7
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +12 -12
- package/dist/internal/inline-stdio-mcp.js +2 -2
- package/dist/internal/install-cursor-skills.js +11 -11
- package/dist/internal/json-schema.js +1 -1
- package/dist/internal/local-control-plane.js +3 -3
- package/dist/internal/local-env.js +3 -3
- package/dist/internal/log-ring.js +1 -1
- package/dist/internal/logs-client.js +1 -1
- package/dist/internal/mcp-endpoint.js +8 -8
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +5 -5
- package/dist/internal/mcp-oauth-on-demand.js +3 -3
- package/dist/internal/mcp-oauth.js +5 -5
- package/dist/internal/net.js +2 -2
- package/dist/internal/otel/config.js +3 -3
- package/dist/internal/otel/runtime.js +13 -13
- package/dist/internal/peer-connections.js +2 -2
- package/dist/internal/persistent-stage-log-mirror.d.ts +57 -0
- package/dist/internal/persistent-stage-log-mirror.d.ts.map +1 -0
- package/dist/internal/persistent-stage-log-mirror.js +231 -0
- package/dist/internal/platform-schedule-sync.js +1 -1
- package/dist/internal/platform-timers.js +1 -1
- package/dist/internal/playground/static.js +2 -2
- package/dist/internal/playground/toolchain.js +2 -2
- package/dist/internal/playground-proxy.js +3 -3
- package/dist/internal/process-memory-telemetry.js +1 -1
- package/dist/internal/reminder-runner.d.ts +1 -1
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +14 -16
- package/dist/internal/reminder-store.js +1 -1
- package/dist/internal/resolved-connections.js +8 -8
- package/dist/internal/router.js +4 -4
- package/dist/internal/run-client.js +2 -2
- package/dist/internal/schedule-runner.js +6 -6
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +6 -6
- package/dist/internal/serve-restart.js +1 -1
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +93 -72
- package/dist/internal/session-cost.js +3 -3
- package/dist/internal/session-engine.d.ts +8 -0
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +183 -118
- package/dist/internal/session-live-publisher.d.ts +46 -0
- package/dist/internal/session-live-publisher.d.ts.map +1 -0
- package/dist/internal/session-live-publisher.js +352 -0
- package/dist/internal/session-run-log.js +6 -6
- package/dist/internal/sessions-client.js +3 -3
- package/dist/internal/skill-catalog.js +2 -2
- package/dist/internal/sleep.js +1 -1
- package/dist/internal/start-log-store.d.ts +5 -1
- package/dist/internal/start-log-store.d.ts.map +1 -1
- package/dist/internal/start-log-store.js +5 -3
- package/dist/internal/storage-coordinator.js +12 -12
- package/dist/internal/store-api-protocol.d.ts +51 -0
- package/dist/internal/store-api-protocol.d.ts.map +1 -1
- package/dist/internal/store-api-protocol.js +39 -2
- package/dist/internal/store-mirror.js +4 -4
- package/dist/internal/stream-progress.d.ts.map +1 -1
- package/dist/internal/stream-progress.js +4 -0
- package/dist/internal/terminal-style.js +2 -2
- package/dist/internal/tool-call-retry.d.ts +87 -0
- package/dist/internal/tool-call-retry.d.ts.map +1 -0
- package/dist/internal/tool-call-retry.js +387 -0
- package/dist/internal/tool-result.js +3 -3
- package/dist/internal/trajectory.js +7 -7
- package/dist/internal/turn-governor.js +2 -2
- package/dist/internal/turn-outbox.js +1 -1
- package/dist/internal/update-check.d.ts.map +1 -1
- package/dist/internal/update-check.js +4 -2
- package/dist/internal/v2-hosting.d.ts +6 -0
- package/dist/internal/v2-hosting.d.ts.map +1 -1
- package/dist/internal/v2-hosting.js +7 -1
- package/dist/internal/workspace.js +4 -4
- package/dist/kv/memory-kv.js +3 -3
- package/dist/playground/assets/{index-Be0-1hw2.js → index-HN5lOuAX.js} +42 -42
- package/dist/playground/assets/index-JY1wKCMg.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/prompt.js +1 -1
- package/dist/storage-backends/cursor-hosted-v2.js +2 -2
- package/dist/storage-backends/file-kv.js +7 -7
- package/dist/storage-protocol.d.ts +7 -0
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +7 -0
- package/dist/storage.js +3 -3
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -4
- package/docs/reference/connections.md +2 -1
- package/docs/reference/hooks.md +1 -0
- package/docs/reference/sessions.md +1 -1
- package/docs/reference/tools.md +11 -0
- package/package.json +6 -6
- package/templates/agentic-owners/bot/channels/github.ts +2 -2
- package/templates/agentic-owners/bot/lib/github.ts +7 -5
- package/templates/agentic-owners/bot/lib/owners/decision.ts +9 -9
- package/templates/agentic-owners/bot/lib/owners/handles.ts +2 -2
- package/templates/agentic-owners/bot/lib/owners/match.ts +5 -3
- package/templates/agentic-owners/bot/lib/owners/matching.ts +1 -1
- package/templates/agentic-owners/bot/lib/owners/parse.ts +4 -4
- package/templates/agentic-owners/bot/lib/owners/prompt.ts +1 -1
- package/templates/agentic-owners/bot/lib/review.ts +18 -17
- package/templates/agentic-owners/evals/owners.eval.ts +2 -2
- package/templates/agents-md/bot/lib/collect.ts +6 -6
- package/templates/agents-md/bot/lib/config.ts +1 -1
- package/templates/agents-md/bot/tools/apply_agents.ts +4 -4
- package/templates/code-wiki/bot/channels/github.ts +3 -3
- package/templates/code-wiki/bot/lib/repos.ts +1 -1
- package/templates/code-wiki/bot/tools/apply_wiki.ts +2 -2
- package/templates/demo/bot/lib/collect.ts +1 -1
- package/templates/demo/bot/lib/repos.ts +1 -1
- package/templates/demo/bot/tools/record_demo.ts +1 -1
- package/templates/pr-autofixer/bot/channels/github.ts +2 -2
- package/templates/pr-autofixer/bot/lib/merge-watch.ts +2 -2
- package/templates/pr-autofixer/bot/lib/repos.ts +2 -2
- package/templates/pr-autofixer/bot/lib/webhook-routing.ts +1 -1
- package/templates/security-help/bot/lib/repos.ts +1 -1
- package/templates/security-reviewer/bot/lib/repos.ts +1 -1
- package/templates/triage/bot/lib/actuate.ts +15 -15
- package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +0 -1
- package/dist/docs/assets/chunks/channel.CBwrU9rP.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +0 -1
- package/dist/docs/assets/chunks/clone.BTvFyY1a.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +0 -162
- package/dist/playground/assets/index-Clz6uHj9.css +0 -1
- /package/dist/docs/assets/{reference_connections.md.Bljpve-y.lean.js → reference_connections.md.DLrgAd5f.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.lean.js → reference_sessions.md.CyM7ARz1.lean.js} +0 -0
|
@@ -21,12 +21,12 @@ const PLUGIN_ROOT_VARIABLES = new Set(["CURSOR_PLUGIN_ROOT", "CLAUDE_PLUGIN_ROOT
|
|
|
21
21
|
/** A component slot's declaration: one directory or a list of paths. */
|
|
22
22
|
const pathsSchema = z
|
|
23
23
|
.union([z.string(), z.array(z.string())])
|
|
24
|
-
.transform(value => (typeof value === "string" ? [value] : value));
|
|
24
|
+
.transform((value) => (typeof value === "string" ? [value] : value));
|
|
25
25
|
/** A blank or null value reads as absent, as a missing key would. */
|
|
26
26
|
const text = z
|
|
27
27
|
.string()
|
|
28
28
|
.nullish()
|
|
29
|
-
.transform(value => value === undefined || value === null || value.trim() === "" ? undefined : value);
|
|
29
|
+
.transform((value) => value === undefined || value === null || value.trim() === "" ? undefined : value);
|
|
30
30
|
const manifestSchema = z.object({
|
|
31
31
|
description: text.optional(),
|
|
32
32
|
skills: pathsSchema.optional(),
|
|
@@ -41,11 +41,11 @@ const manifestSchema = z.object({
|
|
|
41
41
|
z.array(z.union([z.string(), z.record(z.unknown())])),
|
|
42
42
|
])
|
|
43
43
|
.optional()
|
|
44
|
-
.transform(value => {
|
|
44
|
+
.transform((value) => {
|
|
45
45
|
const items = value === undefined || Array.isArray(value) ? (value ?? []) : [value];
|
|
46
46
|
return {
|
|
47
|
-
paths: items.filter(item => typeof item === "string"),
|
|
48
|
-
inline: items.filter(item => typeof item !== "string"),
|
|
47
|
+
paths: items.filter((item) => typeof item === "string"),
|
|
48
|
+
inline: items.filter((item) => typeof item !== "string"),
|
|
49
49
|
};
|
|
50
50
|
}),
|
|
51
51
|
});
|
|
@@ -84,7 +84,7 @@ export async function readCursorPlugin(ctx, root, mountPath, variables, overlaid
|
|
|
84
84
|
};
|
|
85
85
|
const skills = await loadPluginSkills(plugin, manifest.data.skills);
|
|
86
86
|
for (const command of await loadPluginCommands(plugin, manifest.data.commands)) {
|
|
87
|
-
if (skills.some(skill => skill.name === command.name)) {
|
|
87
|
+
if (skills.some((skill) => skill.name === command.name)) {
|
|
88
88
|
ctx.diagnostics.push({
|
|
89
89
|
severity: "warning",
|
|
90
90
|
path: displayPath(ctx, root),
|
|
@@ -170,7 +170,7 @@ async function loadPluginSkills(plugin, declared) {
|
|
|
170
170
|
const skills = [];
|
|
171
171
|
for (const dir of dirs) {
|
|
172
172
|
const skill = await readSkillDir(plugin, dir);
|
|
173
|
-
if (skill !== undefined && !skills.some(s => s.name === skill.name)) {
|
|
173
|
+
if (skill !== undefined && !skills.some((s) => s.name === skill.name)) {
|
|
174
174
|
skills.push(skill);
|
|
175
175
|
}
|
|
176
176
|
}
|
|
@@ -226,7 +226,7 @@ async function loadPluginAgents(plugin, declared) {
|
|
|
226
226
|
for (const path of await componentFiles(plugin, declared, "agents", MARKDOWN_EXTENSIONS)) {
|
|
227
227
|
const { data, body } = await readMarkdown(plugin, path);
|
|
228
228
|
const name = componentName(plugin, data.name ?? fileStem(path), path);
|
|
229
|
-
if (name === undefined || agents.some(agent => agent.name === name)) {
|
|
229
|
+
if (name === undefined || agents.some((agent) => agent.name === name)) {
|
|
230
230
|
continue;
|
|
231
231
|
}
|
|
232
232
|
if (isBlank(body)) {
|
|
@@ -311,7 +311,7 @@ function mcpServersOf(data) {
|
|
|
311
311
|
}
|
|
312
312
|
function serverConnection(plugin, name, raw, path) {
|
|
313
313
|
const unresolved = new Set();
|
|
314
|
-
const expanded = expandPlaceholders(raw, key => {
|
|
314
|
+
const expanded = expandPlaceholders(raw, (key) => {
|
|
315
315
|
if (PLUGIN_ROOT_VARIABLES.has(key)) {
|
|
316
316
|
return plugin.root;
|
|
317
317
|
}
|
|
@@ -321,7 +321,7 @@ function serverConnection(plugin, name, raw, path) {
|
|
|
321
321
|
plugin.ctx.diagnostics.push({
|
|
322
322
|
severity: "error",
|
|
323
323
|
path: displayPath(plugin.ctx, path),
|
|
324
|
-
message: `MCP server "${name}" needs ${[...unresolved].map(v => `\${${v}}`).join(", ")}. Pass it in cursorPlugin({ variables }) or set it in the environment.`,
|
|
324
|
+
message: `MCP server "${name}" needs ${[...unresolved].map((v) => `\${${v}}`).join(", ")}. Pass it in cursorPlugin({ variables }) or set it in the environment.`,
|
|
325
325
|
});
|
|
326
326
|
return undefined;
|
|
327
327
|
}
|
|
@@ -395,7 +395,7 @@ function expandPlaceholders(value, lookup, unresolved) {
|
|
|
395
395
|
});
|
|
396
396
|
}
|
|
397
397
|
if (Array.isArray(value)) {
|
|
398
|
-
return value.map(item => expandPlaceholders(item, lookup, unresolved));
|
|
398
|
+
return value.map((item) => expandPlaceholders(item, lookup, unresolved));
|
|
399
399
|
}
|
|
400
400
|
if (isRecord(value)) {
|
|
401
401
|
const out = {};
|
|
@@ -433,7 +433,7 @@ async function componentFiles(plugin, declared, folder, extensions) {
|
|
|
433
433
|
files.push(path);
|
|
434
434
|
}
|
|
435
435
|
}
|
|
436
|
-
return files.filter(file => extensions.has(extname(file)));
|
|
436
|
+
return files.filter((file) => extensions.has(extname(file)));
|
|
437
437
|
}
|
|
438
438
|
/** Manifest paths resolve against the plugin root; escaping ones are refused, as in Cursor. */
|
|
439
439
|
function declaredPaths(plugin, declared) {
|
|
@@ -34,13 +34,13 @@ export async function overlaySlot(ctx, site, contributed, entries, slot) {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
export async function overlaySkills(ctx, site, contributed, dir) {
|
|
37
|
-
await overlayNamed(ctx, site, contributed, dir, "disableSkill", onDisable => loadSkills(ctx, dir, onDisable));
|
|
37
|
+
await overlayNamed(ctx, site, contributed, dir, "disableSkill", (onDisable) => loadSkills(ctx, dir, onDisable));
|
|
38
38
|
}
|
|
39
39
|
export async function overlayHooks(ctx, site, contributed, dir) {
|
|
40
|
-
await overlayNamed(ctx, site, contributed, dir, "disableHook", onDisable => loadHooks(ctx, dir, onDisable));
|
|
40
|
+
await overlayNamed(ctx, site, contributed, dir, "disableHook", (onDisable) => loadHooks(ctx, dir, onDisable));
|
|
41
41
|
}
|
|
42
42
|
export async function overlaySchedules(ctx, site, contributed, dir) {
|
|
43
|
-
await overlayNamed(ctx, site, contributed, dir, "disableSchedule", onDisable => loadSchedules(ctx, dir, onDisable));
|
|
43
|
+
await overlayNamed(ctx, site, contributed, dir, "disableSchedule", (onDisable) => loadSchedules(ctx, dir, onDisable));
|
|
44
44
|
}
|
|
45
45
|
export async function overlayChannels(ctx, site, contributed, dir) {
|
|
46
46
|
if (!(await isDirectory(dir))) {
|
|
@@ -38,7 +38,7 @@ export async function appendExtensions(ctx, extensionsDir, into) {
|
|
|
38
38
|
if (site === undefined) {
|
|
39
39
|
continue;
|
|
40
40
|
}
|
|
41
|
-
if (extensions.some(extension => extension.name === site.ns)) {
|
|
41
|
+
if (extensions.some((extension) => extension.name === site.ns)) {
|
|
42
42
|
ctx.diagnostics.push({
|
|
43
43
|
severity: "error",
|
|
44
44
|
path: displayPath(ctx, path),
|
|
@@ -129,7 +129,7 @@ async function mountExtension(ctx, site, mount, into) {
|
|
|
129
129
|
for (const agent of tree.agents) {
|
|
130
130
|
subagents.set(agent.name, subagent(agent.name, agent));
|
|
131
131
|
}
|
|
132
|
-
const seedFiles = new Map(tree.seedFiles.map(seed => [seed.relativePath, seed]));
|
|
132
|
+
const seedFiles = new Map(tree.seedFiles.map((seed) => [seed.relativePath, seed]));
|
|
133
133
|
let artifacts = tree.artifacts;
|
|
134
134
|
let instructions = tree.instructions;
|
|
135
135
|
if (site.overlayDir !== undefined) {
|
|
@@ -231,7 +231,7 @@ async function mountExtension(ctx, site, mount, into) {
|
|
|
231
231
|
mounted.instructions = true;
|
|
232
232
|
}
|
|
233
233
|
for (const seed of seedFiles.values()) {
|
|
234
|
-
if (into.seedFiles.some(existing => existing.relativePath === seed.relativePath)) {
|
|
234
|
+
if (into.seedFiles.some((existing) => existing.relativePath === seed.relativePath)) {
|
|
235
235
|
ctx.diagnostics.push({
|
|
236
236
|
severity: "warning",
|
|
237
237
|
path: displayPath(ctx, seed.sourcePath),
|
|
@@ -272,7 +272,7 @@ async function readExtensionTree(ctx, site, mount, root) {
|
|
|
272
272
|
const connectionOverlay = site.overlayDir === undefined
|
|
273
273
|
? []
|
|
274
274
|
: await moduleEntries(ctx, join(site.overlayDir, "mcp-connections"), "connection");
|
|
275
|
-
const plugin = await readCursorPlugin(ctx, root, site.mountPath, mount.extension.variables, new Set(connectionOverlay.map(entry => entry.name)));
|
|
275
|
+
const plugin = await readCursorPlugin(ctx, root, site.mountPath, mount.extension.variables, new Set(connectionOverlay.map((entry) => entry.name)));
|
|
276
276
|
if (plugin === undefined) {
|
|
277
277
|
return undefined;
|
|
278
278
|
}
|
|
@@ -323,10 +323,10 @@ function namespaceSubagent(composed, child) {
|
|
|
323
323
|
};
|
|
324
324
|
}
|
|
325
325
|
function byName(items) {
|
|
326
|
-
return new Map(items.map(item => [item.name, item]));
|
|
326
|
+
return new Map(items.map((item) => [item.name, item]));
|
|
327
327
|
}
|
|
328
328
|
function byId(items) {
|
|
329
|
-
return new Map(items.map(item => [item.id, item]));
|
|
329
|
+
return new Map(items.map((item) => [item.id, item]));
|
|
330
330
|
}
|
|
331
331
|
/**
|
|
332
332
|
* Agent-singleton slots: one runtime (`agent.ts`), one storage backend,
|
|
@@ -54,7 +54,7 @@ export function projectInfo(project) {
|
|
|
54
54
|
? `${agent.instructions.slice(0, 277)}...`
|
|
55
55
|
: agent.instructions,
|
|
56
56
|
},
|
|
57
|
-
tools: agent.tools.map(tool => ({
|
|
57
|
+
tools: agent.tools.map((tool) => ({
|
|
58
58
|
name: tool.name,
|
|
59
59
|
description: tool.description,
|
|
60
60
|
execution: tool.execution,
|
|
@@ -62,12 +62,12 @@ export function projectInfo(project) {
|
|
|
62
62
|
effect: tool.effect,
|
|
63
63
|
inputSchema: tool.inputSchema,
|
|
64
64
|
})),
|
|
65
|
-
skills: agent.skills.map(skill => ({
|
|
65
|
+
skills: agent.skills.map((skill) => ({
|
|
66
66
|
name: skill.name,
|
|
67
67
|
description: skill.description,
|
|
68
68
|
})),
|
|
69
69
|
extensions: agent.extensions ?? [],
|
|
70
|
-
connections: agent.connections.map(connection => ({
|
|
70
|
+
connections: agent.connections.map((connection) => ({
|
|
71
71
|
name: connection.name,
|
|
72
72
|
transport: connectionTransportLabel(connection.transport),
|
|
73
73
|
advertiseTools: connection.advertiseTools,
|
|
@@ -77,17 +77,17 @@ export function projectInfo(project) {
|
|
|
77
77
|
disallowedTools: connection.disallowedTools,
|
|
78
78
|
cursorAccountServers: "cursorAccount" in connection.transport ? (connection.transport.servers ?? "*") : undefined,
|
|
79
79
|
})),
|
|
80
|
-
subagents: agent.subagents.map(subagent => ({
|
|
80
|
+
subagents: agent.subagents.map((subagent) => ({
|
|
81
81
|
name: subagent.name,
|
|
82
82
|
description: subagent.description,
|
|
83
83
|
model: subagent.model,
|
|
84
84
|
})),
|
|
85
85
|
channels: [
|
|
86
86
|
{ id: "http", routes: httpRoutes },
|
|
87
|
-
...project.channels.map(channel => {
|
|
87
|
+
...project.channels.map((channel) => {
|
|
88
88
|
const info = {
|
|
89
89
|
id: channel.id,
|
|
90
|
-
routes: (channel.definition.routes ?? []).map(r => {
|
|
90
|
+
routes: (channel.definition.routes ?? []).map((r) => {
|
|
91
91
|
const routeInfo = {
|
|
92
92
|
method: r.method,
|
|
93
93
|
path: r.path,
|
|
@@ -136,17 +136,17 @@ export function projectInfo(project) {
|
|
|
136
136
|
return info;
|
|
137
137
|
}),
|
|
138
138
|
],
|
|
139
|
-
schedules: project.schedules.map(schedule => ({
|
|
139
|
+
schedules: project.schedules.map((schedule) => ({
|
|
140
140
|
name: schedule.name,
|
|
141
141
|
cron: schedule.cron,
|
|
142
142
|
kind: schedule.kind,
|
|
143
143
|
})),
|
|
144
144
|
reminders: (project.reminders ?? []).length === 0
|
|
145
145
|
? undefined
|
|
146
|
-
: (project.reminders ?? []).map(reminder => ({
|
|
146
|
+
: (project.reminders ?? []).map((reminder) => ({
|
|
147
147
|
name: reminder.name,
|
|
148
148
|
})),
|
|
149
|
-
hooks: project.hooks.map(hook => hook.name),
|
|
149
|
+
hooks: project.hooks.map((hook) => hook.name),
|
|
150
150
|
storage: project.storage === undefined ? undefined : { name: project.storage.name },
|
|
151
151
|
artifacts: project.artifacts === undefined
|
|
152
152
|
? undefined
|
|
@@ -40,7 +40,7 @@ export async function loadInstructions(ctx, agentDir, config, isRoot) {
|
|
|
40
40
|
if (config?.instructions !== undefined && !isBlank(config.instructions)) {
|
|
41
41
|
parts.push(config.instructions.trim());
|
|
42
42
|
}
|
|
43
|
-
const combined = parts.filter(part => part !== "").join("\n\n");
|
|
43
|
+
const combined = parts.filter((part) => part !== "").join("\n\n");
|
|
44
44
|
if (combined === "") {
|
|
45
45
|
if (isRoot) {
|
|
46
46
|
ctx.diagnostics.push({
|
|
@@ -167,7 +167,7 @@ export async function loadAgentProject(dir, options = {}) {
|
|
|
167
167
|
});
|
|
168
168
|
const { channels, httpChannelDefinition } = await loadChannels(ctx, join(agentDir, "channels"));
|
|
169
169
|
for (const channel of projectSlots.channels) {
|
|
170
|
-
if (channel.id === "http" || channels.some(c => c.id === channel.id)) {
|
|
170
|
+
if (channel.id === "http" || channels.some((c) => c.id === channel.id)) {
|
|
171
171
|
ctx.diagnostics.push({
|
|
172
172
|
severity: "error",
|
|
173
173
|
path: displayPath(ctx, join(agentDir, "extensions")),
|
|
@@ -256,11 +256,11 @@ async function mergeProjectArtifacts(ctx, agentDir, extra) {
|
|
|
256
256
|
}
|
|
257
257
|
/** True when the project has diagnostics that must block serving. */
|
|
258
258
|
export function hasErrorDiagnostics(project) {
|
|
259
|
-
return project.diagnostics.some(d => d.severity === "error");
|
|
259
|
+
return project.diagnostics.some((d) => d.severity === "error");
|
|
260
260
|
}
|
|
261
261
|
export function formatDiagnostics(diagnostics) {
|
|
262
262
|
return diagnostics
|
|
263
|
-
.map(d => {
|
|
263
|
+
.map((d) => {
|
|
264
264
|
const location = d.path === undefined ? "" : ` (${d.path})`;
|
|
265
265
|
return `${d.severity}: ${d.message}${location}`;
|
|
266
266
|
})
|
|
@@ -104,7 +104,7 @@ export async function appendArtifactTool(ctx, agentDir, agent, artifacts) {
|
|
|
104
104
|
return;
|
|
105
105
|
}
|
|
106
106
|
const artifactsPath = displayPath(ctx, (await findModuleFile(agentDir, "artifacts")) ?? join(agentDir, "artifacts.ts"));
|
|
107
|
-
if (agent.tools.some(t => t.name === TAG_ARTIFACT_TOOL_NAME)) {
|
|
107
|
+
if (agent.tools.some((t) => t.name === TAG_ARTIFACT_TOOL_NAME)) {
|
|
108
108
|
ctx.diagnostics.push({
|
|
109
109
|
severity: "warning",
|
|
110
110
|
path: artifactsPath,
|
|
@@ -129,7 +129,7 @@ export function appendBuiltinTools(ctx, agentDir, tools, config) {
|
|
|
129
129
|
}
|
|
130
130
|
const agentPath = displayPath(ctx, join(agentDir, "agent.ts"));
|
|
131
131
|
for (const tool of builtin) {
|
|
132
|
-
const existing = tools.find(t => t.name === tool.name);
|
|
132
|
+
const existing = tools.find((t) => t.name === tool.name);
|
|
133
133
|
if (existing !== undefined) {
|
|
134
134
|
const owner = existing.extension === undefined ? "Authored" : `Extension "${existing.extension}"`;
|
|
135
135
|
ctx.diagnostics.push({
|
|
@@ -86,7 +86,7 @@ export function docsSiteExists(distDir = docsDistDir()) {
|
|
|
86
86
|
export function resolveDocsFile(requestPath, distDir = docsDistDir()) {
|
|
87
87
|
const decoded = requestPath
|
|
88
88
|
.split("/")
|
|
89
|
-
.filter(part => part !== "")
|
|
89
|
+
.filter((part) => part !== "")
|
|
90
90
|
.join("/");
|
|
91
91
|
const normalized = normalize(decoded === "" ? "." : decoded);
|
|
92
92
|
if (normalized.startsWith("..") || normalized.includes(`..${sep}`)) {
|
|
@@ -161,7 +161,7 @@ export async function ensureDocsSiteBundle(logger = console.log) {
|
|
|
161
161
|
stdio: "inherit",
|
|
162
162
|
});
|
|
163
163
|
child.on("error", reject);
|
|
164
|
-
child.on("exit", exitCode => resolve(exitCode ?? 1));
|
|
164
|
+
child.on("exit", (exitCode) => resolve(exitCode ?? 1));
|
|
165
165
|
});
|
|
166
166
|
if (code !== 0) {
|
|
167
167
|
throw new Error(`docs vitepress build failed (exit ${code})`);
|
|
@@ -62,7 +62,7 @@ export async function ensureEnvLocalGitignored(dir) {
|
|
|
62
62
|
const existing = await readOptionalFile(path);
|
|
63
63
|
const covered = existing
|
|
64
64
|
.split(/\r?\n/)
|
|
65
|
-
.some(line => /^\.env(\.local\*?|\.\*|\*)$/.test(line.trim()));
|
|
65
|
+
.some((line) => /^\.env(\.local\*?|\.\*|\*)$/.test(line.trim()));
|
|
66
66
|
if (covered) {
|
|
67
67
|
return false;
|
|
68
68
|
}
|
|
@@ -29,7 +29,7 @@ export class EvalRunStore {
|
|
|
29
29
|
await this.hydrate();
|
|
30
30
|
const { evals, config } = await discoverEvals(this.projectRoot);
|
|
31
31
|
return {
|
|
32
|
-
evals: evals.map(e => ({
|
|
32
|
+
evals: evals.map((e) => ({
|
|
33
33
|
id: e.id,
|
|
34
34
|
fileId: e.fileId,
|
|
35
35
|
...(e.definition.description === undefined
|
|
@@ -86,7 +86,7 @@ export class EvalRunStore {
|
|
|
86
86
|
throw new EvalRunEmptyError();
|
|
87
87
|
}
|
|
88
88
|
const runId = `evalrun_${randomUUID().replace(/-/g, "").slice(0, 16)}`;
|
|
89
|
-
const cases = selected.map(e => discoveredToPending(e));
|
|
89
|
+
const cases = selected.map((e) => discoveredToPending(e));
|
|
90
90
|
const snapshot = {
|
|
91
91
|
runId,
|
|
92
92
|
status: "running",
|
|
@@ -259,12 +259,12 @@ export class EvalRunStore {
|
|
|
259
259
|
...(opts.bearerToken === undefined ? {} : { bearerToken: opts.bearerToken }),
|
|
260
260
|
...(opts.verbose === undefined ? {} : { verbose: opts.verbose }),
|
|
261
261
|
...(opts.timeoutMs === undefined ? {} : { timeoutMs: opts.timeoutMs }),
|
|
262
|
-
onCaseStart: id => {
|
|
262
|
+
onCaseStart: (id) => {
|
|
263
263
|
const run = this.runs.get(runId);
|
|
264
264
|
if (run === undefined || run.status === "cancelled") {
|
|
265
265
|
return;
|
|
266
266
|
}
|
|
267
|
-
const c = run.cases.find(x => x.id === id);
|
|
267
|
+
const c = run.cases.find((x) => x.id === id);
|
|
268
268
|
if (c !== undefined) {
|
|
269
269
|
c.status = "running";
|
|
270
270
|
c.inputs = [];
|
|
@@ -281,7 +281,7 @@ export class EvalRunStore {
|
|
|
281
281
|
if (run === undefined) {
|
|
282
282
|
return;
|
|
283
283
|
}
|
|
284
|
-
const c = run.cases.find(x => x.id === id);
|
|
284
|
+
const c = run.cases.find((x) => x.id === id);
|
|
285
285
|
if (c === undefined) {
|
|
286
286
|
return;
|
|
287
287
|
}
|
|
@@ -300,7 +300,7 @@ export class EvalRunStore {
|
|
|
300
300
|
c.finalText = event.data.text;
|
|
301
301
|
}
|
|
302
302
|
},
|
|
303
|
-
onCaseDone: result => {
|
|
303
|
+
onCaseDone: (result) => {
|
|
304
304
|
this.applyCaseResult(runId, result);
|
|
305
305
|
const run = this.runs.get(runId);
|
|
306
306
|
if (run !== undefined) {
|
|
@@ -347,7 +347,7 @@ export class EvalRunStore {
|
|
|
347
347
|
if (run === undefined) {
|
|
348
348
|
return;
|
|
349
349
|
}
|
|
350
|
-
const c = run.cases.find(x => x.id === result.id);
|
|
350
|
+
const c = run.cases.find((x) => x.id === result.id);
|
|
351
351
|
if (c === undefined) {
|
|
352
352
|
return;
|
|
353
353
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval-runner.d.ts","sourceRoot":"","sources":["../../src/internal/eval-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,KAAK,EAEV,eAAe,EAGhB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EAEd,YAAY,EACZ,kBAAkB,EAClB,aAAa,EAOd,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAC;AAI9D,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,qBAAqB,CAAC;AAKjF,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,kFAAkF;IAClF,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;QACjC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;KACjC,CAAC;IACF,wEAAwE;IACxE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA8BD,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAwB,GAC9F,OAAO,CAAC;IACT,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CACjC,CAAC,CA0CD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAmBvD;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,OAAO,GAAE,oBAAyB,GACjC,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"eval-runner.d.ts","sourceRoot":"","sources":["../../src/internal/eval-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -123,13 +123,13 @@ export function expandEvalModule(fileId, defaultExport) {
|
|
|
123
123
|
export function filterDiscoveredEvals(evals, options = {}) {
|
|
124
124
|
let selected = evals;
|
|
125
125
|
if (options.filterIds !== undefined && options.filterIds.length > 0) {
|
|
126
|
-
selected = selected.filter(e => options.filterIds.some(f => matchesEvalIdFilter(e.id, f)));
|
|
126
|
+
selected = selected.filter((e) => options.filterIds.some((f) => matchesEvalIdFilter(e.id, f)));
|
|
127
127
|
}
|
|
128
128
|
if (options.tags !== undefined && options.tags.length > 0) {
|
|
129
|
-
selected = selected.filter(e => (e.definition.tags ?? []).some(t => options.tags.includes(t)));
|
|
129
|
+
selected = selected.filter((e) => (e.definition.tags ?? []).some((t) => options.tags.includes(t)));
|
|
130
130
|
}
|
|
131
131
|
// Suite aggregators (`summary` tag) need sibling cases from the same file.
|
|
132
|
-
return expandSummarySuiteSelection(evals, selected, e => isEvalSummaryCase(e.definition.tags));
|
|
132
|
+
return expandSummarySuiteSelection(evals, selected, (e) => isEvalSummaryCase(e.definition.tags));
|
|
133
133
|
}
|
|
134
134
|
export async function runDiscoveredEvals(options) {
|
|
135
135
|
let selected;
|
|
@@ -185,7 +185,7 @@ export async function runDiscoveredEvals(options) {
|
|
|
185
185
|
configModel: config.judge?.model,
|
|
186
186
|
caller: options.judgeCaller ?? callJudgeModel,
|
|
187
187
|
},
|
|
188
|
-
onEvent: event => {
|
|
188
|
+
onEvent: (event) => {
|
|
189
189
|
options.onCaseEvent?.(discovered.id, event);
|
|
190
190
|
options.onEvent?.(event);
|
|
191
191
|
},
|
|
@@ -215,7 +215,7 @@ export async function runDiscoveredEvals(options) {
|
|
|
215
215
|
function buildReporterHub(options, config, selected) {
|
|
216
216
|
const skip = options.skipReport === true;
|
|
217
217
|
const runWide = [...(options.reporters ?? []), ...(skip ? [] : (config.reporters ?? []))];
|
|
218
|
-
const perEval = skip ? [] : selected.flatMap(e => e.definition.reporters ?? []);
|
|
218
|
+
const perEval = skip ? [] : selected.flatMap((e) => e.definition.reporters ?? []);
|
|
219
219
|
const everyReporter = [...new Set([...runWide, ...perEval])];
|
|
220
220
|
if (everyReporter.length === 0) {
|
|
221
221
|
return undefined;
|
|
@@ -228,7 +228,7 @@ function buildReporterHub(options, config, selected) {
|
|
|
228
228
|
const all = combineReporters(everyReporter, onError);
|
|
229
229
|
return {
|
|
230
230
|
async runStart(evals, target) {
|
|
231
|
-
await all.onRunStart?.(evals.map(e => ({
|
|
231
|
+
await all.onRunStart?.(evals.map((e) => ({
|
|
232
232
|
id: e.id,
|
|
233
233
|
fileId: e.fileId,
|
|
234
234
|
description: e.definition.description,
|
|
@@ -279,7 +279,7 @@ export function groupEvalsForIterationSchedule(evals) {
|
|
|
279
279
|
}
|
|
280
280
|
group.push(discovered);
|
|
281
281
|
}
|
|
282
|
-
return order.map(key => {
|
|
282
|
+
return order.map((key) => {
|
|
283
283
|
const group = groups.get(key);
|
|
284
284
|
return group.sort((a, b) => (a.definition.iteration ?? 1) - (b.definition.iteration ?? 1));
|
|
285
285
|
});
|
|
@@ -323,8 +323,8 @@ async function runOneEval(discovered, opts) {
|
|
|
323
323
|
const inputs = [];
|
|
324
324
|
const turns = [];
|
|
325
325
|
let reply = null;
|
|
326
|
-
const toolsUsed = () => buildTrajectory(allEvents).turns.flatMap(t => t.toolCalls.map(c => c.toolName));
|
|
327
|
-
const toolCallIo = () => buildTrajectory(allEvents).turns.flatMap(turn => turn.toolCalls.map(c => ({
|
|
326
|
+
const toolsUsed = () => buildTrajectory(allEvents).turns.flatMap((t) => t.toolCalls.map((c) => c.toolName));
|
|
327
|
+
const toolCallIo = () => buildTrajectory(allEvents).turns.flatMap((turn) => turn.toolCalls.map((c) => ({
|
|
328
328
|
toolName: c.toolName,
|
|
329
329
|
...(c.args === undefined ? {} : { args: c.args }),
|
|
330
330
|
...(c.output === undefined ? {} : { output: c.output }),
|
|
@@ -366,8 +366,8 @@ async function runOneEval(discovered, opts) {
|
|
|
366
366
|
});
|
|
367
367
|
const judge = createJudgeSurface({
|
|
368
368
|
recorder,
|
|
369
|
-
grader: name => EVAL_JUDGE_GRADERS[name],
|
|
370
|
-
resolveModel: callModel => resolveJudgeModel({
|
|
369
|
+
grader: (name) => EVAL_JUDGE_GRADERS[name],
|
|
370
|
+
resolveModel: (callModel) => resolveJudgeModel({
|
|
371
371
|
call: callModel,
|
|
372
372
|
evalLevel: def.judge?.model,
|
|
373
373
|
config: opts.judge.configModel,
|
|
@@ -375,7 +375,7 @@ async function runOneEval(discovered, opts) {
|
|
|
375
375
|
}),
|
|
376
376
|
caller: opts.judge.caller,
|
|
377
377
|
defaultValue: () => reply,
|
|
378
|
-
onUnavailable: message => {
|
|
378
|
+
onUnavailable: (message) => {
|
|
379
379
|
judgeUnavailable = judgeUnavailable ?? message;
|
|
380
380
|
},
|
|
381
381
|
});
|
|
@@ -436,12 +436,12 @@ async function runOneEval(discovered, opts) {
|
|
|
436
436
|
message: result.trajectory.finalText,
|
|
437
437
|
sessionId: result.sessionId,
|
|
438
438
|
events: turnEvents,
|
|
439
|
-
toolCalls: result.trajectory.turns.flatMap(turn => turn.toolCalls.map(c => c.toolName)),
|
|
439
|
+
toolCalls: result.trajectory.turns.flatMap((turn) => turn.toolCalls.map((c) => c.toolName)),
|
|
440
440
|
ok: result.ok,
|
|
441
441
|
index,
|
|
442
442
|
expectOk() {
|
|
443
443
|
if (!result.ok) {
|
|
444
|
-
throw new Error(`turn[${index}] failed: ${result.trajectory.turns.find(x => x.failed)?.error ?? "unknown error"}`);
|
|
444
|
+
throw new Error(`turn[${index}] failed: ${result.trajectory.turns.find((x) => x.failed)?.error ?? "unknown error"}`);
|
|
445
445
|
}
|
|
446
446
|
return turn;
|
|
447
447
|
},
|
|
@@ -2,7 +2,7 @@ import { runSession } from "./run-client.js";
|
|
|
2
2
|
/** An agent served over HTTP: the local eval server, a `--url`, or the playground host. */
|
|
3
3
|
export function localHttpEvalTransport(input) {
|
|
4
4
|
return {
|
|
5
|
-
send: turn => runSession({
|
|
5
|
+
send: (turn) => runSession({
|
|
6
6
|
baseUrl: input.baseUrl,
|
|
7
7
|
messages: [turn.message],
|
|
8
8
|
sessionId: turn.sessionId,
|
|
@@ -89,13 +89,13 @@ export async function listRemoteEvals(args) {
|
|
|
89
89
|
}
|
|
90
90
|
let selected = listed;
|
|
91
91
|
if (args.filterIds !== undefined && args.filterIds.length > 0) {
|
|
92
|
-
selected = selected.filter(e => args.filterIds.some(f => matchesEvalIdFilter(e.id, f)));
|
|
92
|
+
selected = selected.filter((e) => args.filterIds.some((f) => matchesEvalIdFilter(e.id, f)));
|
|
93
93
|
}
|
|
94
94
|
if (args.tags !== undefined && args.tags.length > 0) {
|
|
95
|
-
selected = selected.filter(e => (e.tags ?? []).some(t => args.tags.includes(t)));
|
|
95
|
+
selected = selected.filter((e) => (e.tags ?? []).some((t) => args.tags.includes(t)));
|
|
96
96
|
}
|
|
97
97
|
// Match server-side filterDiscoveredEvals: summary → whole file.
|
|
98
|
-
return expandSummarySuiteSelection(listed, selected, e => isEvalSummaryCase(e.tags));
|
|
98
|
+
return expandSummarySuiteSelection(listed, selected, (e) => isEvalSummaryCase(e.tags));
|
|
99
99
|
}
|
|
100
100
|
export async function startRemoteEvalRun(args) {
|
|
101
101
|
const baseUrl = args.baseUrl.replace(/\/$/, "");
|
|
@@ -258,7 +258,7 @@ export async function pollRemoteEvalRun(args) {
|
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
export function snapshotToEvalRunResults(snapshot) {
|
|
261
|
-
return snapshot.cases.map(c => ({
|
|
261
|
+
return snapshot.cases.map((c) => ({
|
|
262
262
|
id: c.id,
|
|
263
263
|
path: c.fileId,
|
|
264
264
|
...(c.description === undefined ? {} : { description: c.description }),
|
|
@@ -80,7 +80,7 @@ export class SessionEventLog {
|
|
|
80
80
|
}
|
|
81
81
|
async readNextIndex() {
|
|
82
82
|
let next = 0;
|
|
83
|
-
await readNdjsonEvents(this.filePath, event => {
|
|
83
|
+
await readNdjsonEvents(this.filePath, (event) => {
|
|
84
84
|
if (typeof event.index === "number" && event.index >= next) {
|
|
85
85
|
next = event.index + 1;
|
|
86
86
|
}
|
|
@@ -132,7 +132,7 @@ export class SessionEventLog {
|
|
|
132
132
|
.then(() => {
|
|
133
133
|
this.dropInflight(index);
|
|
134
134
|
})
|
|
135
|
-
.catch(error => this.onPersistError(error));
|
|
135
|
+
.catch((error) => this.onPersistError(error));
|
|
136
136
|
return event;
|
|
137
137
|
}
|
|
138
138
|
dropInflight(index) {
|
|
@@ -140,7 +140,7 @@ export class SessionEventLog {
|
|
|
140
140
|
this.inflight.shift();
|
|
141
141
|
return;
|
|
142
142
|
}
|
|
143
|
-
const i = this.inflight.findIndex(event => event.index === index);
|
|
143
|
+
const i = this.inflight.findIndex((event) => event.index === index);
|
|
144
144
|
if (i >= 0) {
|
|
145
145
|
this.inflight.splice(i, 1);
|
|
146
146
|
}
|
|
@@ -155,7 +155,7 @@ export class SessionEventLog {
|
|
|
155
155
|
*/
|
|
156
156
|
async snapshot(startIndex = 0) {
|
|
157
157
|
const byIndex = new Map();
|
|
158
|
-
await readNdjsonEvents(this.filePath, event => {
|
|
158
|
+
await readNdjsonEvents(this.filePath, (event) => {
|
|
159
159
|
if (event.index >= startIndex) {
|
|
160
160
|
byIndex.set(event.index, event);
|
|
161
161
|
}
|
|
@@ -214,7 +214,7 @@ export class SessionEventLog {
|
|
|
214
214
|
};
|
|
215
215
|
let following = false;
|
|
216
216
|
const buffered = [];
|
|
217
|
-
unsubscribe = this.subscribe(event => {
|
|
217
|
+
unsubscribe = this.subscribe((event) => {
|
|
218
218
|
if (event.index < startIndex) {
|
|
219
219
|
return;
|
|
220
220
|
}
|
|
@@ -269,9 +269,9 @@ export class EventLogStore {
|
|
|
269
269
|
.then(() => SessionEventLog.open({
|
|
270
270
|
sessionId,
|
|
271
271
|
filePath,
|
|
272
|
-
onPersistError: error => this.onPersistError(sessionId, error),
|
|
272
|
+
onPersistError: (error) => this.onPersistError(sessionId, error),
|
|
273
273
|
}))
|
|
274
|
-
.then(opened => {
|
|
274
|
+
.then((opened) => {
|
|
275
275
|
this.opened.set(sessionId, opened);
|
|
276
276
|
return opened;
|
|
277
277
|
});
|
|
@@ -294,6 +294,6 @@ export class EventLogStore {
|
|
|
294
294
|
};
|
|
295
295
|
}
|
|
296
296
|
async flushAll() {
|
|
297
|
-
await Promise.all([...this.logs.values()].map(logPromise => logPromise.then(log => log.flush()).catch(() => { })));
|
|
297
|
+
await Promise.all([...this.logs.values()].map((logPromise) => logPromise.then((log) => log.flush()).catch(() => { })));
|
|
298
298
|
}
|
|
299
299
|
}
|