@cursor/bdk 0.2.11 → 0.2.13
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 +28 -26
- package/dist/channels/bitbucket/api.js +8 -8
- package/dist/channels/bitbucket/binding.js +4 -4
- package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
- package/dist/channels/bitbucket/bitbucket-webhook.js +1 -1
- package/dist/channels/bitbucket/checks.js +1 -1
- package/dist/channels/bitbucket/cursor-account.js +1 -1
- package/dist/channels/bitbucket/events.js +1 -1
- package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
- package/dist/channels/checks.js +2 -2
- package/dist/channels/deployments/deployments-channel.js +1 -1
- package/dist/channels/github/cursor-account.js +3 -3
- package/dist/channels/github/defaults.js +3 -3
- package/dist/channels/github/events.js +1 -1
- package/dist/channels/github/forward.js +8 -8
- package/dist/channels/github/github-channel.js +2 -2
- package/dist/channels/github/index.d.ts +22 -12
- package/dist/channels/github/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +11 -12
- package/dist/channels/gitlab/binding.js +4 -4
- package/dist/channels/gitlab/checks.js +1 -1
- package/dist/channels/gitlab/cursor-account.js +1 -1
- package/dist/channels/gitlab/events.js +1 -1
- package/dist/channels/gitlab/gitlab-channel.js +1 -1
- package/dist/channels/gitlab/gitlab-webhook.js +1 -1
- package/dist/channels/gitlab/replay.js +2 -2
- package/dist/channels/origin/binding.js +3 -3
- package/dist/channels/origin/checks.js +1 -1
- package/dist/channels/origin/cursor-account.js +1 -1
- package/dist/channels/origin/events.js +1 -1
- package/dist/channels/origin/index.d.ts +21 -11
- package/dist/channels/origin/index.d.ts.map +1 -1
- package/dist/channels/origin/index.js +10 -11
- package/dist/channels/origin/origin-channel.js +1 -1
- package/dist/channels/origin/origin-webhook.js +2 -2
- package/dist/channels/slack/agentic-delivery.js +3 -3
- package/dist/channels/slack/agentic-signals.js +1 -1
- package/dist/channels/slack/api.js +5 -5
- package/dist/channels/slack/approvals.js +1 -1
- package/dist/channels/slack/attachments.js +3 -3
- package/dist/channels/slack/blocks.js +3 -3
- package/dist/channels/slack/bot-mentions.js +4 -4
- package/dist/channels/slack/channel-watch.js +4 -4
- package/dist/channels/slack/cli-project.js +3 -3
- package/dist/channels/slack/dispatch.js +1 -1
- package/dist/channels/slack/doctor.js +1 -1
- package/dist/channels/slack/eval-directive.js +1 -1
- package/dist/channels/slack/footer.js +1 -1
- package/dist/channels/slack/interactive.js +2 -2
- package/dist/channels/slack/log.d.ts.map +1 -1
- package/dist/channels/slack/log.js +1 -1
- package/dist/channels/slack/manifest.js +1 -1
- package/dist/channels/slack/nudge-carrier.js +1 -1
- package/dist/channels/slack/nudge-store.js +2 -2
- package/dist/channels/slack/recording-sink.js +6 -6
- package/dist/channels/slack/reply-options.js +6 -6
- package/dist/channels/slack/self-identity.d.ts +7 -4
- package/dist/channels/slack/self-identity.d.ts.map +1 -1
- package/dist/channels/slack/self-identity.js +17 -8
- package/dist/channels/slack/sender-name.d.ts.map +1 -1
- package/dist/channels/slack/sender-name.js +2 -6
- package/dist/channels/slack/setup.d.ts.map +1 -1
- package/dist/channels/slack/setup.js +1 -1
- package/dist/channels/slack/slack-channel.js +2 -2
- package/dist/channels/slack/socket-mode.js +2 -2
- package/dist/channels/slack/thread-context.js +8 -8
- package/dist/channels/slack/tool-cards.js +1 -1
- package/dist/channels/slack/user-info.d.ts +2 -1
- package/dist/channels/slack/user-info.d.ts.map +1 -1
- package/dist/channels/slack/user-info.js +16 -1
- package/dist/channels.js +1 -1
- package/dist/docs/404.html +3 -3
- package/dist/docs/assets/{app.DXI7bwox.js → app.CaLG1pPt.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.DvlKuIO-.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BrbO5mEe.js → VPLocalSearchBox.YsP_2wqD.js} +2 -2
- package/dist/docs/assets/chunks/{arc.BOG1yms8.js → arc.C2j9hR7c.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.C0hsMZnZ.js → architectureDiagram-Q4EWVU46.C5qkGp7y.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.H044KjKs.js → baseUniq.U6GgTHOD.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BsRW6GoB.js → blockDiagram-DXYQGD6D.D51mJop2.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.B9HV5PFR.js → c4Diagram-AHTNJAMY.w1d6QxV7.js} +1 -1
- package/dist/docs/assets/chunks/channel.BRSFxCcD.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CPoT_ajl.js → chunk-4BX2VUAB.B_A815un.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DZBwWuCL.js → chunk-4TB4RGXK.DMrm-ZCb.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.CZ3yTiyq.js → chunk-55IACEB6.8qw6Xdal.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.6DfvHSd8.js → chunk-EDXVE4YY.Cq_nHODn.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CpBj8HfK.js → chunk-FMBD7UC4.B67ohCYn.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.BdKo8YqS.js → chunk-OYMX7WX6.Bo8rQI8F.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnXNyxJx.js → chunk-QZHKN3VN.BERUMfE9.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.Cg1OcF8G.js → chunk-YZCP3GAM.DWG2tXIX.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Cmtm6WkN.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Cmtm6WkN.js +1 -0
- package/dist/docs/assets/chunks/clone.JMC96Eo6.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.1SP8al9c.js → cose-bilkent-S5V4N54A.tezXBs9b.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.DS1L6hJt.js → dagre-KV5264BT.aSbEUwT7.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.ChsausbG.js → diagram-5BDNPKRD.vnT6aJ57.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.3XsptNWj.js → diagram-G4DWMVQ6.hGYdrDa2.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DPA9Dk_P.js → diagram-MMDJMWI5.CmdSUP6L.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.BVswXWrB.js → diagram-TYMM5635.BbAnLEBB.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BSak5OSP.js → erDiagram-SMLLAGMA.H40W4HWE.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CQgN4TTz.js → flowDiagram-DWJPFMVM.BFMtUSv-.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.GrT0kA4a.js → ganttDiagram-T4ZO3ILL.CbYiu7Dt.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CdS7Ucll.js → gitGraphDiagram-UUTBAWPF.Cyc5mzZD.js} +1 -1
- package/dist/docs/assets/chunks/{graph.BVqKRmRo.js → graph.BRptDG1H.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.C3C9FRto.js → infoDiagram-42DDH7IO.Bz6KCA3a.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js → ishikawaDiagram-UXIWVN3A.DDJ_7_Fq.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CaHMfK4b.js → journeyDiagram-VCZTEJTY.D0t_ltlb.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CjhIUwcA.js → kanban-definition-6JOO6SKY.DyyNsMfi.js} +1 -1
- package/dist/docs/assets/chunks/{layout.CGU3gfSf.js → layout.Cbxq-Rhp.js} +1 -1
- package/dist/docs/assets/chunks/{linear.DaihpW_n.js → linear.DxGYL0MP.js} +1 -1
- package/dist/docs/assets/chunks/{min.BS-j8kHQ.js → min.DA5KL8wu.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BVJ1Bbnk.js → mindmap-definition-QFDTVHPH.Bc72Utls.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.Cz1WIv9r.js → pieDiagram-DEJITSTG.BtpHnIB_.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DKLFxcjy.js → quadrantDiagram-34T5L4WZ.Cx4oCSRR.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.BHegiK7x.js → requirementDiagram-MS252O5E.BC0hXWlW.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DYkY6yPc.js → sankeyDiagram-XADWPNL6.Dg8T1SEp.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DYQ1QUrI.js → sequenceDiagram-FGHM5R23.CWSdHYAF.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.Iru8BsFo.js → stateDiagram-FHFEXIEX.0MVPRI28.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.N4Am6sXd.js +1 -0
- package/dist/docs/assets/chunks/{theme.DaplWQhQ.js → theme.DO1avLBn.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BwFA8hiX.js → timeline-definition-GMOUNBTQ.BuRinAVi.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CZ60W1C_.js → vennDiagram-DHZGUBPP.DXf0PCoJ.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD._eATmGtu.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.B69D2r8-.js → wardleyDiagram-NUSXRM2D.T4ThngYV.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CLPZEIU9.js → xychartDiagram-5P7HB3ND.b4pZF3D5.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.Bljpve-y.js → reference_connections.md.DLrgAd5f.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.js → reference_hooks.md.B-eGa2km.js} +3 -3
- package/dist/docs/assets/{reference_hooks.md.C5LCJ1R3.lean.js → reference_hooks.md.B-eGa2km.lean.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.js → reference_sessions.md.CyM7ARz1.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.v3SXVSs_.js → reference_tools.md.DzIY9JzY.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.v3SXVSs_.lean.js → reference_tools.md.DzIY9JzY.lean.js} +1 -1
- package/dist/docs/assets/{style.C130MVnH.css → style.Dwls12uf.css} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/deployment.html +37 -37
- package/dist/docs/evals.html +37 -37
- package/dist/docs/guides/agent-to-agent.html +37 -37
- package/dist/docs/guides/bitbucket.html +37 -37
- package/dist/docs/guides/cloud-agents.html +37 -37
- package/dist/docs/guides/convert-automation.html +37 -37
- package/dist/docs/guides/github.html +37 -37
- package/dist/docs/guides/gitlab.html +37 -37
- package/dist/docs/guides/grokbot-agents.html +37 -37
- package/dist/docs/guides/hooks.html +37 -37
- package/dist/docs/guides/improve.html +37 -37
- package/dist/docs/guides/jev.html +37 -37
- package/dist/docs/guides/mcp-oauth.html +37 -37
- package/dist/docs/guides/migrate.html +37 -37
- package/dist/docs/guides/opentelemetry.html +37 -37
- package/dist/docs/guides/slack.html +37 -37
- package/dist/docs/guides/webhooks.html +37 -37
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +37 -37
- package/dist/docs/index.html +37 -37
- package/dist/docs/llms-full.txt +15 -2
- package/dist/docs/quickstart.html +37 -37
- package/dist/docs/reference/agent-config.html +37 -37
- package/dist/docs/reference/artifacts.html +37 -37
- package/dist/docs/reference/channels.html +37 -37
- package/dist/docs/reference/cli.html +37 -37
- package/dist/docs/reference/connections.html +39 -39
- package/dist/docs/reference/connections.md +2 -1
- package/dist/docs/reference/evals.html +37 -37
- package/dist/docs/reference/extensions.html +37 -37
- package/dist/docs/reference/hooks.html +39 -39
- package/dist/docs/reference/hooks.md +1 -0
- package/dist/docs/reference/http-api.html +37 -37
- package/dist/docs/reference/instructions.html +37 -37
- package/dist/docs/reference/playground.html +36 -36
- package/dist/docs/reference/project-layout.html +37 -37
- package/dist/docs/reference/prompt.html +37 -37
- package/dist/docs/reference/schedules.html +37 -37
- package/dist/docs/reference/sessions.html +37 -37
- package/dist/docs/reference/sessions.md +1 -1
- package/dist/docs/reference/skills.html +40 -40
- package/dist/docs/reference/subagents.html +37 -37
- package/dist/docs/reference/tools.html +39 -39
- package/dist/docs/reference/tools.md +11 -0
- package/dist/docs/templates/agentic-owners.html +37 -37
- package/dist/docs/templates/grokbot-agents.html +37 -37
- package/dist/docs/templates/security-reviewer.html +37 -37
- package/dist/docs/templates/thermo-quality-review.html +37 -37
- package/dist/docs/templates/thermo-review.html +37 -37
- package/dist/docs/templates/triage.html +37 -37
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/evals/assertions.d.ts.map +1 -1
- package/dist/evals/assertions.js +21 -19
- package/dist/evals/expect.js +1 -1
- package/dist/evals/judge.js +1 -1
- package/dist/evals/reporters.js +8 -8
- package/dist/evals/run-facts.js +2 -2
- package/dist/evals.js +6 -6
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +16 -0
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +44 -3
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts +23 -0
- package/dist/extensions/cursor-cloud-agents/lib/launch-agent.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/launch-agent.js +32 -0
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +2 -2
- package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -2
- package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/watch.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -8
- package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/extension.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +4 -4
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
- package/dist/extensions/improve/skills/yourself.js +1 -1
- package/dist/extensions/jev/extension.js +2 -2
- package/dist/extensions/jev/tools/evaluate.js +1 -1
- package/dist/extensions/slack-communication/tools/react.js +1 -1
- package/dist/files-backends/cursor-hosted.js +8 -8
- package/dist/files-backends/local-fs.js +1 -1
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +15 -15
- package/dist/internal/advertise-tools.d.ts +3 -2
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +11 -9
- package/dist/internal/approval-gate.js +1 -1
- package/dist/internal/artifacts-store.js +13 -13
- package/dist/internal/as-of.js +2 -2
- package/dist/internal/authored-alias-hooks.d.ts +4 -3
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
- package/dist/internal/authored-alias-hooks.js +16 -7
- package/dist/internal/authored-loaders.d.ts.map +1 -1
- package/dist/internal/authored-loaders.js +21 -5
- package/dist/internal/builtin-tools/reminders.js +2 -2
- package/dist/internal/chat-client.js +5 -5
- package/dist/internal/cli-ax.js +14 -14
- package/dist/internal/cli-bitbucket.js +10 -10
- package/dist/internal/cli-convert-automation.js +2 -2
- package/dist/internal/cli-cursor.js +2 -2
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +40 -40
- package/dist/internal/cli-docs.js +5 -5
- package/dist/internal/cli-github.js +15 -15
- package/dist/internal/cli-gitlab.js +10 -10
- package/dist/internal/cli-images.js +16 -16
- package/dist/internal/cli-manifest.js +1 -1
- package/dist/internal/cli-mcp-oauth.js +5 -5
- package/dist/internal/cli-mcp.js +3 -3
- package/dist/internal/cli-migrate.js +1 -1
- package/dist/internal/cli-skills.js +2 -2
- package/dist/internal/cli-slack.js +5 -5
- package/dist/internal/cloud-turn-cost.js +1 -1
- package/dist/internal/continuation-identity.js +6 -6
- package/dist/internal/conversation-mirror.js +5 -5
- package/dist/internal/convert-automation/convert-workflow.js +24 -24
- package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
- package/dist/internal/cursor/account-mcp.js +20 -20
- package/dist/internal/cursor/backend-client.js +6 -6
- package/dist/internal/cursor/credentials.js +1 -1
- package/dist/internal/cursor/store-api-client.js +1 -1
- package/dist/internal/cursor-account-mcp-auth.js +9 -9
- package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
- package/dist/internal/cursor-deployment-relay.js +9 -9
- package/dist/internal/cursor-event-relay.js +10 -10
- package/dist/internal/cursor-relay-core.js +2 -2
- package/dist/internal/deploy-manifest.d.ts +14 -0
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +33 -10
- package/dist/internal/discovery/agent-config.js +2 -2
- package/dist/internal/discovery/agent.js +6 -6
- package/dist/internal/discovery/connections.js +5 -5
- package/dist/internal/discovery/cursor-plugin.js +12 -12
- package/dist/internal/discovery/extension-overlay.js +3 -3
- package/dist/internal/discovery/extensions.js +6 -6
- package/dist/internal/discovery/info.js +9 -9
- package/dist/internal/discovery/instructions.js +1 -1
- package/dist/internal/discovery/project.js +3 -3
- package/dist/internal/discovery/services.js +1 -1
- package/dist/internal/discovery/tools.js +1 -1
- package/dist/internal/docs-site.js +2 -2
- package/dist/internal/env-file.js +1 -1
- package/dist/internal/eval-run-store.js +7 -7
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +14 -14
- package/dist/internal/eval-transport.js +1 -1
- package/dist/internal/evals-client.d.ts.map +1 -1
- package/dist/internal/evals-client.js +4 -4
- package/dist/internal/event-log.js +8 -8
- package/dist/internal/event-mapper.js +13 -13
- package/dist/internal/expected-delivery-failure.js +2 -2
- package/dist/internal/filesystem/format.js +2 -2
- package/dist/internal/filesystem/nearest.js +3 -3
- package/dist/internal/filesystem/scratch.js +3 -3
- package/dist/internal/filesystem/tools.js +6 -6
- package/dist/internal/filesystem/walk.d.ts.map +1 -1
- package/dist/internal/filesystem/walk.js +2 -2
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +6 -5
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +4 -2
- package/dist/internal/github-fanout.d.ts.map +1 -1
- package/dist/internal/github-fanout.js +3 -3
- package/dist/internal/guest-network.js +4 -4
- package/dist/internal/host-files.js +1 -1
- package/dist/internal/host-kv.js +2 -2
- package/dist/internal/hosted-catch-protocol.js +1 -1
- package/dist/internal/hosted-catch.js +1 -1
- package/dist/internal/hosted-delivery-protocol.d.ts +24 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +58 -14
- package/dist/internal/hosted-delivery.d.ts +6 -0
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +64 -13
- package/dist/internal/hosted-eval-cases.js +4 -4
- package/dist/internal/hosted-execution-diag.js +3 -3
- package/dist/internal/hosted-managed-automation.d.ts +3 -3
- package/dist/internal/hosted-managed-automation.js +3 -3
- package/dist/internal/hosting.js +1 -1
- package/dist/internal/http-channel.js +1 -1
- package/dist/internal/http-control-plane-session.js +2 -2
- package/dist/internal/init-interview.js +7 -7
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +12 -12
- package/dist/internal/inline-stdio-mcp.js +2 -2
- package/dist/internal/install-cursor-skills.js +11 -11
- package/dist/internal/json-schema.js +1 -1
- package/dist/internal/local-control-plane.js +3 -3
- package/dist/internal/local-env.js +3 -3
- package/dist/internal/log-ring.js +1 -1
- package/dist/internal/logs-client.js +1 -1
- package/dist/internal/mcp-endpoint.js +8 -8
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +5 -5
- package/dist/internal/mcp-oauth-on-demand.js +3 -3
- package/dist/internal/mcp-oauth.js +5 -5
- package/dist/internal/net.js +2 -2
- package/dist/internal/otel/config.js +3 -3
- package/dist/internal/otel/runtime.js +13 -13
- package/dist/internal/peer-connections.js +2 -2
- package/dist/internal/persistent-stage-log-mirror.d.ts +57 -0
- package/dist/internal/persistent-stage-log-mirror.d.ts.map +1 -0
- package/dist/internal/persistent-stage-log-mirror.js +231 -0
- package/dist/internal/platform-schedule-sync.js +1 -1
- package/dist/internal/platform-timers.js +1 -1
- package/dist/internal/playground/static.js +2 -2
- package/dist/internal/playground/toolchain.js +2 -2
- package/dist/internal/playground-proxy.js +3 -3
- package/dist/internal/process-memory-telemetry.js +1 -1
- package/dist/internal/reminder-runner.d.ts +1 -1
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +14 -16
- package/dist/internal/reminder-store.js +1 -1
- package/dist/internal/resolved-connections.js +8 -8
- package/dist/internal/router.js +4 -4
- package/dist/internal/run-client.js +2 -2
- package/dist/internal/schedule-runner.d.ts +13 -2
- package/dist/internal/schedule-runner.d.ts.map +1 -1
- package/dist/internal/schedule-runner.js +48 -9
- package/dist/internal/sdk-runner.d.ts +2 -1
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +13 -8
- package/dist/internal/serve-restart.js +1 -1
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +101 -76
- package/dist/internal/session-cost.js +3 -3
- package/dist/internal/session-engine.d.ts +8 -0
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +183 -118
- package/dist/internal/session-live-publisher.d.ts +48 -0
- package/dist/internal/session-live-publisher.d.ts.map +1 -0
- package/dist/internal/session-live-publisher.js +415 -0
- package/dist/internal/session-run-log.js +6 -6
- package/dist/internal/sessions-client.js +3 -3
- package/dist/internal/skill-catalog.js +2 -2
- package/dist/internal/sleep.js +1 -1
- package/dist/internal/start-log-store.d.ts +5 -1
- package/dist/internal/start-log-store.d.ts.map +1 -1
- package/dist/internal/start-log-store.js +5 -3
- package/dist/internal/storage-coordinator.js +12 -12
- package/dist/internal/store-api-protocol.d.ts +51 -0
- package/dist/internal/store-api-protocol.d.ts.map +1 -1
- package/dist/internal/store-api-protocol.js +39 -2
- package/dist/internal/store-mirror.js +4 -4
- package/dist/internal/stream-progress.d.ts.map +1 -1
- package/dist/internal/stream-progress.js +4 -0
- package/dist/internal/terminal-style.js +2 -2
- package/dist/internal/testing/conversation-identity-vectors.d.ts +48 -0
- package/dist/internal/testing/conversation-identity-vectors.d.ts.map +1 -0
- package/dist/internal/testing/conversation-identity-vectors.js +136 -0
- package/dist/internal/tool-call-retry.d.ts +87 -0
- package/dist/internal/tool-call-retry.d.ts.map +1 -0
- package/dist/internal/tool-call-retry.js +387 -0
- package/dist/internal/tool-result.js +3 -3
- package/dist/internal/trajectory.js +7 -7
- package/dist/internal/turn-governor.js +2 -2
- package/dist/internal/turn-outbox.js +1 -1
- package/dist/internal/update-check.d.ts.map +1 -1
- package/dist/internal/update-check.js +4 -2
- package/dist/internal/v2-hosting.d.ts +6 -0
- package/dist/internal/v2-hosting.d.ts.map +1 -1
- package/dist/internal/v2-hosting.js +7 -1
- package/dist/internal/workspace.js +4 -4
- package/dist/kv/memory-kv.js +3 -3
- package/dist/playground/assets/index-CzttDc-d.css +1 -0
- package/dist/playground/assets/{index-Be0-1hw2.js → index-DIiKbZ25.js} +42 -42
- package/dist/playground/index.html +2 -2
- package/dist/prompt.js +1 -1
- package/dist/storage-backends/cursor-hosted-v2.js +2 -2
- package/dist/storage-backends/file-kv.js +7 -7
- package/dist/storage-protocol.d.ts +7 -0
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +7 -0
- package/dist/storage.js +3 -3
- package/dist/types.d.ts +21 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -4
- package/docs/reference/connections.md +2 -1
- package/docs/reference/hooks.md +1 -0
- package/docs/reference/sessions.md +1 -1
- package/docs/reference/tools.md +11 -0
- package/package.json +6 -6
- package/templates/agentic-owners/bot/channels/github.ts +2 -2
- package/templates/agentic-owners/bot/lib/github.ts +7 -5
- package/templates/agentic-owners/bot/lib/owners/decision.ts +9 -9
- package/templates/agentic-owners/bot/lib/owners/handles.ts +2 -2
- package/templates/agentic-owners/bot/lib/owners/match.ts +5 -3
- package/templates/agentic-owners/bot/lib/owners/matching.ts +1 -1
- package/templates/agentic-owners/bot/lib/owners/parse.ts +4 -4
- package/templates/agentic-owners/bot/lib/owners/prompt.ts +1 -1
- package/templates/agentic-owners/bot/lib/review.ts +18 -17
- package/templates/agentic-owners/evals/owners.eval.ts +2 -2
- package/templates/agents-md/bot/lib/collect.ts +6 -6
- package/templates/agents-md/bot/lib/config.ts +1 -1
- package/templates/agents-md/bot/tools/apply_agents.ts +4 -4
- package/templates/code-wiki/bot/channels/github.ts +3 -3
- package/templates/code-wiki/bot/lib/repos.ts +1 -1
- package/templates/code-wiki/bot/tools/apply_wiki.ts +2 -2
- package/templates/demo/bot/lib/collect.ts +1 -1
- package/templates/demo/bot/lib/repos.ts +1 -1
- package/templates/demo/bot/tools/record_demo.ts +1 -1
- package/templates/pr-autofixer/bot/channels/github.ts +2 -2
- package/templates/pr-autofixer/bot/lib/merge-watch.ts +2 -2
- package/templates/pr-autofixer/bot/lib/repos.ts +2 -2
- package/templates/pr-autofixer/bot/lib/webhook-routing.ts +1 -1
- package/templates/security-help/bot/lib/repos.ts +1 -1
- package/templates/security-reviewer/bot/lib/repos.ts +1 -1
- package/templates/triage/bot/lib/actuate.ts +15 -15
- package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +0 -1
- package/dist/docs/assets/chunks/channel.CBwrU9rP.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +0 -1
- package/dist/docs/assets/chunks/clone.BTvFyY1a.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +0 -162
- package/dist/playground/assets/index-Clz6uHj9.css +0 -1
- /package/dist/docs/assets/{reference_connections.md.Bljpve-y.lean.js → reference_connections.md.DLrgAd5f.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.CM5zo3w4.lean.js → reference_sessions.md.CyM7ARz1.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
|
@@ -74,8 +74,8 @@ function resumeProjectionJson(record) {
|
|
|
74
74
|
/** Session records out of raw sink entries; rows without a usable id are dropped. */
|
|
75
75
|
function sessionRecordsOf(entries) {
|
|
76
76
|
return entries
|
|
77
|
-
.map(entry => entry.value)
|
|
78
|
-
.filter(record => record != null && typeof record.sessionId === "string" && record.sessionId !== "");
|
|
77
|
+
.map((entry) => entry.value)
|
|
78
|
+
.filter((record) => record != null && typeof record.sessionId === "string" && record.sessionId !== "");
|
|
79
79
|
}
|
|
80
80
|
export class StorageCoordinator {
|
|
81
81
|
constructor(options) {
|
|
@@ -186,7 +186,7 @@ export class StorageCoordinator {
|
|
|
186
186
|
// A terminal event can arrive through a debounce-policy timer flush,
|
|
187
187
|
// where eventDispatched never ran: detect it from the buffered events
|
|
188
188
|
// so a finished session's record is exact under either policy.
|
|
189
|
-
const exact = exactRecord || events.some(event => TERMINAL_SESSION_EVENTS.has(event.type));
|
|
189
|
+
const exact = exactRecord || events.some((event) => TERMINAL_SESSION_EVENTS.has(event.type));
|
|
190
190
|
// Exact flushes repair earlier volatile-only skips: when the buffer no
|
|
191
191
|
// longer holds a record, the newest skipped one still gets written.
|
|
192
192
|
const record = buffer?.record ??
|
|
@@ -272,7 +272,7 @@ export class StorageCoordinator {
|
|
|
272
272
|
const putMany = this.definition.putMany?.bind(this.definition);
|
|
273
273
|
if (putMany !== undefined) {
|
|
274
274
|
return {
|
|
275
|
-
label: `putMany(${puts.map(entry => entry.key).join(", ")})`,
|
|
275
|
+
label: `putMany(${puts.map((entry) => entry.key).join(", ")})`,
|
|
276
276
|
run: async (ctx) => {
|
|
277
277
|
const results = await putMany(puts, ctx);
|
|
278
278
|
let recordFailed = false;
|
|
@@ -290,7 +290,7 @@ export class StorageCoordinator {
|
|
|
290
290
|
};
|
|
291
291
|
}
|
|
292
292
|
return {
|
|
293
|
-
label: `put(${puts.map(entry => entry.key).join(", ")})`,
|
|
293
|
+
label: `put(${puts.map((entry) => entry.key).join(", ")})`,
|
|
294
294
|
run: async (ctx) => {
|
|
295
295
|
let recordFailed = false;
|
|
296
296
|
for (const entry of puts) {
|
|
@@ -334,14 +334,14 @@ export class StorageCoordinator {
|
|
|
334
334
|
putOp(key, value) {
|
|
335
335
|
return {
|
|
336
336
|
label: `put(${key})`,
|
|
337
|
-
run: ctx => this.definition.put(key, value, ctx),
|
|
337
|
+
run: (ctx) => this.definition.put(key, value, ctx),
|
|
338
338
|
};
|
|
339
339
|
}
|
|
340
340
|
/** KV delete op on the sink's `delete` (skipped when the hook is absent). */
|
|
341
341
|
deleteOp(key) {
|
|
342
342
|
return {
|
|
343
343
|
label: `delete(${key})`,
|
|
344
|
-
run: ctx => this.definition.delete?.(key, ctx),
|
|
344
|
+
run: (ctx) => this.definition.delete?.(key, ctx),
|
|
345
345
|
};
|
|
346
346
|
}
|
|
347
347
|
// ==========================================================================
|
|
@@ -366,8 +366,8 @@ export class StorageCoordinator {
|
|
|
366
366
|
async listSessions() {
|
|
367
367
|
const entries = await this.tryList(this.keys.sessionPrefix(this.agentName));
|
|
368
368
|
return entries
|
|
369
|
-
.map(entry => entry.value)
|
|
370
|
-
.filter(record => record != null);
|
|
369
|
+
.map((entry) => entry.value)
|
|
370
|
+
.filter((record) => record != null);
|
|
371
371
|
}
|
|
372
372
|
/**
|
|
373
373
|
* Session records from the sink for the sessions API. Unlike
|
|
@@ -537,7 +537,7 @@ export class StorageCoordinator {
|
|
|
537
537
|
this.enqueue([
|
|
538
538
|
{
|
|
539
539
|
label: `evals.put(${run.runId})`,
|
|
540
|
-
run: ctx => table.put(snapshot, ctx),
|
|
540
|
+
run: (ctx) => table.put(snapshot, ctx),
|
|
541
541
|
},
|
|
542
542
|
], "policy");
|
|
543
543
|
},
|
|
@@ -545,7 +545,7 @@ export class StorageCoordinator {
|
|
|
545
545
|
this.enqueue([
|
|
546
546
|
{
|
|
547
547
|
label: `evals.delete(${runId})`,
|
|
548
|
-
run: ctx => table.delete(runId, ctx),
|
|
548
|
+
run: (ctx) => table.delete(runId, ctx),
|
|
549
549
|
},
|
|
550
550
|
], "policy");
|
|
551
551
|
},
|
|
@@ -586,7 +586,7 @@ export class StorageCoordinator {
|
|
|
586
586
|
let timer;
|
|
587
587
|
const drained = await Promise.race([
|
|
588
588
|
this.queue.then(() => true),
|
|
589
|
-
new Promise(resolve => {
|
|
589
|
+
new Promise((resolve) => {
|
|
590
590
|
timer = setTimeout(() => resolve(false), CLOSE_DRAIN_TIMEOUT_MS);
|
|
591
591
|
timer.unref?.();
|
|
592
592
|
}),
|
|
@@ -110,4 +110,55 @@ export type MemoryReadResponse = {
|
|
|
110
110
|
* (`{ code, error }`) with a matching HTTP status.
|
|
111
111
|
*/
|
|
112
112
|
export declare const memoryReadResponseSchema: z.ZodType<MemoryReadResponse>;
|
|
113
|
+
/**
|
|
114
|
+
* Live session relay: the engine posts batches of session events, and the
|
|
115
|
+
* service keeps them only while a viewer is watching that session. The
|
|
116
|
+
* stored transcript stays the durable copy.
|
|
117
|
+
*/
|
|
118
|
+
export declare const STORE_API_SESSION_LIVE_CALL = "session.live";
|
|
119
|
+
/**
|
|
120
|
+
* Cap on one serialized live event. A larger event crosses as a stub with
|
|
121
|
+
* `liveTruncated: true`; viewers reread the stored transcript after the turn.
|
|
122
|
+
*/
|
|
123
|
+
export declare const SESSION_LIVE_MAX_EVENT_BYTES: number;
|
|
124
|
+
/** Cap on one batch's serialized `events`, enforced on both sides. */
|
|
125
|
+
export declare const SESSION_LIVE_MAX_BATCH_BYTES: number;
|
|
126
|
+
export declare const SESSION_LIVE_MAX_BATCH_EVENTS = 500;
|
|
127
|
+
/**
|
|
128
|
+
* One session event as it crosses the live wire. `index` orders and
|
|
129
|
+
* deduplicates events; everything else passes through.
|
|
130
|
+
*/
|
|
131
|
+
export type SessionLiveEventWire = {
|
|
132
|
+
index: number;
|
|
133
|
+
type: string;
|
|
134
|
+
} & Record<string, unknown>;
|
|
135
|
+
export declare const sessionLiveEventWireSchema: z.ZodType<SessionLiveEventWire>;
|
|
136
|
+
/** `session.live` validated payload. An empty batch is a subscription probe. */
|
|
137
|
+
export type SessionLiveWirePayload = {
|
|
138
|
+
sessionId: string;
|
|
139
|
+
events: SessionLiveEventWire[];
|
|
140
|
+
};
|
|
141
|
+
export declare const sessionLivePayloadSchema: z.ZodType<SessionLiveWirePayload>;
|
|
142
|
+
/** The versioned request body for the `session.live` call. */
|
|
143
|
+
export type SessionLiveEnvelope = {
|
|
144
|
+
v: typeof STORE_API_PROTOCOL_VERSION;
|
|
145
|
+
call: typeof STORE_API_SESSION_LIVE_CALL;
|
|
146
|
+
payload: SessionLiveWirePayload;
|
|
147
|
+
};
|
|
148
|
+
/** The whole request body. Unknown envelope fields are stripped (= ignored). */
|
|
149
|
+
export declare const sessionLiveEnvelopeSchema: z.ZodType<SessionLiveEnvelope>;
|
|
150
|
+
/**
|
|
151
|
+
* `session.live` success body. `subscribed` says whether a viewer is
|
|
152
|
+
* watching (the service kept nothing when false), `recheckAfterMs` is the
|
|
153
|
+
* earliest next probe while unsubscribed, and `replayFromIndex` asks the
|
|
154
|
+
* engine to resend its local log from that index.
|
|
155
|
+
*/
|
|
156
|
+
export type SessionLiveResponse = {
|
|
157
|
+
v: typeof STORE_API_PROTOCOL_VERSION;
|
|
158
|
+
ok: true;
|
|
159
|
+
subscribed: boolean;
|
|
160
|
+
recheckAfterMs: number;
|
|
161
|
+
replayFromIndex: number | null;
|
|
162
|
+
};
|
|
163
|
+
export declare const sessionLiveResponseSchema: z.ZodType<SessionLiveResponse>;
|
|
113
164
|
//# sourceMappingURL=store-api-protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-api-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/store-api-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,oEAAoE;AACpE,eAAO,MAAM,cAAc,iCAAiC,CAAC;AAE7D,eAAO,MAAM,4BAA4B,kBAAkB,CAAC;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAkB,CAAC;AAEhE,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAE7D;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAYvD,CAAC;AAEjB,yCAAyC;AACzC,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,oBAAoB,CAAC;CAC9B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"store-api-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/store-api-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,7 @@ export const memoryAppendPayloadSchema = z.object({
|
|
|
53
53
|
.string()
|
|
54
54
|
.min(1)
|
|
55
55
|
.max(256)
|
|
56
|
-
.refine(name => !name.includes("/") && !name.includes("\\") && name !== "." && name !== "..", {
|
|
56
|
+
.refine((name) => !name.includes("/") && !name.includes("\\") && name !== "." && name !== "..", {
|
|
57
57
|
message: "agent must be a single store key segment",
|
|
58
58
|
}),
|
|
59
59
|
record: turnMemoryRecordWireSchema,
|
|
@@ -82,7 +82,7 @@ export const memoryReadPayloadSchema = z.object({
|
|
|
82
82
|
.string()
|
|
83
83
|
.min(1)
|
|
84
84
|
.max(256)
|
|
85
|
-
.refine(name => !name.includes("/") && !name.includes("\\") && name !== "." && name !== "..", {
|
|
85
|
+
.refine((name) => !name.includes("/") && !name.includes("\\") && name !== "." && name !== "..", {
|
|
86
86
|
message: "agent must be a single store key segment",
|
|
87
87
|
}),
|
|
88
88
|
});
|
|
@@ -106,3 +106,40 @@ export const memoryReadResponseSchema = z.object({
|
|
|
106
106
|
})
|
|
107
107
|
.nullable(),
|
|
108
108
|
});
|
|
109
|
+
/**
|
|
110
|
+
* Live session relay: the engine posts batches of session events, and the
|
|
111
|
+
* service keeps them only while a viewer is watching that session. The
|
|
112
|
+
* stored transcript stays the durable copy.
|
|
113
|
+
*/
|
|
114
|
+
export const STORE_API_SESSION_LIVE_CALL = "session.live";
|
|
115
|
+
/**
|
|
116
|
+
* Cap on one serialized live event. A larger event crosses as a stub with
|
|
117
|
+
* `liveTruncated: true`; viewers reread the stored transcript after the turn.
|
|
118
|
+
*/
|
|
119
|
+
export const SESSION_LIVE_MAX_EVENT_BYTES = 16 * 1024;
|
|
120
|
+
/** Cap on one batch's serialized `events`, enforced on both sides. */
|
|
121
|
+
export const SESSION_LIVE_MAX_BATCH_BYTES = 256 * 1024;
|
|
122
|
+
export const SESSION_LIVE_MAX_BATCH_EVENTS = 500;
|
|
123
|
+
export const sessionLiveEventWireSchema = z
|
|
124
|
+
.object({
|
|
125
|
+
index: z.number().int().min(0),
|
|
126
|
+
type: z.string().min(1),
|
|
127
|
+
})
|
|
128
|
+
.passthrough();
|
|
129
|
+
export const sessionLivePayloadSchema = z.object({
|
|
130
|
+
sessionId: z.string().regex(/^[A-Za-z0-9_-]{1,128}$/),
|
|
131
|
+
events: z.array(sessionLiveEventWireSchema).max(SESSION_LIVE_MAX_BATCH_EVENTS),
|
|
132
|
+
});
|
|
133
|
+
/** The whole request body. Unknown envelope fields are stripped (= ignored). */
|
|
134
|
+
export const sessionLiveEnvelopeSchema = z.object({
|
|
135
|
+
v: z.literal(STORE_API_PROTOCOL_VERSION),
|
|
136
|
+
call: z.literal(STORE_API_SESSION_LIVE_CALL),
|
|
137
|
+
payload: sessionLivePayloadSchema,
|
|
138
|
+
});
|
|
139
|
+
export const sessionLiveResponseSchema = z.object({
|
|
140
|
+
v: z.literal(STORE_API_PROTOCOL_VERSION),
|
|
141
|
+
ok: z.literal(true),
|
|
142
|
+
subscribed: z.boolean(),
|
|
143
|
+
recheckAfterMs: z.number().int().min(0),
|
|
144
|
+
replayFromIndex: z.number().int().min(0).nullable(),
|
|
145
|
+
});
|
|
@@ -13,11 +13,11 @@ import { FileConflictError } from "../files.js";
|
|
|
13
13
|
*/
|
|
14
14
|
export async function mirrorToStore(args) {
|
|
15
15
|
await Promise.all([...args.desired].map(([key, body]) => putLastWriterWins(args.sink, key, body)));
|
|
16
|
-
const listed = await Promise.all([args.prefix, ...(args.legacyPrefixes ?? [])].map(prefix => args.sink.list(prefix)));
|
|
16
|
+
const listed = await Promise.all([args.prefix, ...(args.legacyPrefixes ?? [])].map((prefix) => args.sink.list(prefix)));
|
|
17
17
|
await Promise.all(listed
|
|
18
18
|
.flat()
|
|
19
|
-
.filter(entry => !args.desired.has(entry.key))
|
|
20
|
-
.map(entry => args.sink.delete(entry.key)));
|
|
19
|
+
.filter((entry) => !args.desired.has(entry.key))
|
|
20
|
+
.map((entry) => args.sink.delete(entry.key)));
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Same refusals as local materialization's `resolveInside`: a rel that
|
|
@@ -31,7 +31,7 @@ export function storeRelPath(relPath, what) {
|
|
|
31
31
|
relPath.includes("\\") ||
|
|
32
32
|
posix.isAbsolute(relPath) ||
|
|
33
33
|
relPath.endsWith("/") ||
|
|
34
|
-
relPath.split("/").some(seg => seg === ".." || seg === ".") ||
|
|
34
|
+
relPath.split("/").some((seg) => seg === ".." || seg === ".") ||
|
|
35
35
|
posix.normalize(relPath) !== relPath) {
|
|
36
36
|
throw new Error(`Refusing ${what} path "${relPath}" (must be a normalized relative path)`);
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-progress.d.ts","sourceRoot":"","sources":["../../src/internal/stream-progress.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"stream-progress.d.ts","sourceRoot":"","sources":["../../src/internal/stream-progress.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,cAAc,CAmOjB"}
|
|
@@ -124,6 +124,10 @@ export function createStreamProgress(options) {
|
|
|
124
124
|
write(` ${mark} ${c.bold(event.data.connection)} ${c.dim(event.data.decision === "approve" ? "connected" : "denied")}\n`);
|
|
125
125
|
break;
|
|
126
126
|
}
|
|
127
|
+
case "action.tool_retry": {
|
|
128
|
+
write(` ${c.yellow("↻")} ${c.bold(event.data.toolName)} ${c.dim(`again as try ${event.data.attempt} (${event.data.reason})`)}\n`);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
127
131
|
case "action.result": {
|
|
128
132
|
if (event.data.toolName === "task" && event.data.parentCallId === undefined) {
|
|
129
133
|
break;
|
|
@@ -69,7 +69,7 @@ export function terminalHyperlink(url, label, enabled = colorEnabledFor()) {
|
|
|
69
69
|
export function formatTerminalBox(lines, options) {
|
|
70
70
|
const color = options?.color ?? IDENTITY;
|
|
71
71
|
const padding = options?.padding ?? 1;
|
|
72
|
-
const contentWidth = Math.max(options?.minWidth ?? 0, ...lines.map(line => visibleWidth(line)), 1);
|
|
72
|
+
const contentWidth = Math.max(options?.minWidth ?? 0, ...lines.map((line) => visibleWidth(line)), 1);
|
|
73
73
|
const inner = contentWidth + padding * 2;
|
|
74
74
|
const padLine = (line) => {
|
|
75
75
|
const extra = contentWidth - visibleWidth(line);
|
|
@@ -78,7 +78,7 @@ export function formatTerminalBox(lines, options) {
|
|
|
78
78
|
const paint = (line) => color(line);
|
|
79
79
|
const box = [
|
|
80
80
|
paint(`╭${"─".repeat(inner)}╮`),
|
|
81
|
-
...lines.map(line => paint(padLine(line))),
|
|
81
|
+
...lines.map((line) => paint(padLine(line))),
|
|
82
82
|
paint(`╰${"─".repeat(inner)}╯`),
|
|
83
83
|
].join("\n");
|
|
84
84
|
return box;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logical resources shared by the July and control-plane conversation
|
|
3
|
+
* identity suites. Each vector exercises both claim minting and mailbox
|
|
4
|
+
* extraction for one typed conversation.
|
|
5
|
+
*
|
|
6
|
+
* Pure data: server-shared loads this module without importing July runtime
|
|
7
|
+
* code into the control plane.
|
|
8
|
+
*/
|
|
9
|
+
type RepoNumberClaim = {
|
|
10
|
+
type: "pr" | "issue" | "origin-pr" | "gitlab-mr" | "bitbucket-pr";
|
|
11
|
+
resource: {
|
|
12
|
+
fullName: string;
|
|
13
|
+
number: number;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
type ConversationIdentityClaim = RepoNumberClaim | {
|
|
17
|
+
type: "thread";
|
|
18
|
+
resource: {
|
|
19
|
+
channelId: string;
|
|
20
|
+
threadTs: string;
|
|
21
|
+
};
|
|
22
|
+
} | {
|
|
23
|
+
type: "deployment";
|
|
24
|
+
resource: {
|
|
25
|
+
deploymentId: string;
|
|
26
|
+
};
|
|
27
|
+
} | {
|
|
28
|
+
type: "change-monitor-checkpoint";
|
|
29
|
+
resource: {
|
|
30
|
+
checkpointName: string;
|
|
31
|
+
};
|
|
32
|
+
} | {
|
|
33
|
+
type: "factory-issue";
|
|
34
|
+
resource: {
|
|
35
|
+
issueName: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export type ConversationIdentityVector = {
|
|
39
|
+
name: string;
|
|
40
|
+
kind: "github" | "slack" | "origin" | "gitlab" | "bitbucket" | "deployments" | "change_monitors" | "issues";
|
|
41
|
+
claim: ConversationIdentityClaim;
|
|
42
|
+
eventName: string;
|
|
43
|
+
payload: Record<string, unknown>;
|
|
44
|
+
expectedKey: string;
|
|
45
|
+
};
|
|
46
|
+
export declare const CONVERSATION_IDENTITY_VECTORS: readonly ConversationIdentityVector[];
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=conversation-identity-vectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-identity-vectors.d.ts","sourceRoot":"","sources":["../../../src/internal/testing/conversation-identity-vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,CAAC;IAClE,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,KAAK,yBAAyB,GAC1B,eAAe,GACf;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC,GACD;IACE,IAAI,EAAE,2BAA2B,CAAC;IAClC,QAAQ,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACA,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,aAAa,GACb,iBAAiB,GACjB,QAAQ,CAAC;IACb,KAAK,EAAE,yBAAyB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,SAAS,0BAA0B,EA+H9E,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logical resources shared by the July and control-plane conversation
|
|
3
|
+
* identity suites. Each vector exercises both claim minting and mailbox
|
|
4
|
+
* extraction for one typed conversation.
|
|
5
|
+
*
|
|
6
|
+
* Pure data: server-shared loads this module without importing July runtime
|
|
7
|
+
* code into the control plane.
|
|
8
|
+
*/
|
|
9
|
+
export const CONVERSATION_IDENTITY_VECTORS = [
|
|
10
|
+
{
|
|
11
|
+
name: "GitHub pull request",
|
|
12
|
+
kind: "github",
|
|
13
|
+
claim: {
|
|
14
|
+
type: "pr",
|
|
15
|
+
resource: { fullName: "Acme/Widgets", number: 12 },
|
|
16
|
+
},
|
|
17
|
+
eventName: "pull_request",
|
|
18
|
+
payload: {
|
|
19
|
+
repository: { full_name: "Acme/Widgets" },
|
|
20
|
+
pull_request: { number: 12 },
|
|
21
|
+
},
|
|
22
|
+
expectedKey: "cont:github-pr:Acme/Widgets#12",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "GitHub issue",
|
|
26
|
+
kind: "github",
|
|
27
|
+
claim: {
|
|
28
|
+
type: "issue",
|
|
29
|
+
resource: { fullName: "Acme/Widgets", number: 34 },
|
|
30
|
+
},
|
|
31
|
+
eventName: "issues",
|
|
32
|
+
payload: {
|
|
33
|
+
repository: { full_name: "Acme/Widgets" },
|
|
34
|
+
issue: { number: 34 },
|
|
35
|
+
},
|
|
36
|
+
expectedKey: "cont:github-issue:Acme/Widgets#34",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: "Slack thread",
|
|
40
|
+
kind: "slack",
|
|
41
|
+
claim: {
|
|
42
|
+
type: "thread",
|
|
43
|
+
resource: { channelId: "C123", threadTs: "1719.000" },
|
|
44
|
+
},
|
|
45
|
+
eventName: "message",
|
|
46
|
+
payload: {
|
|
47
|
+
type: "event_callback",
|
|
48
|
+
event: {
|
|
49
|
+
type: "message",
|
|
50
|
+
channel: "C123",
|
|
51
|
+
ts: "1720.000",
|
|
52
|
+
thread_ts: "1719.000",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
expectedKey: "cont:C123:1719.000",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "Origin pull request",
|
|
59
|
+
kind: "origin",
|
|
60
|
+
claim: {
|
|
61
|
+
type: "origin-pr",
|
|
62
|
+
resource: { fullName: "Acme/Widgets", number: 42 },
|
|
63
|
+
},
|
|
64
|
+
eventName: "pull_request.created",
|
|
65
|
+
payload: {
|
|
66
|
+
pullRequest: { number: 42 },
|
|
67
|
+
repository: { name: "Widgets", owner: { slug: "Acme" } },
|
|
68
|
+
},
|
|
69
|
+
expectedKey: "cont:origin-pr:Acme/Widgets#42",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "GitLab merge request",
|
|
73
|
+
kind: "gitlab",
|
|
74
|
+
claim: {
|
|
75
|
+
type: "gitlab-mr",
|
|
76
|
+
resource: { fullName: "Acme/Platform/API", number: 56 },
|
|
77
|
+
},
|
|
78
|
+
eventName: "merge_request",
|
|
79
|
+
payload: {
|
|
80
|
+
project: { path_with_namespace: "Acme/Platform/API" },
|
|
81
|
+
object_attributes: { iid: 56 },
|
|
82
|
+
},
|
|
83
|
+
expectedKey: "cont:gitlab-mr:acme/platform/api!56",
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: "Bitbucket pull request",
|
|
87
|
+
kind: "bitbucket",
|
|
88
|
+
claim: {
|
|
89
|
+
type: "bitbucket-pr",
|
|
90
|
+
resource: { fullName: "ACME/Widgets", number: 78 },
|
|
91
|
+
},
|
|
92
|
+
eventName: "pullrequest:created",
|
|
93
|
+
payload: {
|
|
94
|
+
repository: { full_name: "ACME/Widgets" },
|
|
95
|
+
pullrequest: { id: 78 },
|
|
96
|
+
},
|
|
97
|
+
expectedKey: "cont:bitbucket-pr:acme/widgets#78",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "deployment",
|
|
101
|
+
kind: "deployments",
|
|
102
|
+
claim: {
|
|
103
|
+
type: "deployment",
|
|
104
|
+
resource: { deploymentId: "dep-90" },
|
|
105
|
+
},
|
|
106
|
+
eventName: "deployment.created",
|
|
107
|
+
payload: { deploymentId: "dep-90" },
|
|
108
|
+
expectedKey: "cont:deployments:dep-90",
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "change monitor checkpoint",
|
|
112
|
+
kind: "change_monitors",
|
|
113
|
+
claim: {
|
|
114
|
+
type: "change-monitor-checkpoint",
|
|
115
|
+
resource: {
|
|
116
|
+
checkpointName: "changeMonitors/cm-1/checkpoints/cp-2",
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
eventName: "checkpoint.created",
|
|
120
|
+
payload: {
|
|
121
|
+
checkpoint: { name: "changeMonitors/cm-1/checkpoints/cp-2" },
|
|
122
|
+
},
|
|
123
|
+
expectedKey: "cont:change_monitors:changeMonitors/cm-1/checkpoints/cp-2",
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: "factory issue",
|
|
127
|
+
kind: "issues",
|
|
128
|
+
claim: {
|
|
129
|
+
type: "factory-issue",
|
|
130
|
+
resource: { issueName: "issues/iss-3" },
|
|
131
|
+
},
|
|
132
|
+
eventName: "issue.created",
|
|
133
|
+
payload: { issue: { name: "issues/iss-3" } },
|
|
134
|
+
expectedKey: "cont:issues:issues/iss-3",
|
|
135
|
+
},
|
|
136
|
+
];
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transient retry for a read-effect tool call that already executed.
|
|
3
|
+
*
|
|
4
|
+
* Writes, unclassified tools, dry-run stubs, approval denials, and
|
|
5
|
+
* validation failures never reach this helper. Auth, elicitation, and a
|
|
6
|
+
* timeout that already ran long enough to repeat are not transient.
|
|
7
|
+
*
|
|
8
|
+
* Backoff is full jitter (base 500ms, cap 4s) and at most 10s asleep per
|
|
9
|
+
* call. An attempt that already ran longer than 15s is not retried, so
|
|
10
|
+
* one slow call plus the backoff budget stays under 30s. Sleep yields the
|
|
11
|
+
* event loop, so a timer can still fire during the wait.
|
|
12
|
+
*/
|
|
13
|
+
import { type Meter } from "@opentelemetry/api";
|
|
14
|
+
import type { ToolEffect } from "../types.js";
|
|
15
|
+
/** Total tries, including the first, for a read-effect call. */
|
|
16
|
+
export declare const TOOL_RETRY_DEFAULT_MAX_ATTEMPTS = 3;
|
|
17
|
+
export declare const TOOL_RETRY_BACKOFF_BASE_MS = 500;
|
|
18
|
+
export declare const TOOL_RETRY_BACKOFF_CAP_MS = 4000;
|
|
19
|
+
/** Cumulative sleep per call. */
|
|
20
|
+
export declare const TOOL_RETRY_BACKOFF_BUDGET_MS = 10000;
|
|
21
|
+
/**
|
|
22
|
+
* An attempt slower than this is not retried. Paired with the backoff
|
|
23
|
+
* budget, the extra wait stays under 30s.
|
|
24
|
+
*/
|
|
25
|
+
export declare const TOOL_RETRY_MAX_ATTEMPT_MS = 15000;
|
|
26
|
+
/** Quiet-stream limit the extra wait must stay under. */
|
|
27
|
+
export declare const TOOL_RETRY_STALL_FAIL_MS = 30000;
|
|
28
|
+
export type ToolRetryReason = "transport" | "http_429" | "http_502" | "http_503" | "http_504" | "mcp_transient";
|
|
29
|
+
export type ToolRetryOutcome = "recovered" | "exhausted" | "not_eligible";
|
|
30
|
+
export interface ToolRetryNotice {
|
|
31
|
+
/** The try that is about to run (2 = first retry). */
|
|
32
|
+
readonly attempt: number;
|
|
33
|
+
readonly reason: ToolRetryReason;
|
|
34
|
+
readonly backoffMs: number;
|
|
35
|
+
readonly connection?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Vendor-reported MCP `isError` result. Distinct from a thrown transport
|
|
39
|
+
* failure so the classifier can require an explicit transient phrase.
|
|
40
|
+
*/
|
|
41
|
+
export declare class McpToolError extends Error {
|
|
42
|
+
readonly connection: string;
|
|
43
|
+
readonly toolName: string;
|
|
44
|
+
readonly vendorMessage: string;
|
|
45
|
+
constructor(args: {
|
|
46
|
+
connection: string;
|
|
47
|
+
toolName: string;
|
|
48
|
+
vendorMessage: string;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export type ToolFailureVerdict = {
|
|
52
|
+
readonly transient: false;
|
|
53
|
+
} | {
|
|
54
|
+
readonly transient: true;
|
|
55
|
+
readonly reason: ToolRetryReason;
|
|
56
|
+
readonly retryAfterMs?: number;
|
|
57
|
+
};
|
|
58
|
+
type SleepFn = (ms: number, signal: AbortSignal | undefined) => Promise<void>;
|
|
59
|
+
/** @internal Test seam. `undefined` restores the real timer. */
|
|
60
|
+
export declare function setToolRetrySleepForTests(sleep: SleepFn | undefined): void;
|
|
61
|
+
/** @internal Test seam. `undefined` restores `Math.random`. */
|
|
62
|
+
export declare function setToolRetryRandomForTests(random: (() => number) | undefined): void;
|
|
63
|
+
/** @internal Test seam. `undefined` restores the global meter. */
|
|
64
|
+
export declare function setToolRetryMeterForTests(meter: Meter | undefined): void;
|
|
65
|
+
export declare function classifyToolFailure(error: unknown): ToolFailureVerdict;
|
|
66
|
+
/**
|
|
67
|
+
* Full-jitter delay for the backoff after `failedAttempt` (1 = first try
|
|
68
|
+
* failed). `Retry-After` replaces the jittered delay and is still capped.
|
|
69
|
+
* Returns `undefined` when the cumulative budget is already spent.
|
|
70
|
+
*/
|
|
71
|
+
export declare function toolRetryBackoffMs(args: {
|
|
72
|
+
failedAttempt: number;
|
|
73
|
+
random: number;
|
|
74
|
+
retryAfterMs?: number;
|
|
75
|
+
spentMs: number;
|
|
76
|
+
}): number | undefined;
|
|
77
|
+
export declare function retryReadOnlyToolCall<T>(args: {
|
|
78
|
+
toolName: string;
|
|
79
|
+
connection?: string;
|
|
80
|
+
effect: ToolEffect | undefined;
|
|
81
|
+
signal?: AbortSignal;
|
|
82
|
+
now?: () => number;
|
|
83
|
+
onRetry?: (notice: ToolRetryNotice) => void;
|
|
84
|
+
execute: () => T | Promise<T>;
|
|
85
|
+
}): Promise<T>;
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=tool-call-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-call-retry.d.ts","sourceRoot":"","sources":["../../src/internal/tool-call-retry.ts"],"names":[],"mappings":"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"}
|