@cursor/bdk 0.2.9 → 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.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/{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.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.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.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-DXm_VXAQ.css +1 -0
- package/dist/playground/assets/{index-Co4CUVTQ.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 +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
- /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
package/dist/evals/expect.js
CHANGED
|
@@ -79,8 +79,7 @@ function coerceToString(value) {
|
|
|
79
79
|
* folded back into the message.
|
|
80
80
|
*/
|
|
81
81
|
function formatIssue(issue) {
|
|
82
|
-
|
|
83
|
-
const path = ((_a = issue.path) !== null && _a !== void 0 ? _a : [])
|
|
82
|
+
const path = (issue.path ?? [])
|
|
84
83
|
.map(segment => typeof segment === "object" && segment !== null && "key" in segment
|
|
85
84
|
? String(segment.key)
|
|
86
85
|
: String(segment))
|
|
@@ -88,7 +87,6 @@ function formatIssue(issue) {
|
|
|
88
87
|
return path === "" ? issue.message : `${path}: ${issue.message}`;
|
|
89
88
|
}
|
|
90
89
|
function validateSchema(schema, value) {
|
|
91
|
-
var _a;
|
|
92
90
|
if ("~standard" in schema) {
|
|
93
91
|
const result = schema["~standard"].validate(value);
|
|
94
92
|
if (result instanceof Promise) {
|
|
@@ -101,11 +99,10 @@ function validateSchema(schema, value) {
|
|
|
101
99
|
return { passed: false, message: issues.map(formatIssue).join("; ") };
|
|
102
100
|
}
|
|
103
101
|
const parsed = schema.safeParse(value);
|
|
104
|
-
return parsed.success ? { passed: true } : { passed: false, message:
|
|
102
|
+
return parsed.success ? { passed: true } : { passed: false, message: parsed.error?.message };
|
|
105
103
|
}
|
|
106
104
|
/** Grade `value` against `assertion`. */
|
|
107
105
|
export function evaluateExpectation(value, assertion) {
|
|
108
|
-
var _a;
|
|
109
106
|
switch (assertion.kind) {
|
|
110
107
|
case "includes": {
|
|
111
108
|
const text = coerceToString(value);
|
|
@@ -128,7 +125,7 @@ export function evaluateExpectation(value, assertion) {
|
|
|
128
125
|
const outcome = validateSchema(assertion.schema, value);
|
|
129
126
|
return {
|
|
130
127
|
passed: outcome.passed,
|
|
131
|
-
detail: outcome.passed ? undefined : (
|
|
128
|
+
detail: outcome.passed ? undefined : (outcome.message ?? "schema validation failed"),
|
|
132
129
|
};
|
|
133
130
|
}
|
|
134
131
|
case "similarity": {
|
package/dist/evals/judge.js
CHANGED
|
@@ -61,21 +61,19 @@ function randomBoundary() {
|
|
|
61
61
|
* fall back to the first bare allowed token before giving up.
|
|
62
62
|
*/
|
|
63
63
|
export function parseJudgeReply(reply, allowed) {
|
|
64
|
-
var _a, _b, _c;
|
|
65
|
-
var _d;
|
|
66
64
|
const text = reply.trim();
|
|
67
65
|
if (text === "") {
|
|
68
66
|
throw new Error("judge returned an empty reply");
|
|
69
67
|
}
|
|
70
|
-
const rationale =
|
|
71
|
-
const tagged =
|
|
68
|
+
const rationale = /^\s*REASON:\s*(.+)$/im.exec(text)?.[1]?.trim();
|
|
69
|
+
const tagged = /^\s*CHOICE:\s*([A-Za-z0-9]+)/im.exec(text)?.[1];
|
|
72
70
|
if (tagged !== undefined) {
|
|
73
71
|
const normalized = normalizeChoice(tagged, allowed);
|
|
74
72
|
if (normalized !== undefined) {
|
|
75
73
|
return { choice: normalized, rationale };
|
|
76
74
|
}
|
|
77
75
|
}
|
|
78
|
-
for (const token of
|
|
76
|
+
for (const token of text.match(/[A-Za-z0-9]+/g) ?? []) {
|
|
79
77
|
const normalized = normalizeChoice(token, allowed);
|
|
80
78
|
if (normalized !== undefined) {
|
|
81
79
|
return { choice: normalized, rationale };
|
|
@@ -208,7 +206,6 @@ export class EvalJudgeUnavailableError extends Error {
|
|
|
208
206
|
}
|
|
209
207
|
/** Render the graded value for a judge prompt. */
|
|
210
208
|
export function renderSubmission(value) {
|
|
211
|
-
var _a;
|
|
212
209
|
if (typeof value === "string") {
|
|
213
210
|
return value;
|
|
214
211
|
}
|
|
@@ -216,9 +213,9 @@ export function renderSubmission(value) {
|
|
|
216
213
|
return "";
|
|
217
214
|
}
|
|
218
215
|
try {
|
|
219
|
-
return
|
|
216
|
+
return JSON.stringify(value, null, 2) ?? String(value);
|
|
220
217
|
}
|
|
221
|
-
catch
|
|
218
|
+
catch {
|
|
222
219
|
return String(value);
|
|
223
220
|
}
|
|
224
221
|
}
|
package/dist/evals/loaders.js
CHANGED
|
@@ -31,15 +31,6 @@
|
|
|
31
31
|
* deep the eval sits. These loaders are for fixtures — do not use them for
|
|
32
32
|
* runtime agent code.
|
|
33
33
|
*/
|
|
34
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
35
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
36
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
37
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
38
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
39
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
40
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
34
|
import { readFile } from "node:fs/promises";
|
|
44
35
|
import { isAbsolute, resolve } from "node:path";
|
|
45
36
|
/**
|
|
@@ -58,67 +49,59 @@ export function evalFixtureRoot() {
|
|
|
58
49
|
export function resolveFixturePath(path) {
|
|
59
50
|
return isAbsolute(path) ? path : resolve(evalFixtureRoot(), path);
|
|
60
51
|
}
|
|
61
|
-
function readFixture(path) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
});
|
|
52
|
+
async function readFixture(path) {
|
|
53
|
+
const absolute = resolveFixturePath(path);
|
|
54
|
+
try {
|
|
55
|
+
return await readFile(absolute, "utf8");
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
59
|
+
throw new Error(`failed to load eval fixture ${absolute}: ${detail}`);
|
|
60
|
+
}
|
|
72
61
|
}
|
|
73
62
|
/** Load a JSON fixture. */
|
|
74
|
-
export function loadJson(path) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
});
|
|
63
|
+
export async function loadJson(path) {
|
|
64
|
+
const text = await readFixture(path);
|
|
65
|
+
try {
|
|
66
|
+
return JSON.parse(text);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
70
|
+
throw new Error(`${resolveFixturePath(path)} is not valid JSON: ${detail}`);
|
|
71
|
+
}
|
|
85
72
|
}
|
|
86
73
|
/** Load a newline-delimited JSON fixture, skipping blank lines. */
|
|
87
|
-
export function loadJsonl(path) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
try {
|
|
99
|
-
rows.push(JSON.parse(trimmed));
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
const detail = error instanceof Error ? error.message : String(error);
|
|
103
|
-
throw new Error(`${resolveFixturePath(path)}:${lineNumber} is not valid JSON: ${detail}`);
|
|
104
|
-
}
|
|
74
|
+
export async function loadJsonl(path) {
|
|
75
|
+
const text = await readFixture(path);
|
|
76
|
+
const rows = [];
|
|
77
|
+
let lineNumber = 0;
|
|
78
|
+
for (const line of text.split("\n")) {
|
|
79
|
+
lineNumber++;
|
|
80
|
+
const trimmed = line.trim();
|
|
81
|
+
if (trimmed === "") {
|
|
82
|
+
continue;
|
|
105
83
|
}
|
|
106
|
-
return rows;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
/** Load a YAML fixture. */
|
|
110
|
-
export function loadYaml(path) {
|
|
111
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
const text = yield readFixture(path);
|
|
113
|
-
// Imported lazily so a project that only uses JSON fixtures never pays for
|
|
114
|
-
// the YAML parser at eval-discovery time.
|
|
115
|
-
const { load } = yield import("js-yaml");
|
|
116
84
|
try {
|
|
117
|
-
|
|
85
|
+
rows.push(JSON.parse(trimmed));
|
|
118
86
|
}
|
|
119
87
|
catch (error) {
|
|
120
88
|
const detail = error instanceof Error ? error.message : String(error);
|
|
121
|
-
throw new Error(`${resolveFixturePath(path)} is not valid
|
|
89
|
+
throw new Error(`${resolveFixturePath(path)}:${lineNumber} is not valid JSON: ${detail}`);
|
|
122
90
|
}
|
|
123
|
-
}
|
|
91
|
+
}
|
|
92
|
+
return rows;
|
|
93
|
+
}
|
|
94
|
+
/** Load a YAML fixture. */
|
|
95
|
+
export async function loadYaml(path) {
|
|
96
|
+
const text = await readFixture(path);
|
|
97
|
+
// Imported lazily so a project that only uses JSON fixtures never pays for
|
|
98
|
+
// the YAML parser at eval-discovery time.
|
|
99
|
+
const { load } = await import("js-yaml");
|
|
100
|
+
try {
|
|
101
|
+
return load(text);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
105
|
+
throw new Error(`${resolveFixturePath(path)} is not valid YAML: ${detail}`);
|
|
106
|
+
}
|
|
124
107
|
}
|
package/dist/evals/matchers.js
CHANGED
|
@@ -22,7 +22,6 @@ function isPlainObject(value) {
|
|
|
22
22
|
}
|
|
23
23
|
/** Stable string form used when a RegExp is tested against a non-string. */
|
|
24
24
|
export function stringifyForMatch(value) {
|
|
25
|
-
var _a;
|
|
26
25
|
if (typeof value === "string") {
|
|
27
26
|
return value;
|
|
28
27
|
}
|
|
@@ -34,9 +33,9 @@ export function stringifyForMatch(value) {
|
|
|
34
33
|
}
|
|
35
34
|
if (typeof value === "object") {
|
|
36
35
|
try {
|
|
37
|
-
return
|
|
36
|
+
return JSON.stringify(value) ?? "";
|
|
38
37
|
}
|
|
39
|
-
catch
|
|
38
|
+
catch {
|
|
40
39
|
return String(value);
|
|
41
40
|
}
|
|
42
41
|
}
|
package/dist/evals/reporters.js
CHANGED
|
@@ -20,26 +20,6 @@
|
|
|
20
20
|
* reporters without touching the eval files, which is usually the better fit:
|
|
21
21
|
* CI owns the output paths, not the eval author.
|
|
22
22
|
*/
|
|
23
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
24
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
25
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
26
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
27
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
28
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
29
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
33
|
-
var t = {};
|
|
34
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
35
|
-
t[p] = s[p];
|
|
36
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
37
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
38
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
39
|
-
t[p[i]] = s[p[i]];
|
|
40
|
-
}
|
|
41
|
-
return t;
|
|
42
|
-
};
|
|
43
23
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
44
24
|
import { dirname, join, resolve } from "node:path";
|
|
45
25
|
/**
|
|
@@ -52,37 +32,35 @@ import { dirname, join, resolve } from "node:path";
|
|
|
52
32
|
*/
|
|
53
33
|
export function JUnit(options) {
|
|
54
34
|
return {
|
|
55
|
-
onRunComplete(summary) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
yield mkdir(dirname(target), { recursive: true });
|
|
61
|
-
yield writeFile(target, xml, "utf8");
|
|
62
|
-
});
|
|
35
|
+
async onRunComplete(summary) {
|
|
36
|
+
const xml = renderJUnitXml(summary, options.suiteName ?? "agentkit-evals");
|
|
37
|
+
const target = resolve(options.filePath);
|
|
38
|
+
await mkdir(dirname(target), { recursive: true });
|
|
39
|
+
await writeFile(target, xml, "utf8");
|
|
63
40
|
},
|
|
64
41
|
};
|
|
65
42
|
}
|
|
66
43
|
/** Render a {@link EvalRunSummary} as JUnit XML. Exported for tests. */
|
|
67
44
|
export function renderJUnitXml(summary, suiteName) {
|
|
68
|
-
var _a, _b, _c, _d;
|
|
69
45
|
const lines = [
|
|
70
46
|
'<?xml version="1.0" encoding="UTF-8"?>',
|
|
71
47
|
`<testsuites name="${escapeXml(suiteName)}" tests="${summary.total}" failures="${summary.failed + (summary.strict ? summary.scored : 0)}" skipped="${summary.skipped}" time="${(summary.durationMs / 1000).toFixed(3)}">`,
|
|
72
48
|
` <testsuite name="${escapeXml(suiteName)}" tests="${summary.total}" failures="${summary.failed + (summary.strict ? summary.scored : 0)}" skipped="${summary.skipped}" time="${(summary.durationMs / 1000).toFixed(3)}">`,
|
|
73
49
|
];
|
|
74
50
|
for (const result of summary.results) {
|
|
75
|
-
const verdict =
|
|
51
|
+
const verdict = result.verdict ?? (result.ok ? "passed" : "failed");
|
|
76
52
|
const time = (result.durationMs / 1000).toFixed(3);
|
|
77
53
|
lines.push(` <testcase name="${escapeXml(result.id)}" classname="${escapeXml(suiteName)}" time="${time}">`);
|
|
78
54
|
if (verdict === "skipped") {
|
|
79
|
-
lines.push(` <skipped message="${escapeXml(
|
|
55
|
+
lines.push(` <skipped message="${escapeXml(result.skipReason ?? "skipped")}"/>`);
|
|
80
56
|
}
|
|
81
57
|
else if (verdict === "failed" || (verdict === "scored" && summary.strict)) {
|
|
82
58
|
const failures = result.assertions.filter(a => !a.passed);
|
|
83
|
-
const message =
|
|
84
|
-
|
|
85
|
-
|
|
59
|
+
const message = result.error ??
|
|
60
|
+
failures
|
|
61
|
+
.map(a => `${a.name}${a.detail === undefined ? "" : ` (${a.detail})`}`)
|
|
62
|
+
.join("; ") ??
|
|
63
|
+
verdict;
|
|
86
64
|
lines.push(` <failure message="${escapeXml(message === "" ? verdict : message)}" type="${escapeXml(verdict)}"/>`);
|
|
87
65
|
}
|
|
88
66
|
const systemOut = renderSystemOut(result);
|
|
@@ -154,34 +132,32 @@ export function Artifacts(options) {
|
|
|
154
132
|
let target;
|
|
155
133
|
let discovered = [];
|
|
156
134
|
return {
|
|
157
|
-
onRunStart(evals, runTarget) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
yield mkdir(join(root, "evals"), { recursive: true });
|
|
162
|
-
});
|
|
135
|
+
async onRunStart(evals, runTarget) {
|
|
136
|
+
discovered = evals;
|
|
137
|
+
target = runTarget;
|
|
138
|
+
await mkdir(join(root, "evals"), { recursive: true });
|
|
163
139
|
},
|
|
164
|
-
onEvalComplete(result) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
yield writeFile(file, `${JSON.stringify(result, null, 2)}\n`, "utf8");
|
|
176
|
-
yield writeFile(jsonlPath, `${lines.join("\n")}\n`, "utf8");
|
|
177
|
-
});
|
|
140
|
+
async onEvalComplete(result) {
|
|
141
|
+
lines.push(JSON.stringify({
|
|
142
|
+
id: result.id,
|
|
143
|
+
verdict: result.verdict ?? (result.ok ? "passed" : "failed"),
|
|
144
|
+
ok: result.ok,
|
|
145
|
+
durationMs: result.durationMs,
|
|
146
|
+
}));
|
|
147
|
+
const file = join(root, "evals", `${sanitizeCaseId(result.id)}.json`);
|
|
148
|
+
await mkdir(dirname(file), { recursive: true });
|
|
149
|
+
await writeFile(file, `${JSON.stringify(result, null, 2)}\n`, "utf8");
|
|
150
|
+
await writeFile(jsonlPath, `${lines.join("\n")}\n`, "utf8");
|
|
178
151
|
},
|
|
179
|
-
onRunComplete(summary) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
152
|
+
async onRunComplete(summary) {
|
|
153
|
+
await mkdir(root, { recursive: true });
|
|
154
|
+
const { results, ...totals } = summary;
|
|
155
|
+
await writeFile(join(root, "summary.json"), `${JSON.stringify({
|
|
156
|
+
...totals,
|
|
157
|
+
caseCount: results.length,
|
|
158
|
+
target,
|
|
159
|
+
discovered: discovered.map(e => e.id),
|
|
160
|
+
}, null, 2)}\n`, "utf8");
|
|
185
161
|
},
|
|
186
162
|
};
|
|
187
163
|
}
|
|
@@ -201,20 +177,20 @@ export function sanitizeCaseId(id) {
|
|
|
201
177
|
}
|
|
202
178
|
/** Fan one lifecycle call out to several reporters, isolating failures. */
|
|
203
179
|
export function combineReporters(reporters, onError) {
|
|
204
|
-
const forEach = (run) =>
|
|
180
|
+
const forEach = async (run) => {
|
|
205
181
|
for (const reporter of reporters) {
|
|
206
182
|
try {
|
|
207
|
-
|
|
183
|
+
await run(reporter);
|
|
208
184
|
}
|
|
209
185
|
catch (error) {
|
|
210
186
|
// A broken destination must not fail the eval run itself.
|
|
211
|
-
onError
|
|
187
|
+
onError?.(error);
|
|
212
188
|
}
|
|
213
189
|
}
|
|
214
|
-
}
|
|
190
|
+
};
|
|
215
191
|
return {
|
|
216
|
-
onRunStart: (evals, target) => forEach(r =>
|
|
217
|
-
onEvalComplete: result => forEach(r =>
|
|
218
|
-
onRunComplete: summary => forEach(r =>
|
|
192
|
+
onRunStart: (evals, target) => forEach(r => r.onRunStart?.(evals, target)),
|
|
193
|
+
onEvalComplete: result => forEach(r => r.onEvalComplete?.(result)),
|
|
194
|
+
onRunComplete: summary => forEach(r => r.onRunComplete?.(summary)),
|
|
219
195
|
};
|
|
220
196
|
}
|
package/dist/evals/results.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
/** Tally verdicts for {@link EvalRunSummary}. */
|
|
9
9
|
export function summarizeEvalResults(results, options) {
|
|
10
|
-
const verdictOf = (result) =>
|
|
10
|
+
const verdictOf = (result) => result.verdict ?? (result.ok ? "passed" : "failed");
|
|
11
11
|
const counts = { passed: 0, failed: 0, scored: 0, skipped: 0 };
|
|
12
12
|
for (const result of results) {
|
|
13
13
|
counts[verdictOf(result)]++;
|
package/dist/evals/run-facts.js
CHANGED
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* against transports that drop the request event.
|
|
15
15
|
*/
|
|
16
16
|
export function deriveRunFacts(events) {
|
|
17
|
-
var _a, _b, _c, _d;
|
|
18
17
|
const toolCalls = [];
|
|
19
18
|
const byCallId = new Map();
|
|
20
19
|
const subagents = [];
|
|
@@ -50,7 +49,7 @@ export function deriveRunFacts(events) {
|
|
|
50
49
|
switch (event.type) {
|
|
51
50
|
case "actions.requested": {
|
|
52
51
|
for (const call of event.data.calls) {
|
|
53
|
-
const fact = ensureCall(call.callId, call.toolName, event.turnId,
|
|
52
|
+
const fact = ensureCall(call.callId, call.toolName, event.turnId, call.parentCallId ?? event.data.parentCallId);
|
|
54
53
|
fact.input = call.args;
|
|
55
54
|
}
|
|
56
55
|
break;
|
|
@@ -137,8 +136,8 @@ export function deriveRunFacts(events) {
|
|
|
137
136
|
subagentsByCallId.set(event.data.callId, fact);
|
|
138
137
|
}
|
|
139
138
|
else {
|
|
140
|
-
existing.name =
|
|
141
|
-
existing.description =
|
|
139
|
+
existing.name = event.data.name ?? existing.name;
|
|
140
|
+
existing.description = event.data.description ?? existing.description;
|
|
142
141
|
}
|
|
143
142
|
break;
|
|
144
143
|
}
|
|
@@ -157,7 +156,7 @@ export function deriveRunFacts(events) {
|
|
|
157
156
|
}
|
|
158
157
|
else {
|
|
159
158
|
fact.status = "completed";
|
|
160
|
-
fact.name =
|
|
159
|
+
fact.name = fact.name ?? event.data.name;
|
|
161
160
|
}
|
|
162
161
|
break;
|
|
163
162
|
}
|
|
@@ -186,7 +185,7 @@ export function deriveRunFacts(events) {
|
|
|
186
185
|
// leave `turnsFailed` at 0 and read as a healthy run.
|
|
187
186
|
sessionFailed = true;
|
|
188
187
|
}
|
|
189
|
-
failureMessage = failureMessage
|
|
188
|
+
failureMessage = failureMessage ?? event.data.message;
|
|
190
189
|
break;
|
|
191
190
|
}
|
|
192
191
|
default:
|
package/dist/evals.js
CHANGED
|
@@ -134,24 +134,22 @@ function validateDatapointId(id) {
|
|
|
134
134
|
* expand to `<fileId>/1` … `<fileId>/<n>`).
|
|
135
135
|
*/
|
|
136
136
|
export function expandEvalDefinition(fileId, definition) {
|
|
137
|
-
var _a;
|
|
138
137
|
if (definition.cases !== undefined) {
|
|
139
138
|
return definition.cases.flatMap(datapoint => {
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
const iterations = normalizeEvalIterations((_d = (_c = datapoint.iterations) !== null && _c !== void 0 ? _c : definition.iterations) !== null && _d !== void 0 ? _d : 1);
|
|
139
|
+
const description = datapoint.description ?? definition.description;
|
|
140
|
+
const timeoutMs = datapoint.timeoutMs ?? definition.timeoutMs;
|
|
141
|
+
const iterations = normalizeEvalIterations(datapoint.iterations ?? definition.iterations ?? 1);
|
|
144
142
|
const metadata = datapoint.metadata === undefined && definition.metadata === undefined
|
|
145
143
|
? undefined
|
|
146
|
-
:
|
|
144
|
+
: { ...definition.metadata, ...datapoint.metadata };
|
|
147
145
|
return expandIterations({
|
|
148
146
|
baseId: `${fileId}/${datapoint.id}`,
|
|
149
147
|
description,
|
|
150
|
-
tags:
|
|
148
|
+
tags: datapoint.tags ?? definition.tags,
|
|
151
149
|
timeoutMs,
|
|
152
150
|
iterations,
|
|
153
151
|
metadata,
|
|
154
|
-
judge:
|
|
152
|
+
judge: datapoint.judge ?? definition.judge,
|
|
155
153
|
reporters: mergeReporters(definition.reporters, datapoint.reporters),
|
|
156
154
|
test: datapoint.test,
|
|
157
155
|
});
|
|
@@ -160,7 +158,7 @@ export function expandEvalDefinition(fileId, definition) {
|
|
|
160
158
|
if (typeof definition.test !== "function") {
|
|
161
159
|
throw new Error(`defineEval(${fileId}): missing test(t)`);
|
|
162
160
|
}
|
|
163
|
-
const iterations = normalizeEvalIterations(
|
|
161
|
+
const iterations = normalizeEvalIterations(definition.iterations ?? 1);
|
|
164
162
|
return expandIterations({
|
|
165
163
|
baseId: fileId,
|
|
166
164
|
description: definition.description,
|
|
@@ -192,7 +190,17 @@ function expandIterations(args) {
|
|
|
192
190
|
: `${args.description} (iteration ${iteration}/${args.iterations})`;
|
|
193
191
|
out.push({
|
|
194
192
|
id,
|
|
195
|
-
definition: brandDefinition("eval",
|
|
193
|
+
definition: brandDefinition("eval", {
|
|
194
|
+
...(description !== undefined ? { description } : {}),
|
|
195
|
+
...(args.tags !== undefined ? { tags: args.tags } : {}),
|
|
196
|
+
...(args.timeoutMs !== undefined ? { timeoutMs: args.timeoutMs } : {}),
|
|
197
|
+
metadata: args.metadata,
|
|
198
|
+
judge: args.judge,
|
|
199
|
+
reporters: args.reporters,
|
|
200
|
+
iterations: args.iterations,
|
|
201
|
+
iteration,
|
|
202
|
+
test: args.test,
|
|
203
|
+
}),
|
|
196
204
|
});
|
|
197
205
|
}
|
|
198
206
|
return out;
|
|
@@ -215,8 +223,7 @@ export function matchesEvalIdFilter(caseId, filter) {
|
|
|
215
223
|
export const EVAL_SUMMARY_TAG = "summary";
|
|
216
224
|
/** True when `tags` marks a suite-aggregator case. */
|
|
217
225
|
export function isEvalSummaryCase(tags) {
|
|
218
|
-
|
|
219
|
-
return (_a = tags === null || tags === void 0 ? void 0 : tags.includes(EVAL_SUMMARY_TAG)) !== null && _a !== void 0 ? _a : false;
|
|
226
|
+
return tags?.includes(EVAL_SUMMARY_TAG) ?? false;
|
|
220
227
|
}
|
|
221
228
|
/**
|
|
222
229
|
* If `selected` includes any summary-tagged suite aggregator, pull in every
|
|
@@ -255,8 +262,13 @@ export const EVAL_MAX_PLAYGROUND_RUNS = 500;
|
|
|
255
262
|
* table in `agent/storage.ts` (`defineStorage`) to survive serve restart.
|
|
256
263
|
*/
|
|
257
264
|
export function defineEvalConfig(config) {
|
|
258
|
-
|
|
259
|
-
|
|
265
|
+
return {
|
|
266
|
+
...(config.timeoutMs === undefined ? {} : { timeoutMs: config.timeoutMs }),
|
|
267
|
+
maxConcurrency: normalizeEvalMaxConcurrency(config.maxConcurrency),
|
|
268
|
+
maxPlaygroundRuns: normalizeEvalMaxPlaygroundRuns(config.maxPlaygroundRuns ?? EVAL_DEFAULT_MAX_PLAYGROUND_RUNS),
|
|
269
|
+
judge: config.judge,
|
|
270
|
+
reporters: config.reporters,
|
|
271
|
+
};
|
|
260
272
|
}
|
|
261
273
|
/**
|
|
262
274
|
* Validate and enforce the hard concurrency ceiling.
|
|
@@ -286,7 +298,7 @@ export function resolveEvalMaxPlaygroundRuns(value) {
|
|
|
286
298
|
try {
|
|
287
299
|
return normalizeEvalMaxPlaygroundRuns(value);
|
|
288
300
|
}
|
|
289
|
-
catch
|
|
301
|
+
catch {
|
|
290
302
|
return EVAL_DEFAULT_MAX_PLAYGROUND_RUNS;
|
|
291
303
|
}
|
|
292
304
|
}
|
|
@@ -66,7 +66,10 @@ const config = z
|
|
|
66
66
|
watchStops: z.boolean().default(true),
|
|
67
67
|
})
|
|
68
68
|
.default({})
|
|
69
|
-
.transform(options =>
|
|
69
|
+
.transform(options => ({
|
|
70
|
+
...options,
|
|
71
|
+
needsApproval: options.needsApproval ?? options.cloud.repos === undefined,
|
|
72
|
+
}));
|
|
70
73
|
const cursorCloudAgents = defineExtension({
|
|
71
74
|
root: import.meta.dirname,
|
|
72
75
|
description: "Launch, steer, and monitor Cursor cloud agents.",
|