@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
|
@@ -24,32 +24,22 @@
|
|
|
24
24
|
* real failure (anything else throws) — on the lazy-restore path a
|
|
25
25
|
* throw correctly fails the follow-up instead of forking the session.
|
|
26
26
|
*/
|
|
27
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
28
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
29
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
30
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
31
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
32
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
33
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
27
|
import { createHash, randomUUID } from "node:crypto";
|
|
37
28
|
import { mkdir, readdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
38
29
|
import { isAbsolute, join } from "node:path";
|
|
39
30
|
/** File-backed `defineStorage` methods, ready to spread into `defineStorage({...})`. */
|
|
40
31
|
export function fileKv(options) {
|
|
41
32
|
const resolveDir = (ctx) => {
|
|
42
|
-
|
|
43
|
-
const dir = (_a = options === null || options === void 0 ? void 0 : options.dir) !== null && _a !== void 0 ? _a : ".agent-serve/kv";
|
|
33
|
+
const dir = options?.dir ?? ".agent-serve/kv";
|
|
44
34
|
return isAbsolute(dir) ? dir : join(ctx.projectRoot, dir);
|
|
45
35
|
};
|
|
46
36
|
// The evals table is scoped per agent (KV keys already carry the agent
|
|
47
37
|
// name via the framework key scheme).
|
|
48
38
|
const evalRunsDir = (ctx) => join(resolveDir(ctx), "eval-runs", encodeURIComponent(ctx.agentName));
|
|
49
39
|
const filePath = (ctx, key) => join(resolveDir(ctx), `${encodeURIComponent(key)}.json`);
|
|
50
|
-
const readRaw = (ctx, key) =>
|
|
40
|
+
const readRaw = async (ctx, key) => {
|
|
51
41
|
try {
|
|
52
|
-
return
|
|
42
|
+
return await readFile(filePath(ctx, key), "utf8");
|
|
53
43
|
}
|
|
54
44
|
catch (error) {
|
|
55
45
|
if (error.code === "ENOENT") {
|
|
@@ -57,18 +47,18 @@ export function fileKv(options) {
|
|
|
57
47
|
}
|
|
58
48
|
throw error; // real failure: let lazy restore fail the follow-up
|
|
59
49
|
}
|
|
60
|
-
}
|
|
61
|
-
const readKey = (ctx, key) =>
|
|
62
|
-
const text =
|
|
50
|
+
};
|
|
51
|
+
const readKey = async (ctx, key) => {
|
|
52
|
+
const text = await readRaw(ctx, key);
|
|
63
53
|
return text === undefined ? undefined : JSON.parse(text);
|
|
64
|
-
}
|
|
65
|
-
const readVersioned = (ctx, key) =>
|
|
66
|
-
const text =
|
|
54
|
+
};
|
|
55
|
+
const readVersioned = async (ctx, key) => {
|
|
56
|
+
const text = await readRaw(ctx, key);
|
|
67
57
|
if (text === undefined) {
|
|
68
58
|
return undefined;
|
|
69
59
|
}
|
|
70
60
|
return { value: JSON.parse(text), version: versionOf(text) };
|
|
71
|
-
}
|
|
61
|
+
};
|
|
72
62
|
// In-process mutex: CAS check-then-write pairs queue on one promise
|
|
73
63
|
// chain so they cannot interleave with each other. Plain `put` stays
|
|
74
64
|
// outside the chain on purpose — it is unconditional LWW and always
|
|
@@ -80,49 +70,43 @@ export function fileKv(options) {
|
|
|
80
70
|
return result;
|
|
81
71
|
};
|
|
82
72
|
return {
|
|
83
|
-
put(key, value, ctx) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
value,
|
|
89
|
-
});
|
|
73
|
+
async put(key, value, ctx) {
|
|
74
|
+
await writeJsonAtomic({
|
|
75
|
+
dir: resolveDir(ctx),
|
|
76
|
+
fileName: `${encodeURIComponent(key)}.json`,
|
|
77
|
+
value,
|
|
90
78
|
});
|
|
91
79
|
},
|
|
92
80
|
get(key, ctx) {
|
|
93
81
|
return readKey(ctx, key);
|
|
94
82
|
},
|
|
95
|
-
delete(key, ctx) {
|
|
96
|
-
|
|
97
|
-
yield rm(filePath(ctx, key), { force: true });
|
|
98
|
-
});
|
|
83
|
+
async delete(key, ctx) {
|
|
84
|
+
await rm(filePath(ctx, key), { force: true });
|
|
99
85
|
},
|
|
100
|
-
list(prefix, ctx) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
return []; // nothing stored yet
|
|
109
|
-
}
|
|
110
|
-
throw error;
|
|
86
|
+
async list(prefix, ctx) {
|
|
87
|
+
let names;
|
|
88
|
+
try {
|
|
89
|
+
names = await readdir(resolveDir(ctx));
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
if (error.code === "ENOENT") {
|
|
93
|
+
return []; // nothing stored yet
|
|
111
94
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
const keys = names
|
|
98
|
+
.filter(name => name.endsWith(".json"))
|
|
99
|
+
.map(name => decodeURIComponent(name.slice(0, -".json".length)))
|
|
100
|
+
.filter(key => key.startsWith(prefix))
|
|
101
|
+
.sort();
|
|
102
|
+
const entries = [];
|
|
103
|
+
for (const key of keys) {
|
|
104
|
+
const value = await readKey(ctx, key);
|
|
105
|
+
if (value !== undefined) {
|
|
106
|
+
entries.push({ key, value });
|
|
123
107
|
}
|
|
124
|
-
|
|
125
|
-
|
|
108
|
+
}
|
|
109
|
+
return entries;
|
|
126
110
|
},
|
|
127
111
|
// Conditional writes over the same raw value files — no on-disk format
|
|
128
112
|
// change, so data written before the CAS group existed stays readable
|
|
@@ -137,94 +121,86 @@ export function fileKv(options) {
|
|
|
137
121
|
// only safe for single-instance deployments.
|
|
138
122
|
cas: {
|
|
139
123
|
getWithVersion: (key, ctx) => readVersioned(ctx, key),
|
|
140
|
-
putIfAbsent: (key, value, ctx) => locked(() =>
|
|
141
|
-
const current =
|
|
124
|
+
putIfAbsent: (key, value, ctx) => locked(async () => {
|
|
125
|
+
const current = await readVersioned(ctx, key);
|
|
142
126
|
if (current !== undefined) {
|
|
143
127
|
return { ok: false, current };
|
|
144
128
|
}
|
|
145
129
|
const text = JSON.stringify(value);
|
|
146
|
-
|
|
130
|
+
await writeTextAtomic({
|
|
147
131
|
dir: resolveDir(ctx),
|
|
148
132
|
fileName: `${encodeURIComponent(key)}.json`,
|
|
149
133
|
text,
|
|
150
134
|
});
|
|
151
135
|
return { ok: true, version: versionOf(text) };
|
|
152
|
-
})
|
|
153
|
-
putIfVersion: (key, value, expectedVersion, ctx) => locked(() =>
|
|
154
|
-
const current =
|
|
136
|
+
}),
|
|
137
|
+
putIfVersion: (key, value, expectedVersion, ctx) => locked(async () => {
|
|
138
|
+
const current = await readVersioned(ctx, key);
|
|
155
139
|
if (current === undefined || current.version !== expectedVersion) {
|
|
156
140
|
return { ok: false, current };
|
|
157
141
|
}
|
|
158
142
|
const text = JSON.stringify(value);
|
|
159
|
-
|
|
143
|
+
await writeTextAtomic({
|
|
160
144
|
dir: resolveDir(ctx),
|
|
161
145
|
fileName: `${encodeURIComponent(key)}.json`,
|
|
162
146
|
text,
|
|
163
147
|
});
|
|
164
148
|
return { ok: true, version: versionOf(text) };
|
|
165
|
-
})
|
|
166
|
-
listKeys(prefix, ctx) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
return [];
|
|
175
|
-
}
|
|
176
|
-
throw error;
|
|
149
|
+
}),
|
|
150
|
+
async listKeys(prefix, ctx) {
|
|
151
|
+
let names;
|
|
152
|
+
try {
|
|
153
|
+
names = await readdir(resolveDir(ctx));
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
if (error.code === "ENOENT") {
|
|
157
|
+
return [];
|
|
177
158
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
return names
|
|
162
|
+
.filter(name => name.endsWith(".json"))
|
|
163
|
+
.map(name => decodeURIComponent(name.slice(0, -".json".length)))
|
|
164
|
+
.filter(key => key.startsWith(prefix))
|
|
165
|
+
.sort();
|
|
184
166
|
},
|
|
185
167
|
},
|
|
186
168
|
// Playground eval batches: one JSON file per run under eval-runs/<agent>/.
|
|
187
169
|
evals: {
|
|
188
|
-
put(run, ctx) {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
value: run,
|
|
194
|
-
});
|
|
170
|
+
async put(run, ctx) {
|
|
171
|
+
await writeJsonAtomic({
|
|
172
|
+
dir: evalRunsDir(ctx),
|
|
173
|
+
fileName: `${encodeURIComponent(run.runId)}.json`,
|
|
174
|
+
value: run,
|
|
195
175
|
});
|
|
196
176
|
},
|
|
197
|
-
delete(runId, ctx) {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
force: true,
|
|
201
|
-
});
|
|
177
|
+
async delete(runId, ctx) {
|
|
178
|
+
await rm(join(evalRunsDir(ctx), `${encodeURIComponent(runId)}.json`), {
|
|
179
|
+
force: true,
|
|
202
180
|
});
|
|
203
181
|
},
|
|
204
|
-
list(ctx) {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
return [];
|
|
214
|
-
}
|
|
215
|
-
throw error;
|
|
182
|
+
async list(ctx) {
|
|
183
|
+
const dir = evalRunsDir(ctx);
|
|
184
|
+
let names;
|
|
185
|
+
try {
|
|
186
|
+
names = await readdir(dir);
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
if (error.code === "ENOENT") {
|
|
190
|
+
return [];
|
|
216
191
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
192
|
+
throw error;
|
|
193
|
+
}
|
|
194
|
+
const runs = [];
|
|
195
|
+
for (const name of names.filter(n => n.endsWith(".json")).sort()) {
|
|
196
|
+
// One unreadable/corrupt file must not wipe the whole history:
|
|
197
|
+
// hydrate treats a throwing list() as "nothing saved".
|
|
198
|
+
try {
|
|
199
|
+
runs.push(JSON.parse(await readFile(join(dir, name), "utf8")));
|
|
225
200
|
}
|
|
226
|
-
|
|
227
|
-
}
|
|
201
|
+
catch { }
|
|
202
|
+
}
|
|
203
|
+
return runs;
|
|
228
204
|
},
|
|
229
205
|
},
|
|
230
206
|
};
|
|
@@ -234,21 +210,17 @@ function versionOf(text) {
|
|
|
234
210
|
return `sha256:${createHash("sha256").update(text, "utf8").digest("hex")}`;
|
|
235
211
|
}
|
|
236
212
|
/** tmp + rename write so concurrent readers never see a torn file. */
|
|
237
|
-
function writeJsonAtomic(args) {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
text: JSON.stringify(args.value),
|
|
243
|
-
});
|
|
213
|
+
async function writeJsonAtomic(args) {
|
|
214
|
+
await writeTextAtomic({
|
|
215
|
+
dir: args.dir,
|
|
216
|
+
fileName: args.fileName,
|
|
217
|
+
text: JSON.stringify(args.value),
|
|
244
218
|
});
|
|
245
219
|
}
|
|
246
220
|
/** tmp + rename write of exact text (CAS hashes the same bytes it wrote). */
|
|
247
|
-
function writeTextAtomic(args) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
yield rename(tmp, join(args.dir, args.fileName));
|
|
253
|
-
});
|
|
221
|
+
async function writeTextAtomic(args) {
|
|
222
|
+
await mkdir(args.dir, { recursive: true });
|
|
223
|
+
const tmp = join(args.dir, `.tmp-${randomUUID()}`);
|
|
224
|
+
await writeFile(tmp, args.text, "utf8");
|
|
225
|
+
await rename(tmp, join(args.dir, args.fileName));
|
|
254
226
|
}
|
package/dist/storage-protocol.js
CHANGED
|
@@ -70,17 +70,15 @@ export const MAX_KEY_SEGMENT_BYTES = 256;
|
|
|
70
70
|
* session writes no log.
|
|
71
71
|
*/
|
|
72
72
|
export function frameworkStartLogId(args) {
|
|
73
|
-
|
|
74
|
-
var _d, _e, _f;
|
|
75
|
-
const sessionPublicId = (_d = (_a = args.sessionPublicId) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _d !== void 0 ? _d : "";
|
|
73
|
+
const sessionPublicId = args.sessionPublicId?.trim() ?? "";
|
|
76
74
|
if (sessionPublicId.length > 0) {
|
|
77
75
|
return sessionPublicId;
|
|
78
76
|
}
|
|
79
|
-
const workflowId =
|
|
77
|
+
const workflowId = args.workflowId?.trim() ?? "";
|
|
80
78
|
if (workflowId.length === 0) {
|
|
81
79
|
return undefined;
|
|
82
80
|
}
|
|
83
|
-
const runId =
|
|
81
|
+
const runId = args.runId?.trim() ?? "";
|
|
84
82
|
return runId.length > 0 ? `wf:${workflowId}/${runId}` : `wf:${workflowId}`;
|
|
85
83
|
}
|
|
86
84
|
/**
|
package/dist/storage.js
CHANGED
|
@@ -48,15 +48,6 @@
|
|
|
48
48
|
* event log under `--state-root` remains the live source of truth; this
|
|
49
49
|
* interface is the durable mirror.
|
|
50
50
|
*/
|
|
51
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
52
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
53
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
54
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
55
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
56
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
57
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
51
|
import { brandDefinition } from "./internal/brand.js";
|
|
61
52
|
import { storageKeys } from "./storage-protocol.js";
|
|
62
53
|
export { AGENTSDK_STORAGE_KEY_ROOT, agentSdkStorageKeys, frameworkStartLogId, GOLDEN_DURABLE_SESSION_RECORD, isDurableSessionRecordKey, keySegment, MAX_KEY_SEGMENT_BYTES, parseDurableSessionRecord, STORAGE_KEY_ROOT, storageKeys, storageKeysForArchitecture, summarizeDurableSessionRecord, } from "./storage-protocol.js";
|
|
@@ -100,7 +91,10 @@ export function defineStorage(config) {
|
|
|
100
91
|
// the dedicated table is a backend-native optimization, derived over
|
|
101
92
|
// the core when absent. An authored group always wins.
|
|
102
93
|
const derivedEvals = config.evals === undefined ? deriveEvalsTable(config) : undefined;
|
|
103
|
-
return brandDefinition("storage",
|
|
94
|
+
return brandDefinition("storage", {
|
|
95
|
+
...config,
|
|
96
|
+
...(derivedEvals === undefined ? {} : { evals: derivedEvals }),
|
|
97
|
+
});
|
|
104
98
|
}
|
|
105
99
|
/**
|
|
106
100
|
* Eval-runs table over the KV core: one key per run under
|
|
@@ -115,34 +109,31 @@ function deriveEvalsTable(config) {
|
|
|
115
109
|
}
|
|
116
110
|
return {
|
|
117
111
|
put: (run, ctx) => config.put(storageKeys.evalRun(ctx.agentName, run.runId), run, ctx),
|
|
118
|
-
delete: (runId, ctx) =>
|
|
119
|
-
list: (ctx) =>
|
|
120
|
-
|
|
121
|
-
var _b;
|
|
122
|
-
const entries = (_b = (yield (_a = config.list) === null || _a === void 0 ? void 0 : _a.call(config, storageKeys.evalRunsPrefix(ctx.agentName), ctx))) !== null && _b !== void 0 ? _b : [];
|
|
112
|
+
delete: (runId, ctx) => config.delete?.(storageKeys.evalRun(ctx.agentName, runId), ctx),
|
|
113
|
+
list: async (ctx) => {
|
|
114
|
+
const entries = (await config.list?.(storageKeys.evalRunsPrefix(ctx.agentName), ctx)) ?? [];
|
|
123
115
|
return entries.map(entry => entry.value);
|
|
124
|
-
}
|
|
116
|
+
},
|
|
125
117
|
};
|
|
126
118
|
}
|
|
127
119
|
// ============================================================================
|
|
128
120
|
// Policy resolution
|
|
129
121
|
// ============================================================================
|
|
130
|
-
export const STORAGE_DEFAULT_RESTORE_MAX_SESSIONS =
|
|
131
|
-
export const STORAGE_DEFAULT_RESTORE_MAX_AGE_MS = 30 * 24 * 60 *
|
|
132
|
-
export const STORAGE_DEFAULT_RESTORE_MAX_TOTAL_BYTES =
|
|
122
|
+
export const STORAGE_DEFAULT_RESTORE_MAX_SESSIONS = 1_000;
|
|
123
|
+
export const STORAGE_DEFAULT_RESTORE_MAX_AGE_MS = 30 * 24 * 60 * 60_000;
|
|
124
|
+
export const STORAGE_DEFAULT_RESTORE_MAX_TOTAL_BYTES = 1_073_741_824; // 1 GiB
|
|
133
125
|
/** Apply {@link StoragePolicy} defaults (exposed for tooling/tests). */
|
|
134
126
|
export function resolveStoragePolicy(policy) {
|
|
135
|
-
var _a, _b, _c;
|
|
136
127
|
return {
|
|
137
|
-
events:
|
|
128
|
+
events: policy?.debounceMs === undefined
|
|
138
129
|
? "turnEnd"
|
|
139
|
-
: { debounceMs: clampInt(policy.debounceMs,
|
|
140
|
-
restore:
|
|
130
|
+
: { debounceMs: clampInt(policy.debounceMs, 2_000, 0, 60_000) },
|
|
131
|
+
restore: policy?.restore === "off"
|
|
141
132
|
? "off"
|
|
142
133
|
: {
|
|
143
|
-
maxSessions: clampInt(
|
|
144
|
-
maxAgeMs: clampInt(
|
|
145
|
-
maxTotalBytes: clampInt(
|
|
134
|
+
maxSessions: clampInt(policy?.restore?.maxSessions, STORAGE_DEFAULT_RESTORE_MAX_SESSIONS, 0, 1_000_000),
|
|
135
|
+
maxAgeMs: clampInt(policy?.restore?.maxAgeMs, STORAGE_DEFAULT_RESTORE_MAX_AGE_MS, 0, 10 * 365 * 24 * 60 * 60_000),
|
|
136
|
+
maxTotalBytes: clampInt(policy?.restore?.maxTotalBytes, STORAGE_DEFAULT_RESTORE_MAX_TOTAL_BYTES, 0, 1_099_511_627_776),
|
|
146
137
|
},
|
|
147
138
|
};
|
|
148
139
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1286,6 +1286,20 @@ export interface AuthRequestInfo {
|
|
|
1286
1286
|
* with 401 when every policy in the chain returns null.
|
|
1287
1287
|
*/
|
|
1288
1288
|
export type AuthPolicy = (request: Request, info: AuthRequestInfo) => AuthContext | null | Promise<AuthContext | null>;
|
|
1289
|
+
/**
|
|
1290
|
+
* A secret named rather than read. Locally the value is
|
|
1291
|
+
* `process.env[secretName]`; on Cursor hosting it is the deployment secret
|
|
1292
|
+
* of that name (`secrets set <slug> <NAME>`).
|
|
1293
|
+
*
|
|
1294
|
+
* Prefer this over a `() => process.env.X` getter for webhook secrets: the
|
|
1295
|
+
* name is what `deploy` writes into the manifest, so the control plane can
|
|
1296
|
+
* verify a provider signature at ingestion — before any compute starts —
|
|
1297
|
+
* and answer the sender with a 401 instead of a 202.
|
|
1298
|
+
*/
|
|
1299
|
+
export interface SecretRef {
|
|
1300
|
+
secretName: string;
|
|
1301
|
+
}
|
|
1302
|
+
export declare function isSecretRef(value: unknown): value is SecretRef;
|
|
1289
1303
|
export interface SessionEventEnvelope {
|
|
1290
1304
|
/** Monotonic per-session event index; reconnect with `?startIndex=`. */
|
|
1291
1305
|
index: number;
|
|
@@ -1579,7 +1593,42 @@ export type SessionEventPayload = {
|
|
|
1579
1593
|
data: {
|
|
1580
1594
|
message: string;
|
|
1581
1595
|
};
|
|
1596
|
+
} | {
|
|
1597
|
+
/** A hosted eval case finished on this session, after its last turn. */
|
|
1598
|
+
type: "eval.case.result";
|
|
1599
|
+
data: EvalCaseResultEventData;
|
|
1582
1600
|
};
|
|
1601
|
+
/** Verdict of one hosted eval case, as recorded on its session. */
|
|
1602
|
+
export interface EvalCaseResultEventData {
|
|
1603
|
+
runId: string;
|
|
1604
|
+
caseId: string;
|
|
1605
|
+
ok: boolean;
|
|
1606
|
+
verdict: "passed" | "failed" | "scored" | "skipped";
|
|
1607
|
+
skipReason?: string;
|
|
1608
|
+
assertions: Array<{
|
|
1609
|
+
name: string;
|
|
1610
|
+
passed: boolean;
|
|
1611
|
+
detail?: string;
|
|
1612
|
+
severity?: "gate" | "soft";
|
|
1613
|
+
score?: number;
|
|
1614
|
+
threshold?: number;
|
|
1615
|
+
scope?: string;
|
|
1616
|
+
}>;
|
|
1617
|
+
durationMs: number;
|
|
1618
|
+
error?: string;
|
|
1619
|
+
logs: string[];
|
|
1620
|
+
metrics: Record<string, string | number>;
|
|
1621
|
+
metadata?: Record<string, unknown>;
|
|
1622
|
+
inputs: string[];
|
|
1623
|
+
finalText?: string;
|
|
1624
|
+
tools?: string[];
|
|
1625
|
+
toolCalls?: Array<{
|
|
1626
|
+
toolName: string;
|
|
1627
|
+
args?: unknown;
|
|
1628
|
+
output?: unknown;
|
|
1629
|
+
isError: boolean;
|
|
1630
|
+
}>;
|
|
1631
|
+
}
|
|
1583
1632
|
export type SessionEvent = SessionEventEnvelope & SessionEventPayload;
|
|
1584
1633
|
export type SessionEventType = SessionEventPayload["type"];
|
|
1585
1634
|
export interface TurnUsage {
|
|
@@ -3137,8 +3186,27 @@ export interface AgentProjectInfo {
|
|
|
3137
3186
|
agentTool: boolean;
|
|
3138
3187
|
max: number;
|
|
3139
3188
|
};
|
|
3189
|
+
/**
|
|
3190
|
+
* Eval cases a hosted architecture v2 release runs as its own sessions.
|
|
3191
|
+
* Set only in that release's deploy manifest.
|
|
3192
|
+
*/
|
|
3193
|
+
evals?: AgentProjectEvalsInfo;
|
|
3140
3194
|
diagnostics: Diagnostic[];
|
|
3141
3195
|
}
|
|
3196
|
+
export interface AgentProjectEvalsInfo {
|
|
3197
|
+
/** Hosted eval-case protocol this release speaks. */
|
|
3198
|
+
protocol: 1;
|
|
3199
|
+
cases: Array<{
|
|
3200
|
+
id: string;
|
|
3201
|
+
fileId: string;
|
|
3202
|
+
description?: string;
|
|
3203
|
+
tags?: string[];
|
|
3204
|
+
}>;
|
|
3205
|
+
config: {
|
|
3206
|
+
maxConcurrency?: number;
|
|
3207
|
+
timeoutMs?: number;
|
|
3208
|
+
};
|
|
3209
|
+
}
|
|
3142
3210
|
/**
|
|
3143
3211
|
* A streaming update from the harness, re-exported from the Cursor SDK's
|
|
3144
3212
|
* delta vocabulary.
|