@cursor/bdk 0.2.9 → 0.2.11
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.js +803 -812
- 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.BNhEdGa8.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.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
- package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
- package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.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.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
- package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
- package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
- package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
- package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.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.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.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/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 +35 -35
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +35 -35
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/grokbot-agents.html +35 -35
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +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.js +100 -126
- 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.js +8 -19
- 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.js +73 -90
- 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.js +127 -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.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +413 -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.js +231 -273
- 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-Co4CUVTQ.js → index-Be0-1hw2.js} +45 -45
- package/dist/playground/assets/index-Clz6uHj9.css +1 -0
- 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 +51 -10
- package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
- package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
- 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-C1g_PTTZ.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
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
* Writes to a caller-provided sink (usually stderr) so stdout can stay JSON.
|
|
4
4
|
*/
|
|
5
5
|
export function createStreamProgress(options) {
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const color = (_b = options === null || options === void 0 ? void 0 : options.color) !== null && _b !== void 0 ? _b : (process.stderr.isTTY === true && process.env.NO_COLOR === undefined);
|
|
6
|
+
const write = options?.write ?? ((s) => process.stderr.write(s));
|
|
7
|
+
const color = options?.color ?? (process.stderr.isTTY === true && process.env.NO_COLOR === undefined);
|
|
9
8
|
const c = makePalette(color);
|
|
10
9
|
let assistantOpen = false;
|
|
11
10
|
let thinkingShown = false;
|
|
@@ -21,7 +20,6 @@ export function createStreamProgress(options) {
|
|
|
21
20
|
const elapsed = (since) => `${Date.now() - since}ms`;
|
|
22
21
|
return {
|
|
23
22
|
onEvent(event) {
|
|
24
|
-
var _a, _b, _c, _d;
|
|
25
23
|
switch (event.type) {
|
|
26
24
|
case "session.started": {
|
|
27
25
|
write(c.dim(`session ${event.sessionId}\n`));
|
|
@@ -36,7 +34,7 @@ export function createStreamProgress(options) {
|
|
|
36
34
|
break;
|
|
37
35
|
}
|
|
38
36
|
case "turn.queued": {
|
|
39
|
-
write(c.dim(` turn ${
|
|
37
|
+
write(c.dim(` turn ${event.turnId ?? "?"} queued (position ${event.data.position}, max ${event.data.maxRunningTurns} running)\n`));
|
|
40
38
|
break;
|
|
41
39
|
}
|
|
42
40
|
case "turn.started": {
|
|
@@ -44,7 +42,7 @@ export function createStreamProgress(options) {
|
|
|
44
42
|
if (event.turnId !== undefined) {
|
|
45
43
|
turnStartedAt.set(event.turnId, turnClock);
|
|
46
44
|
}
|
|
47
|
-
write(c.dim(` turn ${
|
|
45
|
+
write(c.dim(` turn ${event.turnId ?? "?"} started\n`));
|
|
48
46
|
break;
|
|
49
47
|
}
|
|
50
48
|
case "message.received": {
|
|
@@ -141,11 +139,11 @@ export function createStreamProgress(options) {
|
|
|
141
139
|
case "subagent.called": {
|
|
142
140
|
closeAssistant();
|
|
143
141
|
const detail = event.data.description ? ` — ${truncate(event.data.description, 60)}` : "";
|
|
144
|
-
write(` ${c.magenta("task")} ${c.bold(
|
|
142
|
+
write(` ${c.magenta("task")} ${c.bold(event.data.name ?? "subagent")}${c.dim(detail)}\n`);
|
|
145
143
|
break;
|
|
146
144
|
}
|
|
147
145
|
case "subagent.completed": {
|
|
148
|
-
write(` ${c.magenta("✓")} ${c.bold(
|
|
146
|
+
write(` ${c.magenta("✓")} ${c.bold(event.data.name ?? "subagent")} ${c.dim("done")}\n`);
|
|
149
147
|
break;
|
|
150
148
|
}
|
|
151
149
|
case "turn.completed": {
|
|
@@ -67,10 +67,9 @@ export function terminalHyperlink(url, label, enabled = colorEnabledFor()) {
|
|
|
67
67
|
* so a warning panel can be yellow without per-line prefixes.
|
|
68
68
|
*/
|
|
69
69
|
export function formatTerminalBox(lines, options) {
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
const contentWidth = Math.max((_c = options === null || options === void 0 ? void 0 : options.minWidth) !== null && _c !== void 0 ? _c : 0, ...lines.map(line => visibleWidth(line)), 1);
|
|
70
|
+
const color = options?.color ?? IDENTITY;
|
|
71
|
+
const padding = options?.padding ?? 1;
|
|
72
|
+
const contentWidth = Math.max(options?.minWidth ?? 0, ...lines.map(line => visibleWidth(line)), 1);
|
|
74
73
|
const inner = contentWidth + padding * 2;
|
|
75
74
|
const padLine = (line) => {
|
|
76
75
|
const extra = contentWidth - visibleWidth(line);
|
|
@@ -50,7 +50,7 @@ export const SCM_CONTINUATION_FIXTURES = [
|
|
|
50
50
|
event_type: "merge_request",
|
|
51
51
|
user: { id: 7, username: "alice", name: "Alice" },
|
|
52
52
|
project: GITLAB_PROJECT,
|
|
53
|
-
object_attributes:
|
|
53
|
+
object_attributes: { ...GITLAB_MERGE_REQUEST, action: "open" },
|
|
54
54
|
},
|
|
55
55
|
expectedKey: "cont:gitlab-mr:acme/platform/api!42",
|
|
56
56
|
},
|
|
@@ -64,7 +64,11 @@ export const SCM_CONTINUATION_FIXTURES = [
|
|
|
64
64
|
event_type: "merge_request",
|
|
65
65
|
user: { id: 7, username: "alice", name: "Alice" },
|
|
66
66
|
project: GITLAB_PROJECT,
|
|
67
|
-
object_attributes:
|
|
67
|
+
object_attributes: {
|
|
68
|
+
...GITLAB_MERGE_REQUEST,
|
|
69
|
+
action: "update",
|
|
70
|
+
oldrev: "fedcba9876543210fedcba9876543210fedcba98",
|
|
71
|
+
},
|
|
68
72
|
},
|
|
69
73
|
expectedKey: "cont:gitlab-mr:acme/platform/api!42",
|
|
70
74
|
},
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack continuation fixtures for the deliveries that are not messages —
|
|
3
|
+
* reactions and Block Kit clicks — shared by the two continuation
|
|
4
|
+
* vocabulary copies: `internal/continuation-identity.ts` (July) and the
|
|
5
|
+
* control plane's `agentSdkConversationIdentity.ts` (server-shared). The
|
|
6
|
+
* hosted control plane stamps the lane from these payloads and the guest
|
|
7
|
+
* derives the same key from its parsers, so a shape only one copy
|
|
8
|
+
* understands fails CI on the other side.
|
|
9
|
+
*
|
|
10
|
+
* Pure data: no imports, so the server-shared suite can load it by relative
|
|
11
|
+
* path without pulling `@cursor/bdk` into the control plane.
|
|
12
|
+
*/
|
|
13
|
+
export interface SlackContinuationFixture {
|
|
14
|
+
name: string;
|
|
15
|
+
/** Mailbox event name the control plane fans out on. */
|
|
16
|
+
eventType: "reaction_added" | "block_actions";
|
|
17
|
+
/**
|
|
18
|
+
* What the control plane claim-checks: the full `event_callback` body for
|
|
19
|
+
* a reaction, the interactivity `payload` JSON for a click.
|
|
20
|
+
*/
|
|
21
|
+
payload: Record<string, unknown>;
|
|
22
|
+
/** `cont:` key, or `undefined` when the delivery stamps `evt:`. */
|
|
23
|
+
expectedKey: string | undefined;
|
|
24
|
+
}
|
|
25
|
+
export declare const SLACK_CONTINUATION_FIXTURES: readonly SlackContinuationFixture[];
|
|
26
|
+
//# sourceMappingURL=slack-continuation-fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-continuation-fixtures.d.ts","sourceRoot":"","sources":["../../../src/internal/testing/slack-continuation-fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,SAAS,EAAE,gBAAgB,GAAG,eAAe,CAAC;IAC9C;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAgDD,eAAO,MAAM,2BAA2B,EAAE,SAAS,wBAAwB,EAoF1E,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack continuation fixtures for the deliveries that are not messages —
|
|
3
|
+
* reactions and Block Kit clicks — shared by the two continuation
|
|
4
|
+
* vocabulary copies: `internal/continuation-identity.ts` (July) and the
|
|
5
|
+
* control plane's `agentSdkConversationIdentity.ts` (server-shared). The
|
|
6
|
+
* hosted control plane stamps the lane from these payloads and the guest
|
|
7
|
+
* derives the same key from its parsers, so a shape only one copy
|
|
8
|
+
* understands fails CI on the other side.
|
|
9
|
+
*
|
|
10
|
+
* Pure data: no imports, so the server-shared suite can load it by relative
|
|
11
|
+
* path without pulling `@cursor/bdk` into the control plane.
|
|
12
|
+
*/
|
|
13
|
+
function reactionAddedBody(item) {
|
|
14
|
+
return {
|
|
15
|
+
type: "event_callback",
|
|
16
|
+
team_id: "T0FIXTURE",
|
|
17
|
+
api_app_id: "A0FIXTURE",
|
|
18
|
+
event_id: "Ev0REACTION",
|
|
19
|
+
authorizations: [{ team_id: "T0FIXTURE", user_id: "U0BOT", is_bot: true }],
|
|
20
|
+
event: {
|
|
21
|
+
type: "reaction_added",
|
|
22
|
+
user: "U0REACTOR",
|
|
23
|
+
reaction: "white_check_mark",
|
|
24
|
+
item_user: "U0AUTHOR",
|
|
25
|
+
item,
|
|
26
|
+
event_ts: "1719000100.000300",
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function blockActionsPayload(args) {
|
|
31
|
+
return {
|
|
32
|
+
type: "block_actions",
|
|
33
|
+
api_app_id: "A0FIXTURE",
|
|
34
|
+
trigger_id: "1111.2222.fixturetrigger",
|
|
35
|
+
team: { id: "T0FIXTURE", domain: "fixture" },
|
|
36
|
+
user: { id: "U0CLICKER", username: "clicker", team_id: "T0FIXTURE" },
|
|
37
|
+
container: args.container,
|
|
38
|
+
channel: args.channelId === undefined ? undefined : { id: args.channelId, name: "fixture-channel" },
|
|
39
|
+
message: args.message,
|
|
40
|
+
actions: [
|
|
41
|
+
{
|
|
42
|
+
type: "button",
|
|
43
|
+
action_id: "deploy_confirm",
|
|
44
|
+
block_id: "deploy_row",
|
|
45
|
+
text: { type: "plain_text", text: "Deploy" },
|
|
46
|
+
value: "deploy",
|
|
47
|
+
action_ts: "1719000300.000500",
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export const SLACK_CONTINUATION_FIXTURES = [
|
|
53
|
+
{
|
|
54
|
+
name: "a reaction roots the lane at the reacted-to message",
|
|
55
|
+
eventType: "reaction_added",
|
|
56
|
+
payload: reactionAddedBody({
|
|
57
|
+
type: "message",
|
|
58
|
+
channel: "C0FIXTURE",
|
|
59
|
+
ts: "1719000000.000200",
|
|
60
|
+
}),
|
|
61
|
+
expectedKey: "cont:C0FIXTURE:1719000000.000200",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: "a reaction in a DM keys the IM",
|
|
65
|
+
eventType: "reaction_added",
|
|
66
|
+
payload: reactionAddedBody({
|
|
67
|
+
type: "message",
|
|
68
|
+
channel: "D0FIXTURE",
|
|
69
|
+
ts: "1719000000.000200",
|
|
70
|
+
}),
|
|
71
|
+
expectedKey: "cont:D0FIXTURE",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "a reaction on a file binds no thread",
|
|
75
|
+
eventType: "reaction_added",
|
|
76
|
+
payload: reactionAddedBody({ type: "file", file: "F0FIXTURE" }),
|
|
77
|
+
expectedKey: undefined,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: "a click on a threaded reply continues the parent thread",
|
|
81
|
+
eventType: "block_actions",
|
|
82
|
+
payload: blockActionsPayload({
|
|
83
|
+
channelId: "C0FIXTURE",
|
|
84
|
+
message: {
|
|
85
|
+
type: "message",
|
|
86
|
+
user: "U0BOT",
|
|
87
|
+
ts: "1719000200.000400",
|
|
88
|
+
thread_ts: "1719000000.000200",
|
|
89
|
+
text: "Deploy?",
|
|
90
|
+
},
|
|
91
|
+
container: {
|
|
92
|
+
type: "message",
|
|
93
|
+
channel_id: "C0FIXTURE",
|
|
94
|
+
message_ts: "1719000200.000400",
|
|
95
|
+
thread_ts: "1719000000.000200",
|
|
96
|
+
},
|
|
97
|
+
}),
|
|
98
|
+
expectedKey: "cont:C0FIXTURE:1719000000.000200",
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: "a click on a top-level post roots the lane at that post",
|
|
102
|
+
eventType: "block_actions",
|
|
103
|
+
payload: blockActionsPayload({
|
|
104
|
+
channelId: "C0FIXTURE",
|
|
105
|
+
message: { type: "message", user: "U0BOT", ts: "1719000200.000400", text: "Deploy?" },
|
|
106
|
+
container: {
|
|
107
|
+
type: "message",
|
|
108
|
+
channel_id: "C0FIXTURE",
|
|
109
|
+
message_ts: "1719000200.000400",
|
|
110
|
+
},
|
|
111
|
+
}),
|
|
112
|
+
expectedKey: "cont:C0FIXTURE:1719000200.000400",
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: "a click in a DM keys the IM",
|
|
116
|
+
eventType: "block_actions",
|
|
117
|
+
payload: blockActionsPayload({
|
|
118
|
+
channelId: "D0FIXTURE",
|
|
119
|
+
message: { type: "message", user: "U0BOT", ts: "1719000200.000400", text: "Deploy?" },
|
|
120
|
+
container: {
|
|
121
|
+
type: "message",
|
|
122
|
+
channel_id: "D0FIXTURE",
|
|
123
|
+
message_ts: "1719000200.000400",
|
|
124
|
+
},
|
|
125
|
+
}),
|
|
126
|
+
expectedKey: "cont:D0FIXTURE",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "a click inside a modal binds no thread",
|
|
130
|
+
eventType: "block_actions",
|
|
131
|
+
payload: blockActionsPayload({
|
|
132
|
+
container: { type: "view", view_id: "V0FIXTURE" },
|
|
133
|
+
}),
|
|
134
|
+
expectedKey: undefined,
|
|
135
|
+
},
|
|
136
|
+
];
|
|
@@ -27,9 +27,8 @@ const WELL_KNOWN_TOOL_TITLES = {
|
|
|
27
27
|
search: "Search with a typed query",
|
|
28
28
|
};
|
|
29
29
|
function catalogTitle(tool) {
|
|
30
|
-
var _a;
|
|
31
30
|
if (tool.advertised === true) {
|
|
32
|
-
return
|
|
31
|
+
return tool.annotations?.title;
|
|
33
32
|
}
|
|
34
33
|
return WELL_KNOWN_TOOL_TITLES[tool.name];
|
|
35
34
|
}
|
|
@@ -47,12 +46,11 @@ const CONNECTOR_SCOPE_PREFIX = /^(?:dashboard-team-\d+-|dashboard-|user-)/;
|
|
|
47
46
|
* and "plugins" tells an operator nothing — "Buildkite" does.
|
|
48
47
|
*/
|
|
49
48
|
function catalogSource(tool) {
|
|
50
|
-
var _a, _b;
|
|
51
49
|
if (tool.advertised !== true) {
|
|
52
50
|
return undefined;
|
|
53
51
|
}
|
|
54
52
|
const properties = tool.inputSchema.properties;
|
|
55
|
-
const first =
|
|
53
|
+
const first = properties?.__conn__?.enum?.[0];
|
|
56
54
|
if (typeof first === "string" && first !== "") {
|
|
57
55
|
return first.replace(CONNECTOR_SCOPE_PREFIX, "");
|
|
58
56
|
}
|
|
@@ -66,5 +64,13 @@ export function catalogListEntry(tool) {
|
|
|
66
64
|
};
|
|
67
65
|
}
|
|
68
66
|
export function catalogDetailEntry(tool) {
|
|
69
|
-
return
|
|
67
|
+
return {
|
|
68
|
+
...catalogListEntry(tool),
|
|
69
|
+
description: tool.description,
|
|
70
|
+
execution: tool.execution,
|
|
71
|
+
needsApproval: tool.needsApproval,
|
|
72
|
+
effect: tool.effect,
|
|
73
|
+
inputSchema: tool.inputSchema,
|
|
74
|
+
outputSchema: tool.outputSchema,
|
|
75
|
+
};
|
|
70
76
|
}
|
|
@@ -5,22 +5,12 @@
|
|
|
5
5
|
* messages, assistant text, tool calls with args/results, and
|
|
6
6
|
* success/failure — not a firehose of streaming deltas.
|
|
7
7
|
*/
|
|
8
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
8
|
import { readFile } from "node:fs/promises";
|
|
18
9
|
/**
|
|
19
10
|
* Collapse a session event list into a trajectory. Streaming deltas are
|
|
20
11
|
* folded into final assistant / reasoning text per turn.
|
|
21
12
|
*/
|
|
22
13
|
export function buildTrajectory(events) {
|
|
23
|
-
var _a, _b;
|
|
24
14
|
let sessionId = "";
|
|
25
15
|
let sdkAgentId;
|
|
26
16
|
let agentUrl;
|
|
@@ -90,7 +80,7 @@ export function buildTrajectory(events) {
|
|
|
90
80
|
}
|
|
91
81
|
const turn = ensureTurn(event.turnId);
|
|
92
82
|
for (const call of event.data.calls) {
|
|
93
|
-
const parentCallId =
|
|
83
|
+
const parentCallId = call.parentCallId ?? event.data.parentCallId;
|
|
94
84
|
// Keep bare top-level `task` in toolCalls so evals like
|
|
95
85
|
// `calledTool("task")` / `notCalledTool("task")` keep working.
|
|
96
86
|
// Nested progress also appears under `subagents`.
|
|
@@ -236,9 +226,19 @@ export function buildTrajectory(events) {
|
|
|
236
226
|
const costedTurns = turns.filter(t => t.cost !== undefined);
|
|
237
227
|
const totalCostUsd = costedTurns.length === 0
|
|
238
228
|
? undefined
|
|
239
|
-
: roundCostUsd(costedTurns.reduce((sum, t) =>
|
|
240
|
-
return
|
|
241
|
-
|
|
229
|
+
: roundCostUsd(costedTurns.reduce((sum, t) => sum + (t.cost?.totalUsd ?? 0), 0));
|
|
230
|
+
return {
|
|
231
|
+
sessionId,
|
|
232
|
+
...(sdkAgentId === undefined ? {} : { sdkAgentId }),
|
|
233
|
+
...(agentUrl === undefined ? {} : { agentUrl }),
|
|
234
|
+
...(channelId === undefined ? {} : { channelId }),
|
|
235
|
+
ok: turnsFailed === 0 && turns.length > 0,
|
|
236
|
+
finalText: lastGood?.assistantText ?? "",
|
|
237
|
+
turnsFailed,
|
|
238
|
+
toolCallCount,
|
|
239
|
+
...(totalCostUsd === undefined ? {} : { totalCostUsd }),
|
|
240
|
+
turns,
|
|
241
|
+
};
|
|
242
242
|
}
|
|
243
243
|
/** Micro-dollar precision so summed floats stay readable in JSON. */
|
|
244
244
|
export function roundCostUsd(usd) {
|
|
@@ -268,22 +268,19 @@ export function parseEventsNdjson(text) {
|
|
|
268
268
|
try {
|
|
269
269
|
events.push(JSON.parse(trimmed));
|
|
270
270
|
}
|
|
271
|
-
catch
|
|
271
|
+
catch {
|
|
272
272
|
// skip malformed lines
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
275
|
return events;
|
|
276
276
|
}
|
|
277
277
|
/** Load and summarize a durable session event log. */
|
|
278
|
-
export function loadTrajectoryFromEventsFile(path) {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
return buildTrajectory(parseEventsNdjson(text));
|
|
282
|
-
});
|
|
278
|
+
export async function loadTrajectoryFromEventsFile(path) {
|
|
279
|
+
const text = await readFile(path, "utf8");
|
|
280
|
+
return buildTrajectory(parseEventsNdjson(text));
|
|
283
281
|
}
|
|
284
282
|
/** Human-readable one-line-per-turn dump (for non-JSON CLI output). */
|
|
285
283
|
export function formatTrajectoryText(trajectory) {
|
|
286
|
-
var _a;
|
|
287
284
|
const lines = [];
|
|
288
285
|
lines.push(`session ${trajectory.sessionId || "(unknown)"} ok=${trajectory.ok}`);
|
|
289
286
|
if (trajectory.sdkAgentId !== undefined) {
|
|
@@ -309,7 +306,7 @@ export function formatTrajectoryText(trajectory) {
|
|
|
309
306
|
}
|
|
310
307
|
}
|
|
311
308
|
for (const sub of turn.subagents) {
|
|
312
|
-
const label =
|
|
309
|
+
const label = sub.name ?? "subagent";
|
|
313
310
|
const detail = sub.description !== undefined ? ` — ${truncate(sub.description, 80)}` : "";
|
|
314
311
|
lines.push(` task ${label}${detail}`);
|
|
315
312
|
for (const call of sub.toolCalls) {
|
|
@@ -3,15 +3,6 @@
|
|
|
3
3
|
* `POST /v1/models/estimate-cost` endpoint (billed usage events when an
|
|
4
4
|
* agent/conversation id is known, otherwise live catalog pricing).
|
|
5
5
|
*/
|
|
6
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
8
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
9
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
10
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
11
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
12
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
13
|
-
});
|
|
14
|
-
};
|
|
15
6
|
import { cursorExternalApiUrl, resolveApiKey } from "./cursor/credentials.js";
|
|
16
7
|
export function modelSettingId(model) {
|
|
17
8
|
return typeof model === "string" ? model : model.id;
|
|
@@ -40,7 +31,10 @@ export function toCatalogDisjointUsage(usage, model) {
|
|
|
40
31
|
if (cachedTokens === 0 || usage.inputTokens < cachedTokens) {
|
|
41
32
|
return usage;
|
|
42
33
|
}
|
|
43
|
-
return
|
|
34
|
+
return {
|
|
35
|
+
...usage,
|
|
36
|
+
inputTokens: usage.inputTokens - cachedTokens,
|
|
37
|
+
};
|
|
44
38
|
}
|
|
45
39
|
export function roundCostUsd(usd) {
|
|
46
40
|
return Math.round(usd * 1e6) / 1e6;
|
|
@@ -65,58 +59,54 @@ export function turnCostFromCents(args) {
|
|
|
65
59
|
* is the last thing in front of that event, so an unbounded wait here queues
|
|
66
60
|
* the next message behind the endpoint's billed-usage lookup.
|
|
67
61
|
*/
|
|
68
|
-
const ESTIMATE_COST_TIMEOUT_MS =
|
|
69
|
-
export function estimateTurnCostFromApi(input) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
runId: input.runId,
|
|
96
|
-
}),
|
|
97
|
-
signal: AbortSignal.timeout(ESTIMATE_COST_TIMEOUT_MS),
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
catch (_c) {
|
|
101
|
-
return undefined;
|
|
102
|
-
}
|
|
103
|
-
if (!response.ok) {
|
|
104
|
-
return undefined;
|
|
105
|
-
}
|
|
106
|
-
let body;
|
|
107
|
-
try {
|
|
108
|
-
body = (yield response.json());
|
|
109
|
-
}
|
|
110
|
-
catch (_d) {
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
if (typeof ((_a = body.cost) === null || _a === void 0 ? void 0 : _a.rawCostCents) !== "number" || typeof body.cost.chargedCents !== "number") {
|
|
114
|
-
return undefined;
|
|
115
|
-
}
|
|
116
|
-
return turnCostFromCents({
|
|
117
|
-
model: (_b = body.model) !== null && _b !== void 0 ? _b : model,
|
|
118
|
-
cost: body.cost,
|
|
119
|
-
source: body.source === "usage" ? "usage" : "catalog",
|
|
62
|
+
const ESTIMATE_COST_TIMEOUT_MS = 5_000;
|
|
63
|
+
export async function estimateTurnCostFromApi(input) {
|
|
64
|
+
const resolved = await resolveApiKey();
|
|
65
|
+
if (resolved === undefined) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const model = modelSettingId(input.model);
|
|
69
|
+
const catalogUsage = input.usage === undefined ? undefined : toCatalogDisjointUsage(input.usage, input.model);
|
|
70
|
+
let response;
|
|
71
|
+
try {
|
|
72
|
+
response = await fetch(`${cursorExternalApiUrl()}/v1/models/estimate-cost`, {
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers: {
|
|
75
|
+
authorization: `Bearer ${resolved.apiKey}`,
|
|
76
|
+
"content-type": "application/json",
|
|
77
|
+
},
|
|
78
|
+
body: JSON.stringify({
|
|
79
|
+
model,
|
|
80
|
+
inputTokens: catalogUsage?.inputTokens,
|
|
81
|
+
outputTokens: catalogUsage?.outputTokens,
|
|
82
|
+
cacheReadTokens: catalogUsage?.cacheReadTokens,
|
|
83
|
+
cacheWriteTokens: catalogUsage?.cacheWriteTokens,
|
|
84
|
+
agentId: input.agentId,
|
|
85
|
+
conversationId: input.conversationId,
|
|
86
|
+
runId: input.runId,
|
|
87
|
+
}),
|
|
88
|
+
signal: AbortSignal.timeout(ESTIMATE_COST_TIMEOUT_MS),
|
|
120
89
|
});
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
if (!response.ok) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
let body;
|
|
98
|
+
try {
|
|
99
|
+
body = (await response.json());
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
if (typeof body.cost?.rawCostCents !== "number" || typeof body.cost.chargedCents !== "number") {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
return turnCostFromCents({
|
|
108
|
+
model: body.model ?? model,
|
|
109
|
+
cost: body.cost,
|
|
110
|
+
source: body.source === "usage" ? "usage" : "catalog",
|
|
121
111
|
});
|
|
122
112
|
}
|
|
@@ -15,7 +15,7 @@ export class TurnGovernor {
|
|
|
15
15
|
this.waiters = [];
|
|
16
16
|
/** Sessions currently waiting for a slot (at most one turn per session). */
|
|
17
17
|
this.queuedSessions = new Set();
|
|
18
|
-
this.maxRunningTurns = concurrency
|
|
18
|
+
this.maxRunningTurns = concurrency?.maxRunningTurns;
|
|
19
19
|
}
|
|
20
20
|
/** True when a `maxRunningTurns` ceiling is configured. */
|
|
21
21
|
get limited() {
|
|
@@ -40,7 +40,6 @@ export class TurnGovernor {
|
|
|
40
40
|
* running. Unlimited governors grant immediately.
|
|
41
41
|
*/
|
|
42
42
|
acquire(args) {
|
|
43
|
-
var _a;
|
|
44
43
|
const limit = this.maxRunningTurns;
|
|
45
44
|
if (limit === undefined) {
|
|
46
45
|
return Promise.resolve(NO_OP_PERMIT);
|
|
@@ -49,19 +48,17 @@ export class TurnGovernor {
|
|
|
49
48
|
return Promise.resolve(this.grantSlot());
|
|
50
49
|
}
|
|
51
50
|
// Saturated. A turn that is already preempted never enqueues.
|
|
52
|
-
if (
|
|
51
|
+
if (args.signal?.aborted === true) {
|
|
53
52
|
return Promise.resolve(undefined);
|
|
54
53
|
}
|
|
55
54
|
return new Promise(resolve => {
|
|
56
|
-
var _a, _b;
|
|
57
55
|
const waiter = {
|
|
58
56
|
sessionId: args.sessionId,
|
|
59
57
|
grant: permit => resolve(permit),
|
|
60
58
|
cancel: () => resolve(undefined),
|
|
61
59
|
cleanup: () => {
|
|
62
|
-
var _a;
|
|
63
60
|
this.queuedSessions.delete(args.sessionId);
|
|
64
|
-
|
|
61
|
+
args.signal?.removeEventListener("abort", onAbort);
|
|
65
62
|
},
|
|
66
63
|
};
|
|
67
64
|
const onAbort = () => {
|
|
@@ -75,8 +72,8 @@ export class TurnGovernor {
|
|
|
75
72
|
};
|
|
76
73
|
this.waiters.push(waiter);
|
|
77
74
|
this.queuedSessions.add(args.sessionId);
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
args.signal?.addEventListener("abort", onAbort, { once: true });
|
|
76
|
+
args.onQueued?.(this.waiters.length);
|
|
80
77
|
});
|
|
81
78
|
}
|
|
82
79
|
/** Take a slot and build its (idempotent) release handle. */
|