@cursor/bdk 0.2.9 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/artifacts.js +3 -5
- package/dist/bin/agent-serve.js +803 -812
- package/dist/channels/bitbucket/api.js +305 -321
- package/dist/channels/bitbucket/binding.js +97 -61
- package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
- package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
- package/dist/channels/bitbucket/checks.js +9 -21
- package/dist/channels/bitbucket/cursor-account.js +1 -1
- package/dist/channels/bitbucket/defaults.js +14 -4
- package/dist/channels/bitbucket/events.js +1 -2
- package/dist/channels/bitbucket/index.d.ts +6 -2
- package/dist/channels/bitbucket/index.d.ts.map +1 -1
- package/dist/channels/bitbucket/index.js +6 -2
- package/dist/channels/bitbucket/replay.js +80 -56
- package/dist/channels/bitbucket/state.js +16 -7
- package/dist/channels/bitbucket/types.d.ts +11 -2
- package/dist/channels/bitbucket/types.d.ts.map +1 -1
- package/dist/channels/checks.js +18 -28
- package/dist/channels/deployments/deployments-channel.js +26 -34
- package/dist/channels/github/api.js +216 -210
- package/dist/channels/github/auth.d.ts +5 -1
- package/dist/channels/github/auth.d.ts.map +1 -1
- package/dist/channels/github/auth.js +157 -174
- package/dist/channels/github/binding.js +48 -39
- package/dist/channels/github/checks.js +9 -14
- package/dist/channels/github/cursor-account.js +6 -11
- package/dist/channels/github/defaults.js +105 -130
- package/dist/channels/github/forward.js +13 -17
- package/dist/channels/github/github-channel.d.ts +43 -2
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +1228 -958
- package/dist/channels/github/progress.js +145 -146
- package/dist/channels/github/replay.js +30 -39
- package/dist/channels/github/state.js +40 -16
- package/dist/channels/github/types.d.ts +30 -6
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/gitlab/api.js +100 -114
- package/dist/channels/gitlab/binding.js +52 -33
- package/dist/channels/gitlab/checks.js +28 -29
- package/dist/channels/gitlab/cursor-account.js +1 -1
- package/dist/channels/gitlab/defaults.js +9 -3
- package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
- package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-channel.js +95 -42
- package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
- package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-webhook.js +282 -249
- package/dist/channels/gitlab/index.d.ts +6 -2
- package/dist/channels/gitlab/index.d.ts.map +1 -1
- package/dist/channels/gitlab/index.js +6 -2
- package/dist/channels/gitlab/replay.js +50 -27
- package/dist/channels/gitlab/state.js +14 -6
- package/dist/channels/gitlab/types.d.ts +13 -2
- package/dist/channels/gitlab/types.d.ts.map +1 -1
- package/dist/channels/origin/api.js +100 -116
- package/dist/channels/origin/binding.js +15 -16
- package/dist/channels/origin/checks.js +30 -28
- package/dist/channels/origin/defaults.js +50 -65
- package/dist/channels/origin/origin-channel.js +266 -272
- package/dist/channels/origin/origin-webhook.js +70 -88
- package/dist/channels/origin/reactions.js +9 -21
- package/dist/channels/origin/state.js +13 -5
- package/dist/channels/slack/agentic-delivery.js +426 -478
- package/dist/channels/slack/agentic-posted.js +9 -10
- package/dist/channels/slack/agentic-signals.js +2 -3
- package/dist/channels/slack/api.js +417 -427
- package/dist/channels/slack/approvals.js +1 -1
- package/dist/channels/slack/assistant.js +37 -47
- package/dist/channels/slack/attachments.js +188 -206
- package/dist/channels/slack/auth.js +8 -6
- package/dist/channels/slack/bot-mentions.js +31 -45
- package/dist/channels/slack/channel-watch.js +42 -48
- package/dist/channels/slack/cli-project.js +112 -137
- package/dist/channels/slack/code-fences.js +3 -5
- package/dist/channels/slack/constants.js +2 -2
- package/dist/channels/slack/credentials.js +23 -38
- package/dist/channels/slack/defaults.js +292 -331
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +533 -460
- package/dist/channels/slack/doctor.js +200 -214
- package/dist/channels/slack/eval-directive.js +79 -96
- package/dist/channels/slack/event-id-dedupe.js +1 -1
- package/dist/channels/slack/external-policy.js +26 -39
- package/dist/channels/slack/footer.js +28 -41
- package/dist/channels/slack/inbound.d.ts +1 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +50 -31
- package/dist/channels/slack/init.d.ts +1 -5
- package/dist/channels/slack/init.d.ts.map +1 -1
- package/dist/channels/slack/init.js +42 -59
- package/dist/channels/slack/interactive.d.ts +9 -3
- package/dist/channels/slack/interactive.d.ts.map +1 -1
- package/dist/channels/slack/interactive.js +160 -162
- package/dist/channels/slack/links.js +1 -2
- package/dist/channels/slack/live-delivery.js +172 -190
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +44 -23
- package/dist/channels/slack/message-body.js +2 -2
- package/dist/channels/slack/nudge-carrier.js +30 -42
- package/dist/channels/slack/nudge-store.js +164 -191
- package/dist/channels/slack/paint-start.js +66 -81
- package/dist/channels/slack/placeholder.js +123 -152
- package/dist/channels/slack/pr-ref.js +1 -1
- package/dist/channels/slack/progress-delivery.js +65 -78
- package/dist/channels/slack/reasoning-card.js +36 -49
- package/dist/channels/slack/recording-sink.js +12 -24
- package/dist/channels/slack/reply-options.js +7 -12
- package/dist/channels/slack/self-identity.js +27 -35
- package/dist/channels/slack/sender-name.d.ts +12 -3
- package/dist/channels/slack/sender-name.d.ts.map +1 -1
- package/dist/channels/slack/sender-name.js +57 -61
- package/dist/channels/slack/setup.js +2 -4
- package/dist/channels/slack/slack-channel.d.ts +6 -4
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +441 -308
- package/dist/channels/slack/socket-mode.js +38 -52
- package/dist/channels/slack/thread-context.js +143 -160
- package/dist/channels/slack/tool-approval-events.js +149 -166
- package/dist/channels/slack/tool-cards.js +6 -11
- package/dist/channels/slack/tool-chip.js +1 -2
- package/dist/channels/slack/types.d.ts +15 -17
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/upload.js +84 -97
- package/dist/channels/slack/user-info.js +27 -41
- package/dist/channels.js +9 -20
- package/dist/dashboard-session-url.js +3 -4
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
- package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
- package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
- package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
- package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
- package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
- package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
- package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
- package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
- package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
- package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
- package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
- package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
- package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/building-with-agents.md +2 -0
- package/dist/docs/deployment.html +38 -38
- package/dist/docs/deployment.md +7 -0
- package/dist/docs/evals.html +36 -36
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +38 -38
- package/dist/docs/guides/bitbucket.md +9 -1
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +39 -39
- package/dist/docs/guides/github.md +20 -4
- package/dist/docs/guides/gitlab.html +38 -38
- package/dist/docs/guides/gitlab.md +9 -1
- package/dist/docs/guides/grokbot-agents.html +35 -35
- package/dist/docs/guides/hooks.html +35 -35
- package/dist/docs/guides/improve.html +35 -35
- package/dist/docs/guides/jev.html +35 -35
- package/dist/docs/guides/mcp-oauth.html +35 -35
- package/dist/docs/guides/migrate.html +66 -0
- package/dist/docs/guides/migrate.md +122 -0
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- package/dist/docs/guides/webhooks.html +35 -35
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +35 -35
- package/dist/docs/llms-full.txt +214 -6
- package/dist/docs/llms.txt +1 -0
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +35 -35
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +39 -38
- package/dist/docs/reference/cli.md +39 -0
- package/dist/docs/reference/connections.html +35 -35
- package/dist/docs/reference/evals.html +35 -35
- package/dist/docs/reference/extensions.html +35 -35
- package/dist/docs/reference/hooks.html +35 -35
- package/dist/docs/reference/http-api.html +35 -35
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +35 -35
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +35 -35
- package/dist/docs/reference/sessions.html +35 -35
- package/dist/docs/reference/skills.html +38 -38
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +35 -35
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/grokbot-agents.html +35 -35
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/docs/troubleshooting.md +1 -0
- package/dist/evals/assertions.js +20 -34
- package/dist/evals/expect.js +3 -6
- package/dist/evals/judge.js +5 -8
- package/dist/evals/loaders.js +45 -62
- package/dist/evals/matchers.js +2 -3
- package/dist/evals/reporters.js +43 -67
- package/dist/evals/results.js +1 -1
- package/dist/evals/run-facts.js +5 -6
- package/dist/evals.js +27 -15
- package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
- package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
- package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
- package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
- package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
- package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
- package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
- package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
- package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
- package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
- package/dist/extensions/jev/extension.js +3 -3
- package/dist/extensions/jev/lib/evaluate.js +43 -60
- package/dist/extensions/jev/tools/evaluate.js +6 -17
- package/dist/extensions/slack-communication/tools/post-file.js +1 -1
- package/dist/extensions.js +3 -5
- package/dist/files-backends/cursor-hosted.js +504 -523
- package/dist/files-backends/local-fs.js +72 -134
- package/dist/files.js +3 -3
- package/dist/filesystem.js +562 -861
- package/dist/index.js +16 -35
- package/dist/internal/advertise-tools.js +74 -86
- package/dist/internal/artifacts-store.js +298 -361
- package/dist/internal/as-of.js +2 -4
- package/dist/internal/authored-alias-hooks.js +6 -4
- package/dist/internal/authored-loaders.js +37 -52
- package/dist/internal/bounded-int.js +1 -2
- package/dist/internal/bounded.js +13 -24
- package/dist/internal/brand.js +1 -1
- package/dist/internal/browser-origin-guard.js +4 -4
- package/dist/internal/builtin-tools/artifacts.js +15 -27
- package/dist/internal/builtin-tools/index.js +2 -3
- package/dist/internal/builtin-tools/reminders.js +33 -52
- package/dist/internal/channel-architecture.d.ts +21 -0
- package/dist/internal/channel-architecture.d.ts.map +1 -0
- package/dist/internal/channel-architecture.js +41 -0
- package/dist/internal/channel-dispatch.js +3 -4
- package/dist/internal/channel-route-dispatch.js +40 -51
- package/dist/internal/channel-state.js +1 -1
- package/dist/internal/chat-client.js +319 -340
- package/dist/internal/cli-ax.js +1262 -1294
- package/dist/internal/cli-bitbucket.js +244 -272
- package/dist/internal/cli-convert-automation.js +137 -151
- package/dist/internal/cli-cursor.js +126 -147
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +1457 -1507
- package/dist/internal/cli-docs.js +130 -147
- package/dist/internal/cli-github.js +437 -476
- package/dist/internal/cli-gitlab.js +259 -288
- package/dist/internal/cli-images.js +266 -334
- package/dist/internal/cli-manifest.js +25 -37
- package/dist/internal/cli-mcp-oauth.js +228 -247
- package/dist/internal/cli-mcp.js +358 -383
- package/dist/internal/cli-migrate.js +73 -90
- package/dist/internal/cli-skills.js +35 -47
- package/dist/internal/cli-slack-manual.d.ts +0 -1
- package/dist/internal/cli-slack-manual.d.ts.map +1 -1
- package/dist/internal/cli-slack-manual.js +175 -204
- package/dist/internal/cli-slack.d.ts +1 -1
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +416 -456
- package/dist/internal/cloud-merge.js +7 -3
- package/dist/internal/cloud-turn-cost.js +8 -1
- package/dist/internal/connection-env.js +5 -6
- package/dist/internal/continuation-channel.js +10 -7
- package/dist/internal/continuation-identity.js +85 -67
- package/dist/internal/conversation-mirror.js +112 -131
- package/dist/internal/convert-automation/convert-workflow.js +21 -31
- package/dist/internal/cron.js +3 -3
- package/dist/internal/cursor/account-mcp.js +147 -146
- package/dist/internal/cursor/backend-client.js +290 -320
- package/dist/internal/cursor/bound-secret-file.js +3 -3
- package/dist/internal/cursor/credentials.js +127 -142
- package/dist/internal/cursor/cursor-api-transport.js +4 -8
- package/dist/internal/cursor/github-credentials.js +91 -108
- package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
- package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +5 -9
- package/dist/internal/cursor/session-token.js +36 -48
- package/dist/internal/cursor/store-api-client.js +77 -92
- package/dist/internal/cursor-account-mcp-auth.js +132 -149
- package/dist/internal/cursor-agent-template.js +1 -1
- package/dist/internal/cursor-deployment-relay.js +33 -54
- package/dist/internal/cursor-event-relay.js +65 -59
- package/dist/internal/cursor-relay-core.js +258 -286
- package/dist/internal/deferred-channel-session.js +3 -12
- package/dist/internal/deploy-client.js +410 -475
- package/dist/internal/deploy-manifest.d.ts +17 -0
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +71 -21
- package/dist/internal/deploy-source.js +31 -43
- package/dist/internal/discovery/agent-config.js +45 -59
- package/dist/internal/discovery/agent.js +276 -280
- package/dist/internal/discovery/channels.js +67 -80
- package/dist/internal/discovery/connections.js +286 -296
- package/dist/internal/discovery/context.js +2 -13
- package/dist/internal/discovery/cursor-plugin.js +223 -259
- package/dist/internal/discovery/extension-overlay.js +104 -131
- package/dist/internal/discovery/extensions.js +276 -281
- package/dist/internal/discovery/fs.js +56 -79
- package/dist/internal/discovery/hooks.js +39 -50
- package/dist/internal/discovery/info.js +17 -19
- package/dist/internal/discovery/instructions.js +58 -71
- package/dist/internal/discovery/modules.js +45 -58
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +192 -215
- package/dist/internal/discovery/reminders.js +41 -52
- package/dist/internal/discovery/runtime.js +1 -1
- package/dist/internal/discovery/schedules.js +71 -82
- package/dist/internal/discovery/seed-files.js +21 -32
- package/dist/internal/discovery/services.js +74 -96
- package/dist/internal/discovery/skills.js +77 -94
- package/dist/internal/discovery/subagent.js +79 -95
- package/dist/internal/discovery/tools.js +12 -23
- package/dist/internal/distribution.js +2 -2
- package/dist/internal/docs-site.js +30 -45
- package/dist/internal/duration.js +1 -1
- package/dist/internal/env-file.js +48 -64
- package/dist/internal/eval-judge-model.js +17 -28
- package/dist/internal/eval-run-store.js +265 -254
- package/dist/internal/eval-runner.d.ts +8 -0
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +406 -408
- package/dist/internal/eval-transport.d.ts +24 -0
- package/dist/internal/eval-transport.d.ts.map +1 -0
- package/dist/internal/eval-transport.js +22 -0
- package/dist/internal/evals-client.js +242 -246
- package/dist/internal/event-log.js +72 -120
- package/dist/internal/event-mapper.js +30 -31
- package/dist/internal/factory-resource-channel.js +16 -30
- package/dist/internal/filesystem/errors.js +6 -6
- package/dist/internal/filesystem/format.js +10 -13
- package/dist/internal/filesystem/merge.js +52 -94
- package/dist/internal/filesystem/nearest.js +15 -27
- package/dist/internal/filesystem/scratch.js +65 -85
- package/dist/internal/filesystem/tools.js +221 -241
- package/dist/internal/filesystem/walk.js +76 -143
- package/dist/internal/framework-file-storage.js +118 -139
- package/dist/internal/framework-storage-selection.js +21 -13
- package/dist/internal/frontmatter.js +4 -6
- package/dist/internal/github-fanout.js +50 -64
- package/dist/internal/guest-network.js +96 -109
- package/dist/internal/handleAgentServeTrigger.js +121 -126
- package/dist/internal/host-files.js +73 -88
- package/dist/internal/host-kv.js +21 -36
- package/dist/internal/host-otel.js +22 -19
- package/dist/internal/host-platforms.js +49 -63
- package/dist/internal/hosted-catch-protocol.d.ts +1 -0
- package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-catch-protocol.js +1 -0
- package/dist/internal/hosted-catch.d.ts +5 -3
- package/dist/internal/hosted-catch.d.ts.map +1 -1
- package/dist/internal/hosted-catch.js +84 -93
- package/dist/internal/hosted-delivery-protocol.js +32 -8
- package/dist/internal/hosted-delivery.d.ts +13 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +614 -584
- package/dist/internal/hosted-eval-cases.d.ts +21 -0
- package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
- package/dist/internal/hosted-eval-cases.js +162 -0
- package/dist/internal/hosted-execution-diag.js +38 -30
- package/dist/internal/hosted-execution-flush.js +75 -66
- package/dist/internal/hosted-execution-latency.js +16 -8
- package/dist/internal/hosted-managed-automation.js +2 -2
- package/dist/internal/hosting.js +2 -3
- package/dist/internal/http-channel-define.js +4 -1
- package/dist/internal/http-channel.js +101 -112
- package/dist/internal/http-control-plane-session.d.ts +18 -1
- package/dist/internal/http-control-plane-session.d.ts.map +1 -1
- package/dist/internal/http-control-plane-session.js +66 -32
- package/dist/internal/incoming-headers-to-fetch.js +1 -2
- package/dist/internal/init-interview.js +73 -93
- package/dist/internal/init-project.js +182 -214
- package/dist/internal/init-scaffold.js +10 -21
- package/dist/internal/inline-stdio-mcp.js +80 -86
- package/dist/internal/install-cursor-skills.js +231 -273
- package/dist/internal/legacy-command-guard.js +18 -31
- package/dist/internal/listen-port.js +34 -45
- package/dist/internal/local-control-plane.js +293 -307
- package/dist/internal/local-env.js +1 -1
- package/dist/internal/local-ingress.js +15 -9
- package/dist/internal/log-ring.js +1 -2
- package/dist/internal/logs-client.js +207 -227
- package/dist/internal/map-pool.js +24 -38
- package/dist/internal/mcp-endpoint.js +204 -180
- package/dist/internal/mcp-host.js +165 -168
- package/dist/internal/mcp-oauth-on-demand.js +170 -207
- package/dist/internal/mcp-oauth-persist.js +15 -29
- package/dist/internal/mcp-oauth.js +209 -266
- package/dist/internal/named-webhook-secret.d.ts +39 -0
- package/dist/internal/named-webhook-secret.d.ts.map +1 -0
- package/dist/internal/named-webhook-secret.js +47 -0
- package/dist/internal/open-browser.js +2 -3
- package/dist/internal/otel/collector.js +104 -68
- package/dist/internal/otel/config.js +24 -37
- package/dist/internal/otel/http.js +5 -7
- package/dist/internal/otel/mcp.js +3 -12
- package/dist/internal/otel/runtime.js +69 -83
- package/dist/internal/package-inline-stdio.js +57 -65
- package/dist/internal/peer-connections.js +9 -5
- package/dist/internal/platform-schedule-sync.js +39 -54
- package/dist/internal/platform-timers.js +176 -210
- package/dist/internal/playground/static.js +1 -2
- package/dist/internal/playground/toolchain.js +37 -53
- package/dist/internal/playground-proxy.js +230 -270
- package/dist/internal/process-memory-telemetry.js +33 -51
- package/dist/internal/prompt-context.js +3 -6
- package/dist/internal/reminder-control-plane-protocol.js +46 -13
- package/dist/internal/reminder-runner.js +770 -785
- package/dist/internal/reminder-schedule.js +1 -1
- package/dist/internal/reminder-store.js +57 -78
- package/dist/internal/request-error-status.js +1 -3
- package/dist/internal/request-headers.js +2 -2
- package/dist/internal/resolve-prod-target.js +119 -135
- package/dist/internal/resolved-connections.js +16 -6
- package/dist/internal/run-client.js +221 -229
- package/dist/internal/runtime-dispatch-runner.js +18 -43
- package/dist/internal/schedule-runner.js +49 -58
- package/dist/internal/scm/pr-url.js +7 -6
- package/dist/internal/sdk-runner.js +388 -363
- package/dist/internal/serve-restart.js +26 -39
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +1283 -1244
- package/dist/internal/session-cost.js +7 -9
- package/dist/internal/session-engine.d.ts +3 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +2801 -2777
- package/dist/internal/session-links.js +12 -16
- package/dist/internal/session-run-log.js +134 -82
- package/dist/internal/session-store.js +133 -164
- package/dist/internal/sessions-client.js +97 -118
- package/dist/internal/skill-catalog.js +18 -23
- package/dist/internal/skills-sync.js +16 -30
- package/dist/internal/slack-provision-client.js +90 -116
- package/dist/internal/start-log-store.js +48 -67
- package/dist/internal/steering.js +1 -2
- package/dist/internal/storage-coordinator.js +160 -196
- package/dist/internal/store-mirror.js +16 -30
- package/dist/internal/stream-progress.js +6 -8
- package/dist/internal/terminal-style.js +3 -4
- package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
- package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
- package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
- package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
- package/dist/internal/tool-catalog.js +11 -5
- package/dist/internal/tool-result.js +1 -1
- package/dist/internal/trajectory.js +19 -22
- package/dist/internal/turn-cost.js +52 -62
- package/dist/internal/turn-governor.js +5 -8
- package/dist/internal/turn-lease-store.js +85 -105
- package/dist/internal/turn-outbox.js +28 -43
- package/dist/internal/update-check.js +231 -259
- package/dist/internal/v2-hosting.js +1 -2
- package/dist/internal/workspace-sync.js +25 -41
- package/dist/internal/workspace.js +111 -139
- package/dist/kv/memory-kv.js +27 -51
- package/dist/memory.js +106 -148
- package/dist/otel.js +5 -8
- package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
- package/dist/playground/assets/{index-Co4CUVTQ.js → index-JekUQERK.js} +45 -45
- package/dist/playground/index.html +2 -2
- package/dist/prompt.js +2 -4
- package/dist/storage-backends/cursor-hosted-v2.js +53 -83
- package/dist/storage-backends/cursor-hosted.js +105 -145
- package/dist/storage-backends/file-kv.js +100 -128
- package/dist/storage-protocol.js +3 -5
- package/dist/storage.js +17 -26
- package/dist/types.d.ts +68 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +20 -18
- package/docs/building-with-agents.md +2 -0
- package/docs/deployment.md +7 -0
- package/docs/guides/bitbucket.md +9 -1
- package/docs/guides/github.md +20 -4
- package/docs/guides/gitlab.md +9 -1
- package/docs/guides/migrate.md +127 -0
- package/docs/reference/cli.md +39 -0
- package/docs/troubleshooting.md +1 -0
- package/package.json +1 -1
- package/skills/debug/SKILL.md +1 -0
- package/skills/github/SKILL.md +23 -0
- package/skills/migrate-v2/SKILL.md +51 -10
- package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
- package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
- package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
- package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
- /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
- /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
|
@@ -8,33 +8,6 @@
|
|
|
8
8
|
* agentic-owners). Retaining every streamed tool output in RAM for the
|
|
9
9
|
* process lifetime is what OOM'd those engines at the ~4 GB heap cap.
|
|
10
10
|
*/
|
|
11
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
21
|
-
var t = {};
|
|
22
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
23
|
-
t[p] = s[p];
|
|
24
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
25
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
26
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
27
|
-
t[p[i]] = s[p[i]];
|
|
28
|
-
}
|
|
29
|
-
return t;
|
|
30
|
-
};
|
|
31
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
32
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
33
|
-
var m = o[Symbol.asyncIterator], i;
|
|
34
|
-
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);
|
|
35
|
-
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); }); }; }
|
|
36
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
37
|
-
};
|
|
38
11
|
import { appendFile, mkdir, open } from "node:fs/promises";
|
|
39
12
|
import { dirname } from "node:path";
|
|
40
13
|
import { createInterface } from "node:readline";
|
|
@@ -52,52 +25,37 @@ function parseEventLine(line) {
|
|
|
52
25
|
try {
|
|
53
26
|
return JSON.parse(trimmed);
|
|
54
27
|
}
|
|
55
|
-
catch
|
|
28
|
+
catch {
|
|
56
29
|
// Skip torn trailing writes from a crashed process.
|
|
57
30
|
return undefined;
|
|
58
31
|
}
|
|
59
32
|
}
|
|
60
|
-
function readNdjsonEvents(filePath, onEvent) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (isEnoent(error)) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
throw error;
|
|
33
|
+
async function readNdjsonEvents(filePath, onEvent) {
|
|
34
|
+
let fh;
|
|
35
|
+
try {
|
|
36
|
+
fh = await open(filePath, "r");
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (isEnoent(error)) {
|
|
40
|
+
return;
|
|
72
41
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (event !== undefined) {
|
|
83
|
-
onEvent(event);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
88
|
-
finally {
|
|
89
|
-
try {
|
|
90
|
-
if (!_d && !_a && (_b = rl_1.return)) yield _b.call(rl_1);
|
|
91
|
-
}
|
|
92
|
-
finally { if (e_1) throw e_1.error; }
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
const stream = fh.createReadStream({ encoding: "utf8" });
|
|
45
|
+
const rl = createInterface({ input: stream, crlfDelay: Infinity });
|
|
46
|
+
try {
|
|
47
|
+
for await (const line of rl) {
|
|
48
|
+
const event = parseEventLine(line);
|
|
49
|
+
if (event !== undefined) {
|
|
50
|
+
onEvent(event);
|
|
93
51
|
}
|
|
94
52
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
}
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
rl.close();
|
|
56
|
+
stream.destroy();
|
|
57
|
+
await fh.close().catch(() => { });
|
|
58
|
+
}
|
|
101
59
|
}
|
|
102
60
|
export class SessionEventLog {
|
|
103
61
|
constructor(sessionId, filePath, onPersistError) {
|
|
@@ -115,24 +73,19 @@ export class SessionEventLog {
|
|
|
115
73
|
*/
|
|
116
74
|
this.replacements = new Map();
|
|
117
75
|
}
|
|
118
|
-
static open(args) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
yield log.readNextIndex();
|
|
123
|
-
return log;
|
|
124
|
-
});
|
|
76
|
+
static async open(args) {
|
|
77
|
+
const log = new SessionEventLog(args.sessionId, args.filePath, args.onPersistError ?? (() => { }));
|
|
78
|
+
await log.readNextIndex();
|
|
79
|
+
return log;
|
|
125
80
|
}
|
|
126
|
-
readNextIndex() {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
this.nextIndex = next;
|
|
81
|
+
async readNextIndex() {
|
|
82
|
+
let next = 0;
|
|
83
|
+
await readNdjsonEvents(this.filePath, event => {
|
|
84
|
+
if (typeof event.index === "number" && event.index >= next) {
|
|
85
|
+
next = event.index + 1;
|
|
86
|
+
}
|
|
135
87
|
});
|
|
88
|
+
this.nextIndex = next;
|
|
136
89
|
}
|
|
137
90
|
get count() {
|
|
138
91
|
return this.nextIndex;
|
|
@@ -154,15 +107,21 @@ export class SessionEventLog {
|
|
|
154
107
|
* by {@link flush}. The event is not retained after the write lands.
|
|
155
108
|
*/
|
|
156
109
|
append(payload) {
|
|
157
|
-
const { turnId
|
|
158
|
-
const event =
|
|
110
|
+
const { turnId, ...rest } = payload;
|
|
111
|
+
const event = {
|
|
112
|
+
index: this.nextIndex,
|
|
113
|
+
sessionId: this.sessionId,
|
|
114
|
+
...(turnId === undefined ? {} : { turnId }),
|
|
115
|
+
at: new Date().toISOString(),
|
|
116
|
+
...rest,
|
|
117
|
+
};
|
|
159
118
|
this.nextIndex += 1;
|
|
160
119
|
this.inflight.push(event);
|
|
161
120
|
for (const listener of [...this.listeners]) {
|
|
162
121
|
try {
|
|
163
122
|
listener(event);
|
|
164
123
|
}
|
|
165
|
-
catch
|
|
124
|
+
catch {
|
|
166
125
|
// Subscriber errors must not break the log.
|
|
167
126
|
}
|
|
168
127
|
}
|
|
@@ -177,8 +136,7 @@ export class SessionEventLog {
|
|
|
177
136
|
return event;
|
|
178
137
|
}
|
|
179
138
|
dropInflight(index) {
|
|
180
|
-
|
|
181
|
-
if (((_a = this.inflight[0]) === null || _a === void 0 ? void 0 : _a.index) === index) {
|
|
139
|
+
if (this.inflight[0]?.index === index) {
|
|
182
140
|
this.inflight.shift();
|
|
183
141
|
return;
|
|
184
142
|
}
|
|
@@ -188,35 +146,31 @@ export class SessionEventLog {
|
|
|
188
146
|
}
|
|
189
147
|
}
|
|
190
148
|
/** Wait for pending file writes (used on close). */
|
|
191
|
-
flush() {
|
|
192
|
-
|
|
193
|
-
yield this.persistChain;
|
|
194
|
-
});
|
|
149
|
+
async flush() {
|
|
150
|
+
await this.persistChain;
|
|
195
151
|
}
|
|
196
152
|
/**
|
|
197
153
|
* Read recorded events from `startIndex`. Does not retain the result on
|
|
198
154
|
* the log; callers own the returned array.
|
|
199
155
|
*/
|
|
200
|
-
snapshot() {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
byIndex.set(event.index, event);
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
for (const event of this.inflight) {
|
|
209
|
-
if (event.index >= startIndex) {
|
|
210
|
-
byIndex.set(event.index, event);
|
|
211
|
-
}
|
|
156
|
+
async snapshot(startIndex = 0) {
|
|
157
|
+
const byIndex = new Map();
|
|
158
|
+
await readNdjsonEvents(this.filePath, event => {
|
|
159
|
+
if (event.index >= startIndex) {
|
|
160
|
+
byIndex.set(event.index, event);
|
|
212
161
|
}
|
|
213
|
-
for (const [index, event] of this.replacements) {
|
|
214
|
-
if (index >= startIndex) {
|
|
215
|
-
byIndex.set(index, event);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return [...byIndex.values()].sort((a, b) => a.index - b.index);
|
|
219
162
|
});
|
|
163
|
+
for (const event of this.inflight) {
|
|
164
|
+
if (event.index >= startIndex) {
|
|
165
|
+
byIndex.set(event.index, event);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
for (const [index, event] of this.replacements) {
|
|
169
|
+
if (index >= startIndex) {
|
|
170
|
+
byIndex.set(index, event);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return [...byIndex.values()].sort((a, b) => a.index - b.index);
|
|
220
174
|
}
|
|
221
175
|
/**
|
|
222
176
|
* Replace one already-recorded event in this process. Used to backfill
|
|
@@ -249,13 +203,13 @@ export class SessionEventLog {
|
|
|
249
203
|
const encoder = new TextEncoder();
|
|
250
204
|
let unsubscribe;
|
|
251
205
|
return new ReadableStream({
|
|
252
|
-
start: (controller) =>
|
|
206
|
+
start: async (controller) => {
|
|
253
207
|
const push = (event) => {
|
|
254
208
|
try {
|
|
255
209
|
controller.enqueue(encoder.encode(`${JSON.stringify(event)}\n`));
|
|
256
210
|
}
|
|
257
|
-
catch
|
|
258
|
-
unsubscribe
|
|
211
|
+
catch {
|
|
212
|
+
unsubscribe?.();
|
|
259
213
|
}
|
|
260
214
|
};
|
|
261
215
|
let following = false;
|
|
@@ -272,7 +226,7 @@ export class SessionEventLog {
|
|
|
272
226
|
}
|
|
273
227
|
});
|
|
274
228
|
try {
|
|
275
|
-
const prefix =
|
|
229
|
+
const prefix = await this.snapshot(startIndex);
|
|
276
230
|
let maxSeen = startIndex - 1;
|
|
277
231
|
for (const event of prefix) {
|
|
278
232
|
push(event);
|
|
@@ -289,12 +243,12 @@ export class SessionEventLog {
|
|
|
289
243
|
}
|
|
290
244
|
}
|
|
291
245
|
catch (error) {
|
|
292
|
-
unsubscribe
|
|
246
|
+
unsubscribe?.();
|
|
293
247
|
controller.error(error);
|
|
294
248
|
}
|
|
295
|
-
}
|
|
249
|
+
},
|
|
296
250
|
cancel: () => {
|
|
297
|
-
unsubscribe
|
|
251
|
+
unsubscribe?.();
|
|
298
252
|
},
|
|
299
253
|
});
|
|
300
254
|
}
|
|
@@ -339,9 +293,7 @@ export class EventLogStore {
|
|
|
339
293
|
eventsTotal,
|
|
340
294
|
};
|
|
341
295
|
}
|
|
342
|
-
flushAll() {
|
|
343
|
-
|
|
344
|
-
yield Promise.all([...this.logs.values()].map(logPromise => logPromise.then(log => log.flush()).catch(() => { })));
|
|
345
|
-
});
|
|
296
|
+
async flushAll() {
|
|
297
|
+
await Promise.all([...this.logs.values()].map(logPromise => logPromise.then(log => log.flush()).catch(() => { })));
|
|
346
298
|
}
|
|
347
299
|
}
|
|
@@ -252,8 +252,8 @@ export class TurnEventMapper {
|
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
254
|
noteToolStarted(callId, toolCall, ids) {
|
|
255
|
-
const parentCallId = ids
|
|
256
|
-
const modelCallId = ids
|
|
255
|
+
const parentCallId = ids?.parentCallId;
|
|
256
|
+
const modelCallId = ids?.modelCallId;
|
|
257
257
|
const description = describeToolCall(toolCall);
|
|
258
258
|
const call = {
|
|
259
259
|
callId,
|
|
@@ -294,8 +294,8 @@ export class TurnEventMapper {
|
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
noteToolCompleted(callId, toolCall, ids) {
|
|
297
|
-
const parentCallId = ids
|
|
298
|
-
const modelCallId = ids
|
|
297
|
+
const parentCallId = ids?.parentCallId;
|
|
298
|
+
const modelCallId = ids?.modelCallId;
|
|
299
299
|
const description = describeToolCall(toolCall);
|
|
300
300
|
const result = describeToolResult(toolCall);
|
|
301
301
|
const actionResult = {
|
|
@@ -406,10 +406,9 @@ export class TurnEventMapper {
|
|
|
406
406
|
this.waves.delete(singletonKey);
|
|
407
407
|
}
|
|
408
408
|
ensureWave(key, ids) {
|
|
409
|
-
var _a;
|
|
410
409
|
let wave = this.waves.get(key);
|
|
411
410
|
if (wave === undefined) {
|
|
412
|
-
const expectedCalls = this.listedCounts.get(
|
|
411
|
+
const expectedCalls = this.listedCounts.get(ids.parentCallId ?? "");
|
|
413
412
|
wave = {
|
|
414
413
|
key,
|
|
415
414
|
modelCallId: ids.modelCallId,
|
|
@@ -428,10 +427,10 @@ export class TurnEventMapper {
|
|
|
428
427
|
const listed = Math.max(0, callCount);
|
|
429
428
|
if (listed === 0) {
|
|
430
429
|
this.sealOpenRequests({ parentCallId });
|
|
431
|
-
this.listedCounts.delete(parentCallId
|
|
430
|
+
this.listedCounts.delete(parentCallId ?? "");
|
|
432
431
|
return;
|
|
433
432
|
}
|
|
434
|
-
this.listedCounts.set(parentCallId
|
|
433
|
+
this.listedCounts.set(parentCallId ?? "", listed);
|
|
435
434
|
for (const wave of this.waves.values()) {
|
|
436
435
|
if (wave.parentCallId !== parentCallId || wave.requestedEmitted) {
|
|
437
436
|
continue;
|
|
@@ -441,15 +440,14 @@ export class TurnEventMapper {
|
|
|
441
440
|
}
|
|
442
441
|
}
|
|
443
442
|
maybeSealListedWave(wave) {
|
|
444
|
-
|
|
445
|
-
const expected = (_a = wave.expectedCalls) !== null && _a !== void 0 ? _a : this.listedCounts.get((_b = wave.parentCallId) !== null && _b !== void 0 ? _b : "");
|
|
443
|
+
const expected = wave.expectedCalls ?? this.listedCounts.get(wave.parentCallId ?? "");
|
|
446
444
|
if (expected !== undefined && wave.calls.length >= expected) {
|
|
447
445
|
this.sealWaveRequests(wave);
|
|
448
446
|
}
|
|
449
447
|
}
|
|
450
448
|
sealOpenRequests(ids) {
|
|
451
|
-
const parentCallId = ids
|
|
452
|
-
const exceptModelCallId = ids
|
|
449
|
+
const parentCallId = ids?.parentCallId;
|
|
450
|
+
const exceptModelCallId = ids?.exceptModelCallId;
|
|
453
451
|
for (const wave of this.waves.values()) {
|
|
454
452
|
if (wave.parentCallId !== parentCallId) {
|
|
455
453
|
continue;
|
|
@@ -461,12 +459,11 @@ export class TurnEventMapper {
|
|
|
461
459
|
}
|
|
462
460
|
}
|
|
463
461
|
sealWaveRequests(wave) {
|
|
464
|
-
var _a;
|
|
465
462
|
if (wave.requestedEmitted || wave.calls.length === 0) {
|
|
466
463
|
return;
|
|
467
464
|
}
|
|
468
465
|
wave.requestedEmitted = true;
|
|
469
|
-
this.listedCounts.delete(
|
|
466
|
+
this.listedCounts.delete(wave.parentCallId ?? "");
|
|
470
467
|
this.emit({
|
|
471
468
|
type: "actions.requested",
|
|
472
469
|
data: {
|
|
@@ -579,7 +576,6 @@ export class TurnEventMapper {
|
|
|
579
576
|
* (cloud); both surface under the customer's bare tool name.
|
|
580
577
|
*/
|
|
581
578
|
export function describeToolCall(toolCall) {
|
|
582
|
-
var _a;
|
|
583
579
|
switch (toolCall.type) {
|
|
584
580
|
case "mcp": {
|
|
585
581
|
const providerIdentifier = toolCall.args.providerIdentifier;
|
|
@@ -587,11 +583,11 @@ export function describeToolCall(toolCall) {
|
|
|
587
583
|
if (providerIdentifier === CUSTOM_TOOLS_PROVIDER ||
|
|
588
584
|
providerIdentifier === SERVER_TOOLS_PROVIDER) {
|
|
589
585
|
return {
|
|
590
|
-
toolName: toolName
|
|
586
|
+
toolName: toolName ?? "custom-tool",
|
|
591
587
|
args: toolCall.args.args,
|
|
592
588
|
};
|
|
593
589
|
}
|
|
594
|
-
const bareName = toolName
|
|
590
|
+
const bareName = toolName ?? "tool";
|
|
595
591
|
return {
|
|
596
592
|
toolName: providerIdentifier === undefined || providerIdentifier === ""
|
|
597
593
|
? bareName
|
|
@@ -601,7 +597,7 @@ export function describeToolCall(toolCall) {
|
|
|
601
597
|
}
|
|
602
598
|
case "task": {
|
|
603
599
|
const subagentType = toolCall.args.subagentType;
|
|
604
|
-
const subagentName =
|
|
600
|
+
const subagentName = subagentType?.name ?? subagentType?.kind;
|
|
605
601
|
return {
|
|
606
602
|
toolName: "task",
|
|
607
603
|
args: {
|
|
@@ -623,7 +619,6 @@ export function describeToolCall(toolCall) {
|
|
|
623
619
|
}
|
|
624
620
|
}
|
|
625
621
|
export function describeToolResult(toolCall) {
|
|
626
|
-
var _a;
|
|
627
622
|
const result = toolCall.result;
|
|
628
623
|
if (result === undefined || result === null) {
|
|
629
624
|
return { isError: false };
|
|
@@ -633,8 +628,8 @@ export function describeToolResult(toolCall) {
|
|
|
633
628
|
}
|
|
634
629
|
if (toolCall.type === "mcp") {
|
|
635
630
|
const value = result.value;
|
|
636
|
-
const text = (
|
|
637
|
-
.map(item =>
|
|
631
|
+
const text = (value.content ?? [])
|
|
632
|
+
.map(item => item.text?.text ?? "")
|
|
638
633
|
.filter(part => part !== "")
|
|
639
634
|
.join("\n");
|
|
640
635
|
return {
|
|
@@ -645,17 +640,21 @@ export function describeToolResult(toolCall) {
|
|
|
645
640
|
return { output: result.value, isError: false };
|
|
646
641
|
}
|
|
647
642
|
function waveKey(ids) {
|
|
648
|
-
|
|
649
|
-
return `${(_a = ids.parentCallId) !== null && _a !== void 0 ? _a : ""}:${(_b = ids.modelCallId) !== null && _b !== void 0 ? _b : `call:${ids.callId}`}`;
|
|
643
|
+
return `${ids.parentCallId ?? ""}:${ids.modelCallId ?? `call:${ids.callId}`}`;
|
|
650
644
|
}
|
|
651
645
|
function addUsage(total, usage) {
|
|
652
|
-
var _a, _b;
|
|
653
646
|
if (total === undefined) {
|
|
654
|
-
return
|
|
655
|
-
}
|
|
656
|
-
return
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
:
|
|
647
|
+
return { ...usage };
|
|
648
|
+
}
|
|
649
|
+
return {
|
|
650
|
+
inputTokens: total.inputTokens + usage.inputTokens,
|
|
651
|
+
outputTokens: total.outputTokens + usage.outputTokens,
|
|
652
|
+
cacheReadTokens: total.cacheReadTokens + usage.cacheReadTokens,
|
|
653
|
+
cacheWriteTokens: total.cacheWriteTokens + usage.cacheWriteTokens,
|
|
654
|
+
...(total.reasoningTokens !== undefined || usage.reasoningTokens !== undefined
|
|
655
|
+
? {
|
|
656
|
+
reasoningTokens: (total.reasoningTokens ?? 0) + (usage.reasoningTokens ?? 0),
|
|
657
|
+
}
|
|
658
|
+
: {}),
|
|
659
|
+
};
|
|
661
660
|
}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { defineChannel, localDevStrict, POST } from "../channels.js";
|
|
11
2
|
import { tagOutcome } from "./channel-dispatch.js";
|
|
12
3
|
import { attachHostedAdmissionAdapter } from "./hosted-admission-adapter.js";
|
|
@@ -17,22 +8,19 @@ import { bindLocalIngressSend } from "./local-ingress.js";
|
|
|
17
8
|
*/
|
|
18
9
|
export function createFactoryResourceChannel(spec) {
|
|
19
10
|
const optionsByDefinition = new WeakMap();
|
|
20
|
-
function dispatchEvent(input) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return tagOutcome(Response.json({ ok: true }), "task");
|
|
29
|
-
});
|
|
11
|
+
async function dispatchEvent(input) {
|
|
12
|
+
await input.options.onEvent(input.event, bindLocalIngressSend(input.args, {
|
|
13
|
+
identity: input.options.continuation,
|
|
14
|
+
kind: spec.kind,
|
|
15
|
+
eventType: input.event.eventType,
|
|
16
|
+
payload: input.event,
|
|
17
|
+
}));
|
|
18
|
+
return tagOutcome(Response.json({ ok: true }), "task");
|
|
30
19
|
}
|
|
31
20
|
function channel(options) {
|
|
32
|
-
|
|
33
|
-
const routePath = (_a = options.path) !== null && _a !== void 0 ? _a : "/";
|
|
21
|
+
const routePath = options.path ?? "/";
|
|
34
22
|
const definition = defineChannel({
|
|
35
|
-
auth:
|
|
23
|
+
auth: options.auth ?? [localDevStrict()],
|
|
36
24
|
meta: {
|
|
37
25
|
kind: spec.kind,
|
|
38
26
|
factoryEventTypes: spec.eventTypes,
|
|
@@ -43,12 +31,10 @@ export function createFactoryResourceChannel(spec) {
|
|
|
43
31
|
POST(routePath, {
|
|
44
32
|
description: spec.replayDescription,
|
|
45
33
|
bodySchema: spec.eventSchema,
|
|
46
|
-
handler: (_request, args) =>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
args,
|
|
51
|
-
});
|
|
34
|
+
handler: async (_request, args) => dispatchEvent({
|
|
35
|
+
options,
|
|
36
|
+
event: args.body,
|
|
37
|
+
args,
|
|
52
38
|
}),
|
|
53
39
|
}),
|
|
54
40
|
],
|
|
@@ -56,7 +42,7 @@ export function createFactoryResourceChannel(spec) {
|
|
|
56
42
|
optionsByDefinition.set(definition, options);
|
|
57
43
|
attachHostedAdmissionAdapter(definition, {
|
|
58
44
|
kind: spec.kind,
|
|
59
|
-
dispatch:
|
|
45
|
+
dispatch: async ({ payload, args }) => {
|
|
60
46
|
const parsed = spec.eventSchema.safeParse(payload);
|
|
61
47
|
if (!parsed.success) {
|
|
62
48
|
return Response.json({ ok: false, error: spec.invalidError }, { status: 400 });
|
|
@@ -66,7 +52,7 @@ export function createFactoryResourceChannel(spec) {
|
|
|
66
52
|
event: parsed.data,
|
|
67
53
|
args,
|
|
68
54
|
});
|
|
69
|
-
}
|
|
55
|
+
},
|
|
70
56
|
});
|
|
71
57
|
return definition;
|
|
72
58
|
}
|
|
@@ -57,7 +57,7 @@ export class PathError extends Error {
|
|
|
57
57
|
}
|
|
58
58
|
export class FileNotFoundError extends PathError {
|
|
59
59
|
constructor(path, message) {
|
|
60
|
-
super(path, message
|
|
60
|
+
super(path, message ?? `not found: ${normalizeErrorPath(path)}`);
|
|
61
61
|
}
|
|
62
62
|
recreate(path, message) {
|
|
63
63
|
return new FileNotFoundError(path, message);
|
|
@@ -65,7 +65,7 @@ export class FileNotFoundError extends PathError {
|
|
|
65
65
|
}
|
|
66
66
|
export class ReadOnlyMountError extends PathError {
|
|
67
67
|
constructor(path, message) {
|
|
68
|
-
super(path, message
|
|
68
|
+
super(path, message ?? `read-only mount: ${normalizeErrorPath(path)}`);
|
|
69
69
|
}
|
|
70
70
|
recreate(path, message) {
|
|
71
71
|
return new ReadOnlyMountError(path, message);
|
|
@@ -73,7 +73,7 @@ export class ReadOnlyMountError extends PathError {
|
|
|
73
73
|
}
|
|
74
74
|
export class NoMountError extends PathError {
|
|
75
75
|
constructor(path, message) {
|
|
76
|
-
super(path, message
|
|
76
|
+
super(path, message ?? `no mount for path: ${normalizeErrorPath(path)}`);
|
|
77
77
|
}
|
|
78
78
|
recreate(path, message) {
|
|
79
79
|
return new NoMountError(path, message);
|
|
@@ -81,7 +81,7 @@ export class NoMountError extends PathError {
|
|
|
81
81
|
}
|
|
82
82
|
export class WriteFailedError extends PathError {
|
|
83
83
|
constructor(path, message) {
|
|
84
|
-
super(path, message
|
|
84
|
+
super(path, message ?? `write failed: ${normalizeErrorPath(path)}`);
|
|
85
85
|
}
|
|
86
86
|
recreate(path, message) {
|
|
87
87
|
return new WriteFailedError(path, message);
|
|
@@ -89,7 +89,7 @@ export class WriteFailedError extends PathError {
|
|
|
89
89
|
}
|
|
90
90
|
export class DeleteNotSupportedError extends PathError {
|
|
91
91
|
constructor(path, message) {
|
|
92
|
-
super(path, message
|
|
92
|
+
super(path, message ?? `delete is not supported: ${normalizeErrorPath(path)}`);
|
|
93
93
|
}
|
|
94
94
|
recreate(path, message) {
|
|
95
95
|
return new DeleteNotSupportedError(path, message);
|
|
@@ -106,7 +106,7 @@ export class EditError extends PathError {
|
|
|
106
106
|
}
|
|
107
107
|
export class InvalidGrepPatternError extends PathError {
|
|
108
108
|
constructor(pattern, path = "/", message) {
|
|
109
|
-
super(path, message
|
|
109
|
+
super(path, message ?? `invalid grep pattern: ${pattern}`);
|
|
110
110
|
this.pattern = pattern;
|
|
111
111
|
}
|
|
112
112
|
recreate(path, message) {
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* (LocalLsExecutor / read / grep / glob formatters).
|
|
4
4
|
*/
|
|
5
5
|
import { posix } from "node:path";
|
|
6
|
-
const LS_RENDER_CHARACTER_BUDGET =
|
|
7
|
-
const GLOB_TOTAL_CHARACTER_BUDGET =
|
|
6
|
+
const LS_RENDER_CHARACTER_BUDGET = 10_000;
|
|
7
|
+
const GLOB_TOTAL_CHARACTER_BUDGET = 5_000;
|
|
8
8
|
/**
|
|
9
9
|
* Number already-sliced Read content. `FileSystem.read` applies offset/
|
|
10
10
|
* limit; do not window again or line numbers restart at 1.
|
|
@@ -19,7 +19,6 @@ export function slicedReadStartLine(totalLines, offset) {
|
|
|
19
19
|
return Math.max(1, offset);
|
|
20
20
|
}
|
|
21
21
|
export function formatNumberedLines(content, options = {}) {
|
|
22
|
-
var _a;
|
|
23
22
|
const lines = content === "" ? [] : content.split("\n");
|
|
24
23
|
if (lines.length === 0) {
|
|
25
24
|
return "";
|
|
@@ -27,13 +26,13 @@ export function formatNumberedLines(content, options = {}) {
|
|
|
27
26
|
const { offset, limit, startLine } = options;
|
|
28
27
|
let start = 1;
|
|
29
28
|
let window = lines;
|
|
30
|
-
const total =
|
|
29
|
+
const total = options.totalLines ?? lines.length;
|
|
31
30
|
if (startLine !== undefined) {
|
|
32
31
|
start = startLine;
|
|
33
32
|
}
|
|
34
33
|
else if (offset !== undefined || limit !== undefined) {
|
|
35
|
-
const effectiveOffset = offset
|
|
36
|
-
const effectiveLimit = limit
|
|
34
|
+
const effectiveOffset = offset ?? 1;
|
|
35
|
+
const effectiveLimit = limit ?? (effectiveOffset < 0 ? Math.abs(effectiveOffset) : total);
|
|
37
36
|
start =
|
|
38
37
|
effectiveOffset < 0 ? Math.max(1, total + effectiveOffset + 1) : Math.max(1, effectiveOffset);
|
|
39
38
|
const end = Math.min(total, start + effectiveLimit - 1);
|
|
@@ -139,7 +138,6 @@ function renderDirectoryTree(rootDirectory, renderExtensionCounts = true, render
|
|
|
139
138
|
return { result: render(rootDirectory, 0) };
|
|
140
139
|
}
|
|
141
140
|
export function formatGlobOutput(dir, files) {
|
|
142
|
-
var _a;
|
|
143
141
|
const normalizedRoot = dir.replace(/\/+$/, "") || "/";
|
|
144
142
|
const prefix = normalizedRoot === "/" ? "/" : `${normalizedRoot}/`;
|
|
145
143
|
const relative = files.map(filePath => filePath.startsWith(prefix) ? filePath.slice(prefix.length) : filePath);
|
|
@@ -148,7 +146,7 @@ export function formatGlobOutput(dir, files) {
|
|
|
148
146
|
}
|
|
149
147
|
let output = `Result of search in '${dir}' (total ${relative.length} file${relative.length === 1 ? "" : "s"}):\n`;
|
|
150
148
|
for (let i = 0; i < relative.length; i++) {
|
|
151
|
-
const file =
|
|
149
|
+
const file = relative[i] ?? "";
|
|
152
150
|
if (output.length + file.length > GLOB_TOTAL_CHARACTER_BUDGET) {
|
|
153
151
|
output += `... ${relative.length - i} more files ... (Do a more specific search if needed)\n`;
|
|
154
152
|
break;
|
|
@@ -158,7 +156,6 @@ export function formatGlobOutput(dir, files) {
|
|
|
158
156
|
return output;
|
|
159
157
|
}
|
|
160
158
|
export function formatGrepOutput(union) {
|
|
161
|
-
var _a, _b, _c, _d;
|
|
162
159
|
if (union === undefined) {
|
|
163
160
|
return "No matches found";
|
|
164
161
|
}
|
|
@@ -187,13 +184,13 @@ export function formatGrepOutput(union) {
|
|
|
187
184
|
currentFile = match.file;
|
|
188
185
|
lines.push(match.file);
|
|
189
186
|
}
|
|
190
|
-
const before =
|
|
191
|
-
const matchLine =
|
|
187
|
+
const before = match.beforeContext ?? [];
|
|
188
|
+
const matchLine = match.lineNumber ?? 1;
|
|
192
189
|
before.forEach((line, index) => {
|
|
193
190
|
lines.push(` ${matchLine - before.length + index}-${line}`);
|
|
194
191
|
});
|
|
195
|
-
lines.push(` ${
|
|
196
|
-
(
|
|
192
|
+
lines.push(` ${match.lineNumber ?? ""}:${match.line}`);
|
|
193
|
+
(match.afterContext ?? []).forEach((line, index) => {
|
|
197
194
|
lines.push(` ${matchLine + 1 + index}-${line}`);
|
|
198
195
|
});
|
|
199
196
|
}
|