@cursor/bdk 0.2.15 → 0.2.17
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/README.md +2 -2
- package/dist/bin/agent-serve.js +41 -3
- package/dist/channels/github/index.d.ts +1 -1
- package/dist/channels/github/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +1 -1
- package/dist/channels/slack/agentic-delivery.js +4 -4
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +7 -4
- package/dist/channels/slack/channel-watch.d.ts +2 -0
- package/dist/channels/slack/channel-watch.d.ts.map +1 -1
- package/dist/channels/slack/channel-watch.js +7 -3
- package/dist/channels/slack/dispatch.d.ts +3 -0
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +6 -2
- package/dist/channels/slack/thread-context.d.ts.map +1 -1
- package/dist/channels/slack/thread-context.js +58 -26
- package/dist/channels/slack/types.d.ts +19 -0
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/docs/404.html +3 -3
- package/dist/docs/assets/{app.CRMxF0qX.js → app.CUNuFTSm.js} +4 -4
- package/dist/docs/assets/{building-with-agents.md.Bi9CQ-bR.js → building-with-agents.md.FZXrY8Nk.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.3c56VHUt.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.C4BiQe53.js → VPLocalSearchBox.Dez74k0W.js} +1 -1
- package/dist/docs/assets/chunks/{arc.D1TA2Mxn.js → arc.CJ3FhK7H.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CA-hBJCN.js → architectureDiagram-Q4EWVU46.CfUdbHsa.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.CzsSgiab.js → baseUniq.D93LawU9.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.sxrH_f0l.js → blockDiagram-DXYQGD6D.Zvsd6UHP.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.D_Z3mqAl.js → c4Diagram-AHTNJAMY.CGX5xZ9d.js} +1 -1
- package/dist/docs/assets/chunks/channel.S8-FFjmE.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.BS6_uTUf.js → chunk-4BX2VUAB.CCIf0QCo.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.D-URAeTU.js → chunk-4TB4RGXK.D_N1RPyi.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.b4SZc5kO.js → chunk-55IACEB6.B1oecjzx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DLKEEDkN.js → chunk-EDXVE4YY.BzUNVPGX.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.3SyQHgpY.js → chunk-FMBD7UC4.DheI8WSO.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.DBKKaFeS.js → chunk-OYMX7WX6.Bg4iL0sM.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BhCYeR7H.js → chunk-QZHKN3VN.CSQjDhAD.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.Cpg0VgI7.js → chunk-YZCP3GAM.BDdxnPU4.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BB98tFjZ.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BB98tFjZ.js +1 -0
- package/dist/docs/assets/chunks/clone.B98w8OEv.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.4q0YNZN6.js → cose-bilkent-S5V4N54A.AT0weO8r.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.Bk_CcQPr.js → dagre-KV5264BT.CJ30TxV0.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.CgreoM_Z.js → diagram-5BDNPKRD.KtE--1fW.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DlZGpm6W.js → diagram-G4DWMVQ6.BFGygSUQ.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BxtXxgIR.js → diagram-MMDJMWI5.BLU-79eb.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.DSzlJp2D.js → diagram-TYMM5635.CdjfJdVG.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BN1YUmEV.js → erDiagram-SMLLAGMA.Dj1Iwypl.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.B61NGNYu.js → flowDiagram-DWJPFMVM.BXqj_Su2.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DR-tto3M.js → ganttDiagram-T4ZO3ILL.CNfgGSst.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CBPs2W_2.js → gitGraphDiagram-UUTBAWPF.2tgvFDBr.js} +1 -1
- package/dist/docs/assets/chunks/{graph.DmlaqzCE.js → graph.CWHZMxx6.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.obPv-fFg.js → infoDiagram-42DDH7IO.DhLIK8m1.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.CXHTUcM3.js → ishikawaDiagram-UXIWVN3A.BIN11n1G.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BoVHerYZ.js → journeyDiagram-VCZTEJTY.BARmNJ0n.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CfYmPHZg.js → kanban-definition-6JOO6SKY.BrTJYFyF.js} +1 -1
- package/dist/docs/assets/chunks/{layout.621UdAhB.js → layout.CPZIIywK.js} +1 -1
- package/dist/docs/assets/chunks/{linear.Cz_zRKjr.js → linear.DTpmzI5S.js} +1 -1
- package/dist/docs/assets/chunks/{min.ON4GjCH7.js → min.BBLQmXwZ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.DLPMLJlv.js → mindmap-definition-QFDTVHPH.5qkWJvdl.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.BFp11AYt.js → pieDiagram-DEJITSTG.-4wufv_f.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.ChX7xo6B.js → quadrantDiagram-34T5L4WZ.C0jrp1-8.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DbKtHG_Q.js → requirementDiagram-MS252O5E.DUDpANfe.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.Spw8tv-7.js → sankeyDiagram-XADWPNL6.74Lvg6Gu.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.BYso9LlE.js → sequenceDiagram-FGHM5R23.BHDIH286.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.D8l54jqW.js → stateDiagram-FHFEXIEX.Dr-HIuLb.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DW_lwpZY.js +1 -0
- package/dist/docs/assets/chunks/{theme.m_Ethbkv.js → theme.H8zSBhlM.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BLdhhyy9.js → timeline-definition-GMOUNBTQ.GtyCaSiL.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CyGT2F_P.js → vennDiagram-DHZGUBPP.DLId0rxH.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.C5JJS3bh.js → wardley-RL74JXVD.CSlECTHi.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.p_Sz9p1i.js → wardleyDiagram-NUSXRM2D.CI6mGYNG.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.DtXsNUaf.js → xychartDiagram-5P7HB3ND.CG1n865F.js} +1 -1
- package/dist/docs/assets/{deployment.md.hKKN9I4c.js → deployment.md.ajc3VM0m.js} +1 -1
- package/dist/docs/assets/{guides_migrate.md.sCAvvlC6.js → guides_migrate.md.DZBL7dqT.js} +1 -1
- package/dist/docs/assets/index.md.CHAFTf6m.js +27 -0
- package/dist/docs/assets/index.md.CHAFTf6m.lean.js +1 -0
- package/dist/docs/assets/{quickstart.md.CduLGBAB.js → quickstart.md.D8JDfkKO.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.DrtLxWgR.js → reference_agent-config.md.DYA6ge6t.js} +7 -4
- package/dist/docs/assets/{reference_agent-config.md.DrtLxWgR.lean.js → reference_agent-config.md.DYA6ge6t.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.BYNIHwbi.js → reference_cli.md.Bt3sAfat.js} +3 -3
- package/dist/docs/assets/{reference_evals.md.if--BLd0.js → reference_evals.md.Ccwp4x3o.js} +3 -3
- package/dist/docs/assets/{reference_evals.md.if--BLd0.lean.js → reference_evals.md.Ccwp4x3o.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.CrqhTv6S.js → reference_http-api.md.Dji-DD_Z.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md.C2JMRh7p.js → reference_project-layout.md.SNzIvnmC.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/building-with-agents.md +4 -4
- package/dist/docs/deployment.html +37 -37
- package/dist/docs/deployment.md +3 -4
- package/dist/docs/evals.html +36 -36
- package/dist/docs/guides/agent-to-agent.html +36 -36
- package/dist/docs/guides/bitbucket.html +36 -36
- package/dist/docs/guides/cloud-agents.html +36 -36
- package/dist/docs/guides/convert-automation.html +36 -36
- package/dist/docs/guides/github.html +36 -36
- package/dist/docs/guides/gitlab.html +36 -36
- package/dist/docs/guides/grokbot-agents.html +36 -36
- package/dist/docs/guides/hooks.html +36 -36
- package/dist/docs/guides/improve.html +36 -36
- package/dist/docs/guides/jev.html +36 -36
- package/dist/docs/guides/mcp-oauth.html +36 -36
- package/dist/docs/guides/migrate.html +37 -37
- package/dist/docs/guides/migrate.md +3 -3
- package/dist/docs/guides/opentelemetry.html +36 -36
- package/dist/docs/guides/slack.html +36 -36
- package/dist/docs/guides/webhooks.html +36 -36
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +36 -36
- package/dist/docs/index.html +38 -38
- package/dist/docs/index.md +2 -2
- package/dist/docs/llms-full.txt +64 -28
- package/dist/docs/llms.txt +2 -2
- package/dist/docs/quickstart.html +37 -37
- package/dist/docs/quickstart.md +3 -3
- package/dist/docs/reference/agent-config.html +42 -39
- package/dist/docs/reference/agent-config.md +26 -1
- package/dist/docs/reference/artifacts.html +36 -36
- package/dist/docs/reference/channels.html +36 -36
- package/dist/docs/reference/cli.html +39 -39
- package/dist/docs/reference/cli.md +3 -3
- package/dist/docs/reference/connections.html +36 -36
- package/dist/docs/reference/evals.html +38 -38
- package/dist/docs/reference/evals.md +13 -0
- package/dist/docs/reference/extensions.html +36 -36
- package/dist/docs/reference/hooks.html +36 -36
- package/dist/docs/reference/http-api.html +37 -37
- package/dist/docs/reference/http-api.md +4 -4
- package/dist/docs/reference/instructions.html +36 -36
- package/dist/docs/reference/playground.html +36 -36
- package/dist/docs/reference/project-layout.html +37 -37
- package/dist/docs/reference/project-layout.md +2 -3
- package/dist/docs/reference/prompt.html +36 -36
- package/dist/docs/reference/schedules.html +36 -36
- package/dist/docs/reference/sessions.html +36 -36
- package/dist/docs/reference/skills.html +36 -36
- package/dist/docs/reference/subagents.html +36 -36
- package/dist/docs/reference/tools.html +36 -36
- package/dist/docs/templates/agentic-owners.html +36 -36
- package/dist/docs/templates/grokbot-agents.html +36 -36
- package/dist/docs/templates/security-reviewer.html +36 -36
- package/dist/docs/templates/thermo-quality-review.html +36 -36
- package/dist/docs/templates/thermo-review.html +36 -36
- package/dist/docs/templates/triage.html +36 -36
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +4 -8
- package/dist/internal/cli-convert-automation.js +9 -19
- package/dist/internal/cli-deploy.d.ts +1 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +4 -3
- package/dist/internal/cli-init-grokbot.d.ts +29 -0
- package/dist/internal/cli-init-grokbot.d.ts.map +1 -0
- package/dist/internal/cli-init-grokbot.js +181 -0
- package/dist/internal/cli-slack.js +1 -1
- package/dist/internal/comment-safe.d.ts +8 -0
- package/dist/internal/comment-safe.d.ts.map +1 -0
- package/dist/internal/comment-safe.js +12 -0
- package/dist/internal/convert-automation/convert-workflow.d.ts.map +1 -1
- package/dist/internal/convert-automation/convert-workflow.js +2 -14
- package/dist/internal/convert-grokbot/answers.d.ts +127 -0
- package/dist/internal/convert-grokbot/answers.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/answers.js +443 -0
- package/dist/internal/convert-grokbot/bot.d.ts +50 -0
- package/dist/internal/convert-grokbot/bot.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/bot.js +72 -0
- package/dist/internal/convert-grokbot/checks.d.ts +26 -0
- package/dist/internal/convert-grokbot/checks.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/checks.js +170 -0
- package/dist/internal/convert-grokbot/convert.d.ts +60 -0
- package/dist/internal/convert-grokbot/convert.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/convert.js +470 -0
- package/dist/internal/convert-grokbot/handoff.d.ts +44 -0
- package/dist/internal/convert-grokbot/handoff.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/handoff.js +160 -0
- package/dist/internal/convert-grokbot/recipe.d.ts +61 -0
- package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/recipe.js +94 -0
- package/dist/internal/convert-grokbot/routine.d.ts +51 -0
- package/dist/internal/convert-grokbot/routine.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/routine.js +128 -0
- package/dist/internal/convert-grokbot/slack.d.ts +28 -0
- package/dist/internal/convert-grokbot/slack.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/slack.js +50 -0
- package/dist/internal/deploy-client.d.ts +0 -2
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +2 -11
- package/dist/internal/deploy-manifest.d.ts +6 -0
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +3 -0
- package/dist/internal/discovery/names.d.ts +2 -0
- package/dist/internal/discovery/names.d.ts.map +1 -1
- package/dist/internal/discovery/names.js +2 -0
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +1 -3
- package/dist/internal/eval-judge-model.d.ts +10 -5
- package/dist/internal/eval-judge-model.d.ts.map +1 -1
- package/dist/internal/eval-judge-model.js +36 -25
- package/dist/internal/filesystem/subagent-inherit.d.ts +39 -0
- package/dist/internal/filesystem/subagent-inherit.d.ts.map +1 -0
- package/dist/internal/filesystem/subagent-inherit.js +96 -0
- package/dist/internal/filesystem/tools.d.ts +6 -0
- package/dist/internal/filesystem/tools.d.ts.map +1 -1
- package/dist/internal/filesystem/tools.js +38 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +24 -1
- package/dist/internal/hosting.d.ts +1 -1
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +7 -3
- package/dist/internal/init-interview.d.ts +3 -5
- package/dist/internal/init-interview.d.ts.map +1 -1
- package/dist/internal/init-interview.js +15 -88
- package/dist/internal/init-project.d.ts +13 -0
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +30 -37
- package/dist/internal/init-scaffold.d.ts +11 -0
- package/dist/internal/init-scaffold.d.ts.map +1 -1
- package/dist/internal/init-scaffold.js +48 -14
- package/dist/internal/interview/agent-questions.d.ts +19 -0
- package/dist/internal/interview/agent-questions.d.ts.map +1 -0
- package/dist/internal/interview/agent-questions.js +120 -0
- package/dist/internal/interview/question.d.ts +82 -0
- package/dist/internal/interview/question.d.ts.map +1 -0
- package/dist/internal/interview/question.js +198 -0
- package/dist/internal/local-control-plane.d.ts.map +1 -1
- package/dist/internal/local-control-plane.js +5 -1
- package/dist/internal/otel/collector.d.ts +2 -0
- package/dist/internal/otel/collector.d.ts.map +1 -1
- package/dist/internal/otel/collector.js +4 -0
- package/dist/internal/peer-connections.d.ts +6 -0
- package/dist/internal/peer-connections.d.ts.map +1 -1
- package/dist/internal/peer-connections.js +9 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +2 -1
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +38 -14
- package/dist/internal/sdk-subagent-inherit-support.d.ts +9 -0
- package/dist/internal/sdk-subagent-inherit-support.d.ts.map +1 -0
- package/dist/internal/sdk-subagent-inherit-support.js +89 -0
- package/dist/internal/session-engine.d.ts +13 -0
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +59 -11
- package/dist/internal/{convert-automation/slug.d.ts → slug.d.ts} +4 -1
- package/dist/internal/slug.d.ts.map +1 -0
- package/dist/internal/{convert-automation/slug.js → slug.js} +11 -1
- package/dist/playground/assets/index-7fVUOA5l.css +1 -0
- package/dist/playground/assets/{index-DCsq6f_I.js → index-U3TRnwAP.js} +43 -43
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +10 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +4 -4
- package/docs/building-with-agents.md +4 -4
- package/docs/deployment.md +3 -4
- package/docs/guides/migrate.md +3 -3
- package/docs/quickstart.md +3 -3
- package/docs/reference/agent-config.md +26 -1
- package/docs/reference/cli.md +3 -3
- package/docs/reference/evals.md +13 -0
- package/docs/reference/http-api.md +4 -4
- package/docs/reference/project-layout.md +2 -3
- package/package.json +5 -4
- package/schemas/grokbot-answers.schema.json +343 -0
- package/skills/create-agent/SKILL.md +7 -5
- package/templates/agentic-owners/bot/lib/owners/handles.ts +1 -1
- package/templates/agentic-owners/bot/lib/owners/matching.ts +20 -9
- package/dist/docs/assets/chunks/@localSearchIndexroot.BZwvb2LN.js +0 -1
- package/dist/docs/assets/chunks/channel.D7DtboxW.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.irslOV8B.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.irslOV8B.js +0 -1
- package/dist/docs/assets/chunks/clone.DosLeDYL.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CAYMmzGj.js +0 -1
- package/dist/docs/assets/index.md.BIBHIQtU.js +0 -27
- package/dist/docs/assets/index.md.BIBHIQtU.lean.js +0 -1
- package/dist/internal/convert-automation/slug.d.ts.map +0 -1
- package/dist/playground/assets/index-BVYWBxLU.css +0 -1
- /package/dist/docs/assets/{building-with-agents.md.Bi9CQ-bR.lean.js → building-with-agents.md.FZXrY8Nk.lean.js} +0 -0
- /package/dist/docs/assets/{deployment.md.hKKN9I4c.lean.js → deployment.md.ajc3VM0m.lean.js} +0 -0
- /package/dist/docs/assets/{guides_migrate.md.sCAvvlC6.lean.js → guides_migrate.md.DZBL7dqT.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.CduLGBAB.lean.js → quickstart.md.D8JDfkKO.lean.js} +0 -0
- /package/dist/docs/assets/{reference_cli.md.BYNIHwbi.lean.js → reference_cli.md.Bt3sAfat.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.CrqhTv6S.lean.js → reference_http-api.md.Dji-DD_Z.lean.js} +0 -0
- /package/dist/docs/assets/{reference_project-layout.md.C2JMRh7p.lean.js → reference_project-layout.md.SNzIvnmC.lean.js} +0 -0
|
@@ -33,8 +33,9 @@ import { describeError, describeErrorCode } from "./describe-error.js";
|
|
|
33
33
|
import { isDevMode } from "./dev-mode.js";
|
|
34
34
|
import { EventLogStore } from "./event-log.js";
|
|
35
35
|
import { TurnEventMapper } from "./event-mapper.js";
|
|
36
|
+
import { createRootSubagentInherit, } from "./filesystem/subagent-inherit.js";
|
|
36
37
|
import { applyWebScratchUpdate, ingestHostAgentToolsScratch, remapScratchPaths, } from "./filesystem/scratch.js";
|
|
37
|
-
import { fileSystemTool, hostFileToolsFromAuthored, rootFileToolsFromAuthored, synthesizeFileSystemTools, } from "./filesystem/tools.js";
|
|
38
|
+
import { fileSystemTool, hostFileToolsFromAuthored, isSynthesizedFileSystemToolName, rootFileToolsFromAuthored, runWithFileSystem, synthesizeFileSystemTools, } from "./filesystem/tools.js";
|
|
38
39
|
import { selectFrameworkStorageDefinition } from "./framework-storage-selection.js";
|
|
39
40
|
import { createHostFilesApi } from "./host-files.js";
|
|
40
41
|
import { createHostKvApi } from "./host-kv.js";
|
|
@@ -394,6 +395,19 @@ export class SessionEngine {
|
|
|
394
395
|
return (this.project.agent.connections.find((item) => item.name === name) ??
|
|
395
396
|
this.project.agent.hostConnections?.find((item) => item.name === name));
|
|
396
397
|
}
|
|
398
|
+
/**
|
|
399
|
+
* The agent that advertised-tool listing sees. A symbolic connection serve
|
|
400
|
+
* never resolved (a peer under `--mode single`) is left out, as it is from
|
|
401
|
+
* each turn's MCP servers, instead of failing every listing.
|
|
402
|
+
*/
|
|
403
|
+
advertisingAgent() {
|
|
404
|
+
const { agent } = this.project;
|
|
405
|
+
const resolved = new Set(this.resolvedConnections.map(({ name }) => name));
|
|
406
|
+
return {
|
|
407
|
+
...agent,
|
|
408
|
+
connections: agent.connections.filter(({ name, transport }) => !isSymbolicConnectionTransport(transport) || resolved.has(name)),
|
|
409
|
+
};
|
|
410
|
+
}
|
|
397
411
|
setCloudServerToolsConnection(connection, resolveHeaders) {
|
|
398
412
|
this.cloudServerToolsConnection = connection;
|
|
399
413
|
this.cloudServerToolsHeaders = resolveHeaders;
|
|
@@ -1674,11 +1688,14 @@ export class SessionEngine {
|
|
|
1674
1688
|
try {
|
|
1675
1689
|
if (record.workspaceOverride === undefined &&
|
|
1676
1690
|
this.project.agent.local?.workspaceDir !== undefined) {
|
|
1691
|
+
const endPrewarm = this.startTurnPhase(record, turnId, "prewarm");
|
|
1677
1692
|
await this.prewarmSharedWorkspace();
|
|
1693
|
+
endPrewarm();
|
|
1678
1694
|
}
|
|
1679
1695
|
// Scaffold agent files into the session workspace even when the harness
|
|
1680
1696
|
// cwd is overridden (e.g. a PR worktree).
|
|
1681
1697
|
if (!this.hasRootOverride()) {
|
|
1698
|
+
const endWorkspace = this.startTurnPhase(record, turnId, "workspace");
|
|
1682
1699
|
await materializeWorkspace({
|
|
1683
1700
|
agent: this.project.agent,
|
|
1684
1701
|
workspaceDir,
|
|
@@ -1695,10 +1712,13 @@ export class SessionEngine {
|
|
|
1695
1712
|
await ensureOwnGitRoot(harnessCwd);
|
|
1696
1713
|
}
|
|
1697
1714
|
await this.materializeNudgeCarrier(record, harnessCwd);
|
|
1715
|
+
endWorkspace();
|
|
1698
1716
|
}
|
|
1699
1717
|
// Baseline before the agent can run, so a follow-up that arrives and
|
|
1700
1718
|
// drains before the first tool boundary still counts as an increase.
|
|
1719
|
+
const endNudges = this.startTurnPhase(record, turnId, "nudges");
|
|
1701
1720
|
await this.baselineDeliveredNudges(record);
|
|
1721
|
+
endNudges();
|
|
1702
1722
|
const pendingFiles = record.pendingWorkspaceFiles;
|
|
1703
1723
|
const pendingImages = record.pendingImages;
|
|
1704
1724
|
const runtime = resolveSessionRuntime({
|
|
@@ -1727,7 +1747,10 @@ export class SessionEngine {
|
|
|
1727
1747
|
pendingImages: current.pendingImages === pendingImages ? undefined : current.pendingImages,
|
|
1728
1748
|
}));
|
|
1729
1749
|
}
|
|
1750
|
+
let endFirstUpdate;
|
|
1730
1751
|
const onUpdate = async (update) => {
|
|
1752
|
+
endFirstUpdate?.();
|
|
1753
|
+
endFirstUpdate = undefined;
|
|
1731
1754
|
const turn = this.turnRoots.get(sessionId);
|
|
1732
1755
|
if (turn !== undefined) {
|
|
1733
1756
|
update = await applyWebScratchUpdate({
|
|
@@ -1750,13 +1773,19 @@ export class SessionEngine {
|
|
|
1750
1773
|
await yieldEventLoop();
|
|
1751
1774
|
}
|
|
1752
1775
|
};
|
|
1776
|
+
const endBuildRequest = this.startTurnPhase(record, turnId, "build_request");
|
|
1753
1777
|
const request = await this.buildTurnRequest(record, turnId, message, isFirstTurn, emit, eventContext, onUpdate, signal, pendingImages);
|
|
1778
|
+
endBuildRequest();
|
|
1779
|
+
// Runner start (SDK agent create/resume, MCP connect, model request)
|
|
1780
|
+
// until the first streamed update.
|
|
1781
|
+
endFirstUpdate = this.startTurnPhase(record, turnId, "first_update");
|
|
1754
1782
|
this.activeToolContexts.set(sessionId, { record, turnId, emit });
|
|
1755
1783
|
this.stubbedCallIds.set(sessionId, stubbed);
|
|
1756
1784
|
try {
|
|
1757
1785
|
outcome = await this.runTurnExecute(record, turnId, () => this.runner.runTurn(request));
|
|
1758
1786
|
}
|
|
1759
1787
|
finally {
|
|
1788
|
+
endFirstUpdate?.();
|
|
1760
1789
|
this.activeToolContexts.delete(sessionId);
|
|
1761
1790
|
this.stubbedCallIds.delete(sessionId);
|
|
1762
1791
|
}
|
|
@@ -1790,6 +1819,7 @@ export class SessionEngine {
|
|
|
1790
1819
|
}
|
|
1791
1820
|
const finalResult = outcome.result ?? mapper.finalText;
|
|
1792
1821
|
const finalUsage = outcome.usage ?? mapper.usage;
|
|
1822
|
+
const preBoundaryDispatch = this.dispatchChains.get(sessionId);
|
|
1793
1823
|
if (outcome.status === "finished") {
|
|
1794
1824
|
const completed = await this.appendEvent(sessionId, {
|
|
1795
1825
|
type: "turn.completed",
|
|
@@ -1842,10 +1872,12 @@ export class SessionEngine {
|
|
|
1842
1872
|
data: {},
|
|
1843
1873
|
}, eventContext);
|
|
1844
1874
|
}
|
|
1845
|
-
// Commit live channel state here
|
|
1846
|
-
//
|
|
1847
|
-
//
|
|
1848
|
-
//
|
|
1875
|
+
// Commit live channel state here, once the handlers queued before this
|
|
1876
|
+
// turn's boundary have run (for a coalesced follow-up, that includes the
|
|
1877
|
+
// owner turn's boundary handlers). This turn's own boundary handlers stay
|
|
1878
|
+
// unawaited: one may wait on the next turn, which cannot start until this
|
|
1879
|
+
// returns. Coalesce drain snapshots disk as soon as this returns.
|
|
1880
|
+
await preBoundaryDispatch?.catch(() => { });
|
|
1849
1881
|
await this.updateRecord(sessionId, (current) => ({
|
|
1850
1882
|
...current,
|
|
1851
1883
|
channelState: mergeChannelStateMutation({
|
|
@@ -2150,11 +2182,13 @@ export class SessionEngine {
|
|
|
2150
2182
|
includeScripts: this.hasBorrowedWorkspace(record),
|
|
2151
2183
|
})
|
|
2152
2184
|
: undefined;
|
|
2185
|
+
const childFiles = authoredRoot && root !== undefined ? createRootSubagentInherit(root) : undefined;
|
|
2153
2186
|
return {
|
|
2154
2187
|
sessionId: record.sessionId,
|
|
2155
2188
|
...(record.sdkAgentId === undefined ? {} : { sdkAgentId: record.sdkAgentId }),
|
|
2156
2189
|
workspaceDir: this.harnessCwd(record),
|
|
2157
2190
|
sandbox: authoredRoot ? false : agent.local?.sandbox === true,
|
|
2191
|
+
subagentInherit: childFiles?.inherit,
|
|
2158
2192
|
...(runtime === "local" && harnessTools !== undefined
|
|
2159
2193
|
? {
|
|
2160
2194
|
...(harnessTools.tools === undefined ? {} : { tools: harnessTools.tools }),
|
|
@@ -2190,7 +2224,7 @@ export class SessionEngine {
|
|
|
2190
2224
|
? { agentServeAgent: this.project.name }
|
|
2191
2225
|
: {}),
|
|
2192
2226
|
customTools: runtime === "local"
|
|
2193
|
-
? await this.buildCustomTools(record, turnId, emit, synthesized, signal)
|
|
2227
|
+
? await this.buildCustomTools(record, turnId, emit, synthesized, signal, childFiles)
|
|
2194
2228
|
: {},
|
|
2195
2229
|
mcpServers: this.buildMcpServers(runtime, record.sessionId, await this.evaluateConnectionAuth(record)),
|
|
2196
2230
|
...(runtime === "local" &&
|
|
@@ -2442,7 +2476,7 @@ export class SessionEngine {
|
|
|
2442
2476
|
}
|
|
2443
2477
|
return evaluated;
|
|
2444
2478
|
}
|
|
2445
|
-
async buildCustomTools(record, turnId, emit, extraTools = [], signal) {
|
|
2479
|
+
async buildCustomTools(record, turnId, emit, extraTools = [], signal, childFiles) {
|
|
2446
2480
|
const agent = this.project.agent;
|
|
2447
2481
|
const tools = {};
|
|
2448
2482
|
const register = (tool) => {
|
|
@@ -2459,7 +2493,7 @@ export class SessionEngine {
|
|
|
2459
2493
|
// ride into the harness listing once the dependency bumps.
|
|
2460
2494
|
...(tool.annotations === undefined ? {} : { annotations: tool.annotations }),
|
|
2461
2495
|
execute: async (args, context) => {
|
|
2462
|
-
|
|
2496
|
+
const run = () => this.executeServerTool({
|
|
2463
2497
|
tool,
|
|
2464
2498
|
input: args,
|
|
2465
2499
|
toolCallId: context.toolCallId,
|
|
@@ -2468,6 +2502,16 @@ export class SessionEngine {
|
|
|
2468
2502
|
emit,
|
|
2469
2503
|
signal,
|
|
2470
2504
|
});
|
|
2505
|
+
const sessionId = context.sessionId;
|
|
2506
|
+
if (childFiles === undefined ||
|
|
2507
|
+
sessionId === undefined ||
|
|
2508
|
+
sessionId === "" ||
|
|
2509
|
+
sessionId === record.sessionId ||
|
|
2510
|
+
sessionId === record.sdkAgentId ||
|
|
2511
|
+
!isSynthesizedFileSystemToolName(tool.name)) {
|
|
2512
|
+
return run();
|
|
2513
|
+
}
|
|
2514
|
+
return runWithFileSystem(childFiles.fileSystemForSession(sessionId), run);
|
|
2471
2515
|
},
|
|
2472
2516
|
};
|
|
2473
2517
|
};
|
|
@@ -2491,7 +2535,7 @@ export class SessionEngine {
|
|
|
2491
2535
|
toolName: "mcp",
|
|
2492
2536
|
emit,
|
|
2493
2537
|
}, () => resolveAdvertisedTools({
|
|
2494
|
-
agent,
|
|
2538
|
+
agent: this.advertisingAgent(),
|
|
2495
2539
|
session: this.sessionInfo(record),
|
|
2496
2540
|
hostMcp: this.advertiseMcp(),
|
|
2497
2541
|
}))) {
|
|
@@ -2661,6 +2705,10 @@ export class SessionEngine {
|
|
|
2661
2705
|
turnId,
|
|
2662
2706
|
}, run);
|
|
2663
2707
|
}
|
|
2708
|
+
/** Child span of the turn for one setup step; returns its end. No-op when OTel is off. */
|
|
2709
|
+
startTurnPhase(record, turnId, phase) {
|
|
2710
|
+
return (this.otel?.startPhase({ sessionId: record.sessionId, session: this.sessionInfo(record), turnId }, phase) ?? (() => { }));
|
|
2711
|
+
}
|
|
2664
2712
|
/**
|
|
2665
2713
|
* Bind outbound inject (Factory / Cursor API `traceparent`) to the
|
|
2666
2714
|
* tool span. No-op when OTel is off.
|
|
@@ -3148,7 +3196,7 @@ export class SessionEngine {
|
|
|
3148
3196
|
const { session } = await this.resolveDirectCallIdentity(newToolCallId("catalog"), options);
|
|
3149
3197
|
const connectionErrors = [];
|
|
3150
3198
|
const advertised = await resolveAdvertisedTools({
|
|
3151
|
-
agent: this.
|
|
3199
|
+
agent: this.advertisingAgent(),
|
|
3152
3200
|
session,
|
|
3153
3201
|
hostMcp: this.mcpHost,
|
|
3154
3202
|
onConnectionError: (connection, error) => {
|
|
@@ -3220,7 +3268,7 @@ export class SessionEngine {
|
|
|
3220
3268
|
// the same model-facing name a turn would. A listing failure fails
|
|
3221
3269
|
// the call closed, like it fails a turn.
|
|
3222
3270
|
const advertised = await resolveAdvertisedTools({
|
|
3223
|
-
agent: this.
|
|
3271
|
+
agent: this.advertisingAgent(),
|
|
3224
3272
|
session,
|
|
3225
3273
|
hostMcp: this.advertiseMcp(),
|
|
3226
3274
|
});
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Slugs for generated project files and deployment names. */
|
|
2
2
|
/** Lowercase, dashes, alphanumerics only; `fallback` when nothing survives. */
|
|
3
3
|
export declare function slugify(name: string, fallback: string): string;
|
|
4
|
+
export declare const DEPLOYMENT_SLUG_PATTERN: RegExp;
|
|
5
|
+
/** Derive a valid deployment slug from a directory name, or undefined if impossible. */
|
|
6
|
+
export declare function slugFromDirectoryName(name: string): string | undefined;
|
|
4
7
|
/** Dedupes slugs with numeric suffixes: `linear`, `linear-2`, `linear-3`, … */
|
|
5
8
|
export declare class SlugRegistry {
|
|
6
9
|
private readonly used;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/internal/slug.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,+EAA+E;AAC/E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,eAAO,MAAM,uBAAuB,EAAE,MAA6B,CAAC;AAEpE,wFAAwF;AACxF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOtE;AAED,+EAA+E;AAC/E,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAE1C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAY1B;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Slugs for generated project files and deployment names. */
|
|
2
2
|
/** Lowercase, dashes, alphanumerics only; `fallback` when nothing survives. */
|
|
3
3
|
export function slugify(name, fallback) {
|
|
4
4
|
const slug = name
|
|
@@ -7,6 +7,16 @@ export function slugify(name, fallback) {
|
|
|
7
7
|
.replace(/^-+|-+$/g, "");
|
|
8
8
|
return slug === "" ? fallback : slug;
|
|
9
9
|
}
|
|
10
|
+
export const DEPLOYMENT_SLUG_PATTERN = /^[a-z0-9_-]{1,64}$/;
|
|
11
|
+
/** Derive a valid deployment slug from a directory name, or undefined if impossible. */
|
|
12
|
+
export function slugFromDirectoryName(name) {
|
|
13
|
+
const slug = name
|
|
14
|
+
.toLowerCase()
|
|
15
|
+
.replace(/[^a-z0-9_-]+/g, "-")
|
|
16
|
+
.replace(/^-+|-+$/g, "")
|
|
17
|
+
.slice(0, 64);
|
|
18
|
+
return DEPLOYMENT_SLUG_PATTERN.test(slug) ? slug : undefined;
|
|
19
|
+
}
|
|
10
20
|
/** Dedupes slugs with numeric suffixes: `linear`, `linear-2`, `linear-3`, … */
|
|
11
21
|
export class SlugRegistry {
|
|
12
22
|
constructor() {
|