@cursor/bdk 0.2.8 → 0.2.10
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/artifacts.js +3 -5
- package/dist/bin/agent-serve.d.ts +1 -0
- package/dist/bin/agent-serve.d.ts.map +1 -1
- package/dist/bin/agent-serve.js +820 -807
- package/dist/channels/bitbucket/api.js +305 -321
- package/dist/channels/bitbucket/binding.js +97 -61
- package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
- package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
- package/dist/channels/bitbucket/checks.js +9 -21
- package/dist/channels/bitbucket/cursor-account.js +1 -1
- package/dist/channels/bitbucket/defaults.js +14 -4
- package/dist/channels/bitbucket/events.js +1 -2
- package/dist/channels/bitbucket/index.d.ts +6 -2
- package/dist/channels/bitbucket/index.d.ts.map +1 -1
- package/dist/channels/bitbucket/index.js +6 -2
- package/dist/channels/bitbucket/replay.js +80 -56
- package/dist/channels/bitbucket/state.js +16 -7
- package/dist/channels/bitbucket/types.d.ts +11 -2
- package/dist/channels/bitbucket/types.d.ts.map +1 -1
- package/dist/channels/checks.js +18 -28
- package/dist/channels/deployments/deployments-channel.js +26 -34
- package/dist/channels/github/api.js +216 -210
- package/dist/channels/github/auth.d.ts +5 -1
- package/dist/channels/github/auth.d.ts.map +1 -1
- package/dist/channels/github/auth.js +157 -174
- package/dist/channels/github/binding.js +48 -39
- package/dist/channels/github/checks.js +9 -14
- package/dist/channels/github/cursor-account.js +6 -11
- package/dist/channels/github/defaults.js +105 -130
- package/dist/channels/github/forward.js +13 -17
- package/dist/channels/github/github-channel.d.ts +43 -2
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +1228 -958
- package/dist/channels/github/progress.js +145 -146
- package/dist/channels/github/replay.js +30 -39
- package/dist/channels/github/state.js +40 -16
- package/dist/channels/github/types.d.ts +30 -6
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/gitlab/api.js +100 -114
- package/dist/channels/gitlab/binding.js +52 -33
- package/dist/channels/gitlab/checks.js +28 -29
- package/dist/channels/gitlab/cursor-account.js +1 -1
- package/dist/channels/gitlab/defaults.js +9 -3
- package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
- package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-channel.js +95 -42
- package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
- package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-webhook.js +282 -249
- package/dist/channels/gitlab/index.d.ts +6 -2
- package/dist/channels/gitlab/index.d.ts.map +1 -1
- package/dist/channels/gitlab/index.js +6 -2
- package/dist/channels/gitlab/replay.js +50 -27
- package/dist/channels/gitlab/state.js +14 -6
- package/dist/channels/gitlab/types.d.ts +13 -2
- package/dist/channels/gitlab/types.d.ts.map +1 -1
- package/dist/channels/origin/api.js +100 -116
- package/dist/channels/origin/binding.js +15 -16
- package/dist/channels/origin/checks.js +30 -28
- package/dist/channels/origin/defaults.js +50 -65
- package/dist/channels/origin/origin-channel.js +266 -272
- package/dist/channels/origin/origin-webhook.js +70 -88
- package/dist/channels/origin/reactions.js +9 -21
- package/dist/channels/origin/state.js +13 -5
- package/dist/channels/slack/agentic-delivery.js +426 -478
- package/dist/channels/slack/agentic-posted.js +9 -10
- package/dist/channels/slack/agentic-signals.js +2 -3
- package/dist/channels/slack/api.js +417 -427
- package/dist/channels/slack/approvals.js +1 -1
- package/dist/channels/slack/assistant.js +37 -47
- package/dist/channels/slack/attachments.js +188 -206
- package/dist/channels/slack/auth.js +8 -6
- package/dist/channels/slack/bot-mentions.js +31 -45
- package/dist/channels/slack/channel-watch.js +42 -48
- package/dist/channels/slack/cli-project.js +112 -137
- package/dist/channels/slack/code-fences.js +3 -5
- package/dist/channels/slack/constants.js +2 -2
- package/dist/channels/slack/credentials.js +23 -38
- package/dist/channels/slack/defaults.js +292 -331
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +533 -460
- package/dist/channels/slack/doctor.js +200 -214
- package/dist/channels/slack/eval-directive.js +79 -96
- package/dist/channels/slack/event-id-dedupe.js +1 -1
- package/dist/channels/slack/external-policy.js +26 -39
- package/dist/channels/slack/footer.js +28 -41
- package/dist/channels/slack/inbound.d.ts +1 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +50 -31
- package/dist/channels/slack/init.d.ts +1 -5
- package/dist/channels/slack/init.d.ts.map +1 -1
- package/dist/channels/slack/init.js +42 -59
- package/dist/channels/slack/interactive.d.ts +9 -3
- package/dist/channels/slack/interactive.d.ts.map +1 -1
- package/dist/channels/slack/interactive.js +160 -162
- package/dist/channels/slack/links.js +1 -2
- package/dist/channels/slack/live-delivery.js +172 -190
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +44 -23
- package/dist/channels/slack/message-body.js +2 -2
- package/dist/channels/slack/nudge-carrier.js +30 -42
- package/dist/channels/slack/nudge-store.js +164 -191
- package/dist/channels/slack/paint-start.js +66 -81
- package/dist/channels/slack/placeholder.js +123 -152
- package/dist/channels/slack/pr-ref.js +1 -1
- package/dist/channels/slack/progress-delivery.js +65 -78
- package/dist/channels/slack/reasoning-card.js +36 -49
- package/dist/channels/slack/recording-sink.js +12 -24
- package/dist/channels/slack/reply-options.js +7 -12
- package/dist/channels/slack/self-identity.js +27 -35
- package/dist/channels/slack/sender-name.d.ts +12 -3
- package/dist/channels/slack/sender-name.d.ts.map +1 -1
- package/dist/channels/slack/sender-name.js +57 -61
- package/dist/channels/slack/setup.js +2 -4
- package/dist/channels/slack/slack-channel.d.ts +6 -4
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +441 -308
- package/dist/channels/slack/socket-mode.js +38 -52
- package/dist/channels/slack/thread-context.js +143 -160
- package/dist/channels/slack/tool-approval-events.js +149 -166
- package/dist/channels/slack/tool-cards.js +6 -11
- package/dist/channels/slack/tool-chip.js +1 -2
- package/dist/channels/slack/types.d.ts +15 -17
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/upload.js +84 -97
- package/dist/channels/slack/user-info.js +27 -41
- package/dist/channels.js +9 -20
- package/dist/dashboard-session-url.js +3 -4
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.oyjtOr3W.js → app.DXI7bwox.js} +4 -4
- package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.D0P6J_UJ.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
- package/dist/docs/assets/chunks/{arc.B0LY1J1h.js → arc.BOG1yms8.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.dPduLUxY.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.B_Ohm21h.js → baseUniq.H044KjKs.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.B4zcanaJ.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.D9Iw21nx.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
- package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.DDVwRShI.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DsYcdn1i.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.BzzQvcYp.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BMiXZ7FX.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.D_mBcLoc.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CMVjWVMx.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BG-FrPv9.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CkFE1ap3.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BVNnCTvY.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.CDN5PR9l.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DQRUlT-i.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.CoeblYQT.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DW3ymjl0.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.BP0uN4Jw.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DVFUWEn4.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.HU-eHspv.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DHNhXijY.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DkISXcO3.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
- package/dist/docs/assets/chunks/{graph.CCV0fuRR.js → graph.BVqKRmRo.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.bgILzOoc.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.CuryXC0F.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BL1Pr-wu.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BbGjvk4l.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
- package/dist/docs/assets/chunks/{layout.C4PfdldS.js → layout.CGU3gfSf.js} +1 -1
- package/dist/docs/assets/chunks/{linear.C3xD1T6X.js → linear.DaihpW_n.js} +1 -1
- package/dist/docs/assets/chunks/{min.CzgRAQ9c.js → min.BS-j8kHQ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CA9rSWum.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.B8MprgJu.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DndDwbKT.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.Zhfgwlnn.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.B6RRm6N5.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Bfmz-1PN.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.gbrdNqgj.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
- package/dist/docs/assets/chunks/{theme.gpWjytMh.js → theme.DaplWQhQ.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Bl1l7M1f.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.Dfle4U0d.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.CM_4lmvZ.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CHT5X28R.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
- package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
- package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
- package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
- package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
- package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/building-with-agents.md +2 -0
- package/dist/docs/deployment.html +38 -38
- package/dist/docs/deployment.md +7 -0
- package/dist/docs/evals.html +36 -36
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +38 -38
- package/dist/docs/guides/bitbucket.md +9 -1
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +39 -39
- package/dist/docs/guides/github.md +20 -4
- package/dist/docs/guides/gitlab.html +38 -38
- package/dist/docs/guides/gitlab.md +9 -1
- 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/migrate.html +66 -0
- package/dist/docs/guides/migrate.md +122 -0
- 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 +214 -6
- package/dist/docs/llms.txt +1 -0
- 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 -38
- package/dist/docs/reference/cli.md +39 -0
- 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 +38 -38
- 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 +36 -36
- package/dist/docs/troubleshooting.md +1 -0
- package/dist/evals/assertions.js +20 -34
- package/dist/evals/expect.js +3 -6
- package/dist/evals/judge.js +5 -8
- package/dist/evals/loaders.js +45 -62
- package/dist/evals/matchers.js +2 -3
- package/dist/evals/reporters.js +43 -67
- package/dist/evals/results.js +1 -1
- package/dist/evals/run-facts.js +5 -6
- package/dist/evals.js +27 -15
- package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +0 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +101 -130
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
- package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
- package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
- package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
- package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
- package/dist/extensions/cursor-cloud-agents/tools/list.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/list.js +9 -20
- package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
- package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
- package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
- package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
- package/dist/extensions/jev/extension.js +3 -3
- package/dist/extensions/jev/lib/evaluate.js +43 -60
- package/dist/extensions/jev/tools/evaluate.js +6 -17
- package/dist/extensions/slack-communication/tools/post-file.js +1 -1
- package/dist/extensions.js +3 -5
- package/dist/files-backends/cursor-hosted.js +504 -523
- package/dist/files-backends/local-fs.js +72 -134
- package/dist/files.js +3 -3
- package/dist/filesystem.js +562 -861
- package/dist/index.js +16 -35
- package/dist/internal/advertise-tools.js +74 -86
- package/dist/internal/artifacts-store.js +298 -361
- package/dist/internal/as-of.js +2 -4
- package/dist/internal/authored-alias-hooks.js +6 -4
- package/dist/internal/authored-loaders.js +37 -52
- package/dist/internal/bounded-int.js +1 -2
- package/dist/internal/bounded.js +13 -24
- package/dist/internal/brand.js +1 -1
- package/dist/internal/browser-origin-guard.js +4 -4
- package/dist/internal/builtin-tools/artifacts.js +15 -27
- package/dist/internal/builtin-tools/index.js +2 -3
- package/dist/internal/builtin-tools/reminders.js +33 -52
- package/dist/internal/channel-architecture.d.ts +21 -0
- package/dist/internal/channel-architecture.d.ts.map +1 -0
- package/dist/internal/channel-architecture.js +41 -0
- package/dist/internal/channel-dispatch.js +3 -4
- package/dist/internal/channel-route-dispatch.js +40 -51
- package/dist/internal/channel-state.js +1 -1
- package/dist/internal/chat-client.js +319 -340
- package/dist/internal/cli-ax.js +1262 -1294
- package/dist/internal/cli-bitbucket.js +244 -272
- package/dist/internal/cli-convert-automation.js +137 -151
- package/dist/internal/cli-cursor.js +126 -147
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +1457 -1507
- package/dist/internal/cli-docs.js +130 -147
- package/dist/internal/cli-github.js +437 -476
- package/dist/internal/cli-gitlab.js +259 -288
- package/dist/internal/cli-images.js +266 -334
- package/dist/internal/cli-manifest.js +25 -37
- package/dist/internal/cli-mcp-oauth.js +228 -247
- package/dist/internal/cli-mcp.js +358 -383
- package/dist/internal/cli-migrate.d.ts +18 -0
- package/dist/internal/cli-migrate.d.ts.map +1 -0
- package/dist/internal/cli-migrate.js +136 -0
- package/dist/internal/cli-skills.js +35 -47
- package/dist/internal/cli-slack-manual.d.ts +0 -1
- package/dist/internal/cli-slack-manual.d.ts.map +1 -1
- package/dist/internal/cli-slack-manual.js +175 -204
- package/dist/internal/cli-slack.d.ts +1 -1
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +416 -456
- package/dist/internal/cloud-merge.js +7 -3
- package/dist/internal/cloud-turn-cost.js +8 -1
- package/dist/internal/connection-env.js +5 -6
- package/dist/internal/continuation-channel.js +10 -7
- package/dist/internal/continuation-identity.js +85 -67
- package/dist/internal/conversation-mirror.js +112 -131
- package/dist/internal/convert-automation/convert-workflow.js +21 -31
- package/dist/internal/cron.js +3 -3
- package/dist/internal/cursor/account-mcp.js +147 -146
- package/dist/internal/cursor/backend-client.js +290 -320
- package/dist/internal/cursor/bound-secret-file.js +3 -3
- package/dist/internal/cursor/credentials.d.ts +1 -0
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +130 -142
- package/dist/internal/cursor/cursor-api-transport.js +4 -8
- package/dist/internal/cursor/github-credentials.js +91 -108
- package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
- package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +5 -9
- package/dist/internal/cursor/session-token.js +36 -48
- package/dist/internal/cursor/store-api-client.js +77 -92
- package/dist/internal/cursor-account-mcp-auth.js +132 -149
- package/dist/internal/cursor-agent-template.js +1 -1
- package/dist/internal/cursor-deployment-relay.js +33 -54
- package/dist/internal/cursor-event-relay.js +65 -59
- package/dist/internal/cursor-relay-core.js +258 -286
- package/dist/internal/deferred-channel-session.js +3 -12
- package/dist/internal/deploy-client.js +410 -475
- package/dist/internal/deploy-manifest.d.ts +17 -0
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +71 -21
- package/dist/internal/deploy-source.js +31 -43
- package/dist/internal/discovery/agent-config.js +45 -59
- package/dist/internal/discovery/agent.js +276 -280
- package/dist/internal/discovery/channels.js +67 -80
- package/dist/internal/discovery/connections.js +286 -296
- package/dist/internal/discovery/context.js +2 -13
- package/dist/internal/discovery/cursor-plugin.js +223 -259
- package/dist/internal/discovery/extension-overlay.js +104 -131
- package/dist/internal/discovery/extensions.js +276 -281
- package/dist/internal/discovery/fs.js +56 -79
- package/dist/internal/discovery/hooks.js +39 -50
- package/dist/internal/discovery/info.js +17 -19
- package/dist/internal/discovery/instructions.js +58 -71
- package/dist/internal/discovery/modules.js +45 -58
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +192 -215
- package/dist/internal/discovery/reminders.js +41 -52
- package/dist/internal/discovery/runtime.js +1 -1
- package/dist/internal/discovery/schedules.js +71 -82
- package/dist/internal/discovery/seed-files.js +21 -32
- package/dist/internal/discovery/services.js +74 -96
- package/dist/internal/discovery/skills.js +77 -94
- package/dist/internal/discovery/subagent.js +79 -95
- package/dist/internal/discovery/tools.js +12 -23
- package/dist/internal/distribution.js +2 -2
- package/dist/internal/docs-site.js +30 -45
- package/dist/internal/duration.js +1 -1
- package/dist/internal/env-file.js +48 -64
- package/dist/internal/eval-judge-model.js +17 -28
- package/dist/internal/eval-run-store.js +265 -254
- package/dist/internal/eval-runner.d.ts +8 -0
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +406 -408
- package/dist/internal/eval-transport.d.ts +24 -0
- package/dist/internal/eval-transport.d.ts.map +1 -0
- package/dist/internal/eval-transport.js +22 -0
- package/dist/internal/evals-client.js +242 -246
- package/dist/internal/event-log.js +72 -120
- package/dist/internal/event-mapper.js +30 -31
- package/dist/internal/factory-resource-channel.js +16 -30
- package/dist/internal/filesystem/errors.js +6 -6
- package/dist/internal/filesystem/format.js +10 -13
- package/dist/internal/filesystem/merge.js +52 -94
- package/dist/internal/filesystem/nearest.js +15 -27
- package/dist/internal/filesystem/scratch.js +65 -85
- package/dist/internal/filesystem/tools.js +221 -241
- package/dist/internal/filesystem/walk.js +76 -143
- package/dist/internal/framework-file-storage.js +118 -139
- package/dist/internal/framework-storage-selection.js +21 -13
- package/dist/internal/frontmatter.js +4 -6
- package/dist/internal/github-fanout.js +50 -64
- package/dist/internal/guest-network.js +96 -109
- package/dist/internal/handleAgentServeTrigger.js +121 -126
- package/dist/internal/host-files.js +73 -88
- package/dist/internal/host-kv.js +21 -36
- package/dist/internal/host-otel.js +22 -19
- package/dist/internal/host-platforms.js +49 -63
- package/dist/internal/hosted-catch-protocol.d.ts +1 -0
- package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-catch-protocol.js +1 -0
- package/dist/internal/hosted-catch.d.ts +5 -3
- package/dist/internal/hosted-catch.d.ts.map +1 -1
- package/dist/internal/hosted-catch.js +84 -93
- package/dist/internal/hosted-delivery-protocol.js +32 -8
- package/dist/internal/hosted-delivery.d.ts +13 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +614 -584
- package/dist/internal/hosted-eval-cases.d.ts +21 -0
- package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
- package/dist/internal/hosted-eval-cases.js +162 -0
- package/dist/internal/hosted-execution-diag.js +38 -30
- package/dist/internal/hosted-execution-flush.js +75 -66
- package/dist/internal/hosted-execution-latency.js +16 -8
- package/dist/internal/hosted-managed-automation.js +2 -2
- package/dist/internal/hosting.js +2 -3
- package/dist/internal/http-channel-define.js +4 -1
- package/dist/internal/http-channel.js +101 -112
- package/dist/internal/http-control-plane-session.d.ts +18 -1
- package/dist/internal/http-control-plane-session.d.ts.map +1 -1
- package/dist/internal/http-control-plane-session.js +66 -32
- package/dist/internal/incoming-headers-to-fetch.js +1 -2
- package/dist/internal/init-interview.js +73 -93
- package/dist/internal/init-project.js +182 -214
- package/dist/internal/init-scaffold.js +10 -21
- package/dist/internal/inline-stdio-mcp.js +80 -86
- package/dist/internal/install-cursor-skills.d.ts.map +1 -1
- package/dist/internal/install-cursor-skills.js +238 -274
- package/dist/internal/legacy-command-guard.js +18 -31
- package/dist/internal/listen-port.js +34 -45
- package/dist/internal/local-control-plane.js +293 -307
- package/dist/internal/local-env.js +1 -1
- package/dist/internal/local-ingress.js +15 -9
- package/dist/internal/log-ring.js +1 -2
- package/dist/internal/logs-client.js +207 -227
- package/dist/internal/map-pool.js +24 -38
- package/dist/internal/mcp-endpoint.js +204 -180
- package/dist/internal/mcp-host.js +165 -168
- package/dist/internal/mcp-oauth-on-demand.js +170 -207
- package/dist/internal/mcp-oauth-persist.js +15 -29
- package/dist/internal/mcp-oauth.js +209 -266
- package/dist/internal/named-webhook-secret.d.ts +39 -0
- package/dist/internal/named-webhook-secret.d.ts.map +1 -0
- package/dist/internal/named-webhook-secret.js +47 -0
- package/dist/internal/open-browser.js +2 -3
- package/dist/internal/otel/collector.js +104 -68
- package/dist/internal/otel/config.js +24 -37
- package/dist/internal/otel/http.js +5 -7
- package/dist/internal/otel/mcp.js +3 -12
- package/dist/internal/otel/runtime.js +69 -83
- package/dist/internal/package-inline-stdio.js +57 -65
- package/dist/internal/peer-connections.js +9 -5
- package/dist/internal/platform-schedule-sync.js +39 -54
- package/dist/internal/platform-timers.js +176 -210
- package/dist/internal/playground/static.js +1 -2
- package/dist/internal/playground/toolchain.js +37 -53
- package/dist/internal/playground-proxy.js +230 -270
- package/dist/internal/process-memory-telemetry.js +33 -51
- package/dist/internal/prompt-context.js +3 -6
- package/dist/internal/reminder-control-plane-protocol.js +46 -13
- package/dist/internal/reminder-runner.js +770 -785
- package/dist/internal/reminder-schedule.js +1 -1
- package/dist/internal/reminder-store.js +57 -78
- package/dist/internal/request-error-status.js +1 -3
- package/dist/internal/request-headers.js +2 -2
- package/dist/internal/resolve-prod-target.js +119 -135
- package/dist/internal/resolved-connections.js +16 -6
- package/dist/internal/run-client.js +221 -229
- package/dist/internal/runtime-dispatch-runner.js +18 -43
- package/dist/internal/schedule-runner.js +49 -58
- package/dist/internal/scm/pr-url.js +7 -6
- package/dist/internal/sdk-runner.js +388 -363
- package/dist/internal/serve-restart.js +26 -39
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +1283 -1244
- package/dist/internal/session-cost.js +7 -9
- package/dist/internal/session-engine.d.ts +3 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +2801 -2777
- package/dist/internal/session-links.js +12 -16
- package/dist/internal/session-run-log.js +134 -82
- package/dist/internal/session-store.js +133 -164
- package/dist/internal/sessions-client.js +97 -118
- package/dist/internal/skill-catalog.js +18 -23
- package/dist/internal/skills-sync.js +16 -30
- package/dist/internal/slack-provision-client.js +90 -116
- package/dist/internal/start-log-store.js +48 -67
- package/dist/internal/steering.js +1 -2
- package/dist/internal/storage-coordinator.js +160 -196
- package/dist/internal/store-mirror.js +16 -30
- package/dist/internal/stream-progress.js +6 -8
- package/dist/internal/terminal-style.js +3 -4
- package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
- package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
- package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
- package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
- package/dist/internal/tool-catalog.js +11 -5
- package/dist/internal/tool-result.js +1 -1
- package/dist/internal/trajectory.js +19 -22
- package/dist/internal/turn-cost.js +52 -62
- package/dist/internal/turn-governor.js +5 -8
- package/dist/internal/turn-lease-store.js +85 -105
- package/dist/internal/turn-outbox.js +28 -43
- package/dist/internal/update-check.js +231 -259
- package/dist/internal/v2-hosting.js +1 -2
- package/dist/internal/workspace-sync.js +25 -41
- package/dist/internal/workspace.js +111 -139
- package/dist/kv/memory-kv.js +27 -51
- package/dist/memory.js +106 -148
- package/dist/otel.js +5 -8
- package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
- package/dist/playground/assets/{index-MijLHTbB.js → index-JekUQERK.js} +45 -45
- package/dist/playground/index.html +2 -2
- package/dist/prompt.js +2 -4
- package/dist/storage-backends/cursor-hosted-v2.js +53 -83
- package/dist/storage-backends/cursor-hosted.js +105 -145
- package/dist/storage-backends/file-kv.js +100 -128
- package/dist/storage-protocol.js +3 -5
- package/dist/storage.js +17 -26
- package/dist/types.d.ts +68 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +20 -18
- package/docs/building-with-agents.md +2 -0
- package/docs/deployment.md +7 -0
- package/docs/guides/bitbucket.md +9 -1
- package/docs/guides/github.md +20 -4
- package/docs/guides/gitlab.md +9 -1
- package/docs/guides/migrate.md +127 -0
- package/docs/reference/cli.md +39 -0
- package/docs/troubleshooting.md +1 -0
- package/package.json +1 -1
- package/skills/debug/SKILL.md +1 -0
- package/skills/github/SKILL.md +23 -0
- package/skills/migrate-v2/SKILL.md +264 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.C25zYVuc.js +0 -1
- package/dist/docs/assets/chunks/channel.CRUyWDV-.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CG_UObcQ.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CG_UObcQ.js +0 -1
- package/dist/docs/assets/chunks/clone.NYSZ9qZN.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DOOmulfQ.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.BJrCW6xc.js +0 -162
- package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
- package/dist/playground/assets/index-DPKLl4C_.css +0 -1
- /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
- /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
|
@@ -15,15 +15,6 @@
|
|
|
15
15
|
* - `call_tool` — call one of the agent's deterministic server tools
|
|
16
16
|
* directly (no model turn). Registered only when server tools exist.
|
|
17
17
|
*/
|
|
18
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
19
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
20
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
21
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
22
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
23
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
24
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
18
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
28
19
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
29
20
|
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
@@ -58,46 +49,43 @@ const DEFAULT_WAIT_SECONDS = 50;
|
|
|
58
49
|
* so Origin diverges on purpose. Do not extract a shared package, and do
|
|
59
50
|
* not port the abort race here, in that stack.
|
|
60
51
|
*/
|
|
61
|
-
export function handleStatelessMcpRequest(args) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
status: 405,
|
|
75
|
-
headers: { "content-type": "application/json", allow: "POST" },
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
const server = args.buildServer();
|
|
79
|
-
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
80
|
-
sessionIdGenerator: undefined,
|
|
81
|
-
enableJsonResponse: true,
|
|
52
|
+
export async function handleStatelessMcpRequest(args) {
|
|
53
|
+
const logger = args.logger ?? (() => { });
|
|
54
|
+
if (args.request.method !== "POST") {
|
|
55
|
+
// Stateless server: no server-initiated SSE stream (GET) and no
|
|
56
|
+
// transport sessions to delete (DELETE). 405 per the MCP spec;
|
|
57
|
+
// clients treat it as "streaming unsupported" and carry on.
|
|
58
|
+
return new Response(JSON.stringify({
|
|
59
|
+
jsonrpc: "2.0",
|
|
60
|
+
error: { code: -32000, message: "Method not allowed." },
|
|
61
|
+
id: null,
|
|
62
|
+
}), {
|
|
63
|
+
status: 405,
|
|
64
|
+
headers: { "content-type": "application/json", allow: "POST" },
|
|
82
65
|
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
logger(`[bdk] ${args.label} request failed: ${describeError(error)}`);
|
|
91
|
-
return new Response(JSON.stringify({
|
|
92
|
-
jsonrpc: "2.0",
|
|
93
|
-
error: { code: -32603, message: "Internal server error." },
|
|
94
|
-
id: null,
|
|
95
|
-
}), { status: 500, headers: { "content-type": "application/json" } });
|
|
96
|
-
}
|
|
97
|
-
finally {
|
|
98
|
-
void server.close().catch(() => { });
|
|
99
|
-
}
|
|
66
|
+
}
|
|
67
|
+
const server = args.buildServer();
|
|
68
|
+
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
69
|
+
sessionIdGenerator: undefined,
|
|
70
|
+
enableJsonResponse: true,
|
|
100
71
|
});
|
|
72
|
+
try {
|
|
73
|
+
await server.connect(transport);
|
|
74
|
+
// JSON-response mode materializes the full body before resolving,
|
|
75
|
+
// so closing in `finally` never truncates a streamed response.
|
|
76
|
+
return await transport.handleRequest(args.request);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
logger(`[bdk] ${args.label} request failed: ${describeError(error)}`);
|
|
80
|
+
return new Response(JSON.stringify({
|
|
81
|
+
jsonrpc: "2.0",
|
|
82
|
+
error: { code: -32603, message: "Internal server error." },
|
|
83
|
+
id: null,
|
|
84
|
+
}), { status: 500, headers: { "content-type": "application/json" } });
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
void server.close().catch(() => { });
|
|
88
|
+
}
|
|
101
89
|
}
|
|
102
90
|
/** Tool names the MCP surface exposes for `project` (info projection). */
|
|
103
91
|
export function mcpEndpointToolNames(project) {
|
|
@@ -111,7 +99,12 @@ export function createAgentMcpEndpoint(args) {
|
|
|
111
99
|
const { engine, logger } = args;
|
|
112
100
|
return {
|
|
113
101
|
handle(request, auth) {
|
|
114
|
-
return handleStatelessMcpRequest(
|
|
102
|
+
return handleStatelessMcpRequest({
|
|
103
|
+
request,
|
|
104
|
+
buildServer: () => buildAgentMcpServer(engine, auth),
|
|
105
|
+
label: "mcp endpoint",
|
|
106
|
+
...(logger === undefined ? {} : { logger }),
|
|
107
|
+
});
|
|
115
108
|
},
|
|
116
109
|
};
|
|
117
110
|
}
|
|
@@ -126,11 +119,16 @@ export function createToolMcpEndpoint(args) {
|
|
|
126
119
|
// binding, but tools/list and tools/call forward to `host.mcp` for
|
|
127
120
|
// that connection (see buildConnectionBridgeMcpServer).
|
|
128
121
|
const connection = url.searchParams.get("connection");
|
|
129
|
-
return handleStatelessMcpRequest(
|
|
122
|
+
return handleStatelessMcpRequest({
|
|
123
|
+
request,
|
|
124
|
+
buildServer: () => connection === null
|
|
130
125
|
? buildToolMcpServer(engine, sessionId)
|
|
131
|
-
: buildConnectionBridgeMcpServer(engine, sessionId, connection),
|
|
126
|
+
: buildConnectionBridgeMcpServer(engine, sessionId, connection),
|
|
127
|
+
label: connection === null
|
|
132
128
|
? "tool mcp endpoint"
|
|
133
|
-
: `connection bridge mcp endpoint (${connection})
|
|
129
|
+
: `connection bridge mcp endpoint (${connection})`,
|
|
130
|
+
...(logger === undefined ? {} : { logger }),
|
|
131
|
+
});
|
|
134
132
|
},
|
|
135
133
|
};
|
|
136
134
|
}
|
|
@@ -141,10 +139,14 @@ function buildToolMcpServer(engine, sessionId) {
|
|
|
141
139
|
});
|
|
142
140
|
const tools = engine.project.agent.tools.filter(tool => tool.execution === "server");
|
|
143
141
|
server.setRequestHandler(ListToolsRequestSchema, () => Promise.resolve({
|
|
144
|
-
tools: tools.map(tool => (
|
|
142
|
+
tools: tools.map(tool => ({
|
|
143
|
+
name: tool.name,
|
|
144
|
+
description: tool.description,
|
|
145
|
+
inputSchema: tool.inputSchema,
|
|
146
|
+
...(tool.outputSchema === undefined ? {} : { outputSchema: tool.outputSchema }),
|
|
147
|
+
})),
|
|
145
148
|
}));
|
|
146
|
-
server.setRequestHandler(CallToolRequestSchema, (request) =>
|
|
147
|
-
var _a;
|
|
149
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
148
150
|
if (sessionId === null || sessionId === "") {
|
|
149
151
|
return errorResult("Missing AgentSDK session binding.");
|
|
150
152
|
}
|
|
@@ -152,9 +154,9 @@ function buildToolMcpServer(engine, sessionId) {
|
|
|
152
154
|
if (tool === undefined) {
|
|
153
155
|
return errorResult(`Unknown server tool "${request.params.name}".`);
|
|
154
156
|
}
|
|
155
|
-
const result =
|
|
157
|
+
const result = await engine.callActiveServerTool(sessionId, tool.name, request.params.arguments ?? {});
|
|
156
158
|
return sdkResultToMcpResult(result);
|
|
157
|
-
})
|
|
159
|
+
});
|
|
158
160
|
return server;
|
|
159
161
|
}
|
|
160
162
|
/**
|
|
@@ -194,25 +196,32 @@ function buildConnectionBridgeMcpServer(engine, sessionId, connectionName) {
|
|
|
194
196
|
}
|
|
195
197
|
return undefined;
|
|
196
198
|
};
|
|
197
|
-
server.setRequestHandler(ListToolsRequestSchema, () =>
|
|
199
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
198
200
|
const reason = rejected();
|
|
199
201
|
if (reason !== undefined) {
|
|
200
202
|
throw new Error(reason);
|
|
201
203
|
}
|
|
202
|
-
const tools =
|
|
204
|
+
const tools = await engine.runWithMcpPark(sessionId ?? "", "tools/list", () => engine.host.mcp.listTools(connectionName));
|
|
203
205
|
return {
|
|
204
|
-
tools: tools.map(tool =>
|
|
206
|
+
tools: tools.map(tool => ({
|
|
207
|
+
name: tool.name,
|
|
208
|
+
...(tool.description === undefined ? {} : { description: tool.description }),
|
|
209
|
+
inputSchema: tool.inputSchema ?? { type: "object" },
|
|
210
|
+
...(tool.outputSchema === undefined ? {} : { outputSchema: tool.outputSchema }),
|
|
211
|
+
// Already bounded to the MCP-spec fields at listing time (mcp-host).
|
|
212
|
+
...(tool.annotations === undefined ? {} : { annotations: tool.annotations }),
|
|
213
|
+
})),
|
|
205
214
|
};
|
|
206
|
-
})
|
|
207
|
-
server.setRequestHandler(CallToolRequestSchema, (request) =>
|
|
215
|
+
});
|
|
216
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
208
217
|
const reason = rejected();
|
|
209
218
|
if (reason !== undefined) {
|
|
210
219
|
return errorResult(reason);
|
|
211
220
|
}
|
|
212
221
|
// The one tool path that never reaches `executeServerTool`, so it asks
|
|
213
222
|
// the policy itself.
|
|
214
|
-
const answer =
|
|
215
|
-
sessionId: sessionId
|
|
223
|
+
const answer = await engine.bridgedCallAnswer({
|
|
224
|
+
sessionId: sessionId ?? "",
|
|
216
225
|
connectionName,
|
|
217
226
|
toolName: request.params.name,
|
|
218
227
|
input: request.params.arguments,
|
|
@@ -221,19 +230,22 @@ function buildConnectionBridgeMcpServer(engine, sessionId, connectionName) {
|
|
|
221
230
|
return sdkResultToMcpResult(answer.result);
|
|
222
231
|
}
|
|
223
232
|
try {
|
|
224
|
-
const result =
|
|
225
|
-
return
|
|
233
|
+
const result = await engine.runWithMcpPark(sessionId ?? "", request.params.name, () => engine.host.mcp.callTool(connectionName, request.params.name, request.params.arguments ?? {}));
|
|
234
|
+
return {
|
|
226
235
|
// The host client already speaks MCP, so the content array is valid
|
|
227
236
|
// CallToolResult content; HostMcpCallResult just types the tail of
|
|
228
237
|
// the union open-endedly.
|
|
229
|
-
content: result.content
|
|
230
|
-
? {}
|
|
231
|
-
|
|
238
|
+
content: result.content,
|
|
239
|
+
...(result.isError === undefined ? {} : { isError: result.isError }),
|
|
240
|
+
...(result.structuredContent === undefined
|
|
241
|
+
? {}
|
|
242
|
+
: { structuredContent: result.structuredContent }),
|
|
243
|
+
};
|
|
232
244
|
}
|
|
233
245
|
catch (error) {
|
|
234
246
|
return errorResult(`MCP connection "${connectionName}" is not reachable from the serve host: ${describeError(error)}`);
|
|
235
247
|
}
|
|
236
|
-
})
|
|
248
|
+
});
|
|
237
249
|
return server;
|
|
238
250
|
}
|
|
239
251
|
// ============================================================================
|
|
@@ -258,18 +270,18 @@ function buildAgentMcpServer(engine, auth) {
|
|
|
258
270
|
.optional()
|
|
259
271
|
.describe(`How long to wait for the turn to finish before returning status "running" (default ${DEFAULT_WAIT_SECONDS}).`),
|
|
260
272
|
},
|
|
261
|
-
},
|
|
273
|
+
}, async ({ message, sessionId, waitSeconds }) => {
|
|
262
274
|
try {
|
|
263
|
-
const targetSessionId =
|
|
275
|
+
const targetSessionId = await (sessionId === undefined
|
|
264
276
|
? startSession(engine, auth, message)
|
|
265
277
|
: followUpSession(engine, auth, sessionId, message));
|
|
266
|
-
const payload =
|
|
278
|
+
const payload = await waitForReply(engine, targetSessionId, waitSeconds ?? DEFAULT_WAIT_SECONDS);
|
|
267
279
|
return toToolResult(payload);
|
|
268
280
|
}
|
|
269
281
|
catch (error) {
|
|
270
282
|
return errorResult(describeError(error));
|
|
271
283
|
}
|
|
272
|
-
})
|
|
284
|
+
});
|
|
273
285
|
server.registerTool("check", {
|
|
274
286
|
description: 'Wait for (or poll) a session started with ask. Returns the final reply once the turn completes, or status "running" to keep waiting. Use waitSeconds: 0 for a non-blocking poll.',
|
|
275
287
|
inputSchema: {
|
|
@@ -281,16 +293,16 @@ function buildAgentMcpServer(engine, auth) {
|
|
|
281
293
|
.optional()
|
|
282
294
|
.describe(`How long to wait for the running turn before returning status "running" (default ${DEFAULT_WAIT_SECONDS}).`),
|
|
283
295
|
},
|
|
284
|
-
},
|
|
296
|
+
}, async ({ sessionId, waitSeconds }) => {
|
|
285
297
|
try {
|
|
286
|
-
|
|
287
|
-
const payload =
|
|
298
|
+
await requireOwnedSession(engine, auth, sessionId);
|
|
299
|
+
const payload = await waitForReply(engine, sessionId, waitSeconds ?? DEFAULT_WAIT_SECONDS);
|
|
288
300
|
return toToolResult(payload);
|
|
289
301
|
}
|
|
290
302
|
catch (error) {
|
|
291
303
|
return errorResult(describeError(error));
|
|
292
304
|
}
|
|
293
|
-
})
|
|
305
|
+
});
|
|
294
306
|
const serverTools = agent.tools.filter(tool => tool.execution === "server");
|
|
295
307
|
if (serverTools.length > 0) {
|
|
296
308
|
server.registerTool("call_tool", {
|
|
@@ -308,20 +320,32 @@ function buildAgentMcpServer(engine, auth) {
|
|
|
308
320
|
.optional()
|
|
309
321
|
.describe("Run the tool inside an existing session (recorded on its event stream). Omit for an ephemeral scratch workspace."),
|
|
310
322
|
},
|
|
311
|
-
},
|
|
323
|
+
}, async ({ toolName, input, sessionId }) => {
|
|
312
324
|
try {
|
|
313
325
|
if (sessionId !== undefined) {
|
|
314
|
-
|
|
326
|
+
await requireOwnedSession(engine, auth, sessionId);
|
|
315
327
|
}
|
|
316
|
-
const outcome =
|
|
317
|
-
|
|
328
|
+
const outcome = await engine.callTool(toolName, input ?? {}, {
|
|
329
|
+
auth,
|
|
330
|
+
...(sessionId === undefined ? {} : { sessionId }),
|
|
331
|
+
});
|
|
332
|
+
return {
|
|
333
|
+
content: [
|
|
318
334
|
{
|
|
319
335
|
type: "text",
|
|
320
|
-
text: JSON.stringify(
|
|
321
|
-
|
|
322
|
-
:
|
|
336
|
+
text: JSON.stringify({
|
|
337
|
+
toolName: outcome.toolName,
|
|
338
|
+
isError: outcome.isError,
|
|
339
|
+
result: outcome.result,
|
|
340
|
+
durationMs: outcome.durationMs,
|
|
341
|
+
...(outcome.errorMessage === undefined
|
|
342
|
+
? {}
|
|
343
|
+
: { errorMessage: outcome.errorMessage }),
|
|
344
|
+
}),
|
|
323
345
|
},
|
|
324
|
-
]
|
|
346
|
+
],
|
|
347
|
+
...(outcome.isError ? { isError: true } : {}),
|
|
348
|
+
};
|
|
325
349
|
}
|
|
326
350
|
catch (error) {
|
|
327
351
|
if (error instanceof UnknownToolError) {
|
|
@@ -335,7 +359,7 @@ function buildAgentMcpServer(engine, auth) {
|
|
|
335
359
|
}
|
|
336
360
|
return errorResult(describeError(error));
|
|
337
361
|
}
|
|
338
|
-
})
|
|
362
|
+
});
|
|
339
363
|
}
|
|
340
364
|
return server;
|
|
341
365
|
}
|
|
@@ -358,109 +382,103 @@ function buildAskDescription(project) {
|
|
|
358
382
|
// ============================================================================
|
|
359
383
|
// Session helpers
|
|
360
384
|
// ============================================================================
|
|
361
|
-
function startSession(engine, auth, message) {
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
return session.id;
|
|
365
|
-
});
|
|
385
|
+
async function startSession(engine, auth, message) {
|
|
386
|
+
const session = await engine.send(MCP_CHANNEL_ID, message, { auth });
|
|
387
|
+
return session.id;
|
|
366
388
|
}
|
|
367
|
-
function followUpSession(engine, auth, sessionId, message) {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
continuationToken: record.continuationKey,
|
|
382
|
-
});
|
|
383
|
-
return sessionId;
|
|
389
|
+
async function followUpSession(engine, auth, sessionId, message) {
|
|
390
|
+
const record = await requireOwnedSession(engine, auth, sessionId);
|
|
391
|
+
if (record.mode === "task") {
|
|
392
|
+
throw new Error(`Session ${sessionId} is a fire-and-forget task session; it does not accept follow-ups.`);
|
|
393
|
+
}
|
|
394
|
+
if (record.continuationKey === null) {
|
|
395
|
+
throw new Error(`Session ${sessionId} is not addressable for follow-ups (no active continuation).`);
|
|
396
|
+
}
|
|
397
|
+
// Send as the session owner after the ownership gate above, mirroring the
|
|
398
|
+
// HTTP follow-up route (machine callers address sessions by id; the HTTP
|
|
399
|
+
// continuation token is not rotated).
|
|
400
|
+
await engine.send(record.channelId, message, {
|
|
401
|
+
auth: record.auth,
|
|
402
|
+
continuationToken: record.continuationKey,
|
|
384
403
|
});
|
|
404
|
+
return sessionId;
|
|
385
405
|
}
|
|
386
|
-
function requireOwnedSession(engine, auth, sessionId) {
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
return record;
|
|
396
|
-
});
|
|
406
|
+
async function requireOwnedSession(engine, auth, sessionId) {
|
|
407
|
+
const record = await engine.sessions.get(sessionId);
|
|
408
|
+
if (record === undefined) {
|
|
409
|
+
throw new UnknownSessionError(sessionId);
|
|
410
|
+
}
|
|
411
|
+
if (!samePrincipal(record.auth, auth)) {
|
|
412
|
+
throw new Error(`Session ${sessionId} belongs to a different principal; use the credentials that created it.`);
|
|
413
|
+
}
|
|
414
|
+
return record;
|
|
397
415
|
}
|
|
398
|
-
function waitForReply(engine, sessionId, waitSeconds) {
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
return toReplyPayload(engine, sessionId, outcome);
|
|
410
|
-
});
|
|
416
|
+
async function waitForReply(engine, sessionId, waitSeconds) {
|
|
417
|
+
const waitMs = Math.max(0, Math.min(waitSeconds, MAX_WAIT_SECONDS)) * 1000;
|
|
418
|
+
const outcome = await raceTimeout(engine.waitForCompletion(sessionId), waitMs);
|
|
419
|
+
if (outcome === undefined) {
|
|
420
|
+
return {
|
|
421
|
+
status: "running",
|
|
422
|
+
sessionId,
|
|
423
|
+
note: `The turn is still running. Call check with { "sessionId": "${sessionId}" } to keep waiting.`,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
return toReplyPayload(engine, sessionId, outcome);
|
|
411
427
|
}
|
|
412
|
-
function toReplyPayload(engine, sessionId, outcome) {
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
if (
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
// back to the durable event log for the last completed turn.
|
|
420
|
-
reply = yield latestReplyFromEvents(engine, sessionId);
|
|
421
|
-
}
|
|
422
|
-
return Object.assign({ status: "completed", sessionId }, (reply === undefined ? {} : { reply }));
|
|
423
|
-
}
|
|
424
|
-
if (outcome.status === "cancelled") {
|
|
425
|
-
return {
|
|
426
|
-
status: "cancelled",
|
|
427
|
-
sessionId,
|
|
428
|
-
errorMessage: (_a = outcome.errorMessage) !== null && _a !== void 0 ? _a : "The turn was cancelled.",
|
|
429
|
-
};
|
|
428
|
+
async function toReplyPayload(engine, sessionId, outcome) {
|
|
429
|
+
if (outcome.status === "finished") {
|
|
430
|
+
let reply = outcome.result;
|
|
431
|
+
if (reply === undefined || reply === "") {
|
|
432
|
+
// The engine's in-memory outcome is gone after a host restart; fall
|
|
433
|
+
// back to the durable event log for the last completed turn.
|
|
434
|
+
reply = await latestReplyFromEvents(engine, sessionId);
|
|
430
435
|
}
|
|
431
436
|
return {
|
|
432
|
-
status: "
|
|
437
|
+
status: "completed",
|
|
433
438
|
sessionId,
|
|
434
|
-
|
|
439
|
+
...(reply === undefined ? {} : { reply }),
|
|
435
440
|
};
|
|
436
|
-
}
|
|
441
|
+
}
|
|
442
|
+
if (outcome.status === "cancelled") {
|
|
443
|
+
return {
|
|
444
|
+
status: "cancelled",
|
|
445
|
+
sessionId,
|
|
446
|
+
errorMessage: outcome.errorMessage ?? "The turn was cancelled.",
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
return {
|
|
450
|
+
status: "error",
|
|
451
|
+
sessionId,
|
|
452
|
+
errorMessage: outcome.errorMessage ?? "The turn failed.",
|
|
453
|
+
};
|
|
437
454
|
}
|
|
438
|
-
function latestReplyFromEvents(engine, sessionId) {
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
455
|
+
async function latestReplyFromEvents(engine, sessionId) {
|
|
456
|
+
let events;
|
|
457
|
+
try {
|
|
458
|
+
events = await engine.listEvents(sessionId);
|
|
459
|
+
}
|
|
460
|
+
catch {
|
|
461
|
+
return undefined;
|
|
462
|
+
}
|
|
463
|
+
for (let i = events.length - 1; i >= 0; i--) {
|
|
464
|
+
const event = events[i];
|
|
465
|
+
if (event === undefined) {
|
|
466
|
+
continue;
|
|
443
467
|
}
|
|
444
|
-
|
|
445
|
-
return
|
|
468
|
+
if (event.type === "turn.completed" && event.data.result !== undefined) {
|
|
469
|
+
return event.data.result;
|
|
446
470
|
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
if (event === undefined) {
|
|
450
|
-
continue;
|
|
451
|
-
}
|
|
452
|
-
if (event.type === "turn.completed" && event.data.result !== undefined) {
|
|
453
|
-
return event.data.result;
|
|
454
|
-
}
|
|
455
|
-
if (event.type === "message.completed" && event.data.text !== "") {
|
|
456
|
-
return event.data.text;
|
|
457
|
-
}
|
|
471
|
+
if (event.type === "message.completed" && event.data.text !== "") {
|
|
472
|
+
return event.data.text;
|
|
458
473
|
}
|
|
459
|
-
|
|
460
|
-
|
|
474
|
+
}
|
|
475
|
+
return undefined;
|
|
461
476
|
}
|
|
462
477
|
function toToolResult(payload) {
|
|
463
|
-
return
|
|
478
|
+
return {
|
|
479
|
+
content: [{ type: "text", text: JSON.stringify(payload) }],
|
|
480
|
+
...(payload.status === "error" ? { isError: true } : {}),
|
|
481
|
+
};
|
|
464
482
|
}
|
|
465
483
|
function errorResult(message) {
|
|
466
484
|
return {
|
|
@@ -470,24 +488,30 @@ function errorResult(message) {
|
|
|
470
488
|
}
|
|
471
489
|
function sdkResultToMcpResult(result) {
|
|
472
490
|
if (isSdkToolEnvelope(result)) {
|
|
473
|
-
return
|
|
474
|
-
|
|
475
|
-
|
|
491
|
+
return {
|
|
492
|
+
content: result.content.map(toMcpContent),
|
|
493
|
+
...(result.isError === true ? { isError: true } : {}),
|
|
494
|
+
...(result.structuredContent === undefined
|
|
495
|
+
? {}
|
|
496
|
+
: { structuredContent: result.structuredContent }),
|
|
497
|
+
};
|
|
476
498
|
}
|
|
477
499
|
if (typeof result === "string") {
|
|
478
500
|
return { content: [{ type: "text", text: result }] };
|
|
479
501
|
}
|
|
480
|
-
return
|
|
502
|
+
return {
|
|
503
|
+
content: [{ type: "text", text: JSON.stringify(result) }],
|
|
504
|
+
...(isJsonObject(result) ? { structuredContent: result } : {}),
|
|
505
|
+
};
|
|
481
506
|
}
|
|
482
507
|
function toMcpContent(content) {
|
|
483
|
-
var _a;
|
|
484
508
|
if (content.type === "text") {
|
|
485
509
|
return content;
|
|
486
510
|
}
|
|
487
511
|
return {
|
|
488
512
|
type: "image",
|
|
489
513
|
data: content.data,
|
|
490
|
-
mimeType:
|
|
514
|
+
mimeType: content.mimeType ?? "application/octet-stream",
|
|
491
515
|
};
|
|
492
516
|
}
|
|
493
517
|
function isSdkToolEnvelope(result) {
|