@cursor/bdk 0.2.9 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/artifacts.js +3 -5
- package/dist/bin/agent-serve.js +803 -812
- package/dist/channels/bitbucket/api.js +305 -321
- package/dist/channels/bitbucket/binding.js +97 -61
- package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
- package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
- package/dist/channels/bitbucket/checks.js +9 -21
- package/dist/channels/bitbucket/cursor-account.js +1 -1
- package/dist/channels/bitbucket/defaults.js +14 -4
- package/dist/channels/bitbucket/events.js +1 -2
- package/dist/channels/bitbucket/index.d.ts +6 -2
- package/dist/channels/bitbucket/index.d.ts.map +1 -1
- package/dist/channels/bitbucket/index.js +6 -2
- package/dist/channels/bitbucket/replay.js +80 -56
- package/dist/channels/bitbucket/state.js +16 -7
- package/dist/channels/bitbucket/types.d.ts +11 -2
- package/dist/channels/bitbucket/types.d.ts.map +1 -1
- package/dist/channels/checks.js +18 -28
- package/dist/channels/deployments/deployments-channel.js +26 -34
- package/dist/channels/github/api.js +216 -210
- package/dist/channels/github/auth.d.ts +5 -1
- package/dist/channels/github/auth.d.ts.map +1 -1
- package/dist/channels/github/auth.js +157 -174
- package/dist/channels/github/binding.js +48 -39
- package/dist/channels/github/checks.js +9 -14
- package/dist/channels/github/cursor-account.js +6 -11
- package/dist/channels/github/defaults.js +105 -130
- package/dist/channels/github/forward.js +13 -17
- package/dist/channels/github/github-channel.d.ts +43 -2
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +1228 -958
- package/dist/channels/github/progress.js +145 -146
- package/dist/channels/github/replay.js +30 -39
- package/dist/channels/github/state.js +40 -16
- package/dist/channels/github/types.d.ts +30 -6
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/gitlab/api.js +100 -114
- package/dist/channels/gitlab/binding.js +52 -33
- package/dist/channels/gitlab/checks.js +28 -29
- package/dist/channels/gitlab/cursor-account.js +1 -1
- package/dist/channels/gitlab/defaults.js +9 -3
- package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
- package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-channel.js +95 -42
- package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
- package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-webhook.js +282 -249
- package/dist/channels/gitlab/index.d.ts +6 -2
- package/dist/channels/gitlab/index.d.ts.map +1 -1
- package/dist/channels/gitlab/index.js +6 -2
- package/dist/channels/gitlab/replay.js +50 -27
- package/dist/channels/gitlab/state.js +14 -6
- package/dist/channels/gitlab/types.d.ts +13 -2
- package/dist/channels/gitlab/types.d.ts.map +1 -1
- package/dist/channels/origin/api.js +100 -116
- package/dist/channels/origin/binding.js +15 -16
- package/dist/channels/origin/checks.js +30 -28
- package/dist/channels/origin/defaults.js +50 -65
- package/dist/channels/origin/origin-channel.js +266 -272
- package/dist/channels/origin/origin-webhook.js +70 -88
- package/dist/channels/origin/reactions.js +9 -21
- package/dist/channels/origin/state.js +13 -5
- package/dist/channels/slack/agentic-delivery.js +426 -478
- package/dist/channels/slack/agentic-posted.js +9 -10
- package/dist/channels/slack/agentic-signals.js +2 -3
- package/dist/channels/slack/api.js +417 -427
- package/dist/channels/slack/approvals.js +1 -1
- package/dist/channels/slack/assistant.js +37 -47
- package/dist/channels/slack/attachments.js +188 -206
- package/dist/channels/slack/auth.js +8 -6
- package/dist/channels/slack/bot-mentions.js +31 -45
- package/dist/channels/slack/channel-watch.js +42 -48
- package/dist/channels/slack/cli-project.js +112 -137
- package/dist/channels/slack/code-fences.js +3 -5
- package/dist/channels/slack/constants.js +2 -2
- package/dist/channels/slack/credentials.js +23 -38
- package/dist/channels/slack/defaults.js +292 -331
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +533 -460
- package/dist/channels/slack/doctor.js +200 -214
- package/dist/channels/slack/eval-directive.js +79 -96
- package/dist/channels/slack/event-id-dedupe.js +1 -1
- package/dist/channels/slack/external-policy.js +26 -39
- package/dist/channels/slack/footer.js +28 -41
- package/dist/channels/slack/inbound.d.ts +1 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +50 -31
- package/dist/channels/slack/init.d.ts +1 -5
- package/dist/channels/slack/init.d.ts.map +1 -1
- package/dist/channels/slack/init.js +42 -59
- package/dist/channels/slack/interactive.d.ts +9 -3
- package/dist/channels/slack/interactive.d.ts.map +1 -1
- package/dist/channels/slack/interactive.js +160 -162
- package/dist/channels/slack/links.js +1 -2
- package/dist/channels/slack/live-delivery.js +172 -190
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +44 -23
- package/dist/channels/slack/message-body.js +2 -2
- package/dist/channels/slack/nudge-carrier.js +30 -42
- package/dist/channels/slack/nudge-store.js +164 -191
- package/dist/channels/slack/paint-start.js +66 -81
- package/dist/channels/slack/placeholder.js +123 -152
- package/dist/channels/slack/pr-ref.js +1 -1
- package/dist/channels/slack/progress-delivery.js +65 -78
- package/dist/channels/slack/reasoning-card.js +36 -49
- package/dist/channels/slack/recording-sink.js +12 -24
- package/dist/channels/slack/reply-options.js +7 -12
- package/dist/channels/slack/self-identity.js +27 -35
- package/dist/channels/slack/sender-name.d.ts +12 -3
- package/dist/channels/slack/sender-name.d.ts.map +1 -1
- package/dist/channels/slack/sender-name.js +57 -61
- package/dist/channels/slack/setup.js +2 -4
- package/dist/channels/slack/slack-channel.d.ts +6 -4
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +441 -308
- package/dist/channels/slack/socket-mode.js +38 -52
- package/dist/channels/slack/thread-context.js +143 -160
- package/dist/channels/slack/tool-approval-events.js +149 -166
- package/dist/channels/slack/tool-cards.js +6 -11
- package/dist/channels/slack/tool-chip.js +1 -2
- package/dist/channels/slack/types.d.ts +15 -17
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/upload.js +84 -97
- package/dist/channels/slack/user-info.js +27 -41
- package/dist/channels.js +9 -20
- package/dist/dashboard-session-url.js +3 -4
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
- package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
- package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
- package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
- package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
- package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
- package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
- package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
- package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
- package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
- package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
- package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
- package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/building-with-agents.md +2 -0
- package/dist/docs/deployment.html +38 -38
- package/dist/docs/deployment.md +7 -0
- package/dist/docs/evals.html +36 -36
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +38 -38
- package/dist/docs/guides/bitbucket.md +9 -1
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +39 -39
- package/dist/docs/guides/github.md +20 -4
- package/dist/docs/guides/gitlab.html +38 -38
- package/dist/docs/guides/gitlab.md +9 -1
- package/dist/docs/guides/grokbot-agents.html +35 -35
- package/dist/docs/guides/hooks.html +35 -35
- package/dist/docs/guides/improve.html +35 -35
- package/dist/docs/guides/jev.html +35 -35
- package/dist/docs/guides/mcp-oauth.html +35 -35
- package/dist/docs/guides/migrate.html +66 -0
- package/dist/docs/guides/migrate.md +122 -0
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- package/dist/docs/guides/webhooks.html +35 -35
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +35 -35
- package/dist/docs/llms-full.txt +214 -6
- package/dist/docs/llms.txt +1 -0
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +35 -35
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +39 -38
- package/dist/docs/reference/cli.md +39 -0
- package/dist/docs/reference/connections.html +35 -35
- package/dist/docs/reference/evals.html +35 -35
- package/dist/docs/reference/extensions.html +35 -35
- package/dist/docs/reference/hooks.html +35 -35
- package/dist/docs/reference/http-api.html +35 -35
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +35 -35
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +35 -35
- package/dist/docs/reference/sessions.html +35 -35
- package/dist/docs/reference/skills.html +35 -35
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +35 -35
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/grokbot-agents.html +35 -35
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/docs/troubleshooting.md +1 -0
- package/dist/evals/assertions.js +20 -34
- package/dist/evals/expect.js +3 -6
- package/dist/evals/judge.js +5 -8
- package/dist/evals/loaders.js +45 -62
- package/dist/evals/matchers.js +2 -3
- package/dist/evals/reporters.js +43 -67
- package/dist/evals/results.js +1 -1
- package/dist/evals/run-facts.js +5 -6
- package/dist/evals.js +27 -15
- package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
- package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
- package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
- package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
- package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
- package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
- package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
- package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
- package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
- package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
- package/dist/extensions/jev/extension.js +3 -3
- package/dist/extensions/jev/lib/evaluate.js +43 -60
- package/dist/extensions/jev/tools/evaluate.js +6 -17
- package/dist/extensions/slack-communication/tools/post-file.js +1 -1
- package/dist/extensions.js +3 -5
- package/dist/files-backends/cursor-hosted.js +504 -523
- package/dist/files-backends/local-fs.js +72 -134
- package/dist/files.js +3 -3
- package/dist/filesystem.js +562 -861
- package/dist/index.js +16 -35
- package/dist/internal/advertise-tools.js +74 -86
- package/dist/internal/artifacts-store.js +298 -361
- package/dist/internal/as-of.js +2 -4
- package/dist/internal/authored-alias-hooks.js +6 -4
- package/dist/internal/authored-loaders.js +37 -52
- package/dist/internal/bounded-int.js +1 -2
- package/dist/internal/bounded.js +13 -24
- package/dist/internal/brand.js +1 -1
- package/dist/internal/browser-origin-guard.js +4 -4
- package/dist/internal/builtin-tools/artifacts.js +15 -27
- package/dist/internal/builtin-tools/index.js +2 -3
- package/dist/internal/builtin-tools/reminders.js +33 -52
- package/dist/internal/channel-architecture.d.ts +21 -0
- package/dist/internal/channel-architecture.d.ts.map +1 -0
- package/dist/internal/channel-architecture.js +41 -0
- package/dist/internal/channel-dispatch.js +3 -4
- package/dist/internal/channel-route-dispatch.js +40 -51
- package/dist/internal/channel-state.js +1 -1
- package/dist/internal/chat-client.js +319 -340
- package/dist/internal/cli-ax.js +1262 -1294
- package/dist/internal/cli-bitbucket.js +244 -272
- package/dist/internal/cli-convert-automation.js +137 -151
- package/dist/internal/cli-cursor.js +126 -147
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +1457 -1507
- package/dist/internal/cli-docs.js +130 -147
- package/dist/internal/cli-github.js +437 -476
- package/dist/internal/cli-gitlab.js +259 -288
- package/dist/internal/cli-images.js +266 -334
- package/dist/internal/cli-manifest.js +25 -37
- package/dist/internal/cli-mcp-oauth.js +228 -247
- package/dist/internal/cli-mcp.js +358 -383
- package/dist/internal/cli-migrate.js +73 -90
- package/dist/internal/cli-skills.js +35 -47
- package/dist/internal/cli-slack-manual.d.ts +0 -1
- package/dist/internal/cli-slack-manual.d.ts.map +1 -1
- package/dist/internal/cli-slack-manual.js +175 -204
- package/dist/internal/cli-slack.d.ts +1 -1
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +416 -456
- package/dist/internal/cloud-merge.js +7 -3
- package/dist/internal/cloud-turn-cost.js +8 -1
- package/dist/internal/connection-env.js +5 -6
- package/dist/internal/continuation-channel.js +10 -7
- package/dist/internal/continuation-identity.js +85 -67
- package/dist/internal/conversation-mirror.js +112 -131
- package/dist/internal/convert-automation/convert-workflow.js +21 -31
- package/dist/internal/cron.js +3 -3
- package/dist/internal/cursor/account-mcp.js +147 -146
- package/dist/internal/cursor/backend-client.js +290 -320
- package/dist/internal/cursor/bound-secret-file.js +3 -3
- package/dist/internal/cursor/credentials.js +127 -142
- package/dist/internal/cursor/cursor-api-transport.js +4 -8
- package/dist/internal/cursor/github-credentials.js +91 -108
- package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
- package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +5 -9
- package/dist/internal/cursor/session-token.js +36 -48
- package/dist/internal/cursor/store-api-client.js +77 -92
- package/dist/internal/cursor-account-mcp-auth.js +132 -149
- package/dist/internal/cursor-agent-template.js +1 -1
- package/dist/internal/cursor-deployment-relay.js +33 -54
- package/dist/internal/cursor-event-relay.js +65 -59
- package/dist/internal/cursor-relay-core.js +258 -286
- package/dist/internal/deferred-channel-session.js +3 -12
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +413 -475
- package/dist/internal/deploy-manifest.d.ts +17 -0
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +71 -21
- package/dist/internal/deploy-source.js +31 -43
- package/dist/internal/discovery/agent-config.js +45 -59
- package/dist/internal/discovery/agent.js +276 -280
- package/dist/internal/discovery/channels.js +67 -80
- package/dist/internal/discovery/connections.js +286 -296
- package/dist/internal/discovery/context.js +2 -13
- package/dist/internal/discovery/cursor-plugin.js +223 -259
- package/dist/internal/discovery/extension-overlay.js +104 -131
- package/dist/internal/discovery/extensions.js +276 -281
- package/dist/internal/discovery/fs.js +56 -79
- package/dist/internal/discovery/hooks.js +39 -50
- package/dist/internal/discovery/info.js +17 -19
- package/dist/internal/discovery/instructions.js +58 -71
- package/dist/internal/discovery/modules.js +45 -58
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +192 -215
- package/dist/internal/discovery/reminders.js +41 -52
- package/dist/internal/discovery/runtime.js +1 -1
- package/dist/internal/discovery/schedules.js +71 -82
- package/dist/internal/discovery/seed-files.js +21 -32
- package/dist/internal/discovery/services.js +74 -96
- package/dist/internal/discovery/skills.js +77 -94
- package/dist/internal/discovery/subagent.js +79 -95
- package/dist/internal/discovery/tools.js +12 -23
- package/dist/internal/distribution.js +2 -2
- package/dist/internal/docs-site.js +30 -45
- package/dist/internal/duration.js +1 -1
- package/dist/internal/env-file.js +48 -64
- package/dist/internal/eval-judge-model.js +17 -28
- package/dist/internal/eval-run-store.js +265 -254
- package/dist/internal/eval-runner.d.ts +8 -0
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +406 -408
- package/dist/internal/eval-transport.d.ts +24 -0
- package/dist/internal/eval-transport.d.ts.map +1 -0
- package/dist/internal/eval-transport.js +22 -0
- package/dist/internal/evals-client.js +242 -246
- package/dist/internal/event-log.js +72 -120
- package/dist/internal/event-mapper.js +30 -31
- package/dist/internal/factory-resource-channel.js +16 -30
- package/dist/internal/filesystem/errors.js +6 -6
- package/dist/internal/filesystem/format.js +10 -13
- package/dist/internal/filesystem/merge.js +52 -94
- package/dist/internal/filesystem/nearest.js +15 -27
- package/dist/internal/filesystem/scratch.js +65 -85
- package/dist/internal/filesystem/tools.js +221 -241
- package/dist/internal/filesystem/walk.js +76 -143
- package/dist/internal/framework-file-storage.js +118 -139
- package/dist/internal/framework-storage-selection.js +21 -13
- package/dist/internal/frontmatter.js +4 -6
- package/dist/internal/github-fanout.js +50 -64
- package/dist/internal/guest-network.js +96 -109
- package/dist/internal/handleAgentServeTrigger.js +121 -126
- package/dist/internal/host-files.js +73 -88
- package/dist/internal/host-kv.js +21 -36
- package/dist/internal/host-otel.js +22 -19
- package/dist/internal/host-platforms.js +49 -63
- package/dist/internal/hosted-catch-protocol.d.ts +1 -0
- package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-catch-protocol.js +1 -0
- package/dist/internal/hosted-catch.d.ts +5 -3
- package/dist/internal/hosted-catch.d.ts.map +1 -1
- package/dist/internal/hosted-catch.js +84 -93
- package/dist/internal/hosted-delivery-protocol.js +32 -8
- package/dist/internal/hosted-delivery.d.ts +13 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +614 -584
- package/dist/internal/hosted-eval-cases.d.ts +21 -0
- package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
- package/dist/internal/hosted-eval-cases.js +162 -0
- package/dist/internal/hosted-execution-diag.js +38 -30
- package/dist/internal/hosted-execution-flush.js +75 -66
- package/dist/internal/hosted-execution-latency.js +16 -8
- package/dist/internal/hosted-managed-automation.js +2 -2
- package/dist/internal/hosting.js +2 -3
- package/dist/internal/http-channel-define.js +4 -1
- package/dist/internal/http-channel.js +101 -112
- package/dist/internal/http-control-plane-session.d.ts +18 -1
- package/dist/internal/http-control-plane-session.d.ts.map +1 -1
- package/dist/internal/http-control-plane-session.js +66 -32
- package/dist/internal/incoming-headers-to-fetch.js +1 -2
- package/dist/internal/init-interview.js +73 -93
- package/dist/internal/init-project.js +182 -214
- package/dist/internal/init-scaffold.js +10 -21
- package/dist/internal/inline-stdio-mcp.js +80 -86
- package/dist/internal/install-cursor-skills.js +231 -273
- package/dist/internal/legacy-command-guard.js +18 -31
- package/dist/internal/listen-port.js +34 -45
- package/dist/internal/local-control-plane.js +293 -307
- package/dist/internal/local-env.js +1 -1
- package/dist/internal/local-ingress.js +15 -9
- package/dist/internal/log-ring.js +1 -2
- package/dist/internal/logs-client.js +207 -227
- package/dist/internal/map-pool.js +24 -38
- package/dist/internal/mcp-endpoint.js +204 -180
- package/dist/internal/mcp-host.js +165 -168
- package/dist/internal/mcp-oauth-on-demand.js +170 -207
- package/dist/internal/mcp-oauth-persist.js +15 -29
- package/dist/internal/mcp-oauth.js +209 -266
- package/dist/internal/named-webhook-secret.d.ts +39 -0
- package/dist/internal/named-webhook-secret.d.ts.map +1 -0
- package/dist/internal/named-webhook-secret.js +47 -0
- package/dist/internal/open-browser.js +2 -3
- package/dist/internal/otel/collector.js +104 -68
- package/dist/internal/otel/config.js +24 -37
- package/dist/internal/otel/http.js +5 -7
- package/dist/internal/otel/mcp.js +3 -12
- package/dist/internal/otel/runtime.js +69 -83
- package/dist/internal/package-inline-stdio.js +57 -65
- package/dist/internal/peer-connections.js +9 -5
- package/dist/internal/platform-schedule-sync.js +39 -54
- package/dist/internal/platform-timers.js +176 -210
- package/dist/internal/playground/static.js +1 -2
- package/dist/internal/playground/toolchain.js +37 -53
- package/dist/internal/playground-proxy.js +230 -270
- package/dist/internal/process-memory-telemetry.js +33 -51
- package/dist/internal/prompt-context.js +3 -6
- package/dist/internal/reminder-control-plane-protocol.js +46 -13
- package/dist/internal/reminder-runner.js +770 -785
- package/dist/internal/reminder-schedule.js +1 -1
- package/dist/internal/reminder-store.js +57 -78
- package/dist/internal/request-error-status.js +1 -3
- package/dist/internal/request-headers.js +2 -2
- package/dist/internal/resolve-prod-target.js +119 -135
- package/dist/internal/resolved-connections.js +16 -6
- package/dist/internal/run-client.js +221 -229
- package/dist/internal/runtime-dispatch-runner.js +18 -43
- package/dist/internal/schedule-runner.js +49 -58
- package/dist/internal/scm/pr-url.js +7 -6
- package/dist/internal/sdk-runner.js +388 -363
- package/dist/internal/serve-restart.js +26 -39
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +1283 -1244
- package/dist/internal/session-cost.js +7 -9
- package/dist/internal/session-engine.d.ts +3 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +2801 -2777
- package/dist/internal/session-links.js +12 -16
- package/dist/internal/session-run-log.js +134 -82
- package/dist/internal/session-store.js +133 -164
- package/dist/internal/sessions-client.js +97 -118
- package/dist/internal/skill-catalog.js +18 -23
- package/dist/internal/skills-sync.js +16 -30
- package/dist/internal/slack-provision-client.js +90 -116
- package/dist/internal/start-log-store.js +48 -67
- package/dist/internal/steering.js +1 -2
- package/dist/internal/storage-coordinator.js +160 -196
- package/dist/internal/store-mirror.js +16 -30
- package/dist/internal/stream-progress.js +6 -8
- package/dist/internal/terminal-style.js +3 -4
- package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
- package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
- package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
- package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
- package/dist/internal/tool-catalog.js +11 -5
- package/dist/internal/tool-result.js +1 -1
- package/dist/internal/trajectory.js +19 -22
- package/dist/internal/turn-cost.js +52 -62
- package/dist/internal/turn-governor.js +5 -8
- package/dist/internal/turn-lease-store.js +85 -105
- package/dist/internal/turn-outbox.js +28 -43
- package/dist/internal/update-check.js +231 -259
- package/dist/internal/v2-hosting.js +1 -2
- package/dist/internal/workspace-sync.js +25 -41
- package/dist/internal/workspace.js +111 -139
- package/dist/kv/memory-kv.js +27 -51
- package/dist/memory.js +106 -148
- package/dist/otel.js +5 -8
- package/dist/playground/assets/{index-Co4CUVTQ.js → index-Be0-1hw2.js} +45 -45
- package/dist/playground/assets/index-Clz6uHj9.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/prompt.js +2 -4
- package/dist/storage-backends/cursor-hosted-v2.js +53 -83
- package/dist/storage-backends/cursor-hosted.js +105 -145
- package/dist/storage-backends/file-kv.js +100 -128
- package/dist/storage-protocol.js +3 -5
- package/dist/storage.js +17 -26
- package/dist/types.d.ts +68 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +20 -18
- package/docs/building-with-agents.md +2 -0
- package/docs/deployment.md +7 -0
- package/docs/guides/bitbucket.md +9 -1
- package/docs/guides/github.md +20 -4
- package/docs/guides/gitlab.md +9 -1
- package/docs/guides/migrate.md +127 -0
- package/docs/reference/cli.md +39 -0
- package/docs/troubleshooting.md +1 -0
- package/package.json +1 -1
- package/skills/debug/SKILL.md +1 -0
- package/skills/github/SKILL.md +23 -0
- package/skills/migrate-v2/SKILL.md +51 -10
- package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
- package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
- package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
- package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
- /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
- /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
package/dist/memory.js
CHANGED
|
@@ -18,15 +18,6 @@
|
|
|
18
18
|
* file tools keep the same read path. Local development uses
|
|
19
19
|
* {@link fileMemoryBackend}.
|
|
20
20
|
*/
|
|
21
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
21
|
import { randomUUID } from "node:crypto";
|
|
31
22
|
import { appendFile, mkdir, rename, stat, writeFile } from "node:fs/promises";
|
|
32
23
|
import { join } from "node:path";
|
|
@@ -42,8 +33,7 @@ export const MEMORY_DIR_NAME = "memory";
|
|
|
42
33
|
* segments stay alongside as `journal-<epoch-ms>.jsonl`.
|
|
43
34
|
*/
|
|
44
35
|
export function fileMemoryBackend(options = {}) {
|
|
45
|
-
|
|
46
|
-
const maxJournalBytes = (_a = options.maxJournalBytes) !== null && _a !== void 0 ? _a : 5 * 1024 * 1024;
|
|
36
|
+
const maxJournalBytes = options.maxJournalBytes ?? 5 * 1024 * 1024;
|
|
47
37
|
// Event dispatch is serialized per session but concurrent across
|
|
48
38
|
// sessions, so appends to the shared journal are chained per path. A
|
|
49
39
|
// failed append must not poison the chain for later turns.
|
|
@@ -52,28 +42,23 @@ export function fileMemoryBackend(options = {}) {
|
|
|
52
42
|
// rename would silently replace the earlier archive.
|
|
53
43
|
let rotationSeq = 0;
|
|
54
44
|
return {
|
|
55
|
-
appendTurn(record, ctx) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
rotationSeq += 1;
|
|
70
|
-
yield rename(path, join(dir, `journal-${Date.now()}-${rotationSeq}.jsonl`));
|
|
71
|
-
}
|
|
72
|
-
yield appendFile(path, `${JSON.stringify(record)}\n`, "utf8");
|
|
73
|
-
}));
|
|
74
|
-
appendChains.set(path, next);
|
|
75
|
-
yield next;
|
|
45
|
+
async appendTurn(record, ctx) {
|
|
46
|
+
const dir = join(ctx.stateRoot, MEMORY_DIR_NAME);
|
|
47
|
+
const path = join(dir, "journal.jsonl");
|
|
48
|
+
const prior = appendChains.get(path) ?? Promise.resolve();
|
|
49
|
+
const next = prior
|
|
50
|
+
.catch(() => { })
|
|
51
|
+
.then(async () => {
|
|
52
|
+
await mkdir(dir, { recursive: true });
|
|
53
|
+
const size = (await stat(path).catch(() => undefined))?.size ?? 0;
|
|
54
|
+
if (size >= maxJournalBytes) {
|
|
55
|
+
rotationSeq += 1;
|
|
56
|
+
await rename(path, join(dir, `journal-${Date.now()}-${rotationSeq}.jsonl`));
|
|
57
|
+
}
|
|
58
|
+
await appendFile(path, `${JSON.stringify(record)}\n`, "utf8");
|
|
76
59
|
});
|
|
60
|
+
appendChains.set(path, next);
|
|
61
|
+
await next;
|
|
77
62
|
},
|
|
78
63
|
};
|
|
79
64
|
}
|
|
@@ -84,15 +69,14 @@ export function fileMemoryBackend(options = {}) {
|
|
|
84
69
|
* persistence path.
|
|
85
70
|
*/
|
|
86
71
|
export function agentStoreMemoryBackend(options = {}) {
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
const maxJournalBytes = (_b = options.maxJournalBytes) !== null && _b !== void 0 ? _b : 5 * 1024 * 1024;
|
|
72
|
+
const hosted = options.hosted ?? {};
|
|
73
|
+
const maxJournalBytes = options.maxJournalBytes ?? 5 * 1024 * 1024;
|
|
90
74
|
// Mirror work is chained per journal key (same shape as
|
|
91
75
|
// fileMemoryBackend): hydration and appends on one agent's mirror never
|
|
92
76
|
// interleave, and a failed step must not poison the chain for later turns.
|
|
93
77
|
const appendChains = new Map();
|
|
94
78
|
// The client owns retries and typed errors; this module owns memory policy.
|
|
95
|
-
const storeApiClient =
|
|
79
|
+
const storeApiClient = options.storeApiClient ?? createStoreApiClient(hosted);
|
|
96
80
|
/**
|
|
97
81
|
* Keep the local journal mirror available to file tools. Hydrate it when
|
|
98
82
|
* absent, then append each record only after managed storage accepts it.
|
|
@@ -101,9 +85,7 @@ export function agentStoreMemoryBackend(options = {}) {
|
|
|
101
85
|
*/
|
|
102
86
|
const hydratedMirrors = new Set();
|
|
103
87
|
let mirrorRotationSeq = 0;
|
|
104
|
-
const maintainLocalMirror = (record, ctx) =>
|
|
105
|
-
var _a;
|
|
106
|
-
var _b;
|
|
88
|
+
const maintainLocalMirror = async (record, ctx) => {
|
|
107
89
|
const dir = join(ctx.stateRoot, MEMORY_DIR_NAME);
|
|
108
90
|
const path = join(dir, "journal.jsonl");
|
|
109
91
|
if (!hydratedMirrors.has(path)) {
|
|
@@ -111,24 +93,24 @@ export function agentStoreMemoryBackend(options = {}) {
|
|
|
111
93
|
// itself for one agent. Backstop for a session that appended before
|
|
112
94
|
// any prepareSession hydration ran (e.g. a custom hook ordering).
|
|
113
95
|
hydratedMirrors.add(path);
|
|
114
|
-
const existing =
|
|
96
|
+
const existing = await stat(path).catch(() => undefined);
|
|
115
97
|
if (existing === undefined) {
|
|
116
|
-
const content =
|
|
98
|
+
const content = await storeApiClient.memoryReadContent({
|
|
117
99
|
agent: ctx.agentName,
|
|
118
100
|
});
|
|
119
101
|
if (content !== undefined) {
|
|
120
|
-
|
|
102
|
+
await mirrorJournalLocally(ctx.stateRoot, content);
|
|
121
103
|
}
|
|
122
104
|
}
|
|
123
105
|
}
|
|
124
|
-
|
|
125
|
-
const size = (
|
|
106
|
+
await mkdir(dir, { recursive: true });
|
|
107
|
+
const size = (await stat(path).catch(() => undefined))?.size ?? 0;
|
|
126
108
|
if (size >= maxJournalBytes) {
|
|
127
109
|
mirrorRotationSeq += 1;
|
|
128
|
-
|
|
110
|
+
await rename(path, join(dir, `journal-${Date.now()}-${mirrorRotationSeq}.jsonl`));
|
|
129
111
|
}
|
|
130
|
-
|
|
131
|
-
}
|
|
112
|
+
await appendFile(path, `${JSON.stringify(record)}\n`, "utf8");
|
|
113
|
+
};
|
|
132
114
|
/**
|
|
133
115
|
* Append one record to managed storage, then update the local mirror.
|
|
134
116
|
*
|
|
@@ -136,39 +118,37 @@ export function agentStoreMemoryBackend(options = {}) {
|
|
|
136
118
|
* the hook runner treats an append failure as non-fatal to the turn;
|
|
137
119
|
* a failed durable write also skips the mirror.
|
|
138
120
|
*/
|
|
139
|
-
const appendViaStoreApi = (record, ctx) =>
|
|
121
|
+
const appendViaStoreApi = async (record, ctx) => {
|
|
140
122
|
try {
|
|
141
|
-
|
|
123
|
+
await storeApiClient.memoryAppend({ agent: ctx.agentName, record });
|
|
142
124
|
}
|
|
143
125
|
catch (error) {
|
|
144
126
|
console.warn(`[bdk] memory.append dropped one record for "${ctx.agentName}": ${error instanceof Error ? error.message : String(error)}`);
|
|
145
127
|
return;
|
|
146
128
|
}
|
|
147
129
|
try {
|
|
148
|
-
|
|
130
|
+
await maintainLocalMirror(record, ctx);
|
|
149
131
|
}
|
|
150
132
|
catch (error) {
|
|
151
133
|
console.warn(`[bdk] memory mirror update failed for "${ctx.agentName}" (journal record is durable): ${error instanceof Error ? error.message : String(error)}`);
|
|
152
134
|
}
|
|
153
|
-
}
|
|
135
|
+
};
|
|
154
136
|
/**
|
|
155
137
|
* Refresh the local mirror at session start. Soft-fail so an unavailable
|
|
156
138
|
* store does not erase the existing mirror.
|
|
157
139
|
*/
|
|
158
|
-
const hydrateMirror = (ctx) =>
|
|
159
|
-
var _a;
|
|
160
|
-
var _b;
|
|
140
|
+
const hydrateMirror = async (ctx) => {
|
|
161
141
|
const path = join(ctx.stateRoot, MEMORY_DIR_NAME, "journal.jsonl");
|
|
162
142
|
try {
|
|
163
|
-
const content =
|
|
143
|
+
const content = await storeApiClient.memoryReadContent({
|
|
164
144
|
agent: ctx.agentName,
|
|
165
145
|
});
|
|
166
146
|
if (content !== undefined) {
|
|
167
147
|
// Never replace the local mirror with a shorter journal. Keeping the
|
|
168
148
|
// richer view avoids hiding records the agent has already seen.
|
|
169
|
-
const mirroredBytes = (
|
|
149
|
+
const mirroredBytes = (await stat(path).catch(() => undefined))?.size ?? 0;
|
|
170
150
|
if (content.byteLength >= mirroredBytes) {
|
|
171
|
-
|
|
151
|
+
await mirrorJournalLocally(ctx.stateRoot, content);
|
|
172
152
|
}
|
|
173
153
|
}
|
|
174
154
|
// Either way the read answered: skip the append path's absent-file
|
|
@@ -178,65 +158,57 @@ export function agentStoreMemoryBackend(options = {}) {
|
|
|
178
158
|
catch (error) {
|
|
179
159
|
console.warn(`[bdk] memory hydration failed for "${ctx.agentName}" (keeping the existing mirror): ${error instanceof Error ? error.message : String(error)}`);
|
|
180
160
|
}
|
|
181
|
-
}
|
|
161
|
+
};
|
|
182
162
|
/** Report a missing managed-storage binding without falling back locally. */
|
|
183
163
|
const refuseMisconfiguredLane = (agentName, verb) => {
|
|
184
164
|
console.error(`[bdk] memory ${verb} for "${agentName}" dropped: the store API lane is unavailable (missing/foreign AGENT_SERVE_STORE_PROTOCOL pin or no provisioned store). This BDK version has no client-side journal fallback; fix the hosting pin.`);
|
|
185
165
|
};
|
|
186
166
|
return {
|
|
187
|
-
prepareSession(ctx) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
.
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
yield hydrateMirror(ctx);
|
|
202
|
-
}));
|
|
203
|
-
appendChains.set(key, next);
|
|
204
|
-
yield next;
|
|
167
|
+
async prepareSession(ctx) {
|
|
168
|
+
// Chained on the same per-journal key as appends, so hydration never
|
|
169
|
+
// interleaves with an append's mirror write.
|
|
170
|
+
const key = agentStoreKeys.memoryJournal(ctx.agentName);
|
|
171
|
+
const prior = appendChains.get(key) ?? Promise.resolve();
|
|
172
|
+
const next = prior
|
|
173
|
+
.catch(() => { })
|
|
174
|
+
.then(async () => {
|
|
175
|
+
if (!isStoreApiLaneEnabled(hosted)) {
|
|
176
|
+
refuseMisconfiguredLane(ctx.agentName, "hydration");
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
await hydrateMirror(ctx);
|
|
205
180
|
});
|
|
181
|
+
appendChains.set(key, next);
|
|
182
|
+
await next;
|
|
206
183
|
},
|
|
207
|
-
appendTurn(record, ctx) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
.
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
yield appendViaStoreApi(record, ctx);
|
|
224
|
-
}));
|
|
225
|
-
appendChains.set(key, next);
|
|
226
|
-
yield next;
|
|
184
|
+
async appendTurn(record, ctx) {
|
|
185
|
+
// Soft-fail by construction (appendViaStoreApi never throws), but
|
|
186
|
+
// still chained per journal key: the local mirror's hydrate-then-
|
|
187
|
+
// append must not interleave with itself. Availability is resolved
|
|
188
|
+
// lazily for each append.
|
|
189
|
+
const key = agentStoreKeys.memoryJournal(ctx.agentName);
|
|
190
|
+
const prior = appendChains.get(key) ?? Promise.resolve();
|
|
191
|
+
const next = prior
|
|
192
|
+
.catch(() => { })
|
|
193
|
+
.then(async () => {
|
|
194
|
+
if (!isStoreApiLaneEnabled(hosted)) {
|
|
195
|
+
refuseMisconfiguredLane(ctx.agentName, "append");
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
await appendViaStoreApi(record, ctx);
|
|
227
199
|
});
|
|
200
|
+
appendChains.set(key, next);
|
|
201
|
+
await next;
|
|
228
202
|
},
|
|
229
203
|
};
|
|
230
204
|
}
|
|
231
205
|
/** Atomic full rewrite of the local mirror. */
|
|
232
|
-
function mirrorJournalLocally(stateRoot, contents) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
yield rename(tmp, join(dir, "journal.jsonl"));
|
|
239
|
-
});
|
|
206
|
+
async function mirrorJournalLocally(stateRoot, contents) {
|
|
207
|
+
const dir = join(stateRoot, MEMORY_DIR_NAME);
|
|
208
|
+
await mkdir(dir, { recursive: true });
|
|
209
|
+
const tmp = join(dir, `.tmp-${randomUUID()}`);
|
|
210
|
+
await writeFile(tmp, contents);
|
|
211
|
+
await rename(tmp, join(dir, "journal.jsonl"));
|
|
240
212
|
}
|
|
241
213
|
/** Cursor-managed deployments use durable memory; local development uses files. */
|
|
242
214
|
function defaultMemoryBackend() {
|
|
@@ -259,16 +231,15 @@ function truncate(text, max) {
|
|
|
259
231
|
* memories live; delete the hook file to opt out entirely.
|
|
260
232
|
*/
|
|
261
233
|
export function memoryHook(options = {}) {
|
|
262
|
-
|
|
263
|
-
const
|
|
264
|
-
const maxTextLength = (_b = options.maxTextLength) !== null && _b !== void 0 ? _b : 2000;
|
|
234
|
+
const backend = options.backend ?? defaultMemoryBackend();
|
|
235
|
+
const maxTextLength = options.maxTextLength ?? 2000;
|
|
265
236
|
// Inbound message per turn (truncated at receipt so large pastes are not
|
|
266
237
|
// retained), keyed `<sessionId>/<turnId>` — `message.received` and the
|
|
267
238
|
// turn-end events share a turnId. Entries drop at turn end and any
|
|
268
239
|
// stragglers (turns that never reached a terminal event) at session end.
|
|
269
240
|
const pendingMessages = new Map();
|
|
270
|
-
const pendingKey = (ctx, turnId) => `${ctx.session.id}/${turnId
|
|
271
|
-
const record = (ctx, turnId, status, result, usage) =>
|
|
241
|
+
const pendingKey = (ctx, turnId) => `${ctx.session.id}/${turnId ?? "?"}`;
|
|
242
|
+
const record = async (ctx, turnId, status, result, usage) => {
|
|
272
243
|
const key = pendingKey(ctx, turnId);
|
|
273
244
|
const userMessage = pendingMessages.get(key);
|
|
274
245
|
pendingMessages.delete(key);
|
|
@@ -293,11 +264,11 @@ export function memoryHook(options = {}) {
|
|
|
293
264
|
if (usage !== undefined) {
|
|
294
265
|
entry.usage = usage;
|
|
295
266
|
}
|
|
296
|
-
|
|
267
|
+
await backend.appendTurn(entry, {
|
|
297
268
|
stateRoot: ctx.stateRoot,
|
|
298
269
|
agentName: ctx.agent.name,
|
|
299
270
|
});
|
|
300
|
-
}
|
|
271
|
+
};
|
|
301
272
|
const sweepSession = (ctx) => {
|
|
302
273
|
for (const key of pendingMessages.keys()) {
|
|
303
274
|
if (key.startsWith(`${ctx.session.id}/`)) {
|
|
@@ -307,48 +278,35 @@ export function memoryHook(options = {}) {
|
|
|
307
278
|
};
|
|
308
279
|
return defineHook({
|
|
309
280
|
events: {
|
|
310
|
-
"session.started"(_event, ctx) {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
console.warn(`[bdk] memory hydration at session start failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
325
|
-
}
|
|
326
|
-
});
|
|
281
|
+
async "session.started"(_event, ctx) {
|
|
282
|
+
// Bring the mirror (the workspace symlink read path) up to date
|
|
283
|
+
// before the session's first turn reads it. Backends without a
|
|
284
|
+
// prepareSession (plain files) have nothing to freshen. Soft-fail:
|
|
285
|
+
// hydration is a freshness upgrade, never a turn blocker.
|
|
286
|
+
try {
|
|
287
|
+
await backend.prepareSession?.({
|
|
288
|
+
stateRoot: ctx.stateRoot,
|
|
289
|
+
agentName: ctx.agent.name,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
console.warn(`[bdk] memory hydration at session start failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
294
|
+
}
|
|
327
295
|
},
|
|
328
|
-
"message.received"(event, ctx) {
|
|
329
|
-
|
|
330
|
-
pendingMessages.set(pendingKey(ctx, event.turnId), truncate(event.data.text, maxTextLength));
|
|
331
|
-
});
|
|
296
|
+
async "message.received"(event, ctx) {
|
|
297
|
+
pendingMessages.set(pendingKey(ctx, event.turnId), truncate(event.data.text, maxTextLength));
|
|
332
298
|
},
|
|
333
|
-
"turn.completed"(event, ctx) {
|
|
334
|
-
|
|
335
|
-
yield record(ctx, event.turnId, "completed", event.data.result, event.data.usage);
|
|
336
|
-
});
|
|
299
|
+
async "turn.completed"(event, ctx) {
|
|
300
|
+
await record(ctx, event.turnId, "completed", event.data.result, event.data.usage);
|
|
337
301
|
},
|
|
338
|
-
"turn.failed"(event, ctx) {
|
|
339
|
-
|
|
340
|
-
yield record(ctx, event.turnId, "failed", event.data.message, undefined);
|
|
341
|
-
});
|
|
302
|
+
async "turn.failed"(event, ctx) {
|
|
303
|
+
await record(ctx, event.turnId, "failed", event.data.message, undefined);
|
|
342
304
|
},
|
|
343
|
-
"session.completed"(_event, ctx) {
|
|
344
|
-
|
|
345
|
-
sweepSession(ctx);
|
|
346
|
-
});
|
|
305
|
+
async "session.completed"(_event, ctx) {
|
|
306
|
+
sweepSession(ctx);
|
|
347
307
|
},
|
|
348
|
-
"session.failed"(_event, ctx) {
|
|
349
|
-
|
|
350
|
-
sweepSession(ctx);
|
|
351
|
-
});
|
|
308
|
+
async "session.failed"(_event, ctx) {
|
|
309
|
+
sweepSession(ctx);
|
|
352
310
|
},
|
|
353
311
|
},
|
|
354
312
|
});
|
package/dist/otel.js
CHANGED
|
@@ -116,8 +116,7 @@ export function formatTraceparent(spanContext) {
|
|
|
116
116
|
* are per `@opentelemetry/api` copy.
|
|
117
117
|
*/
|
|
118
118
|
export function injectActiveTraceContext(headers) {
|
|
119
|
-
|
|
120
|
-
const span = (_a = trace.getSpan(context.active())) !== null && _a !== void 0 ? _a : getContextTracerSpan();
|
|
119
|
+
const span = trace.getSpan(context.active()) ?? getContextTracerSpan();
|
|
121
120
|
if (span === undefined) {
|
|
122
121
|
return;
|
|
123
122
|
}
|
|
@@ -130,10 +129,9 @@ export function injectActiveTraceContext(headers) {
|
|
|
130
129
|
}
|
|
131
130
|
/** W3C `traceparent` for the active span, or undefined if none. */
|
|
132
131
|
export function activeTraceparent() {
|
|
133
|
-
var _a;
|
|
134
132
|
const headers = new Headers();
|
|
135
133
|
injectActiveTraceContext(headers);
|
|
136
|
-
return
|
|
134
|
+
return headers.get(TRACEPARENT_HEADER) ?? undefined;
|
|
137
135
|
}
|
|
138
136
|
/**
|
|
139
137
|
* Copy the active span onto every outbound `fetch`. Agents should not
|
|
@@ -143,7 +141,7 @@ export function activeTraceparent() {
|
|
|
143
141
|
function headersForFetch(input, init) {
|
|
144
142
|
// Fetch: `init.headers` replaces `Request` headers. If `init` omits
|
|
145
143
|
// headers (`fetch(request, { signal })`), keep the Request's.
|
|
146
|
-
const headers = new Headers(
|
|
144
|
+
const headers = new Headers(init?.headers !== undefined
|
|
147
145
|
? init.headers
|
|
148
146
|
: input instanceof Request
|
|
149
147
|
? input.headers
|
|
@@ -157,7 +155,7 @@ export function instrumentedFetch(base = fetch) {
|
|
|
157
155
|
if (input instanceof Request && init === undefined) {
|
|
158
156
|
return base(new Request(input, { headers }));
|
|
159
157
|
}
|
|
160
|
-
return base(input,
|
|
158
|
+
return base(input, { ...init, headers });
|
|
161
159
|
};
|
|
162
160
|
}
|
|
163
161
|
const OUTBOUND_FETCH_INSTALLED = Symbol.for("anysphere.july.otel.outboundFetch");
|
|
@@ -180,7 +178,6 @@ function ensureContextTracerAls() {
|
|
|
180
178
|
}
|
|
181
179
|
ensureContextTracerAls();
|
|
182
180
|
function getContextTracerSpan() {
|
|
183
|
-
var _a;
|
|
184
181
|
const als = globalThis[ACTIVE_OTEL_SPAN_ALS];
|
|
185
|
-
return
|
|
182
|
+
return als?.getStore?.();
|
|
186
183
|
}
|