@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,9 +15,13 @@ export function mergeCloudOptions(args) {
|
|
|
15
15
|
if (override === undefined) {
|
|
16
16
|
return base;
|
|
17
17
|
}
|
|
18
|
-
return
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
return {
|
|
19
|
+
...base,
|
|
20
|
+
...override,
|
|
21
|
+
...(base.envVars !== undefined || override.envVars !== undefined
|
|
22
|
+
? { envVars: { ...base.envVars, ...override.envVars } }
|
|
23
|
+
: {}),
|
|
24
|
+
};
|
|
21
25
|
}
|
|
22
26
|
/**
|
|
23
27
|
* Session turn runtime: a per-session `cloud` attach forces cloud even when
|
|
@@ -86,7 +86,14 @@ export function applyCloudUsageToEvents(events, billed, model) {
|
|
|
86
86
|
if (patch === undefined || event.type !== "turn.completed") {
|
|
87
87
|
return event;
|
|
88
88
|
}
|
|
89
|
-
return
|
|
89
|
+
return {
|
|
90
|
+
...event,
|
|
91
|
+
data: {
|
|
92
|
+
...event.data,
|
|
93
|
+
usage: patch.usage,
|
|
94
|
+
...(patch.cost === undefined ? {} : { cost: patch.cost }),
|
|
95
|
+
},
|
|
96
|
+
};
|
|
90
97
|
});
|
|
91
98
|
}
|
|
92
99
|
function turnCostFromBilled(model, cost) {
|
|
@@ -24,7 +24,7 @@ function credentials(transport) {
|
|
|
24
24
|
return undefined;
|
|
25
25
|
}
|
|
26
26
|
function expand(value, env) {
|
|
27
|
-
return value.replace(ENV_TEMPLATE, (_match, name) =>
|
|
27
|
+
return value.replace(ENV_TEMPLATE, (_match, name) => env[name] ?? "");
|
|
28
28
|
}
|
|
29
29
|
/** The same object back when nothing templates, so callers can compare by identity. */
|
|
30
30
|
function expandRecord(values, env) {
|
|
@@ -35,7 +35,7 @@ function expandRecord(values, env) {
|
|
|
35
35
|
let changed = false;
|
|
36
36
|
for (const [key, value] of Object.entries(values)) {
|
|
37
37
|
expanded[key] = expand(value, env);
|
|
38
|
-
changed
|
|
38
|
+
changed ||= expanded[key] !== value;
|
|
39
39
|
}
|
|
40
40
|
return changed ? expanded : values;
|
|
41
41
|
}
|
|
@@ -47,19 +47,18 @@ function expandRecord(values, env) {
|
|
|
47
47
|
export function resolveConnectionEnvTemplates(transport, env = process.env) {
|
|
48
48
|
if ("url" in transport) {
|
|
49
49
|
const headers = expandRecord(transport.headers, env);
|
|
50
|
-
return headers === transport.headers ? transport :
|
|
50
|
+
return headers === transport.headers ? transport : { ...transport, headers };
|
|
51
51
|
}
|
|
52
52
|
if ("command" in transport) {
|
|
53
53
|
const spawnEnv = expandRecord(transport.env, env);
|
|
54
|
-
return spawnEnv === transport.env ? transport :
|
|
54
|
+
return spawnEnv === transport.env ? transport : { ...transport, env: spawnEnv };
|
|
55
55
|
}
|
|
56
56
|
return transport;
|
|
57
57
|
}
|
|
58
58
|
/** Variables a transport templates that the environment does not define, in first-seen order. */
|
|
59
59
|
export function unresolvedConnectionEnvNames(transport, env = process.env) {
|
|
60
|
-
var _a;
|
|
61
60
|
const missing = new Set();
|
|
62
|
-
for (const value of Object.values(
|
|
61
|
+
for (const value of Object.values(credentials(transport) ?? {})) {
|
|
63
62
|
for (const match of value.matchAll(ENV_TEMPLATE)) {
|
|
64
63
|
const name = match[1];
|
|
65
64
|
if (name !== undefined && env[name] === undefined) {
|
|
@@ -62,7 +62,7 @@ export function channelContinuationIdentity(definition) {
|
|
|
62
62
|
return defaultContinuationSelector();
|
|
63
63
|
}
|
|
64
64
|
export function httpContinuationIdentity(httpChannel) {
|
|
65
|
-
return normalizeIdentity(httpChannel
|
|
65
|
+
return normalizeIdentity(httpChannel?.continuation, "http");
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
68
|
* Stamp `/v2` continuation defaults onto channel constructors that omitted
|
|
@@ -113,8 +113,7 @@ export function warnOmittedContinuationDowngrades(input) {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
function omittedContinuationDowngradeMessage(kind, downgrade) {
|
|
116
|
-
|
|
117
|
-
const membership = (_a = omittedV2TypedType(kind)) !== null && _a !== void 0 ? _a : kind;
|
|
116
|
+
const membership = omittedV2TypedType(kind) ?? kind;
|
|
118
117
|
return (`omitted continuation stamped ${downgrade.selector} because ` +
|
|
119
118
|
`${downgrade.unexpected.join(", ")} ${downgrade.unexpected.length === 1 ? "is" : "are"} not in the ${membership} membership; every delivery on this ` +
|
|
120
119
|
`channel starts a fresh session. Pin continuation: "${downgrade.selector}" ` +
|
|
@@ -135,12 +134,16 @@ function stampOmittedChannelContinuation(definition, version) {
|
|
|
135
134
|
}
|
|
136
135
|
/** Kind-specific event lists on `ChannelMeta`; a definition sets at most one. */
|
|
137
136
|
export function channelDeclaredEventTypes(meta) {
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
return (meta?.githubWebhookEvents ??
|
|
138
|
+
meta?.originWebhookEvents ??
|
|
139
|
+
meta?.gitlabWebhookEvents ??
|
|
140
|
+
meta?.bitbucketWebhookEvents ??
|
|
141
|
+
meta?.deploymentEventTypes ??
|
|
142
|
+
meta?.factoryEventTypes ??
|
|
143
|
+
meta?.slackEventTypes);
|
|
140
144
|
}
|
|
141
145
|
export function handshakeChannelContinuation(input) {
|
|
142
|
-
|
|
143
|
-
const kind = (_a = input.definition.meta) === null || _a === void 0 ? void 0 : _a.kind;
|
|
146
|
+
const kind = input.definition.meta?.kind;
|
|
144
147
|
const eventTypes = channelDeclaredEventTypes(input.definition.meta);
|
|
145
148
|
const result = handshakeContinuation({
|
|
146
149
|
kind,
|
|
@@ -65,7 +65,7 @@ export const BUILTINS = [
|
|
|
65
65
|
{
|
|
66
66
|
type: "thread",
|
|
67
67
|
kind: "slack",
|
|
68
|
-
events: ["message", "app_mention"],
|
|
68
|
+
events: ["message", "app_mention", "reaction_added", "block_actions"],
|
|
69
69
|
format: "{channelId}:{threadTs}",
|
|
70
70
|
},
|
|
71
71
|
{
|
|
@@ -216,20 +216,16 @@ export function defaultContinuationSelector(kind, version = "v1", eventTypes) {
|
|
|
216
216
|
}
|
|
217
217
|
/** Typed selector when every declared event is in the type's membership. */
|
|
218
218
|
function membershipOrNone(eventTypes, type, typed, none) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const allowed = new Set((_b = (_a = builtinForType(type)) === null || _a === void 0 ? void 0 : _a.events) !== null && _b !== void 0 ? _b : []);
|
|
222
|
-
if ((eventTypes !== null && eventTypes !== void 0 ? eventTypes : []).some(event => !allowed.has(event))) {
|
|
219
|
+
const allowed = new Set(builtinForType(type)?.events ?? []);
|
|
220
|
+
if ((eventTypes ?? []).some(event => !allowed.has(event))) {
|
|
223
221
|
return none;
|
|
224
222
|
}
|
|
225
223
|
return typed;
|
|
226
224
|
}
|
|
227
225
|
function githubV2Default(eventTypes) {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
const
|
|
231
|
-
const issueEvents = new Set((_c = (_a = builtinForType("issue")) === null || _a === void 0 ? void 0 : _a.events) !== null && _c !== void 0 ? _c : []);
|
|
232
|
-
const prEvents = new Set((_d = (_b = builtinForType("pr")) === null || _b === void 0 ? void 0 : _b.events) !== null && _d !== void 0 ? _d : []);
|
|
226
|
+
const events = eventTypes ?? [];
|
|
227
|
+
const issueEvents = new Set(builtinForType("issue")?.events ?? []);
|
|
228
|
+
const prEvents = new Set(builtinForType("pr")?.events ?? []);
|
|
233
229
|
if (events.length > 0 && events.every(event => issueEvents.has(event))) {
|
|
234
230
|
return "github.issue/v2";
|
|
235
231
|
}
|
|
@@ -255,7 +251,7 @@ export function omittedV2TypedType(kind) {
|
|
|
255
251
|
* silent on omitted selectors (type `none` is always admitted).
|
|
256
252
|
*/
|
|
257
253
|
export function omittedV2MembershipDowngrade(kind, eventTypes) {
|
|
258
|
-
const events = eventTypes
|
|
254
|
+
const events = eventTypes ?? [];
|
|
259
255
|
if (events.length === 0) {
|
|
260
256
|
return undefined;
|
|
261
257
|
}
|
|
@@ -280,10 +276,10 @@ export function parseContinuationSelector(selector) {
|
|
|
280
276
|
if (!isContinuationSelector(selector)) {
|
|
281
277
|
return undefined;
|
|
282
278
|
}
|
|
283
|
-
return
|
|
279
|
+
return { selector, ...SELECTOR_FIELDS[selector] };
|
|
284
280
|
}
|
|
285
281
|
function resolveContinuation(raw, kind) {
|
|
286
|
-
const selector = raw
|
|
282
|
+
const selector = raw ?? defaultContinuationSelector(kind);
|
|
287
283
|
const parsed = parseContinuationSelector(selector);
|
|
288
284
|
if (parsed === undefined) {
|
|
289
285
|
throw new V2EngineError(`v2: invalid continuation selector ${JSON.stringify(selector)}`);
|
|
@@ -310,7 +306,6 @@ function builtinForType(type) {
|
|
|
310
306
|
return BUILTINS.find(builtin => builtin.type === type);
|
|
311
307
|
}
|
|
312
308
|
function formatConversationKey(type, fields) {
|
|
313
|
-
var _a, _b;
|
|
314
309
|
switch (type) {
|
|
315
310
|
case "pr":
|
|
316
311
|
return `github-pr:${fields.fullName}#${fields.number}`;
|
|
@@ -323,7 +318,7 @@ function formatConversationKey(type, fields) {
|
|
|
323
318
|
case "bitbucket-pr":
|
|
324
319
|
return `bitbucket-pr:${fields.fullName}#${fields.number}`;
|
|
325
320
|
case "thread":
|
|
326
|
-
return slackThreadKey(
|
|
321
|
+
return slackThreadKey(fields.channelId ?? "", fields.threadTs ?? "");
|
|
327
322
|
case "deployment":
|
|
328
323
|
return `deployments:${fields.deploymentId}`;
|
|
329
324
|
case "change-monitor-checkpoint":
|
|
@@ -391,7 +386,6 @@ export function mintClaim(claim) {
|
|
|
391
386
|
}
|
|
392
387
|
}
|
|
393
388
|
export function handshakeContinuation(input) {
|
|
394
|
-
var _a;
|
|
395
389
|
if (input.identity === undefined) {
|
|
396
390
|
return { ok: true };
|
|
397
391
|
}
|
|
@@ -418,7 +412,7 @@ export function handshakeContinuation(input) {
|
|
|
418
412
|
error: `v2: unknown continuation type ${parsed.type}`,
|
|
419
413
|
};
|
|
420
414
|
}
|
|
421
|
-
const eventTypes =
|
|
415
|
+
const eventTypes = input.eventTypes ?? [];
|
|
422
416
|
const allowed = new Set(builtin.events);
|
|
423
417
|
const unexpected = eventTypes.filter(event => !allowed.has(event));
|
|
424
418
|
if (unexpected.length > 0) {
|
|
@@ -447,7 +441,7 @@ export function extractContinuation(type, eventName, payload) {
|
|
|
447
441
|
case "issue":
|
|
448
442
|
return extractGitHub(type, eventName, payload);
|
|
449
443
|
case "thread":
|
|
450
|
-
return extractSlack(payload);
|
|
444
|
+
return extractSlack(eventName, payload);
|
|
451
445
|
case "origin-pr":
|
|
452
446
|
return extractOrigin(payload);
|
|
453
447
|
case "gitlab-mr":
|
|
@@ -511,7 +505,10 @@ export function bindMailboxContinuationSend(send, mailbox) {
|
|
|
511
505
|
if (mailbox === undefined) {
|
|
512
506
|
return send;
|
|
513
507
|
}
|
|
514
|
-
return (message, options) =>
|
|
508
|
+
return (message, options) => send(message, {
|
|
509
|
+
...options,
|
|
510
|
+
mailboxContinuation: options?.mailboxContinuation ?? mailbox,
|
|
511
|
+
});
|
|
515
512
|
}
|
|
516
513
|
function extractGitHub(type, eventName, payload) {
|
|
517
514
|
const record = asRecord(payload);
|
|
@@ -532,27 +529,25 @@ function extractGitHub(type, eventName, payload) {
|
|
|
532
529
|
})}`;
|
|
533
530
|
}
|
|
534
531
|
function githubBoundConversation(eventName, payload) {
|
|
535
|
-
var _a, _b;
|
|
536
|
-
var _c;
|
|
537
532
|
switch (eventName) {
|
|
538
533
|
case "pull_request":
|
|
539
534
|
case "pull_request_review":
|
|
540
535
|
case "pull_request_review_comment":
|
|
541
536
|
case "pull_request_review_thread": {
|
|
542
|
-
const number = positiveInt(
|
|
537
|
+
const number = positiveInt(asRecord(payload.pull_request)?.number);
|
|
543
538
|
return number === undefined ? undefined : { type: "pr", number };
|
|
544
539
|
}
|
|
545
540
|
case "issues": {
|
|
546
|
-
const number = positiveInt(
|
|
541
|
+
const number = positiveInt(asRecord(payload.issue)?.number);
|
|
547
542
|
return number === undefined ? undefined : { type: "issue", number };
|
|
548
543
|
}
|
|
549
544
|
case "issue_comment": {
|
|
550
545
|
const issue = asRecord(payload.issue);
|
|
551
|
-
const number = positiveInt(issue
|
|
546
|
+
const number = positiveInt(issue?.number);
|
|
552
547
|
if (number === undefined) {
|
|
553
548
|
return undefined;
|
|
554
549
|
}
|
|
555
|
-
return
|
|
550
|
+
return issue?.pull_request !== undefined && issue.pull_request !== null
|
|
556
551
|
? { type: "pr", number }
|
|
557
552
|
: { type: "issue", number };
|
|
558
553
|
}
|
|
@@ -562,45 +557,74 @@ function githubBoundConversation(eventName, payload) {
|
|
|
562
557
|
}
|
|
563
558
|
case "check_run": {
|
|
564
559
|
const checkRun = asRecord(payload.check_run);
|
|
565
|
-
const number =
|
|
560
|
+
const number = firstPullRequestNumber(checkRun) ?? firstPullRequestNumber(asRecord(checkRun?.check_suite));
|
|
566
561
|
return number === undefined ? undefined : { type: "pr", number };
|
|
567
562
|
}
|
|
568
563
|
default:
|
|
569
564
|
return undefined;
|
|
570
565
|
}
|
|
571
566
|
}
|
|
572
|
-
function extractSlack(payload) {
|
|
573
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
567
|
+
function extractSlack(eventName, payload) {
|
|
574
568
|
const record = asRecord(payload);
|
|
575
569
|
if (record === undefined) {
|
|
576
570
|
return undefined;
|
|
577
571
|
}
|
|
578
|
-
|
|
579
|
-
// identity fields live under `event`. Top-level fields still win for
|
|
580
|
-
// pre-flattened payloads (Socket Mode local dev, tests). Keep in
|
|
581
|
-
// lockstep with the control-plane twin (SlackThreadExtractor).
|
|
582
|
-
const event = asRecord(record.event);
|
|
583
|
-
const channelId = (_c = (_b = (_a = nonEmpty(record.channelId)) !== null && _a !== void 0 ? _a : nonEmpty(record.channel_id)) !== null && _b !== void 0 ? _b : nonEmpty(record.channel)) !== null && _c !== void 0 ? _c : nonEmpty(event === null || event === void 0 ? void 0 : event.channel);
|
|
584
|
-
const threadTs = (_g = (_f = (_e = (_d = nonEmpty(record.threadTs)) !== null && _d !== void 0 ? _d : nonEmpty(record.thread_ts)) !== null && _e !== void 0 ? _e : nonEmpty(event === null || event === void 0 ? void 0 : event.thread_ts)) !== null && _f !== void 0 ? _f : nonEmpty(record.ts)) !== null && _g !== void 0 ? _g : nonEmpty(event === null || event === void 0 ? void 0 : event.ts);
|
|
572
|
+
const { channelId, threadTs } = slackThreadFields(eventName, record);
|
|
585
573
|
if (channelId === undefined) {
|
|
586
574
|
return undefined;
|
|
587
575
|
}
|
|
588
576
|
if (!isSlackImChannel(channelId) && threadTs === undefined) {
|
|
589
577
|
return undefined;
|
|
590
578
|
}
|
|
591
|
-
return `cont:${slackThreadKey(channelId, threadTs
|
|
579
|
+
return `cont:${slackThreadKey(channelId, threadTs ?? "")}`;
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* Top-level fields win for pre-flattened payloads (Socket Mode local dev,
|
|
583
|
+
* tests). Events-API deliveries are the full event_callback body, so
|
|
584
|
+
* message identity lives under `event`; a reaction continues the thread
|
|
585
|
+
* rooted at the reacted-to message (`event.item`, as
|
|
586
|
+
* `parseReactionAddedEvent` does) and a Block Kit click — the interactivity
|
|
587
|
+
* payload — the thread of the message carrying the element (as
|
|
588
|
+
* `parseSlackBlockAction` does). Keep in lockstep with the control-plane
|
|
589
|
+
* twin (SlackThreadExtractor).
|
|
590
|
+
*/
|
|
591
|
+
function slackThreadFields(eventName, record) {
|
|
592
|
+
const flatChannelId = nonEmpty(record.channelId) ?? nonEmpty(record.channel_id) ?? nonEmpty(record.channel);
|
|
593
|
+
const flatThreadTs = nonEmpty(record.threadTs) ?? nonEmpty(record.thread_ts);
|
|
594
|
+
if (eventName === "reaction_added") {
|
|
595
|
+
const item = asRecord(asRecord(record.event)?.item);
|
|
596
|
+
return {
|
|
597
|
+
channelId: flatChannelId ?? nonEmpty(item?.channel),
|
|
598
|
+
threadTs: flatThreadTs ?? nonEmpty(item?.ts),
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
if (eventName === "block_actions") {
|
|
602
|
+
const message = asRecord(record.message);
|
|
603
|
+
return {
|
|
604
|
+
channelId: flatChannelId ?? nonEmpty(asRecord(record.channel)?.id),
|
|
605
|
+
threadTs: flatThreadTs ??
|
|
606
|
+
nonEmpty(message?.thread_ts) ??
|
|
607
|
+
nonEmpty(asRecord(record.container)?.thread_ts) ??
|
|
608
|
+
nonEmpty(message?.ts),
|
|
609
|
+
};
|
|
610
|
+
}
|
|
611
|
+
const event = asRecord(record.event);
|
|
612
|
+
return {
|
|
613
|
+
channelId: flatChannelId ?? nonEmpty(event?.channel),
|
|
614
|
+
threadTs: flatThreadTs ?? nonEmpty(event?.thread_ts) ?? nonEmpty(record.ts) ?? nonEmpty(event?.ts),
|
|
615
|
+
};
|
|
592
616
|
}
|
|
593
617
|
function extractOrigin(payload) {
|
|
594
|
-
var _a, _b;
|
|
595
|
-
var _c, _d, _e, _f;
|
|
596
618
|
const record = originExtractRecord(payload);
|
|
597
619
|
if (record === undefined) {
|
|
598
620
|
return undefined;
|
|
599
621
|
}
|
|
600
|
-
const inner =
|
|
601
|
-
const number = positiveInt(inner
|
|
602
|
-
const repository =
|
|
603
|
-
const fullName =
|
|
622
|
+
const inner = asRecord(record.pullRequest) ?? asRecord(record.pull_request);
|
|
623
|
+
const number = positiveInt(inner?.number);
|
|
624
|
+
const repository = asRecord(record.repository) ?? asRecord(inner?.repository);
|
|
625
|
+
const fullName = nonEmpty(asRecord(repository)?.fullName) ??
|
|
626
|
+
nonEmpty(asRecord(repository)?.full_name) ??
|
|
627
|
+
originFullName(repository);
|
|
604
628
|
if (number === undefined || fullName === undefined) {
|
|
605
629
|
return undefined;
|
|
606
630
|
}
|
|
@@ -611,12 +635,11 @@ function extractOrigin(payload) {
|
|
|
611
635
|
* also accepts the compact `{ pullRequest, repository }` shape.
|
|
612
636
|
*/
|
|
613
637
|
function originExtractRecord(payload) {
|
|
614
|
-
var _a;
|
|
615
638
|
const record = asRecord(payload);
|
|
616
639
|
if (record === undefined) {
|
|
617
640
|
return undefined;
|
|
618
641
|
}
|
|
619
|
-
const nested = asRecord(
|
|
642
|
+
const nested = asRecord(asRecord(record.event)?.payload);
|
|
620
643
|
if (nested !== undefined && asRecord(record.pullRequest) === undefined) {
|
|
621
644
|
return nested;
|
|
622
645
|
}
|
|
@@ -630,28 +653,27 @@ function originExtractRecord(payload) {
|
|
|
630
653
|
* the payload carries a `merge_request`.
|
|
631
654
|
*/
|
|
632
655
|
function extractGitlab(eventName, payload) {
|
|
633
|
-
var _a, _b, _c, _d, _e, _f;
|
|
634
656
|
const record = asRecord(payload);
|
|
635
657
|
if (record === undefined) {
|
|
636
658
|
return undefined;
|
|
637
659
|
}
|
|
638
|
-
const fullName =
|
|
660
|
+
const fullName = nonEmpty(asRecord(record.project)?.path_with_namespace)?.toLowerCase();
|
|
639
661
|
if (fullName === undefined) {
|
|
640
662
|
return undefined;
|
|
641
663
|
}
|
|
642
664
|
let number;
|
|
643
665
|
switch (eventName) {
|
|
644
666
|
case "merge_request":
|
|
645
|
-
number = positiveInt(
|
|
667
|
+
number = positiveInt(asRecord(record.object_attributes)?.iid);
|
|
646
668
|
break;
|
|
647
669
|
case "note":
|
|
648
|
-
if (
|
|
670
|
+
if (asRecord(record.object_attributes)?.noteable_type !== "MergeRequest") {
|
|
649
671
|
return undefined;
|
|
650
672
|
}
|
|
651
|
-
number = positiveInt(
|
|
673
|
+
number = positiveInt(asRecord(record.merge_request)?.iid);
|
|
652
674
|
break;
|
|
653
675
|
case "pipeline":
|
|
654
|
-
number = positiveInt(
|
|
676
|
+
number = positiveInt(asRecord(record.merge_request)?.iid);
|
|
655
677
|
break;
|
|
656
678
|
default:
|
|
657
679
|
return undefined;
|
|
@@ -669,22 +691,19 @@ function extractGitlab(eventName, payload) {
|
|
|
669
691
|
* shares a key.
|
|
670
692
|
*/
|
|
671
693
|
function extractBitbucket(payload) {
|
|
672
|
-
var _a;
|
|
673
|
-
var _b, _c;
|
|
674
694
|
const record = asRecord(payload);
|
|
675
695
|
if (record === undefined) {
|
|
676
696
|
return undefined;
|
|
677
697
|
}
|
|
678
|
-
const pullRequest =
|
|
679
|
-
const number = positiveInt(pullRequest
|
|
680
|
-
const fullName = bitbucketFullName(
|
|
698
|
+
const pullRequest = asRecord(record.pullrequest) ?? asRecord(record.pullRequest);
|
|
699
|
+
const number = positiveInt(pullRequest?.id);
|
|
700
|
+
const fullName = bitbucketFullName(asRecord(record.repository) ?? asRecord(asRecord(pullRequest?.toRef)?.repository));
|
|
681
701
|
if (number === undefined || fullName === undefined) {
|
|
682
702
|
return undefined;
|
|
683
703
|
}
|
|
684
704
|
return `cont:${formatConversationKey("bitbucket-pr", { fullName, number })}`;
|
|
685
705
|
}
|
|
686
706
|
function bitbucketFullName(repository) {
|
|
687
|
-
var _a;
|
|
688
707
|
if (repository === undefined) {
|
|
689
708
|
return undefined;
|
|
690
709
|
}
|
|
@@ -692,7 +711,7 @@ function bitbucketFullName(repository) {
|
|
|
692
711
|
if (cloud !== undefined) {
|
|
693
712
|
return cloud.toLowerCase();
|
|
694
713
|
}
|
|
695
|
-
const projectKey = nonEmpty(
|
|
714
|
+
const projectKey = nonEmpty(asRecord(repository.project)?.key);
|
|
696
715
|
const slug = nonEmpty(repository.slug);
|
|
697
716
|
if (projectKey === undefined || slug === undefined) {
|
|
698
717
|
return undefined;
|
|
@@ -701,25 +720,25 @@ function bitbucketFullName(repository) {
|
|
|
701
720
|
}
|
|
702
721
|
function extractNamedResource(type, field, payload, wrapper) {
|
|
703
722
|
const record = asRecord(payload);
|
|
704
|
-
const source = wrapper === undefined ? record : asRecord(record
|
|
705
|
-
const value = nonEmpty(source
|
|
723
|
+
const source = wrapper === undefined ? record : asRecord(record?.[wrapper]);
|
|
724
|
+
const value = nonEmpty(source?.[wrapper === undefined ? field : "name"]);
|
|
706
725
|
if (value === undefined) {
|
|
707
726
|
return undefined;
|
|
708
727
|
}
|
|
709
728
|
return `cont:${formatConversationKey(type, { [field]: value })}`;
|
|
710
729
|
}
|
|
711
730
|
function githubFullName(payload) {
|
|
712
|
-
var _a;
|
|
713
731
|
const repository = asRecord(payload.repository);
|
|
714
|
-
return
|
|
732
|
+
return nonEmpty(repository?.full_name) ?? originFullName(repository);
|
|
715
733
|
}
|
|
716
734
|
function originFullName(repository) {
|
|
717
|
-
var _a, _b, _c;
|
|
718
|
-
var _d, _e, _f;
|
|
719
735
|
if (repository === undefined) {
|
|
720
736
|
return undefined;
|
|
721
737
|
}
|
|
722
|
-
const owner =
|
|
738
|
+
const owner = nonEmpty(asRecord(repository.owner)?.slug) ??
|
|
739
|
+
nonEmpty(repository.owner) ??
|
|
740
|
+
nonEmpty(asRecord(repository.owner)?.login) ??
|
|
741
|
+
nonEmpty(asRecord(repository.owner)?.name);
|
|
723
742
|
const name = nonEmpty(repository.name);
|
|
724
743
|
if (owner === undefined || name === undefined) {
|
|
725
744
|
return undefined;
|
|
@@ -727,12 +746,11 @@ function originFullName(repository) {
|
|
|
727
746
|
return `${owner}/${name}`;
|
|
728
747
|
}
|
|
729
748
|
function firstPullRequestNumber(record) {
|
|
730
|
-
|
|
731
|
-
const pullRequests = record === null || record === void 0 ? void 0 : record.pull_requests;
|
|
749
|
+
const pullRequests = record?.pull_requests;
|
|
732
750
|
if (!Array.isArray(pullRequests) || pullRequests.length === 0) {
|
|
733
751
|
return undefined;
|
|
734
752
|
}
|
|
735
|
-
return positiveInt(
|
|
753
|
+
return positiveInt(asRecord(pullRequests[0])?.number);
|
|
736
754
|
}
|
|
737
755
|
function asRecord(value) {
|
|
738
756
|
return typeof value === "object" && value !== null && !Array.isArray(value)
|