@cursor/bdk 0.2.3 → 0.2.4
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/bin/agent-serve.js +9 -1
- package/dist/channels/slack/attachments.d.ts +2 -1
- package/dist/channels/slack/attachments.d.ts.map +1 -1
- package/dist/channels/slack/attachments.js +19 -9
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +26 -24
- package/dist/channels/slack/thread-context.d.ts +21 -11
- package/dist/channels/slack/thread-context.d.ts.map +1 -1
- package/dist/channels/slack/thread-context.js +75 -27
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.BOIHhrKi.js → app.4kQ8Db_q.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.CvuAJ0My.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.D49zVZqM.js → VPLocalSearchBox.DY1RwB8Q.js} +1 -1
- package/dist/docs/assets/chunks/{arc.hmjb-sc4.js → arc.CxE_fSPK.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CxEI1KqM.js → architectureDiagram-Q4EWVU46.CPX426ui.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.DHHvBWoV.js → baseUniq.CB52JrKG.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DnXW-3bu.js → blockDiagram-DXYQGD6D.J0cNaQCL.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.e-47O2jM.js → c4Diagram-AHTNJAMY.DJn3vEGT.js} +1 -1
- package/dist/docs/assets/chunks/channel.BoNycAoN.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.3ry4pYXB.js → chunk-4BX2VUAB.Dao618F6.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DGIZFRx6.js → chunk-4TB4RGXK.QW8Rhjai.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.DKBnqg9U.js → chunk-55IACEB6.DfRLLKF_.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BIU8Ue5k.js → chunk-EDXVE4YY.CIV2ApKQ.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DP-TFhjI.js → chunk-FMBD7UC4.BEheSuxp.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Ux0OYj5v.js → chunk-OYMX7WX6.CUN88ENB.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BzHMwYox.js → chunk-QZHKN3VN.CgqCs8b_.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.D4OGAsSP.js → chunk-YZCP3GAM.iCH0nnTJ.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C4x07Gkj.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C4x07Gkj.js +1 -0
- package/dist/docs/assets/chunks/clone.Db22cH_-.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Jq_7BUNx.js → cose-bilkent-S5V4N54A.BLcUxhWE.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.Di-skR2x.js → dagre-KV5264BT.Ep7LofOm.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DeREHIdH.js → diagram-5BDNPKRD.Bzf4GSQ4.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.C7Kcqxro.js → diagram-G4DWMVQ6.DD6Jh-eM.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BK3eohyo.js → diagram-MMDJMWI5.oOIl8bWd.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.C6TyymXT.js → diagram-TYMM5635.DHs85Ade.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DYGG-gGx.js → erDiagram-SMLLAGMA.BIb5ghCk.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.C9nBcSV4.js → flowDiagram-DWJPFMVM.DV4paY9k.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.wAg_ymsp.js → ganttDiagram-T4ZO3ILL.AyEKA6_v.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.B87j9Oeg.js → gitGraphDiagram-UUTBAWPF.BltiCDFo.js} +1 -1
- package/dist/docs/assets/chunks/{graph.CuFMj31w.js → graph.DzuEYGdC.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.P_mLGumP.js → infoDiagram-42DDH7IO.BV2l981J.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DyuL_MsT.js → ishikawaDiagram-UXIWVN3A.BA4Izf-m.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CtP09IoJ.js → journeyDiagram-VCZTEJTY.DjaFbFS3.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BoeSYPZo.js → kanban-definition-6JOO6SKY.CfTFieDs.js} +1 -1
- package/dist/docs/assets/chunks/{layout.B0lMMtNo.js → layout.DzfWqTBV.js} +1 -1
- package/dist/docs/assets/chunks/{linear.HxRBiAFX.js → linear.BO6mpulV.js} +1 -1
- package/dist/docs/assets/chunks/{min.BGlFFHwS.js → min.BGgTadgT.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.JyLBD9M8.js → mindmap-definition-QFDTVHPH.DPuIXVWY.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DnSmNZF8.js → pieDiagram-DEJITSTG.BOnl3bBg.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CUCnbfCa.js → quadrantDiagram-34T5L4WZ.DNB6Ckdc.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.py0IVUn5.js → requirementDiagram-MS252O5E.D5-Qo7vb.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.Bkc-HWYp.js → sankeyDiagram-XADWPNL6.8t65cesf.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Dqn8Mlv2.js → sequenceDiagram-FGHM5R23.CaG07BdS.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.JikkoQUU.js → stateDiagram-FHFEXIEX.TKOweTB6.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CuqmyQc4.js +1 -0
- package/dist/docs/assets/chunks/{theme.b6HQ6zG_.js → theme.Dx-JhpTB.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BvpSXiBj.js → timeline-definition-GMOUNBTQ.fE53zQ2s.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CU7MVnZx.js → vennDiagram-DHZGUBPP.DJsZZaJg.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.BKwC4ctG.js → wardley-RL74JXVD.844kyrjl.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.BfaF6Uhe.js → wardleyDiagram-NUSXRM2D.CMZ-Ru_t.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.Bg5dcpj4.js → xychartDiagram-5P7HB3ND.XXrhBc7a.js} +1 -1
- package/dist/docs/assets/{deployment.md.BJ8i7Q6p.js → deployment.md.UhnJIMr-.js} +2 -2
- package/dist/docs/assets/{deployment.md.BJ8i7Q6p.lean.js → deployment.md.UhnJIMr-.lean.js} +1 -1
- package/dist/docs/assets/{guides_jev.md.BNDm14Gy.js → guides_jev.md.CRcgmjDb.js} +2 -2
- package/dist/docs/assets/{guides_jev.md.BNDm14Gy.lean.js → guides_jev.md.CRcgmjDb.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.DzGI777n.js → reference_agent-config.md.Cj5uBKp4.js} +1 -1
- package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.js → reference_extensions.md.pa2tN-e4.js} +4 -3
- package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.lean.js → reference_extensions.md.pa2tN-e4.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +35 -35
- package/dist/docs/deployment.html +37 -37
- package/dist/docs/deployment.md +4 -1
- package/dist/docs/evals.html +35 -35
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +35 -35
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +35 -35
- package/dist/docs/guides/gitlab.html +35 -35
- 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 +37 -37
- package/dist/docs/guides/jev.md +7 -0
- package/dist/docs/guides/mcp-oauth.html +35 -35
- 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 +25 -2
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +37 -37
- package/dist/docs/reference/agent-config.md +1 -1
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +35 -35
- package/dist/docs/reference/connections.html +35 -35
- package/dist/docs/reference/evals.html +35 -35
- package/dist/docs/reference/extensions.html +39 -38
- package/dist/docs/reference/extensions.md +13 -0
- 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/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 +35 -35
- package/dist/extensions/jev/extension.d.ts +3 -0
- package/dist/extensions/jev/extension.d.ts.map +1 -1
- package/dist/extensions/jev/extension.js +10 -1
- package/dist/extensions/jev/lib/evaluate.d.ts +4 -0
- package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -1
- package/dist/extensions/jev/lib/evaluate.js +6 -2
- package/dist/extensions.d.ts +4 -2
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +5 -2
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +19 -5
- package/dist/internal/discovery/agent-config.d.ts +6 -5
- package/dist/internal/discovery/agent-config.d.ts.map +1 -1
- package/dist/internal/discovery/agent-config.js +29 -28
- package/dist/internal/discovery/agent.js +1 -1
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +12 -0
- package/dist/internal/hosting.d.ts +8 -0
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +24 -0
- package/dist/types.d.ts +18 -2
- package/dist/types.d.ts.map +1 -1
- package/docs/deployment.md +4 -1
- package/docs/guides/jev.md +7 -0
- package/docs/reference/agent-config.md +1 -1
- package/docs/reference/extensions.md +13 -0
- package/package.json +1 -9
- package/dist/docs/assets/chunks/@localSearchIndexroot.D5L-b34G.js +0 -1
- package/dist/docs/assets/chunks/channel.BbOGaJQP.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Db58HCb1.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Db58HCb1.js +0 -1
- package/dist/docs/assets/chunks/clone.Co4MBflG.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CMsKhrW0.js +0 -1
- package/src/artifacts.ts +0 -68
- package/src/bin/agent-serve.ts +0 -1854
- package/src/channels/bitbucket/api.ts +0 -891
- package/src/channels/bitbucket/binding.ts +0 -417
- package/src/channels/bitbucket/bitbucket-channel.ts +0 -162
- package/src/channels/bitbucket/bitbucket-webhook.ts +0 -519
- package/src/channels/bitbucket/checks.ts +0 -146
- package/src/channels/bitbucket/cursor-account.ts +0 -106
- package/src/channels/bitbucket/defaults.ts +0 -100
- package/src/channels/bitbucket/events.ts +0 -74
- package/src/channels/bitbucket/index.ts +0 -51
- package/src/channels/bitbucket/replay.ts +0 -421
- package/src/channels/bitbucket/state.ts +0 -59
- package/src/channels/bitbucket/types.ts +0 -261
- package/src/channels/change-monitors/change-monitors-channel.ts +0 -63
- package/src/channels/change-monitors/index.ts +0 -8
- package/src/channels/change-monitors/types.ts +0 -42
- package/src/channels/checks.ts +0 -185
- package/src/channels/deployments/deployments-channel.ts +0 -224
- package/src/channels/deployments/index.ts +0 -25
- package/src/channels/deployments/types.ts +0 -92
- package/src/channels/github/api.ts +0 -526
- package/src/channels/github/auth.ts +0 -293
- package/src/channels/github/binding.ts +0 -233
- package/src/channels/github/checks.ts +0 -145
- package/src/channels/github/cursor-account.ts +0 -303
- package/src/channels/github/defaults.ts +0 -168
- package/src/channels/github/events.ts +0 -67
- package/src/channels/github/forward.ts +0 -359
- package/src/channels/github/github-channel.ts +0 -2334
- package/src/channels/github/index.ts +0 -54
- package/src/channels/github/progress.ts +0 -365
- package/src/channels/github/replay.ts +0 -372
- package/src/channels/github/state.ts +0 -124
- package/src/channels/github/types.ts +0 -590
- package/src/channels/gitlab/api.ts +0 -329
- package/src/channels/gitlab/binding.ts +0 -231
- package/src/channels/gitlab/checks.ts +0 -228
- package/src/channels/gitlab/cursor-account.ts +0 -105
- package/src/channels/gitlab/defaults.ts +0 -80
- package/src/channels/gitlab/events.ts +0 -37
- package/src/channels/gitlab/gitlab-channel.ts +0 -160
- package/src/channels/gitlab/gitlab-webhook.ts +0 -509
- package/src/channels/gitlab/index.ts +0 -44
- package/src/channels/gitlab/replay.ts +0 -328
- package/src/channels/gitlab/state.ts +0 -55
- package/src/channels/gitlab/types.ts +0 -247
- package/src/channels/issues/index.ts +0 -9
- package/src/channels/issues/issues-channel.ts +0 -45
- package/src/channels/issues/types.ts +0 -38
- package/src/channels/origin/api.ts +0 -507
- package/src/channels/origin/binding.ts +0 -114
- package/src/channels/origin/checks.ts +0 -250
- package/src/channels/origin/cursor-account.ts +0 -58
- package/src/channels/origin/defaults.ts +0 -140
- package/src/channels/origin/events.ts +0 -35
- package/src/channels/origin/index.ts +0 -35
- package/src/channels/origin/origin-channel.ts +0 -815
- package/src/channels/origin/origin-webhook.ts +0 -296
- package/src/channels/origin/reactions.ts +0 -72
- package/src/channels/origin/state.ts +0 -54
- package/src/channels/origin/types.ts +0 -295
- package/src/channels/slack/agentic-delivery.ts +0 -634
- package/src/channels/slack/agentic-posted.ts +0 -135
- package/src/channels/slack/agentic-signals.ts +0 -231
- package/src/channels/slack/api.ts +0 -761
- package/src/channels/slack/approvals.ts +0 -279
- package/src/channels/slack/assistant.ts +0 -76
- package/src/channels/slack/attachments.ts +0 -596
- package/src/channels/slack/auth.ts +0 -127
- package/src/channels/slack/blocks.ts +0 -131
- package/src/channels/slack/bot-mentions.ts +0 -318
- package/src/channels/slack/channel-watch.ts +0 -314
- package/src/channels/slack/cli-project.ts +0 -249
- package/src/channels/slack/code-fences.ts +0 -171
- package/src/channels/slack/constants.ts +0 -38
- package/src/channels/slack/credentials.ts +0 -88
- package/src/channels/slack/defaults.ts +0 -714
- package/src/channels/slack/dispatch.ts +0 -1060
- package/src/channels/slack/doctor.ts +0 -338
- package/src/channels/slack/eval-directive.ts +0 -306
- package/src/channels/slack/event-id-dedupe.ts +0 -30
- package/src/channels/slack/external-policy.ts +0 -75
- package/src/channels/slack/footer.ts +0 -106
- package/src/channels/slack/inbound.ts +0 -416
- package/src/channels/slack/index.ts +0 -53
- package/src/channels/slack/init.ts +0 -169
- package/src/channels/slack/interactive.ts +0 -406
- package/src/channels/slack/links.ts +0 -23
- package/src/channels/slack/live-delivery.ts +0 -489
- package/src/channels/slack/log.ts +0 -70
- package/src/channels/slack/manifest.ts +0 -240
- package/src/channels/slack/message-body.ts +0 -82
- package/src/channels/slack/nudge-carrier.ts +0 -224
- package/src/channels/slack/nudge-store.ts +0 -334
- package/src/channels/slack/paint-start.ts +0 -93
- package/src/channels/slack/placeholder.ts +0 -358
- package/src/channels/slack/pr-ref.ts +0 -74
- package/src/channels/slack/progress-delivery.ts +0 -138
- package/src/channels/slack/reasoning-card.ts +0 -125
- package/src/channels/slack/reasoning-chip.ts +0 -41
- package/src/channels/slack/recording-sink.ts +0 -167
- package/src/channels/slack/redact.ts +0 -6
- package/src/channels/slack/reply-options.ts +0 -279
- package/src/channels/slack/setup.ts +0 -125
- package/src/channels/slack/slack-channel.ts +0 -744
- package/src/channels/slack/socket-mode.ts +0 -140
- package/src/channels/slack/stop.ts +0 -25
- package/src/channels/slack/stream.ts +0 -66
- package/src/channels/slack/thread-context.ts +0 -485
- package/src/channels/slack/tool-approval-events.ts +0 -233
- package/src/channels/slack/tool-cards.ts +0 -198
- package/src/channels/slack/tool-chip.ts +0 -34
- package/src/channels/slack/types.ts +0 -787
- package/src/channels/slack/upload.ts +0 -137
- package/src/channels.ts +0 -543
- package/src/connections.ts +0 -153
- package/src/dashboard-session-url.ts +0 -30
- package/src/evals/assertions.ts +0 -688
- package/src/evals/expect.ts +0 -250
- package/src/evals/judge.ts +0 -329
- package/src/evals/loaders.ts +0 -111
- package/src/evals/matchers.ts +0 -223
- package/src/evals/reporters.ts +0 -257
- package/src/evals/results.ts +0 -130
- package/src/evals/run-facts.ts +0 -306
- package/src/evals.ts +0 -709
- package/src/extensions/cursor-cloud-agents/extension.ts +0 -131
- package/src/extensions/cursor-cloud-agents/lib/backend.ts +0 -386
- package/src/extensions/cursor-cloud-agents/lib/channels.ts +0 -11
- package/src/extensions/cursor-cloud-agents/lib/fleet.ts +0 -98
- package/src/extensions/cursor-cloud-agents/lib/inputs.ts +0 -5
- package/src/extensions/cursor-cloud-agents/lib/repos.ts +0 -80
- package/src/extensions/cursor-cloud-agents/lib/transcript.ts +0 -19
- package/src/extensions/cursor-cloud-agents/skills/handoff.md +0 -37
- package/src/extensions/cursor-cloud-agents/tools/cancel.ts +0 -21
- package/src/extensions/cursor-cloud-agents/tools/dump.ts +0 -47
- package/src/extensions/cursor-cloud-agents/tools/get.ts +0 -18
- package/src/extensions/cursor-cloud-agents/tools/launch.ts +0 -62
- package/src/extensions/cursor-cloud-agents/tools/list.ts +0 -31
- package/src/extensions/cursor-cloud-agents/tools/reply.ts +0 -36
- package/src/extensions/cursor-grokbot-agents/extension.ts +0 -132
- package/src/extensions/cursor-grokbot-agents/lib/agents.ts +0 -42
- package/src/extensions/cursor-grokbot-agents/lib/backend.ts +0 -208
- package/src/extensions/cursor-grokbot-agents/lib/contacts.ts +0 -74
- package/src/extensions/cursor-grokbot-agents/lib/conversation.ts +0 -260
- package/src/extensions/cursor-grokbot-agents/lib/inputs.ts +0 -21
- package/src/extensions/cursor-grokbot-agents/lib/lock.ts +0 -26
- package/src/extensions/cursor-grokbot-agents/skills/consult.md +0 -40
- package/src/extensions/cursor-grokbot-agents/tools/ask.ts +0 -32
- package/src/extensions/cursor-grokbot-agents/tools/check.ts +0 -25
- package/src/extensions/cursor-grokbot-agents/tools/interrupt.ts +0 -17
- package/src/extensions/cursor-grokbot-agents/tools/list.ts +0 -26
- package/src/extensions/improve/extension.ts +0 -69
- package/src/extensions/improve/skills/yourself.ts +0 -50
- package/src/extensions/jev/extension.ts +0 -95
- package/src/extensions/jev/lib/evaluate.ts +0 -266
- package/src/extensions/jev/skills/gated-write.md +0 -25
- package/src/extensions/jev/skills/questions.md +0 -33
- package/src/extensions/jev/tools/evaluate.ts +0 -82
- package/src/extensions/slack-communication/evals/harness.ts +0 -705
- package/src/extensions/slack-communication/evals/slack-communication.eval.ts +0 -830
- package/src/extensions/slack-communication/evals/slack-placeholder.eval.ts +0 -172
- package/src/extensions/slack-communication/extension.ts +0 -44
- package/src/extensions/slack-communication/skills/slack-voice.ts +0 -56
- package/src/extensions/slack-communication/tools/delete-message.ts +0 -33
- package/src/extensions/slack-communication/tools/edit-message.ts +0 -42
- package/src/extensions/slack-communication/tools/post-card.ts +0 -28
- package/src/extensions/slack-communication/tools/post-file.ts +0 -82
- package/src/extensions/slack-communication/tools/post-update.ts +0 -40
- package/src/extensions/slack-communication/tools/react.ts +0 -30
- package/src/extensions/slack-communication/tools/set-status.ts +0 -21
- package/src/extensions.ts +0 -179
- package/src/files-backends/agent-store-presigned-url.ts +0 -11
- package/src/files-backends/cursor-hosted.ts +0 -1212
- package/src/files-backends/local-fs.ts +0 -163
- package/src/files.ts +0 -293
- package/src/filesystem.ts +0 -2005
- package/src/hooks.ts +0 -30
- package/src/index.ts +0 -259
- package/src/internal/advertise-tools.ts +0 -370
- package/src/internal/approval-gate.ts +0 -103
- package/src/internal/artifacts-store.ts +0 -836
- package/src/internal/as-of.ts +0 -257
- package/src/internal/auth.ts +0 -46
- package/src/internal/authored-alias-hooks.ts +0 -138
- package/src/internal/authored-loaders.ts +0 -188
- package/src/internal/bounded-int.ts +0 -24
- package/src/internal/bounded.ts +0 -25
- package/src/internal/brand.ts +0 -28
- package/src/internal/browser-origin-guard.ts +0 -67
- package/src/internal/builtin-tools/artifacts.ts +0 -62
- package/src/internal/builtin-tools/index.ts +0 -53
- package/src/internal/builtin-tools/reminders.ts +0 -145
- package/src/internal/channel-dispatch.ts +0 -129
- package/src/internal/channel-route-dispatch.ts +0 -58
- package/src/internal/channel-state.ts +0 -83
- package/src/internal/chat-client.ts +0 -594
- package/src/internal/cli-ax.ts +0 -2318
- package/src/internal/cli-bitbucket.ts +0 -438
- package/src/internal/cli-convert-automation.ts +0 -335
- package/src/internal/cli-cursor.ts +0 -282
- package/src/internal/cli-deploy.ts +0 -2519
- package/src/internal/cli-docs.ts +0 -192
- package/src/internal/cli-github.ts +0 -806
- package/src/internal/cli-gitlab.ts +0 -452
- package/src/internal/cli-images.ts +0 -672
- package/src/internal/cli-manifest.ts +0 -56
- package/src/internal/cli-mcp-oauth.ts +0 -396
- package/src/internal/cli-mcp.ts +0 -808
- package/src/internal/cli-skills.ts +0 -98
- package/src/internal/cli-slack-manual.ts +0 -418
- package/src/internal/cli-slack.ts +0 -874
- package/src/internal/cloud-merge.ts +0 -51
- package/src/internal/cloud-turn-cost.ts +0 -159
- package/src/internal/connection-env.ts +0 -106
- package/src/internal/continuation-channel.ts +0 -233
- package/src/internal/continuation-identity.ts +0 -935
- package/src/internal/conversation-mirror.ts +0 -423
- package/src/internal/convert-automation/convert-workflow.ts +0 -1377
- package/src/internal/convert-automation/slug.ts +0 -29
- package/src/internal/convert-automation/types.ts +0 -212
- package/src/internal/cron.ts +0 -76
- package/src/internal/cursor/account-mcp.ts +0 -692
- package/src/internal/cursor/backend-client.ts +0 -984
- package/src/internal/cursor/bound-secret-file.ts +0 -101
- package/src/internal/cursor/credentials.ts +0 -560
- package/src/internal/cursor/cursor-api-transport.ts +0 -65
- package/src/internal/cursor/github-credentials.ts +0 -228
- package/src/internal/cursor/hosted-bound-secrets.ts +0 -71
- package/src/internal/cursor/hosted-deployment-secrets.ts +0 -100
- package/src/internal/cursor/hosted-store-secrets.ts +0 -152
- package/src/internal/cursor/session-token.ts +0 -111
- package/src/internal/cursor/store-api-client.ts +0 -323
- package/src/internal/cursor-account-mcp-auth.ts +0 -303
- package/src/internal/cursor-agent-template.ts +0 -50
- package/src/internal/cursor-deployment-relay.ts +0 -315
- package/src/internal/cursor-event-relay.ts +0 -675
- package/src/internal/cursor-relay-core.ts +0 -563
- package/src/internal/deferred-channel-session.ts +0 -61
- package/src/internal/deploy-client.ts +0 -1574
- package/src/internal/deploy-manifest.ts +0 -361
- package/src/internal/deploy-source.ts +0 -144
- package/src/internal/describe-error.ts +0 -32
- package/src/internal/dev-mode.ts +0 -20
- package/src/internal/discovery/agent-config.ts +0 -288
- package/src/internal/discovery/agent.ts +0 -381
- package/src/internal/discovery/channels.ts +0 -100
- package/src/internal/discovery/connections.ts +0 -516
- package/src/internal/discovery/context.ts +0 -38
- package/src/internal/discovery/cursor-plugin.ts +0 -628
- package/src/internal/discovery/extension-overlay.ts +0 -247
- package/src/internal/discovery/extensions.ts +0 -490
- package/src/internal/discovery/fs.ts +0 -103
- package/src/internal/discovery/hooks.ts +0 -63
- package/src/internal/discovery/info.ts +0 -174
- package/src/internal/discovery/instructions.ts +0 -98
- package/src/internal/discovery/modules.ts +0 -107
- package/src/internal/discovery/names.ts +0 -45
- package/src/internal/discovery/project.ts +0 -319
- package/src/internal/discovery/reminders.ts +0 -65
- package/src/internal/discovery/runtime.ts +0 -158
- package/src/internal/discovery/schedules.ts +0 -120
- package/src/internal/discovery/seed-files.ts +0 -34
- package/src/internal/discovery/services.ts +0 -151
- package/src/internal/discovery/skills.ts +0 -174
- package/src/internal/discovery/subagent.ts +0 -138
- package/src/internal/discovery/tools.ts +0 -170
- package/src/internal/discovery.ts +0 -27
- package/src/internal/distribution.ts +0 -126
- package/src/internal/docs-site.ts +0 -248
- package/src/internal/duration.ts +0 -37
- package/src/internal/env-file.ts +0 -83
- package/src/internal/eval-judge-model.ts +0 -142
- package/src/internal/eval-run-store.ts +0 -585
- package/src/internal/eval-runner.ts +0 -823
- package/src/internal/evals-client.ts +0 -475
- package/src/internal/event-log.ts +0 -342
- package/src/internal/event-mapper.ts +0 -811
- package/src/internal/expected-delivery-failure.ts +0 -34
- package/src/internal/factory-resource-channel.ts +0 -103
- package/src/internal/filesystem/errors.ts +0 -207
- package/src/internal/filesystem/format.ts +0 -253
- package/src/internal/filesystem/merge.ts +0 -192
- package/src/internal/filesystem/nearest.ts +0 -112
- package/src/internal/filesystem/scratch.ts +0 -239
- package/src/internal/filesystem/sdk-schemas.ts +0 -204
- package/src/internal/filesystem/tools.ts +0 -804
- package/src/internal/filesystem/walk.ts +0 -366
- package/src/internal/fixtures/units-server.ts +0 -52
- package/src/internal/framework-file-storage.ts +0 -357
- package/src/internal/framework-storage-selection.ts +0 -156
- package/src/internal/frontmatter.ts +0 -108
- package/src/internal/github-fanout.ts +0 -144
- package/src/internal/guest-network.ts +0 -391
- package/src/internal/handleAgentServeTrigger.ts +0 -286
- package/src/internal/host-files.ts +0 -341
- package/src/internal/host-kv.ts +0 -81
- package/src/internal/host-otel.ts +0 -231
- package/src/internal/host-platforms.ts +0 -170
- package/src/internal/hosted-admission-adapter.ts +0 -47
- package/src/internal/hosted-admission-context.ts +0 -37
- package/src/internal/hosted-catch-protocol.ts +0 -112
- package/src/internal/hosted-catch.ts +0 -179
- package/src/internal/hosted-delivery-protocol.ts +0 -824
- package/src/internal/hosted-delivery.ts +0 -1410
- package/src/internal/hosted-execution-diag.ts +0 -291
- package/src/internal/hosted-execution-flush.ts +0 -136
- package/src/internal/hosted-execution-latency.ts +0 -301
- package/src/internal/hosted-managed-automation.ts +0 -116
- package/src/internal/hosting.ts +0 -114
- package/src/internal/http-channel-define.ts +0 -25
- package/src/internal/http-channel.ts +0 -669
- package/src/internal/http-control-plane-session.ts +0 -110
- package/src/internal/ids.ts +0 -39
- package/src/internal/incoming-headers-to-fetch.ts +0 -45
- package/src/internal/init-interview.ts +0 -360
- package/src/internal/init-project.ts +0 -711
- package/src/internal/init-scaffold.ts +0 -182
- package/src/internal/inline-stdio-define-stub.ts +0 -4
- package/src/internal/inline-stdio-mcp.ts +0 -230
- package/src/internal/install-cursor-skills.ts +0 -604
- package/src/internal/is-record.ts +0 -3
- package/src/internal/json-schema.ts +0 -95
- package/src/internal/legacy-command-guard.ts +0 -66
- package/src/internal/listen-port.ts +0 -85
- package/src/internal/local-control-plane.ts +0 -442
- package/src/internal/local-env.ts +0 -59
- package/src/internal/local-ingress.ts +0 -90
- package/src/internal/log-ring.ts +0 -59
- package/src/internal/logs-client.ts +0 -477
- package/src/internal/map-pool.ts +0 -39
- package/src/internal/mcp-endpoint.ts +0 -747
- package/src/internal/mcp-host.ts +0 -509
- package/src/internal/mcp-oauth-on-demand.ts +0 -337
- package/src/internal/mcp-oauth-persist.ts +0 -118
- package/src/internal/mcp-oauth.ts +0 -549
- package/src/internal/net.ts +0 -29
- package/src/internal/open-browser.ts +0 -41
- package/src/internal/otel/attrs.ts +0 -16
- package/src/internal/otel/collector.ts +0 -937
- package/src/internal/otel/config.ts +0 -287
- package/src/internal/otel/http.ts +0 -122
- package/src/internal/otel/mcp.ts +0 -56
- package/src/internal/otel/propagation.ts +0 -17
- package/src/internal/otel/runtime.ts +0 -441
- package/src/internal/package-inline-stdio.ts +0 -114
- package/src/internal/peer-connections.ts +0 -96
- package/src/internal/platform-schedule-sync.ts +0 -75
- package/src/internal/platform-timers.ts +0 -365
- package/src/internal/playground/static.ts +0 -278
- package/src/internal/playground/toolchain.ts +0 -270
- package/src/internal/playground-proxy.ts +0 -564
- package/src/internal/process-memory-telemetry.ts +0 -334
- package/src/internal/project-layout.ts +0 -31
- package/src/internal/prompt-context.ts +0 -116
- package/src/internal/reminder-control-plane-protocol.ts +0 -482
- package/src/internal/reminder-runner.ts +0 -1559
- package/src/internal/reminder-schedule.ts +0 -104
- package/src/internal/reminder-store.ts +0 -176
- package/src/internal/request-error-status.ts +0 -95
- package/src/internal/request-headers.ts +0 -21
- package/src/internal/resolve-prod-target.ts +0 -334
- package/src/internal/resolved-connections.ts +0 -190
- package/src/internal/router.ts +0 -143
- package/src/internal/run-client.ts +0 -354
- package/src/internal/runtime-dispatch-runner.ts +0 -50
- package/src/internal/sanitize-mcp-tool-name.ts +0 -31
- package/src/internal/schedule-runner.ts +0 -154
- package/src/internal/scm/pr-url.ts +0 -245
- package/src/internal/sdk-runner.ts +0 -959
- package/src/internal/serve-restart.ts +0 -113
- package/src/internal/server.ts +0 -3147
- package/src/internal/session-cost.ts +0 -208
- package/src/internal/session-engine.ts +0 -5622
- package/src/internal/session-links.ts +0 -84
- package/src/internal/session-run-log.ts +0 -535
- package/src/internal/session-store.ts +0 -307
- package/src/internal/session-urls.ts +0 -32
- package/src/internal/sessions-client.ts +0 -239
- package/src/internal/skill-catalog.ts +0 -66
- package/src/internal/skills-sync.ts +0 -55
- package/src/internal/slack-provision-client.ts +0 -544
- package/src/internal/slack-thread-key.ts +0 -11
- package/src/internal/sleep.ts +0 -3
- package/src/internal/start-log-store.ts +0 -164
- package/src/internal/steering.ts +0 -17
- package/src/internal/storage-coordinator.ts +0 -800
- package/src/internal/storage-roles.ts +0 -86
- package/src/internal/storage.ts +0 -1
- package/src/internal/store-api-protocol.ts +0 -205
- package/src/internal/store-mirror.ts +0 -73
- package/src/internal/stream-progress.ts +0 -294
- package/src/internal/terminal-style.ts +0 -133
- package/src/internal/testing/factory-resource-fixtures.ts +0 -84
- package/src/internal/testing/scm-continuation-fixtures.ts +0 -285
- package/src/internal/tool-catalog.ts +0 -104
- package/src/internal/tool-policy.ts +0 -222
- package/src/internal/tool-result.ts +0 -50
- package/src/internal/trajectory.ts +0 -418
- package/src/internal/turn-cost.ts +0 -136
- package/src/internal/turn-governor.ts +0 -145
- package/src/internal/turn-lease-store.ts +0 -144
- package/src/internal/turn-outbox.ts +0 -77
- package/src/internal/update-check.ts +0 -517
- package/src/internal/v2-hosting.ts +0 -52
- package/src/internal/workspace-sync.ts +0 -114
- package/src/internal/workspace.ts +0 -505
- package/src/kv/memory-kv.ts +0 -94
- package/src/kv.ts +0 -18
- package/src/memory.ts +0 -487
- package/src/otel-public.ts +0 -24
- package/src/otel.ts +0 -320
- package/src/prompt.ts +0 -80
- package/src/reminders.ts +0 -65
- package/src/schedules.ts +0 -31
- package/src/skills.ts +0 -27
- package/src/storage-backends/cursor-hosted-v2.ts +0 -204
- package/src/storage-backends/cursor-hosted.ts +0 -388
- package/src/storage-backends/file-kv.ts +0 -276
- package/src/storage-protocol.ts +0 -261
- package/src/storage.ts +0 -408
- package/src/tools.ts +0 -166
- package/src/types.ts +0 -3776
- /package/dist/docs/assets/{reference_agent-config.md.DzGI777n.lean.js → reference_agent-config.md.Cj5uBKp4.lean.js} +0 -0
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Customer-account states that end a delivery without a platform bug.
|
|
3
|
-
* Hosted guests still surface these as `turn_failed` plus human copy, so
|
|
4
|
-
* the reason is matched from that copy. Metric tags stay this closed set
|
|
5
|
-
* and never include the message.
|
|
6
|
-
*/
|
|
7
|
-
const USAGE_LIMIT_PHRASES = [
|
|
8
|
-
"reached its usage limit",
|
|
9
|
-
"reached your usage limit",
|
|
10
|
-
"reached the usage limit",
|
|
11
|
-
// Billing titles insert "monthly", or say "hit" instead of "reached".
|
|
12
|
-
"monthly usage limit",
|
|
13
|
-
"hit your usage limit",
|
|
14
|
-
] as const;
|
|
15
|
-
|
|
16
|
-
const UNPAID_INVOICE_PHRASES = ["unpaid invoice"] as const;
|
|
17
|
-
|
|
18
|
-
export type ExpectedDeliveryFailureReason = "usage_limit" | "unpaid_invoice";
|
|
19
|
-
|
|
20
|
-
export function classifyExpectedDeliveryFailure(
|
|
21
|
-
message: string | undefined,
|
|
22
|
-
): ExpectedDeliveryFailureReason | undefined {
|
|
23
|
-
if (message === undefined || message.length === 0) {
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
const text = message.toLowerCase();
|
|
27
|
-
if (UNPAID_INVOICE_PHRASES.some(phrase => text.includes(phrase))) {
|
|
28
|
-
return "unpaid_invoice";
|
|
29
|
-
}
|
|
30
|
-
if (USAGE_LIMIT_PHRASES.some(phrase => text.includes(phrase))) {
|
|
31
|
-
return "usage_limit";
|
|
32
|
-
}
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import type { z } from "zod";
|
|
2
|
-
import { defineChannel, localDevStrict, POST } from "../channels.js";
|
|
3
|
-
import type { ChannelDefinition, ChannelHandlerArgs } from "../types.js";
|
|
4
|
-
import { tagOutcome } from "./channel-dispatch.js";
|
|
5
|
-
import type { ContinuationIdentity } from "./continuation-identity.js";
|
|
6
|
-
import { attachHostedAdmissionAdapter } from "./hosted-admission-adapter.js";
|
|
7
|
-
import { bindLocalIngressSend } from "./local-ingress.js";
|
|
8
|
-
|
|
9
|
-
type FactoryResourceChannelOptions<TEvent> = {
|
|
10
|
-
onEvent: (event: TEvent, args: ChannelHandlerArgs) => Promise<unknown> | unknown;
|
|
11
|
-
continuation?: ContinuationIdentity;
|
|
12
|
-
path?: string;
|
|
13
|
-
auth?: ChannelDefinition["auth"];
|
|
14
|
-
onStart?: ChannelDefinition["onStart"];
|
|
15
|
-
onStop?: ChannelDefinition["onStop"];
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
type FactoryResourceChannelSpec<TEvent extends { eventType: string }> = {
|
|
19
|
-
kind: string;
|
|
20
|
-
eventTypes: readonly string[];
|
|
21
|
-
eventSchema: z.ZodType<TEvent>;
|
|
22
|
-
replayDescription: string;
|
|
23
|
-
invalidError: string;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
type FactoryResourceChannelPack<TEvent> = {
|
|
27
|
-
channel: (options: FactoryResourceChannelOptions<TEvent>) => ChannelDefinition;
|
|
28
|
-
getOptions: (definition: object) => FactoryResourceChannelOptions<TEvent> | undefined;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Shared pack for Factory resource channels that have one event type, no
|
|
33
|
-
* subscription filter, and the same local-replay / hosted-admission path.
|
|
34
|
-
*/
|
|
35
|
-
export function createFactoryResourceChannel<TEvent extends { eventType: string }>(
|
|
36
|
-
spec: FactoryResourceChannelSpec<TEvent>,
|
|
37
|
-
): FactoryResourceChannelPack<TEvent> {
|
|
38
|
-
const optionsByDefinition = new WeakMap<object, FactoryResourceChannelOptions<TEvent>>();
|
|
39
|
-
|
|
40
|
-
async function dispatchEvent(input: {
|
|
41
|
-
options: FactoryResourceChannelOptions<TEvent>;
|
|
42
|
-
event: TEvent;
|
|
43
|
-
args: ChannelHandlerArgs;
|
|
44
|
-
}): Promise<Response> {
|
|
45
|
-
await input.options.onEvent(
|
|
46
|
-
input.event,
|
|
47
|
-
bindLocalIngressSend(input.args, {
|
|
48
|
-
identity: input.options.continuation,
|
|
49
|
-
kind: spec.kind,
|
|
50
|
-
eventType: input.event.eventType,
|
|
51
|
-
payload: input.event,
|
|
52
|
-
}),
|
|
53
|
-
);
|
|
54
|
-
return tagOutcome(Response.json({ ok: true }), "task");
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function channel(options: FactoryResourceChannelOptions<TEvent>): ChannelDefinition {
|
|
58
|
-
const routePath = options.path ?? "/";
|
|
59
|
-
const definition = defineChannel({
|
|
60
|
-
auth: options.auth ?? [localDevStrict()],
|
|
61
|
-
meta: {
|
|
62
|
-
kind: spec.kind,
|
|
63
|
-
factoryEventTypes: spec.eventTypes,
|
|
64
|
-
},
|
|
65
|
-
onStart: options.onStart,
|
|
66
|
-
onStop: options.onStop,
|
|
67
|
-
routes: [
|
|
68
|
-
POST(routePath, {
|
|
69
|
-
description: spec.replayDescription,
|
|
70
|
-
bodySchema: spec.eventSchema,
|
|
71
|
-
handler: async (_request, args) =>
|
|
72
|
-
dispatchEvent({
|
|
73
|
-
options,
|
|
74
|
-
event: args.body,
|
|
75
|
-
args,
|
|
76
|
-
}),
|
|
77
|
-
}),
|
|
78
|
-
],
|
|
79
|
-
});
|
|
80
|
-
optionsByDefinition.set(definition, options);
|
|
81
|
-
attachHostedAdmissionAdapter(definition, {
|
|
82
|
-
kind: spec.kind,
|
|
83
|
-
dispatch: async ({ payload, args }) => {
|
|
84
|
-
const parsed = spec.eventSchema.safeParse(payload);
|
|
85
|
-
if (!parsed.success) {
|
|
86
|
-
return Response.json({ ok: false, error: spec.invalidError }, { status: 400 });
|
|
87
|
-
}
|
|
88
|
-
return dispatchEvent({
|
|
89
|
-
options,
|
|
90
|
-
event: parsed.data,
|
|
91
|
-
args,
|
|
92
|
-
});
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
return definition;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
function getOptions(definition: object): FactoryResourceChannelOptions<TEvent> | undefined {
|
|
99
|
-
return optionsByDefinition.get(definition);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return { channel, getOptions };
|
|
103
|
-
}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Typed FileSystem throws. Every method error is a {@link PathError}
|
|
3
|
-
* so composers (`unionFs`) can rewrite `path` without scraping
|
|
4
|
-
* `error.message`.
|
|
5
|
-
*
|
|
6
|
-
* Messages stay the FileSystem contract strings. `path` is the
|
|
7
|
-
* absolute posix path the error is about (child-root on a mount,
|
|
8
|
-
* namespace path after `unionFs` remaps it).
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import path from "node:path";
|
|
12
|
-
|
|
13
|
-
function normalizeErrorPath(input: string): string {
|
|
14
|
-
const slashes = input.replace(/\\/g, "/");
|
|
15
|
-
if (slashes === "") {
|
|
16
|
-
return "/";
|
|
17
|
-
}
|
|
18
|
-
const withSlash = slashes.startsWith("/") ? slashes : `/${slashes}`;
|
|
19
|
-
const resolved = path.posix.normalize(withSlash);
|
|
20
|
-
if (resolved.length > 1 && resolved.endsWith("/")) {
|
|
21
|
-
return resolved.slice(0, -1);
|
|
22
|
-
}
|
|
23
|
-
return resolved === "." || resolved === "" ? "/" : resolved;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const ROOT_MESSAGE_PREFIX =
|
|
27
|
-
/^(not found|read-only mount|write failed|edit failed|no mount for path|delete is not supported): \/$/;
|
|
28
|
-
|
|
29
|
-
function rewritePathInMessage(message: string, from: string, to: string): string {
|
|
30
|
-
if (from === to) {
|
|
31
|
-
return message;
|
|
32
|
-
}
|
|
33
|
-
if (from === "/") {
|
|
34
|
-
return ROOT_MESSAGE_PREFIX.test(message) ? message.replace(/\/$/, to) : message;
|
|
35
|
-
}
|
|
36
|
-
return message.includes(from) ? message.split(from).join(to) : message;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Base of every FileSystem method throw. Config / factory errors
|
|
41
|
-
* (`FileSystemConfigError`, empty `overlayFs`) are not PathErrors.
|
|
42
|
-
*/
|
|
43
|
-
export class PathError extends Error {
|
|
44
|
-
readonly path: string;
|
|
45
|
-
|
|
46
|
-
constructor(path: string, message: string) {
|
|
47
|
-
super(message);
|
|
48
|
-
this.name = new.target.name;
|
|
49
|
-
this.path = normalizeErrorPath(path);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Same error at a rewritten path. `unionFs` prepends the mount
|
|
54
|
-
* prefix this way. Subclass identity and extra fields stay.
|
|
55
|
-
*/
|
|
56
|
-
withPath(path: string): this {
|
|
57
|
-
const next = normalizeErrorPath(path);
|
|
58
|
-
if (next === this.path) {
|
|
59
|
-
return this;
|
|
60
|
-
}
|
|
61
|
-
return this.recreate(next, rewritePathInMessage(this.message, this.path, next));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
protected recreate(path: string, message: string): this {
|
|
65
|
-
return new PathError(path, message) as this;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export class FileNotFoundError extends PathError {
|
|
70
|
-
constructor(path: string, message?: string) {
|
|
71
|
-
super(path, message ?? `not found: ${normalizeErrorPath(path)}`);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
protected override recreate(path: string, message: string): this {
|
|
75
|
-
return new FileNotFoundError(path, message) as this;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export class ReadOnlyMountError extends PathError {
|
|
80
|
-
constructor(path: string, message?: string) {
|
|
81
|
-
super(path, message ?? `read-only mount: ${normalizeErrorPath(path)}`);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
protected override recreate(path: string, message: string): this {
|
|
85
|
-
return new ReadOnlyMountError(path, message) as this;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export class NoMountError extends PathError {
|
|
90
|
-
constructor(path: string, message?: string) {
|
|
91
|
-
super(path, message ?? `no mount for path: ${normalizeErrorPath(path)}`);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
protected override recreate(path: string, message: string): this {
|
|
95
|
-
return new NoMountError(path, message) as this;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export class WriteFailedError extends PathError {
|
|
100
|
-
constructor(path: string, message?: string) {
|
|
101
|
-
super(path, message ?? `write failed: ${normalizeErrorPath(path)}`);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
protected override recreate(path: string, message: string): this {
|
|
105
|
-
return new WriteFailedError(path, message) as this;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export class DeleteNotSupportedError extends PathError {
|
|
110
|
-
constructor(path: string, message?: string) {
|
|
111
|
-
super(path, message ?? `delete is not supported: ${normalizeErrorPath(path)}`);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
protected override recreate(path: string, message: string): this {
|
|
115
|
-
return new DeleteNotSupportedError(path, message) as this;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Exact-edit contract failures (`oldText is empty`, uniqueness).
|
|
121
|
-
* `message` is the contract string; it does not embed `path`.
|
|
122
|
-
*/
|
|
123
|
-
export class EditError extends PathError {
|
|
124
|
-
protected override recreate(path: string, message: string): this {
|
|
125
|
-
return new EditError(path, message) as this;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
export class InvalidGrepPatternError extends PathError {
|
|
130
|
-
readonly pattern: string;
|
|
131
|
-
|
|
132
|
-
constructor(pattern: string, path = "/", message?: string) {
|
|
133
|
-
super(path, message ?? `invalid grep pattern: ${pattern}`);
|
|
134
|
-
this.pattern = pattern;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
protected override recreate(path: string, message: string): this {
|
|
138
|
-
return new InvalidGrepPatternError(this.pattern, path, message) as this;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export function isFileNotFoundError(error: unknown): boolean {
|
|
143
|
-
return (
|
|
144
|
-
error instanceof FileNotFoundError ||
|
|
145
|
-
(error instanceof Error && error.message.startsWith("not found:"))
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export function isInvalidGrepPatternError(error: unknown): boolean {
|
|
150
|
-
return (
|
|
151
|
-
error instanceof InvalidGrepPatternError ||
|
|
152
|
-
(error instanceof Error && error.message.startsWith("invalid grep pattern:"))
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
const CONTRACT_PATH_LABELS = [
|
|
157
|
-
"not found: ",
|
|
158
|
-
"read-only mount: ",
|
|
159
|
-
"write failed: ",
|
|
160
|
-
"edit failed: ",
|
|
161
|
-
"no mount for path: ",
|
|
162
|
-
"delete is not supported: ",
|
|
163
|
-
] as const;
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Remap a child throw onto a mount prefix. Typed {@link PathError}
|
|
167
|
-
* keeps its class and rewrites `path`. Untyped `Error` still gets
|
|
168
|
-
* a best-effort message rewrite so older custom trees keep working.
|
|
169
|
-
*/
|
|
170
|
-
export function remapPathError(error: unknown, prefix: string): Error {
|
|
171
|
-
if (error instanceof PathError) {
|
|
172
|
-
return error.withPath(joinMountPath(error.path, prefix));
|
|
173
|
-
}
|
|
174
|
-
if (!(error instanceof Error)) {
|
|
175
|
-
return new PathError(prefix, String(error));
|
|
176
|
-
}
|
|
177
|
-
return rewriteUntypedMountError(error, prefix);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
function joinMountPath(childPath: string, prefix: string): string {
|
|
181
|
-
const mount = normalizeErrorPath(prefix);
|
|
182
|
-
const child = normalizeErrorPath(childPath);
|
|
183
|
-
if (mount === "/") {
|
|
184
|
-
return child;
|
|
185
|
-
}
|
|
186
|
-
if (child === "/") {
|
|
187
|
-
return mount;
|
|
188
|
-
}
|
|
189
|
-
return `${mount}${child}`;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
function rewriteUntypedMountError(error: Error, prefix: string): Error {
|
|
193
|
-
for (const label of CONTRACT_PATH_LABELS) {
|
|
194
|
-
if (!error.message.startsWith(label)) {
|
|
195
|
-
continue;
|
|
196
|
-
}
|
|
197
|
-
const childPath = error.message.slice(label.length);
|
|
198
|
-
const next = `${label}${joinMountPath(childPath, prefix)}`;
|
|
199
|
-
if (next === error.message) {
|
|
200
|
-
return error;
|
|
201
|
-
}
|
|
202
|
-
const rewritten = new Error(next);
|
|
203
|
-
rewritten.name = error.name;
|
|
204
|
-
return rewritten;
|
|
205
|
-
}
|
|
206
|
-
return error;
|
|
207
|
-
}
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model-facing strings that match Cursor SDK native tool output
|
|
3
|
-
* (LocalLsExecutor / read / grep / glob formatters).
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { posix } from "node:path";
|
|
7
|
-
|
|
8
|
-
import type { GrepUnionResult } from "../../filesystem.js";
|
|
9
|
-
import type { LsDirectoryTreeNode } from "./walk.js";
|
|
10
|
-
|
|
11
|
-
const LS_RENDER_CHARACTER_BUDGET = 10_000;
|
|
12
|
-
const GLOB_TOTAL_CHARACTER_BUDGET = 5_000;
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Number already-sliced Read content. `FileSystem.read` applies offset/
|
|
16
|
-
* limit; do not window again or line numbers restart at 1.
|
|
17
|
-
*/
|
|
18
|
-
export function slicedReadStartLine(totalLines: number, offset?: number): number {
|
|
19
|
-
if (offset === undefined) {
|
|
20
|
-
return 1;
|
|
21
|
-
}
|
|
22
|
-
if (offset < 0) {
|
|
23
|
-
return Math.max(1, totalLines + offset + 1);
|
|
24
|
-
}
|
|
25
|
-
return Math.max(1, offset);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export function formatNumberedLines(
|
|
29
|
-
content: string,
|
|
30
|
-
options: {
|
|
31
|
-
offset?: number;
|
|
32
|
-
limit?: number;
|
|
33
|
-
/** When set, `content` is already the window; number from this line. */
|
|
34
|
-
startLine?: number;
|
|
35
|
-
totalLines?: number;
|
|
36
|
-
} = {},
|
|
37
|
-
): string {
|
|
38
|
-
const lines = content === "" ? [] : content.split("\n");
|
|
39
|
-
if (lines.length === 0) {
|
|
40
|
-
return "";
|
|
41
|
-
}
|
|
42
|
-
const { offset, limit, startLine } = options;
|
|
43
|
-
let start = 1;
|
|
44
|
-
let window = lines;
|
|
45
|
-
const total = options.totalLines ?? lines.length;
|
|
46
|
-
if (startLine !== undefined) {
|
|
47
|
-
start = startLine;
|
|
48
|
-
} else if (offset !== undefined || limit !== undefined) {
|
|
49
|
-
const effectiveOffset = offset ?? 1;
|
|
50
|
-
const effectiveLimit = limit ?? (effectiveOffset < 0 ? Math.abs(effectiveOffset) : total);
|
|
51
|
-
start =
|
|
52
|
-
effectiveOffset < 0 ? Math.max(1, total + effectiveOffset + 1) : Math.max(1, effectiveOffset);
|
|
53
|
-
const end = Math.min(total, start + effectiveLimit - 1);
|
|
54
|
-
window = lines.slice(start - 1, end);
|
|
55
|
-
}
|
|
56
|
-
return renderNumberedWindow(window, start, total);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function renderNumberedWindow(window: readonly string[], start: number, total: number): string {
|
|
60
|
-
const numbered = window.map((line, index) => `${String(start + index).padStart(6, " ")}|${line}`);
|
|
61
|
-
let result = numbered.join("\n");
|
|
62
|
-
if (start > 1) {
|
|
63
|
-
result = `... ${start - 1} ${start - 1 === 1 ? "line" : "lines"} not shown ...\n${result}`;
|
|
64
|
-
}
|
|
65
|
-
const end = start + window.length - 1;
|
|
66
|
-
if (end < total) {
|
|
67
|
-
result += `\n... ${total - end} ${total - end === 1 ? "line" : "lines"} not shown ...`;
|
|
68
|
-
}
|
|
69
|
-
return result;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function formatLsTree(result: LsDirectoryTreeNode): string {
|
|
73
|
-
if (
|
|
74
|
-
result.childrenWereProcessed &&
|
|
75
|
-
result.childrenDirs.length === 0 &&
|
|
76
|
-
result.childrenFiles.length === 0
|
|
77
|
-
) {
|
|
78
|
-
const trailingSlash = result.absPath.endsWith("/") ? "" : "/";
|
|
79
|
-
return `${result.absPath}${trailingSlash}\n... no children found ...`;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const characterBudget = LS_RENDER_CHARACTER_BUDGET;
|
|
83
|
-
let toolResponse = renderDirectoryTree(result).result;
|
|
84
|
-
if (toolResponse.length > characterBudget) {
|
|
85
|
-
toolResponse = renderDirectoryTree(result, true, 0).result;
|
|
86
|
-
if (toolResponse.length > characterBudget) {
|
|
87
|
-
toolResponse = renderDirectoryTree(result, false, 0).result;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const notes: string[] = [];
|
|
92
|
-
if (!result.childrenWereProcessed || toolResponse.length > characterBudget) {
|
|
93
|
-
if (toolResponse.length > characterBudget) {
|
|
94
|
-
toolResponse = toolResponse.slice(0, characterBudget);
|
|
95
|
-
const lastNewlineIndex = toolResponse.lastIndexOf("\n");
|
|
96
|
-
if (lastNewlineIndex > 0) {
|
|
97
|
-
toolResponse = toolResponse.slice(0, lastNewlineIndex + 1);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
toolResponse += " ...\n";
|
|
101
|
-
notes.push(
|
|
102
|
-
`target_directory is too large (either too many children or their names are too long).` +
|
|
103
|
-
` Immediate children were truncated. Try doing more specific search or use the script tool.`,
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
if (notes.length === 1) {
|
|
107
|
-
toolResponse += `\nNote: ${notes[0]}`;
|
|
108
|
-
}
|
|
109
|
-
return toolResponse;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
function renderDirectoryTree(
|
|
113
|
-
rootDirectory: LsDirectoryTreeNode,
|
|
114
|
-
renderExtensionCounts = true,
|
|
115
|
-
renderDepthLimit?: number,
|
|
116
|
-
): { result: string } {
|
|
117
|
-
function render(dir: LsDirectoryTreeNode, depth: number): string {
|
|
118
|
-
const indent = " ".repeat(depth);
|
|
119
|
-
let result: string;
|
|
120
|
-
if (depth === 0) {
|
|
121
|
-
const trailingSep = dir.absPath.endsWith("/") ? "" : "/";
|
|
122
|
-
result = `${dir.absPath}${trailingSep}\n`;
|
|
123
|
-
} else {
|
|
124
|
-
result = `${indent}- ${posix.basename(dir.absPath)}/\n`;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
type LsChild =
|
|
128
|
-
| { type: "file"; name: string }
|
|
129
|
-
| { type: "dir"; name: string; dir: LsDirectoryTreeNode };
|
|
130
|
-
const allChildren: LsChild[] = [
|
|
131
|
-
...dir.childrenFiles.map((file): LsChild => ({
|
|
132
|
-
type: "file",
|
|
133
|
-
name: file.name,
|
|
134
|
-
})),
|
|
135
|
-
...dir.childrenDirs.map((childDir): LsChild => ({
|
|
136
|
-
type: "dir",
|
|
137
|
-
name: posix.basename(childDir.absPath),
|
|
138
|
-
dir: childDir,
|
|
139
|
-
})),
|
|
140
|
-
];
|
|
141
|
-
allChildren.sort((left, right) => left.name.localeCompare(right.name));
|
|
142
|
-
|
|
143
|
-
const childIndent = " ".repeat(depth + 1);
|
|
144
|
-
for (const child of allChildren) {
|
|
145
|
-
if (child.type === "file") {
|
|
146
|
-
result += `${childIndent}- ${child.name}\n`;
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
const childDir = child.dir;
|
|
150
|
-
if (
|
|
151
|
-
childDir.childrenWereProcessed &&
|
|
152
|
-
(renderDepthLimit === undefined || depth < renderDepthLimit)
|
|
153
|
-
) {
|
|
154
|
-
result += render(childDir, depth + 1);
|
|
155
|
-
continue;
|
|
156
|
-
}
|
|
157
|
-
const extensionCounts = Object.entries(childDir.fullSubtreeExtensionCounts);
|
|
158
|
-
if (extensionCounts.length > 0 && renderExtensionCounts) {
|
|
159
|
-
const sorted = [...extensionCounts].sort(([, countA], [, countB]) => countB - countA);
|
|
160
|
-
const shown = sorted.slice(0, 3);
|
|
161
|
-
const summary = shown
|
|
162
|
-
.map(([ext, count]) => `${count} *${ext === "" ? "" : ext}`)
|
|
163
|
-
.join(", ");
|
|
164
|
-
result += `${childIndent}- ${child.name}/ (${childDir.numFiles} files: ${summary})\n`;
|
|
165
|
-
} else {
|
|
166
|
-
result += `${childIndent}- ${child.name}/\n`;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return result;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
return { result: render(rootDirectory, 0) };
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export function formatGlobOutput(dir: string, files: readonly string[]): string {
|
|
176
|
-
const normalizedRoot = dir.replace(/\/+$/, "") || "/";
|
|
177
|
-
const prefix = normalizedRoot === "/" ? "/" : `${normalizedRoot}/`;
|
|
178
|
-
const relative = files.map(filePath =>
|
|
179
|
-
filePath.startsWith(prefix) ? filePath.slice(prefix.length) : filePath,
|
|
180
|
-
);
|
|
181
|
-
if (relative.length === 0) {
|
|
182
|
-
return `Result of search in '${dir}': 0 files found\n`;
|
|
183
|
-
}
|
|
184
|
-
let output = `Result of search in '${dir}' (total ${relative.length} file${relative.length === 1 ? "" : "s"}):\n`;
|
|
185
|
-
for (let i = 0; i < relative.length; i++) {
|
|
186
|
-
const file = relative[i] ?? "";
|
|
187
|
-
if (output.length + file.length > GLOB_TOTAL_CHARACTER_BUDGET) {
|
|
188
|
-
output += `... ${relative.length - i} more files ... (Do a more specific search if needed)\n`;
|
|
189
|
-
break;
|
|
190
|
-
}
|
|
191
|
-
output += `- ${file}\n`;
|
|
192
|
-
}
|
|
193
|
-
return output;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
export function formatGrepOutput(union: GrepUnionResult | undefined): string {
|
|
197
|
-
if (union === undefined) {
|
|
198
|
-
return "No matches found";
|
|
199
|
-
}
|
|
200
|
-
if (union.type === "files") {
|
|
201
|
-
if (union.output.files.length === 0) {
|
|
202
|
-
return "No files with matches found";
|
|
203
|
-
}
|
|
204
|
-
return union.output.files.join("\n");
|
|
205
|
-
}
|
|
206
|
-
if (union.type === "count") {
|
|
207
|
-
if (union.output.counts.length === 0) {
|
|
208
|
-
return "No matches found";
|
|
209
|
-
}
|
|
210
|
-
return union.output.counts.map(row => `${row.file}:${row.count}`).join("\n");
|
|
211
|
-
}
|
|
212
|
-
if (union.output.matches.length === 0) {
|
|
213
|
-
return "No matches found";
|
|
214
|
-
}
|
|
215
|
-
const lines: string[] = [];
|
|
216
|
-
let currentFile: string | undefined;
|
|
217
|
-
for (const match of union.output.matches) {
|
|
218
|
-
if (match.file !== currentFile) {
|
|
219
|
-
if (currentFile !== undefined) {
|
|
220
|
-
lines.push("");
|
|
221
|
-
}
|
|
222
|
-
currentFile = match.file;
|
|
223
|
-
lines.push(match.file);
|
|
224
|
-
}
|
|
225
|
-
const before = match.beforeContext ?? [];
|
|
226
|
-
const matchLine = match.lineNumber ?? 1;
|
|
227
|
-
before.forEach((line, index) => {
|
|
228
|
-
lines.push(` ${matchLine - before.length + index}-${line}`);
|
|
229
|
-
});
|
|
230
|
-
lines.push(` ${match.lineNumber ?? ""}:${match.line}`);
|
|
231
|
-
(match.afterContext ?? []).forEach((line, index) => {
|
|
232
|
-
lines.push(` ${matchLine + 1 + index}-${line}`);
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
return lines.join("\n");
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
export function formatWriteOutput(path: string): string {
|
|
239
|
-
return `Wrote contents to ${path}`;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
export function formatStrReplaceOutput(args: {
|
|
243
|
-
path: string;
|
|
244
|
-
replaceAll: boolean;
|
|
245
|
-
occurrencesModified: number;
|
|
246
|
-
}): string {
|
|
247
|
-
if (!args.replaceAll) {
|
|
248
|
-
return `The file ${args.path} has been updated.`;
|
|
249
|
-
}
|
|
250
|
-
const occurrenceLabel = args.occurrencesModified === 1 ? "occurrence" : "occurrences";
|
|
251
|
-
const verb = args.occurrencesModified === 1 ? "has" : "have";
|
|
252
|
-
return `${args.occurrencesModified} ${occurrenceLabel} in file ${args.path} ${verb} been updated.`;
|
|
253
|
-
}
|