@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
|
@@ -5,22 +5,6 @@
|
|
|
5
5
|
* Each tool is a `defineTool` whose runtime `inputSchema` accepts those
|
|
6
6
|
* fields plus the native aliases the harness still sends.
|
|
7
7
|
*/
|
|
8
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
18
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
19
|
-
var m = o[Symbol.asyncIterator], i;
|
|
20
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
21
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
22
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
23
|
-
};
|
|
24
8
|
import { Buffer } from "node:buffer";
|
|
25
9
|
import { minimatch } from "minimatch";
|
|
26
10
|
import { z } from "zod";
|
|
@@ -80,11 +64,10 @@ export function rootFileToolsFromAuthored(tools) {
|
|
|
80
64
|
* no-file-name allowlist means the default-on file layer.
|
|
81
65
|
*/
|
|
82
66
|
export function hostFileToolsFromAuthored(tools) {
|
|
83
|
-
var _a;
|
|
84
67
|
if (tools === undefined) {
|
|
85
68
|
return undefined;
|
|
86
69
|
}
|
|
87
|
-
return
|
|
70
|
+
return rootFileToolsFromAuthored(tools) ?? [];
|
|
88
71
|
}
|
|
89
72
|
const HOST_DEFAULT_SYNTHESIZED_NAMES = SYNTHESIZED_FILE_SYSTEM_TOOL_NAMES.filter(name => name !== "SemanticSearch");
|
|
90
73
|
/**
|
|
@@ -116,7 +99,7 @@ function aliasKeys(aliases) {
|
|
|
116
99
|
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
117
100
|
return raw;
|
|
118
101
|
}
|
|
119
|
-
const input =
|
|
102
|
+
const input = { ...raw };
|
|
120
103
|
for (const [from, to] of Object.entries(aliases)) {
|
|
121
104
|
if (input[to] === undefined && input[from] !== undefined) {
|
|
122
105
|
input[to] = input[from];
|
|
@@ -138,7 +121,7 @@ function parseGrepOutputMode(value) {
|
|
|
138
121
|
return "content";
|
|
139
122
|
}
|
|
140
123
|
function contextLineCount(specific, both) {
|
|
141
|
-
const value = specific
|
|
124
|
+
const value = specific ?? both;
|
|
142
125
|
if (value === undefined || !Number.isFinite(value)) {
|
|
143
126
|
return 0;
|
|
144
127
|
}
|
|
@@ -149,7 +132,7 @@ function compileToolGrepPattern(pattern, options) {
|
|
|
149
132
|
const flags = `${options.caseInsensitive === true ? "i" : ""}${options.multiline === true ? "s" : ""}`;
|
|
150
133
|
return new RegExp(pattern, flags === "" ? undefined : flags);
|
|
151
134
|
}
|
|
152
|
-
catch
|
|
135
|
+
catch {
|
|
153
136
|
throw new InvalidGrepPatternError(pattern);
|
|
154
137
|
}
|
|
155
138
|
}
|
|
@@ -159,23 +142,23 @@ function compileToolGrepPattern(pattern, options) {
|
|
|
159
142
|
* directory or omitted path uses `FileSystem.glob`, which applies the
|
|
160
143
|
* mount's own root. Slash-free globs are recursive, matching line grep.
|
|
161
144
|
*/
|
|
162
|
-
function collectMultilineGrepFiles(root, input) {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const
|
|
166
|
-
if (
|
|
167
|
-
const filePath = (_a = input.path) !== null && _a !== void 0 ? _a : "";
|
|
168
|
-
if (input.glob !== undefined && !fileMatchesGrepGlob(filePath, input.glob)) {
|
|
169
|
-
return [];
|
|
170
|
-
}
|
|
171
|
-
return [filePath];
|
|
172
|
-
}
|
|
173
|
-
if (listed.kind === "missing") {
|
|
145
|
+
async function collectMultilineGrepFiles(root, input) {
|
|
146
|
+
const listed = await collectListOrStat(root, input.path);
|
|
147
|
+
if (listed.kind === "file") {
|
|
148
|
+
const filePath = input.path ?? "";
|
|
149
|
+
if (input.glob !== undefined && !fileMatchesGrepGlob(filePath, input.glob)) {
|
|
174
150
|
return [];
|
|
175
151
|
}
|
|
176
|
-
|
|
177
|
-
|
|
152
|
+
return [filePath];
|
|
153
|
+
}
|
|
154
|
+
if (listed.kind === "missing") {
|
|
155
|
+
return [];
|
|
156
|
+
}
|
|
157
|
+
const entries = await collectGlob(root, {
|
|
158
|
+
pattern: recursiveGrepGlob(input.glob),
|
|
159
|
+
...(input.path === undefined ? {} : { dir: input.path }),
|
|
178
160
|
});
|
|
161
|
+
return entries.map(entry => entry.path);
|
|
179
162
|
}
|
|
180
163
|
function recursiveGrepGlob(glob) {
|
|
181
164
|
if (glob === undefined || glob.length === 0) {
|
|
@@ -200,7 +183,6 @@ function fileMatchesGrepGlob(filePath, globPattern) {
|
|
|
200
183
|
return false;
|
|
201
184
|
}
|
|
202
185
|
function multilineHitsInContent(path, content, regex) {
|
|
203
|
-
var _a;
|
|
204
186
|
const global = new RegExp(regex.source, regex.flags.includes("g") ? regex.flags : `${regex.flags}g`);
|
|
205
187
|
const hits = [];
|
|
206
188
|
let match = global.exec(content);
|
|
@@ -208,7 +190,7 @@ function multilineHitsInContent(path, content, regex) {
|
|
|
208
190
|
hits.push({
|
|
209
191
|
path,
|
|
210
192
|
lineNumber: content.slice(0, match.index).split("\n").length,
|
|
211
|
-
line:
|
|
193
|
+
line: content.slice(match.index).split("\n")[0] ?? "",
|
|
212
194
|
});
|
|
213
195
|
if (match[0].length === 0) {
|
|
214
196
|
global.lastIndex += 1;
|
|
@@ -217,94 +199,103 @@ function multilineHitsInContent(path, content, regex) {
|
|
|
217
199
|
}
|
|
218
200
|
return hits;
|
|
219
201
|
}
|
|
220
|
-
function collectMultilineGrepMatches(root, input, opts) {
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
multiline: true,
|
|
225
|
-
});
|
|
226
|
-
const files = yield collectMultilineGrepFiles(root, input);
|
|
227
|
-
const matches = [];
|
|
228
|
-
const offset = opts.offset !== undefined && opts.offset > 0 ? opts.offset : 0;
|
|
229
|
-
const headLimit = opts.headLimit !== undefined && opts.headLimit > 0 ? opts.headLimit : undefined;
|
|
230
|
-
let skippedItems = 0;
|
|
231
|
-
let takenItems = 0;
|
|
232
|
-
for (const filePath of files) {
|
|
233
|
-
let content;
|
|
234
|
-
try {
|
|
235
|
-
content = yield root.read(filePath);
|
|
236
|
-
}
|
|
237
|
-
catch (_a) {
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
if (typeof content !== "string") {
|
|
241
|
-
continue;
|
|
242
|
-
}
|
|
243
|
-
const hits = multilineHitsInContent(filePath, content, regex);
|
|
244
|
-
if (hits.length === 0) {
|
|
245
|
-
continue;
|
|
246
|
-
}
|
|
247
|
-
if (opts.outputMode === "content") {
|
|
248
|
-
for (const hit of hits) {
|
|
249
|
-
if (skippedItems < offset) {
|
|
250
|
-
skippedItems++;
|
|
251
|
-
continue;
|
|
252
|
-
}
|
|
253
|
-
matches.push(hit);
|
|
254
|
-
takenItems++;
|
|
255
|
-
if (headLimit !== undefined && takenItems >= headLimit) {
|
|
256
|
-
return matches;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
continue;
|
|
260
|
-
}
|
|
261
|
-
if (skippedItems < offset) {
|
|
262
|
-
skippedItems++;
|
|
263
|
-
continue;
|
|
264
|
-
}
|
|
265
|
-
if (headLimit !== undefined && takenItems >= headLimit) {
|
|
266
|
-
break;
|
|
267
|
-
}
|
|
268
|
-
matches.push(...hits);
|
|
269
|
-
takenItems++;
|
|
270
|
-
}
|
|
271
|
-
return matches;
|
|
202
|
+
async function collectMultilineGrepMatches(root, input, opts) {
|
|
203
|
+
const regex = compileToolGrepPattern(input.pattern, {
|
|
204
|
+
caseInsensitive: input.caseInsensitive,
|
|
205
|
+
multiline: true,
|
|
272
206
|
});
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
207
|
+
const files = await collectMultilineGrepFiles(root, input);
|
|
208
|
+
const matches = [];
|
|
209
|
+
const offset = opts.offset !== undefined && opts.offset > 0 ? opts.offset : 0;
|
|
210
|
+
const headLimit = opts.headLimit !== undefined && opts.headLimit > 0 ? opts.headLimit : undefined;
|
|
211
|
+
let skippedItems = 0;
|
|
212
|
+
let takenItems = 0;
|
|
213
|
+
for (const filePath of files) {
|
|
214
|
+
let content;
|
|
215
|
+
try {
|
|
216
|
+
content = await root.read(filePath);
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
if (typeof content !== "string") {
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const hits = multilineHitsInContent(filePath, content, regex);
|
|
225
|
+
if (hits.length === 0) {
|
|
226
|
+
continue;
|
|
278
227
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
try {
|
|
285
|
-
const content = yield root.read(match.path);
|
|
286
|
-
lines = typeof content === "string" ? content.split("\n") : [];
|
|
228
|
+
if (opts.outputMode === "content") {
|
|
229
|
+
for (const hit of hits) {
|
|
230
|
+
if (skippedItems < offset) {
|
|
231
|
+
skippedItems++;
|
|
232
|
+
continue;
|
|
287
233
|
}
|
|
288
|
-
|
|
289
|
-
|
|
234
|
+
matches.push(hit);
|
|
235
|
+
takenItems++;
|
|
236
|
+
if (headLimit !== undefined && takenItems >= headLimit) {
|
|
237
|
+
return matches;
|
|
290
238
|
}
|
|
291
|
-
linesByPath.set(match.path, lines);
|
|
292
239
|
}
|
|
293
|
-
|
|
294
|
-
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
if (skippedItems < offset) {
|
|
243
|
+
skippedItems++;
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
if (headLimit !== undefined && takenItems >= headLimit) {
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
matches.push(...hits);
|
|
250
|
+
takenItems++;
|
|
251
|
+
}
|
|
252
|
+
return matches;
|
|
253
|
+
}
|
|
254
|
+
async function attachGrepContext(root, matches, context) {
|
|
255
|
+
if (context.before === 0 && context.after === 0) {
|
|
256
|
+
return matches;
|
|
257
|
+
}
|
|
258
|
+
const linesByPath = new Map();
|
|
259
|
+
const hits = [];
|
|
260
|
+
for (const match of matches) {
|
|
261
|
+
let lines = linesByPath.get(match.path);
|
|
262
|
+
if (lines === undefined) {
|
|
263
|
+
try {
|
|
264
|
+
const content = await root.read(match.path);
|
|
265
|
+
lines = typeof content === "string" ? content.split("\n") : [];
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
lines = [];
|
|
269
|
+
}
|
|
270
|
+
linesByPath.set(match.path, lines);
|
|
271
|
+
}
|
|
272
|
+
const index = match.lineNumber - 1;
|
|
273
|
+
hits.push({
|
|
274
|
+
...match,
|
|
275
|
+
...(context.before > 0
|
|
295
276
|
? {
|
|
296
277
|
beforeContext: lines.slice(Math.max(0, index - context.before), Math.max(0, index)),
|
|
297
278
|
}
|
|
298
|
-
: {})
|
|
279
|
+
: {}),
|
|
280
|
+
...(context.after > 0
|
|
299
281
|
? { afterContext: lines.slice(index + 1, index + 1 + context.after) }
|
|
300
|
-
: {})
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
|
|
282
|
+
: {}),
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
return hits;
|
|
304
286
|
}
|
|
305
287
|
function discovered(name, definition, contract) {
|
|
306
288
|
const effect = typeof definition.effect === "function" ? "dynamic" : definition.effect;
|
|
307
|
-
return
|
|
289
|
+
return {
|
|
290
|
+
name,
|
|
291
|
+
description: definition.description,
|
|
292
|
+
inputSchema: toolInputJsonSchema(contract.input),
|
|
293
|
+
outputSchema: toolOutputJsonSchema(contract.output),
|
|
294
|
+
execution: "server",
|
|
295
|
+
needsApproval: false,
|
|
296
|
+
...(effect === undefined ? {} : { effect }),
|
|
297
|
+
definition,
|
|
298
|
+
};
|
|
308
299
|
}
|
|
309
300
|
const readInputSchema = z.preprocess(aliasKeys({}), z.object({
|
|
310
301
|
path: z.string(),
|
|
@@ -316,40 +307,38 @@ function readTool(root) {
|
|
|
316
307
|
description: "Reads a file from the local filesystem. This tool can also read image files when called with the appropriate path. Formats supported: jpeg/jpg, png, gif, webp.",
|
|
317
308
|
inputSchema: readInputSchema,
|
|
318
309
|
effect: "read",
|
|
319
|
-
execute(
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
return hint;
|
|
330
|
-
}
|
|
310
|
+
async execute({ path, offset, limit }) {
|
|
311
|
+
let content;
|
|
312
|
+
try {
|
|
313
|
+
content = await root.read(path);
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
if (isFileNotFoundError(error)) {
|
|
317
|
+
const hint = await nearestNeighborMissHint(root, path);
|
|
318
|
+
if (hint !== undefined) {
|
|
319
|
+
return hint;
|
|
331
320
|
}
|
|
332
|
-
throw error;
|
|
333
321
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
322
|
+
throw error;
|
|
323
|
+
}
|
|
324
|
+
const image = fileSystemImage(content, path);
|
|
325
|
+
if (image !== undefined) {
|
|
326
|
+
return {
|
|
327
|
+
content: [
|
|
328
|
+
{ type: "text", text: `Read image file: ${path}` },
|
|
329
|
+
{
|
|
330
|
+
type: "image",
|
|
331
|
+
data: Buffer.from(image.bytes).toString("base64"),
|
|
332
|
+
mimeType: image.mimeType,
|
|
333
|
+
},
|
|
334
|
+
],
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
const text = fileSystemText(content);
|
|
338
|
+
const totalLines = lineCount(text);
|
|
339
|
+
return formatNumberedLines(sliceReadContent(text, offset, limit), {
|
|
340
|
+
startLine: slicedReadStartLine(totalLines, offset),
|
|
341
|
+
totalLines,
|
|
353
342
|
});
|
|
354
343
|
},
|
|
355
344
|
}), { input: sdkReadArgs, output: sdkReadResult });
|
|
@@ -368,23 +357,21 @@ Other details:
|
|
|
368
357
|
- The result does not display dot-files and dot-directories.`,
|
|
369
358
|
inputSchema: lsInputSchema,
|
|
370
359
|
effect: "read",
|
|
371
|
-
execute(
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
if (listed.
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
return hint;
|
|
382
|
-
}
|
|
360
|
+
async execute({ path, ignore }) {
|
|
361
|
+
const listed = await lsFromList(root, path, ignore);
|
|
362
|
+
if (listed.status === "error") {
|
|
363
|
+
if (listed.error.message.startsWith("Path is not a directory:")) {
|
|
364
|
+
return `not a directory: ${path} — Read it.`;
|
|
365
|
+
}
|
|
366
|
+
if (listed.error.message.startsWith("Path does not exist:")) {
|
|
367
|
+
const hint = await nearestNeighborMissHint(root, path);
|
|
368
|
+
if (hint !== undefined) {
|
|
369
|
+
return hint;
|
|
383
370
|
}
|
|
384
|
-
throw new Error(`Error listing directory: ${listed.error.message}`);
|
|
385
371
|
}
|
|
386
|
-
|
|
387
|
-
}
|
|
372
|
+
throw new Error(`Error listing directory: ${listed.error.message}`);
|
|
373
|
+
}
|
|
374
|
+
return formatLsTree(listed.value.directoryTreeRoot);
|
|
388
375
|
},
|
|
389
376
|
}), { input: sdkLsArgs, output: sdkLsResult });
|
|
390
377
|
}
|
|
@@ -408,12 +395,14 @@ Tool to search for files matching a glob pattern
|
|
|
408
395
|
`,
|
|
409
396
|
inputSchema: globInputSchema,
|
|
410
397
|
effect: "read",
|
|
411
|
-
execute(
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
398
|
+
async execute({ globPattern, targetDirectory }) {
|
|
399
|
+
const dir = targetDirectory ?? "/";
|
|
400
|
+
const files = (await collectGlob(root, {
|
|
401
|
+
pattern: globPattern,
|
|
402
|
+
...(targetDirectory === undefined ? {} : { dir: targetDirectory }),
|
|
403
|
+
limit: FILE_SYSTEM_SCAN_LIMIT,
|
|
404
|
+
})).map(entry => entry.path);
|
|
405
|
+
return formatGlobOutput(dir, files);
|
|
417
406
|
},
|
|
418
407
|
}), { input: sdkGlobArgs, output: sdkGlobResult });
|
|
419
408
|
}
|
|
@@ -454,21 +443,28 @@ function grepTool(root) {
|
|
|
454
443
|
description: `A search tool built on ripgrep. Results are capped to several thousand output lines for responsiveness; when truncation occurs, the results report "at least" counts, but are otherwise accurate.`,
|
|
455
444
|
inputSchema: grepInputSchema,
|
|
456
445
|
effect: "read",
|
|
457
|
-
execute(input) {
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
446
|
+
async execute(input) {
|
|
447
|
+
const outputMode = parseGrepOutputMode(input.outputMode);
|
|
448
|
+
const query = {
|
|
449
|
+
pattern: input.pattern,
|
|
450
|
+
...(input.path === undefined ? {} : { path: input.path }),
|
|
451
|
+
...(input.glob === undefined ? {} : { glob: input.glob }),
|
|
452
|
+
caseInsensitive: input.caseInsensitive === true,
|
|
453
|
+
};
|
|
454
|
+
const page = {
|
|
455
|
+
outputMode,
|
|
456
|
+
...(input.headLimit === undefined ? {} : { headLimit: input.headLimit }),
|
|
457
|
+
...(input.offset === undefined ? {} : { offset: input.offset }),
|
|
458
|
+
};
|
|
459
|
+
const matches = input.multiline === true
|
|
460
|
+
? await collectMultilineGrepMatches(root, query, page)
|
|
461
|
+
: await collectGrepMatches(root, query, page);
|
|
462
|
+
const before = contextLineCount(input.contextBefore, input.context);
|
|
463
|
+
const after = contextLineCount(input.contextAfter, input.context);
|
|
464
|
+
const hits = outputMode === "content"
|
|
465
|
+
? await attachGrepContext(root, matches, { before, after })
|
|
466
|
+
: matches;
|
|
467
|
+
return formatGrepOutput(shapeGrepUnion(hits, outputMode));
|
|
472
468
|
},
|
|
473
469
|
}), { input: sdkGrepArgs, output: sdkGrepResult });
|
|
474
470
|
}
|
|
@@ -482,11 +478,9 @@ function writeTool(root) {
|
|
|
482
478
|
description: "Writes a file to the local filesystem.",
|
|
483
479
|
inputSchema: writeInputSchema,
|
|
484
480
|
effect: "write",
|
|
485
|
-
execute(
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
return formatWriteOutput(path);
|
|
489
|
-
});
|
|
481
|
+
async execute({ path, fileText }) {
|
|
482
|
+
await root.write(path, fileText);
|
|
483
|
+
return formatWriteOutput(path);
|
|
490
484
|
},
|
|
491
485
|
}), { input: sdkWriteArgs, output: sdkWriteResult });
|
|
492
486
|
}
|
|
@@ -505,16 +499,17 @@ function strReplaceTool(root) {
|
|
|
505
499
|
description: "Performs exact string replacements in files.",
|
|
506
500
|
inputSchema: strReplaceInputSchema,
|
|
507
501
|
effect: "write",
|
|
508
|
-
execute(
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
502
|
+
async execute({ path, oldText, newText, replaceAll }) {
|
|
503
|
+
const { occurrencesModified } = await strReplaceOnFileSystem(root, {
|
|
504
|
+
path,
|
|
505
|
+
oldText,
|
|
506
|
+
newText,
|
|
507
|
+
...(replaceAll === undefined ? {} : { replaceAll }),
|
|
508
|
+
});
|
|
509
|
+
return formatStrReplaceOutput({
|
|
510
|
+
path,
|
|
511
|
+
replaceAll: replaceAll === true,
|
|
512
|
+
occurrencesModified,
|
|
518
513
|
});
|
|
519
514
|
},
|
|
520
515
|
}), { input: sdkStrReplaceArgs, output: sdkEditResult });
|
|
@@ -530,11 +525,9 @@ function deleteTool(root) {
|
|
|
530
525
|
- The file cannot be deleted`,
|
|
531
526
|
inputSchema: deleteInputSchema,
|
|
532
527
|
effect: "write",
|
|
533
|
-
execute(
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
return "";
|
|
537
|
-
});
|
|
528
|
+
async execute({ path }) {
|
|
529
|
+
await root.delete(path);
|
|
530
|
+
return "";
|
|
538
531
|
},
|
|
539
532
|
}), { input: sdkDeleteArgs, output: sdkDeleteResult });
|
|
540
533
|
}
|
|
@@ -549,31 +542,20 @@ function semanticSearchTool(root) {
|
|
|
549
542
|
description: "`SemanticSearch`: semantic search that finds code by meaning, not exact text",
|
|
550
543
|
inputSchema: semanticSearchInputSchema,
|
|
551
544
|
effect: "read",
|
|
552
|
-
execute(
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
if (cap !== undefined && hits.length >= cap) {
|
|
564
|
-
break;
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
569
|
-
finally {
|
|
570
|
-
try {
|
|
571
|
-
if (!_e && !_b && (_c = _f.return)) yield _c.call(_f);
|
|
572
|
-
}
|
|
573
|
-
finally { if (e_1) throw e_1.error; }
|
|
545
|
+
async execute({ query, targetDirectories, numResults }) {
|
|
546
|
+
const cap = numResults !== undefined && numResults > 0 ? numResults : undefined;
|
|
547
|
+
const hits = [];
|
|
548
|
+
for await (const hit of root.search({
|
|
549
|
+
query,
|
|
550
|
+
...(targetDirectories === undefined ? {} : { targetDirectories }),
|
|
551
|
+
...(cap === undefined ? {} : { maxResults: cap }),
|
|
552
|
+
})) {
|
|
553
|
+
hits.push(hit);
|
|
554
|
+
if (cap !== undefined && hits.length >= cap) {
|
|
555
|
+
break;
|
|
574
556
|
}
|
|
575
|
-
|
|
576
|
-
});
|
|
557
|
+
}
|
|
558
|
+
return hits.map(hit => `${hit.path}: ${hit.snippet}`).join("\n");
|
|
577
559
|
},
|
|
578
560
|
}), { input: sdkSemSearchArgs, output: sdkSemSearchResult });
|
|
579
561
|
}
|
|
@@ -603,22 +585,20 @@ export function fileSystemTool(root, name, input = {}) {
|
|
|
603
585
|
return FILE_SYSTEM_TOOL_FACTORIES[canonical](root);
|
|
604
586
|
}
|
|
605
587
|
/** Validate and run the same tool a turn or `callTool` would. */
|
|
606
|
-
export function runFileSystemTool(
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
return execute(validation.value, {});
|
|
621
|
-
});
|
|
588
|
+
export async function runFileSystemTool(root, name, input = {}) {
|
|
589
|
+
const tool = fileSystemTool(root, name, input);
|
|
590
|
+
if (tool === undefined) {
|
|
591
|
+
throw new Error(`Unknown file system tool: ${name}`);
|
|
592
|
+
}
|
|
593
|
+
const execute = tool.definition.execute;
|
|
594
|
+
if (typeof execute !== "function") {
|
|
595
|
+
throw new Error(`File system tool ${name} has no execute`);
|
|
596
|
+
}
|
|
597
|
+
const validation = validateToolInput(tool.definition.inputSchema, input);
|
|
598
|
+
if (!validation.ok) {
|
|
599
|
+
throw new Error(validation.message);
|
|
600
|
+
}
|
|
601
|
+
return execute(validation.value, {});
|
|
622
602
|
}
|
|
623
603
|
export function synthesizeFileSystemTools(root, filter) {
|
|
624
604
|
const tools = [];
|