@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
|
@@ -59,7 +59,7 @@ export async function replayCatchRequest(input) {
|
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
const matched = router.match(envelope.method, envelope.path);
|
|
62
|
-
const route = input.routes.find(candidate => candidate.method === matched?.route.method && candidate.path === matched.route.pattern);
|
|
62
|
+
const route = input.routes.find((candidate) => candidate.method === matched?.route.method && candidate.path === matched.route.pattern);
|
|
63
63
|
if (matched === undefined || route === undefined) {
|
|
64
64
|
// The control plane routes from the same pinned manifest this VM was
|
|
65
65
|
// frozen from; a miss here is drift, not a caller error.
|
|
@@ -60,6 +60,23 @@ export declare const HOSTED_REMINDER_CHANNEL_KIND = "agent-sdk:reminder";
|
|
|
60
60
|
* Payload is {@link HostedReminderFirePayload}.
|
|
61
61
|
*/
|
|
62
62
|
export declare const HOSTED_REMINDER_EVENT_TYPE = "agent-sdk.reminder/fire";
|
|
63
|
+
/**
|
|
64
|
+
* Reserved hosted-admission `channelKind` for authored schedule fires.
|
|
65
|
+
* Bypasses authored channel admission and invokes ScheduleRunner.dispatch.
|
|
66
|
+
* Backend builds envelopes with this constant + {@link HOSTED_SCHEDULE_EVENT_TYPE}.
|
|
67
|
+
*/
|
|
68
|
+
export declare const HOSTED_SCHEDULE_CHANNEL_KIND = "agent-sdk:schedule";
|
|
69
|
+
/**
|
|
70
|
+
* Reserved hosted-admission `eventType` for authored schedule fires.
|
|
71
|
+
* Payload is {@link HostedScheduleFirePayload}.
|
|
72
|
+
*/
|
|
73
|
+
export declare const HOSTED_SCHEDULE_EVENT_TYPE = "agent-sdk.schedule/fire";
|
|
74
|
+
/** One fire of an authored `agent/schedules/*` declaration. */
|
|
75
|
+
export type HostedScheduleFirePayload = {
|
|
76
|
+
protocolVersion: 1;
|
|
77
|
+
scheduleId: string;
|
|
78
|
+
scheduledAtMs: number;
|
|
79
|
+
};
|
|
63
80
|
/** Compact reminder-fire payload on the reserved hosted-admission path. */
|
|
64
81
|
export type HostedReminderFirePayload = {
|
|
65
82
|
reminderId: string;
|
|
@@ -233,6 +250,13 @@ export declare function parseHostedExecutionOutcome(value: unknown): HostedExecu
|
|
|
233
250
|
* path (not an authored channel event).
|
|
234
251
|
*/
|
|
235
252
|
export declare function isHostedReminderAdmission(delivery: HostedAdmissionInput): boolean;
|
|
253
|
+
/**
|
|
254
|
+
* True when the admission envelope is the reserved internal schedule fire
|
|
255
|
+
* path (not an authored channel event).
|
|
256
|
+
*/
|
|
257
|
+
export declare function isHostedScheduleAdmission(delivery: HostedAdmissionInput): boolean;
|
|
258
|
+
/** Parse a reserved schedule admission payload. Rejects unknown keys. */
|
|
259
|
+
export declare function parseHostedScheduleFirePayload(value: unknown): HostedScheduleFirePayload | undefined;
|
|
236
260
|
/**
|
|
237
261
|
* Parse `{ reminderId, fireCount }` from a reserved reminder admission
|
|
238
262
|
* payload. Rejects unknown keys and non-integer fireCount.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-delivery-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery-protocol.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hosted-delivery-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,6 +118,17 @@ export const HOSTED_REMINDER_CHANNEL_KIND = "agent-sdk:reminder";
|
|
|
118
118
|
* Payload is {@link HostedReminderFirePayload}.
|
|
119
119
|
*/
|
|
120
120
|
export const HOSTED_REMINDER_EVENT_TYPE = "agent-sdk.reminder/fire";
|
|
121
|
+
/**
|
|
122
|
+
* Reserved hosted-admission `channelKind` for authored schedule fires.
|
|
123
|
+
* Bypasses authored channel admission and invokes ScheduleRunner.dispatch.
|
|
124
|
+
* Backend builds envelopes with this constant + {@link HOSTED_SCHEDULE_EVENT_TYPE}.
|
|
125
|
+
*/
|
|
126
|
+
export const HOSTED_SCHEDULE_CHANNEL_KIND = "agent-sdk:schedule";
|
|
127
|
+
/**
|
|
128
|
+
* Reserved hosted-admission `eventType` for authored schedule fires.
|
|
129
|
+
* Payload is {@link HostedScheduleFirePayload}.
|
|
130
|
+
*/
|
|
131
|
+
export const HOSTED_SCHEDULE_EVENT_TYPE = "agent-sdk.schedule/fire";
|
|
121
132
|
/**
|
|
122
133
|
* Handler 4xx reasons an admission skip can carry. Benign skips (nothing to
|
|
123
134
|
* do) omit `rejection`. Engine HTTP failures use the hosted failure codes
|
|
@@ -183,7 +194,7 @@ export function parseHostedAdmissionHandlerRejection(value) {
|
|
|
183
194
|
return undefined;
|
|
184
195
|
}
|
|
185
196
|
const body = value;
|
|
186
|
-
if (Object.keys(body).some(key => !HOSTED_ADMISSION_REJECTION_KEYS.has(key))) {
|
|
197
|
+
if (Object.keys(body).some((key) => !HOSTED_ADMISSION_REJECTION_KEYS.has(key))) {
|
|
187
198
|
return undefined;
|
|
188
199
|
}
|
|
189
200
|
if (typeof body.reason !== "string" ||
|
|
@@ -244,18 +255,18 @@ function parseManagedAutomation(value) {
|
|
|
244
255
|
return undefined;
|
|
245
256
|
}
|
|
246
257
|
const body = value;
|
|
247
|
-
if (Object.keys(body).some(key => !MANAGED_AUTOMATION_KEYS.has(key)) ||
|
|
258
|
+
if (Object.keys(body).some((key) => !MANAGED_AUTOMATION_KEYS.has(key)) ||
|
|
248
259
|
!boundedString(body.automationUuid, 128) ||
|
|
249
260
|
!Array.isArray(body.mcpServerNames) ||
|
|
250
261
|
body.mcpServerNames.length > MANAGED_AUTOMATION_MAX_SERVERS ||
|
|
251
|
-
!body.mcpServerNames.every(name => boundedString(name, 256))) {
|
|
262
|
+
!body.mcpServerNames.every((name) => boundedString(name, 256))) {
|
|
252
263
|
return undefined;
|
|
253
264
|
}
|
|
254
265
|
if (body.slackChannels !== undefined) {
|
|
255
266
|
if (!Array.isArray(body.slackChannels) ||
|
|
256
267
|
body.slackChannels.length === 0 ||
|
|
257
268
|
body.slackChannels.length > MANAGED_AUTOMATION_MAX_SLACK_CHANNELS ||
|
|
258
|
-
!body.slackChannels.every(channel => boundedString(channel, 64))) {
|
|
269
|
+
!body.slackChannels.every((channel) => boundedString(channel, 64))) {
|
|
259
270
|
return undefined;
|
|
260
271
|
}
|
|
261
272
|
}
|
|
@@ -281,7 +292,7 @@ function parsePlatformHandoff(value) {
|
|
|
281
292
|
return undefined;
|
|
282
293
|
}
|
|
283
294
|
const body = value;
|
|
284
|
-
if (Object.keys(body).some(key => !HOSTED_PLATFORM_HANDOFF_KEYS.has(key)) || body.v !== 1) {
|
|
295
|
+
if (Object.keys(body).some((key) => !HOSTED_PLATFORM_HANDOFF_KEYS.has(key)) || body.v !== 1) {
|
|
285
296
|
return undefined;
|
|
286
297
|
}
|
|
287
298
|
const placeholder = body.slackPlaceholder;
|
|
@@ -289,7 +300,7 @@ function parsePlatformHandoff(value) {
|
|
|
289
300
|
return undefined;
|
|
290
301
|
}
|
|
291
302
|
const slot = placeholder;
|
|
292
|
-
if (Object.keys(slot).some(key => !HOSTED_SLACK_PLACEHOLDER_HANDOFF_KEYS.has(key)) ||
|
|
303
|
+
if (Object.keys(slot).some((key) => !HOSTED_SLACK_PLACEHOLDER_HANDOFF_KEYS.has(key)) ||
|
|
293
304
|
!boundedString(slot.messageTs, 64) ||
|
|
294
305
|
!boundedString(slot.channelId, 64) ||
|
|
295
306
|
!boundedString(slot.threadTs, 64) ||
|
|
@@ -314,13 +325,13 @@ export function parseHostedAdmission(value) {
|
|
|
314
325
|
}
|
|
315
326
|
const body = value;
|
|
316
327
|
if (body.mode === "status") {
|
|
317
|
-
return Object.keys(body).every(key => key === "v" || key === "mode" || key === "deliveryId") &&
|
|
328
|
+
return Object.keys(body).every((key) => key === "v" || key === "mode" || key === "deliveryId") &&
|
|
318
329
|
body.v === HOSTED_DELIVERY_PROTOCOL_VERSION &&
|
|
319
330
|
boundedString(body.deliveryId, 256)
|
|
320
331
|
? body
|
|
321
332
|
: undefined;
|
|
322
333
|
}
|
|
323
|
-
if (Object.keys(body).some(key => !DELIVERY_KEYS.has(key)) ||
|
|
334
|
+
if (Object.keys(body).some((key) => !DELIVERY_KEYS.has(key)) ||
|
|
324
335
|
!Object.hasOwn(body, "payload") ||
|
|
325
336
|
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
326
337
|
body.mode !== "start" ||
|
|
@@ -342,7 +353,7 @@ export function parseHostedExecution(value) {
|
|
|
342
353
|
return undefined;
|
|
343
354
|
}
|
|
344
355
|
const body = value;
|
|
345
|
-
if (Object.keys(body).some(key => !EXECUTION_KEYS.has(key)) ||
|
|
356
|
+
if (Object.keys(body).some((key) => !EXECUTION_KEYS.has(key)) ||
|
|
346
357
|
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
347
358
|
!boundedString(body.admissionToken, 128) ||
|
|
348
359
|
typeof body.sessionPublicId !== "string" ||
|
|
@@ -362,7 +373,7 @@ function parseConsumedDeliveryIds(value) {
|
|
|
362
373
|
if (value.length > HOSTED_MAX_CONSUMED_DELIVERY_IDS) {
|
|
363
374
|
return undefined;
|
|
364
375
|
}
|
|
365
|
-
if (!value.every(id => boundedString(id, 256))) {
|
|
376
|
+
if (!value.every((id) => boundedString(id, 256))) {
|
|
366
377
|
return undefined;
|
|
367
378
|
}
|
|
368
379
|
return value;
|
|
@@ -372,7 +383,7 @@ export function parseHostedExecutionOutcome(value) {
|
|
|
372
383
|
return undefined;
|
|
373
384
|
}
|
|
374
385
|
const body = value;
|
|
375
|
-
if (Object.keys(body).some(key => !HOSTED_EXECUTION_OUTCOME_KEYS.has(key)) ||
|
|
386
|
+
if (Object.keys(body).some((key) => !HOSTED_EXECUTION_OUTCOME_KEYS.has(key)) ||
|
|
376
387
|
body.ok !== true ||
|
|
377
388
|
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION) {
|
|
378
389
|
return undefined;
|
|
@@ -408,6 +419,39 @@ export function isHostedReminderAdmission(delivery) {
|
|
|
408
419
|
return (delivery.channelKind === HOSTED_REMINDER_CHANNEL_KIND &&
|
|
409
420
|
delivery.eventType === HOSTED_REMINDER_EVENT_TYPE);
|
|
410
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* True when the admission envelope is the reserved internal schedule fire
|
|
424
|
+
* path (not an authored channel event).
|
|
425
|
+
*/
|
|
426
|
+
export function isHostedScheduleAdmission(delivery) {
|
|
427
|
+
return (delivery.channelKind === HOSTED_SCHEDULE_CHANNEL_KIND &&
|
|
428
|
+
delivery.eventType === HOSTED_SCHEDULE_EVENT_TYPE);
|
|
429
|
+
}
|
|
430
|
+
const HOSTED_SCHEDULE_FIRE_PAYLOAD_KEYS = new Set([
|
|
431
|
+
"protocolVersion",
|
|
432
|
+
"scheduleId",
|
|
433
|
+
"scheduledAtMs",
|
|
434
|
+
]);
|
|
435
|
+
/** Parse a reserved schedule admission payload. Rejects unknown keys. */
|
|
436
|
+
export function parseHostedScheduleFirePayload(value) {
|
|
437
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
438
|
+
return undefined;
|
|
439
|
+
}
|
|
440
|
+
const body = value;
|
|
441
|
+
if (Object.keys(body).some((key) => !HOSTED_SCHEDULE_FIRE_PAYLOAD_KEYS.has(key)) ||
|
|
442
|
+
body.protocolVersion !== 1 ||
|
|
443
|
+
!boundedString(body.scheduleId, 128) ||
|
|
444
|
+
typeof body.scheduledAtMs !== "number" ||
|
|
445
|
+
!Number.isSafeInteger(body.scheduledAtMs) ||
|
|
446
|
+
body.scheduledAtMs < 0) {
|
|
447
|
+
return undefined;
|
|
448
|
+
}
|
|
449
|
+
return {
|
|
450
|
+
protocolVersion: 1,
|
|
451
|
+
scheduleId: body.scheduleId,
|
|
452
|
+
scheduledAtMs: body.scheduledAtMs,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
411
455
|
/**
|
|
412
456
|
* Parse `{ reminderId, fireCount }` from a reserved reminder admission
|
|
413
457
|
* payload. Rejects unknown keys and non-integer fireCount.
|
|
@@ -476,7 +520,7 @@ function isJsonSafeValue(value, depth) {
|
|
|
476
520
|
return false;
|
|
477
521
|
}
|
|
478
522
|
if (Array.isArray(value)) {
|
|
479
|
-
return value.every(entry => isJsonSafeValue(entry, depth + 1));
|
|
523
|
+
return value.every((entry) => isJsonSafeValue(entry, depth + 1));
|
|
480
524
|
}
|
|
481
525
|
const proto = Object.getPrototypeOf(value);
|
|
482
526
|
if (proto !== Object.prototype && proto !== null) {
|
|
@@ -523,7 +567,7 @@ export function parseHostedReminderFireDescriptorPayload(value) {
|
|
|
523
567
|
return undefined;
|
|
524
568
|
}
|
|
525
569
|
const body = value;
|
|
526
|
-
if (Object.keys(body).some(key => !HOSTED_REMINDER_FIRE_DESCRIPTOR_KEYS.has(key))) {
|
|
570
|
+
if (Object.keys(body).some((key) => !HOSTED_REMINDER_FIRE_DESCRIPTOR_KEYS.has(key))) {
|
|
527
571
|
return undefined;
|
|
528
572
|
}
|
|
529
573
|
if (body.protocolVersion !== 1 ||
|
|
@@ -631,7 +675,7 @@ export function parseHostedAdmissionOutcome(value) {
|
|
|
631
675
|
return undefined;
|
|
632
676
|
}
|
|
633
677
|
const body = value;
|
|
634
|
-
if (Object.keys(body).some(key => !HOSTED_ADMISSION_OUTCOME_KEYS.has(key)) ||
|
|
678
|
+
if (Object.keys(body).some((key) => !HOSTED_ADMISSION_OUTCOME_KEYS.has(key)) ||
|
|
635
679
|
body.ok !== true ||
|
|
636
680
|
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
637
681
|
(body.outcome !== "skip" &&
|
|
@@ -65,6 +65,12 @@ export declare function registerHostedDeliveryRoute(input: {
|
|
|
65
65
|
outcome: "fired" | "noop";
|
|
66
66
|
reason?: string;
|
|
67
67
|
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Reserved schedule admission: run the named authored schedule and resolve
|
|
70
|
+
* only after every turn and `waitUntil` it started has settled. Throws
|
|
71
|
+
* {@link UnknownScheduleError} for a name this release does not declare.
|
|
72
|
+
*/
|
|
73
|
+
fireSchedule?(scheduleId: string): Promise<unknown>;
|
|
68
74
|
/**
|
|
69
75
|
* Await the session's durable mirror (dispatch chain + storage queue)
|
|
70
76
|
* before the execution reply: the control plane may park the pod the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { metrics } from "@opentelemetry/api";
|
|
2
3
|
import { packageVersion } from "./distribution.js";
|
|
3
4
|
import { dispatchOutcome } from "./channel-dispatch.js";
|
|
4
5
|
import { consumeHostedBoundSecrets, } from "./cursor/hosted-bound-secrets.js";
|
|
@@ -8,7 +9,7 @@ import { classifyExpectedDeliveryFailure } from "./expected-delivery-failure.js"
|
|
|
8
9
|
import { formatGuestNetworkServerTiming, GUEST_CONNECT_STALLED, GUEST_NETWORK_UNAVAILABLE, GuestNetworkUnavailableError, waitForGuestNetworkReady, } from "./guest-network.js";
|
|
9
10
|
import { getHostedAdmissionAdapter, } from "./hosted-admission-adapter.js";
|
|
10
11
|
import { HostedAdmissionLocalSendError, runDuringHostedAdmission, } from "./hosted-admission-context.js";
|
|
11
|
-
import { HOSTED_ADMISSION_PATH, HOSTED_DELIVERY_HEADER, HOSTED_DELIVERY_PROTOCOL_VERSION, HOSTED_EXECUTION_PATH, HOSTED_GUEST_RETRY_TERMINAL, HOSTED_GUEST_RETRY_TRANSIENT, HOSTED_MAX_CONSUMED_DELIVERY_IDS, hostedFailureClassification, hostedGuestErrorResponse, isHostedReminderAdmission, parseHostedAdmissionHandlerRejection, parseHostedAdmission, parseHostedExecution, parseHostedReminderFireDescriptorPayload, parseHostedReminderFirePayload, } from "./hosted-delivery-protocol.js";
|
|
12
|
+
import { HOSTED_ADMISSION_PATH, HOSTED_DELIVERY_HEADER, HOSTED_DELIVERY_PROTOCOL_VERSION, HOSTED_EXECUTION_PATH, HOSTED_GUEST_RETRY_TERMINAL, HOSTED_GUEST_RETRY_TRANSIENT, HOSTED_MAX_CONSUMED_DELIVERY_IDS, hostedFailureClassification, hostedGuestErrorResponse, isHostedReminderAdmission, isHostedScheduleAdmission, parseHostedAdmissionHandlerRejection, parseHostedAdmission, parseHostedExecution, parseHostedReminderFireDescriptorPayload, parseHostedReminderFirePayload, parseHostedScheduleFirePayload, } from "./hosted-delivery-protocol.js";
|
|
12
13
|
import { abortReasonFromTurnStatus, HOSTED_EXECUTION_DIAG_RUNNING_STATUS, hostedExecutionDiagId, } from "./hosted-execution-diag.js";
|
|
13
14
|
import { flushHostedExecutionRecord, refreshStartLogWhile, } from "./hosted-execution-flush.js";
|
|
14
15
|
import { finalizeHostedExecutionLatency, formatHostedExecutionLatencyServerTiming, hostedExecutionNow, runWithHostedExecutionLatency, } from "./hosted-execution-latency.js";
|
|
@@ -17,6 +18,7 @@ import { readJsonObject } from "./http-channel.js";
|
|
|
17
18
|
import { endActiveHttpSpan } from "./otel/http.js";
|
|
18
19
|
import { ReminderValidationError, UnknownReminderError } from "./reminder-runner.js";
|
|
19
20
|
import { mapThrownRequestError, statusForThrownRequestError } from "./request-error-status.js";
|
|
21
|
+
import { UnknownScheduleError } from "./schedule-runner.js";
|
|
20
22
|
import { HostedEnqueueNotActiveError } from "./session-engine.js";
|
|
21
23
|
async function responseToReply(response) {
|
|
22
24
|
const value = (await response.json());
|
|
@@ -215,6 +217,39 @@ async function dispatchHostedReminderAdmission(input, delivery) {
|
|
|
215
217
|
throw error;
|
|
216
218
|
}
|
|
217
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Reserved schedule admission: run the authored schedule by name and wait
|
|
222
|
+
* for everything it started before replying, because the control plane may
|
|
223
|
+
* park the VM as soon as this reply lands. Returns `task` (work ran) and
|
|
224
|
+
* never opens the send-capture / model-session path.
|
|
225
|
+
*/
|
|
226
|
+
async function dispatchHostedScheduleAdmission(input, delivery) {
|
|
227
|
+
if (input.fireSchedule === undefined) {
|
|
228
|
+
return transientHostedError(503, "schedule_dispatch_unavailable", "This guest has no schedule runner wired for hosted admission.");
|
|
229
|
+
}
|
|
230
|
+
const payload = parseHostedScheduleFirePayload(delivery.payload);
|
|
231
|
+
if (payload === undefined) {
|
|
232
|
+
return terminalHostedError(400, "invalid_schedule_payload", "Expected { protocolVersion: 1, scheduleId, scheduledAtMs }.");
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
await input.fireSchedule(payload.scheduleId);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
if (error instanceof UnknownScheduleError) {
|
|
239
|
+
return terminalHostedError(404, "unknown_schedule", boundedMessage(error.message));
|
|
240
|
+
}
|
|
241
|
+
const mapped = mappedAdmissionFailure(error);
|
|
242
|
+
if (mapped !== undefined) {
|
|
243
|
+
return mapped.response;
|
|
244
|
+
}
|
|
245
|
+
return terminalHostedError(500, "agent_admission_threw", boundedMessage(error instanceof Error ? error.message : String(error)));
|
|
246
|
+
}
|
|
247
|
+
return Response.json({
|
|
248
|
+
ok: true,
|
|
249
|
+
v: HOSTED_DELIVERY_PROTOCOL_VERSION,
|
|
250
|
+
outcome: "task",
|
|
251
|
+
});
|
|
252
|
+
}
|
|
218
253
|
async function runAdmission(input, adapter) {
|
|
219
254
|
const background = [];
|
|
220
255
|
let captured;
|
|
@@ -227,7 +262,7 @@ async function runAdmission(input, adapter) {
|
|
|
227
262
|
captured = { message, options };
|
|
228
263
|
return createDeferredChannelSession();
|
|
229
264
|
},
|
|
230
|
-
waitUntil: promise => {
|
|
265
|
+
waitUntil: (promise) => {
|
|
231
266
|
background.push(promise);
|
|
232
267
|
},
|
|
233
268
|
};
|
|
@@ -441,6 +476,9 @@ export function registerHostedDeliveryRoute(input) {
|
|
|
441
476
|
if (isHostedReminderAdmission(delivery)) {
|
|
442
477
|
return await responseToReply(finish(await dispatchHostedReminderAdmission(input, delivery)));
|
|
443
478
|
}
|
|
479
|
+
if (isHostedScheduleAdmission(delivery)) {
|
|
480
|
+
return await responseToReply(finish(await dispatchHostedScheduleAdmission(input, delivery)));
|
|
481
|
+
}
|
|
444
482
|
if (definition === undefined) {
|
|
445
483
|
return await responseToReply(finish(terminalHostedError(404, "channel_not_found", `No channel named "${delivery.channelId}" is mounted.`)));
|
|
446
484
|
}
|
|
@@ -473,7 +511,7 @@ export function registerHostedDeliveryRoute(input) {
|
|
|
473
511
|
});
|
|
474
512
|
// Hosted callers reach this only through Anyrun's signed pod-port URL.
|
|
475
513
|
// The marker is a second, route-specific fence distinct from channel auth.
|
|
476
|
-
const auth = request => {
|
|
514
|
+
const auth = (request) => {
|
|
477
515
|
if (request.headers.get(HOSTED_DELIVERY_HEADER) !== "1") {
|
|
478
516
|
return null;
|
|
479
517
|
}
|
|
@@ -535,15 +573,15 @@ export function registerHostedDeliveryRoute(input) {
|
|
|
535
573
|
}
|
|
536
574
|
console.info(`[bdk] hosted admission received deliveryId=${delivery.deliveryId} channelId=${delivery.channelId} channelKind=${delivery.channelKind} eventType=${delivery.eventType} sessionMode=${delivery.sessionMode} managedAutomation=${delivery.managedAutomation === undefined ? "<absent>" : `automationUuid=${delivery.managedAutomation.automationUuid} mcpServerNames=${String(delivery.managedAutomation.mcpServerNames.length)} slackChannels=${delivery.managedAutomation.slackChannels === undefined ? "<absent>" : JSON.stringify(delivery.managedAutomation.slackChannels)}`}`);
|
|
537
575
|
recordHostedManagedAutomation(delivery);
|
|
538
|
-
const
|
|
539
|
-
const definition =
|
|
576
|
+
const reserved = isHostedReminderAdmission(delivery) || isHostedScheduleAdmission(delivery);
|
|
577
|
+
const definition = reserved
|
|
540
578
|
? undefined
|
|
541
|
-
: input.channels.find(candidate => candidate.id === delivery.channelId)?.definition;
|
|
542
|
-
if (!
|
|
579
|
+
: input.channels.find((candidate) => candidate.id === delivery.channelId)?.definition;
|
|
580
|
+
if (!reserved && definition === undefined) {
|
|
543
581
|
return finish(terminalHostedError(404, "channel_not_found", `No channel named "${delivery.channelId}" is mounted.`));
|
|
544
582
|
}
|
|
545
583
|
let operation;
|
|
546
|
-
const execution = runAdmissionOperation(delivery, definition).then(reply => {
|
|
584
|
+
const execution = runAdmissionOperation(delivery, definition).then((reply) => {
|
|
547
585
|
operation.settledReply = reply;
|
|
548
586
|
operation.expiresAt = Date.now() + pendingTtlMs;
|
|
549
587
|
return reply;
|
|
@@ -555,7 +593,7 @@ export function registerHostedDeliveryRoute(input) {
|
|
|
555
593
|
admissions.set(delivery.deliveryId, operation);
|
|
556
594
|
const quickReply = await Promise.race([
|
|
557
595
|
execution,
|
|
558
|
-
new Promise(resolve => setImmediate(() => resolve(undefined))),
|
|
596
|
+
new Promise((resolve) => setImmediate(() => resolve(undefined))),
|
|
559
597
|
]);
|
|
560
598
|
if (quickReply !== undefined) {
|
|
561
599
|
return responseFromReply(quickReply);
|
|
@@ -824,11 +862,11 @@ export function registerHostedDeliveryRoute(input) {
|
|
|
824
862
|
}
|
|
825
863
|
}
|
|
826
864
|
});
|
|
827
|
-
}).then(reply => {
|
|
865
|
+
}).then((reply) => {
|
|
828
866
|
admitted.settledReply = reply;
|
|
829
867
|
admitted.expiresAt = Date.now() + pendingTtlMs;
|
|
830
868
|
return reply;
|
|
831
|
-
}, error => {
|
|
869
|
+
}, (error) => {
|
|
832
870
|
admitted.settledReply = {
|
|
833
871
|
status: 503,
|
|
834
872
|
body: {
|
|
@@ -845,7 +883,7 @@ export function registerHostedDeliveryRoute(input) {
|
|
|
845
883
|
if (execution.mode === "start") {
|
|
846
884
|
const quickReply = await Promise.race([
|
|
847
885
|
admitted.execution,
|
|
848
|
-
new Promise(resolve => setImmediate(() => resolve(undefined))),
|
|
886
|
+
new Promise((resolve) => setImmediate(() => resolve(undefined))),
|
|
849
887
|
]);
|
|
850
888
|
if (quickReply !== undefined) {
|
|
851
889
|
return responseFromReply(quickReply);
|
|
@@ -874,7 +912,7 @@ async function enqueueIntoActiveOwner(input) {
|
|
|
874
912
|
return { outcome: "not_active" };
|
|
875
913
|
}
|
|
876
914
|
let resolveResult;
|
|
877
|
-
const resultPromise = new Promise(resolve => {
|
|
915
|
+
const resultPromise = new Promise((resolve) => {
|
|
878
916
|
resolveResult = resolve;
|
|
879
917
|
});
|
|
880
918
|
owner.enqueueResults.set(input.deliveryId, resultPromise);
|
|
@@ -937,12 +975,22 @@ function evictHostedSdkSessions(evict, ...ids) {
|
|
|
937
975
|
}
|
|
938
976
|
const TRANSIENT_TURN_ERROR_CODES = new Set([
|
|
939
977
|
"ABORT_ERR",
|
|
978
|
+
"connection_stalled",
|
|
940
979
|
"UND_ERR_BODY_TIMEOUT",
|
|
941
980
|
"UND_ERR_HEADERS_TIMEOUT",
|
|
942
981
|
"canceled",
|
|
943
982
|
"unavailable",
|
|
944
983
|
"unknown",
|
|
945
984
|
]);
|
|
985
|
+
let stallRetriedCounter;
|
|
986
|
+
function recordStallRetried() {
|
|
987
|
+
if (stallRetriedCounter === undefined) {
|
|
988
|
+
stallRetriedCounter = metrics.getMeter("agent_sdk").createCounter("hosted.turn.stall_retried", {
|
|
989
|
+
description: "Hosted turns classified for transient retry after connection_stalled",
|
|
990
|
+
});
|
|
991
|
+
}
|
|
992
|
+
stallRetriedCounter.add(1, { failure_kind: "connection_stalled" });
|
|
993
|
+
}
|
|
946
994
|
function hostedFailureForUnfinishedTurn(outcome) {
|
|
947
995
|
if (outcome.errorCode === "agent_dependency_failed") {
|
|
948
996
|
return {
|
|
@@ -965,6 +1013,9 @@ function hostedFailureForUnfinishedTurn(outcome) {
|
|
|
965
1013
|
if (outcome.status === "error" &&
|
|
966
1014
|
outcome.errorCode !== undefined &&
|
|
967
1015
|
TRANSIENT_TURN_ERROR_CODES.has(outcome.errorCode)) {
|
|
1016
|
+
if (outcome.errorCode === "connection_stalled") {
|
|
1017
|
+
recordStallRetried();
|
|
1018
|
+
}
|
|
968
1019
|
return {
|
|
969
1020
|
error: GUEST_CONNECT_STALLED,
|
|
970
1021
|
retry: HOSTED_GUEST_RETRY_TRANSIENT,
|
|
@@ -19,7 +19,7 @@ export async function hostedEvalCatalog(projectRoot) {
|
|
|
19
19
|
const { evals, config } = await discoverEvals(projectRoot);
|
|
20
20
|
return {
|
|
21
21
|
protocol: 1,
|
|
22
|
-
cases: evals.map(e => ({
|
|
22
|
+
cases: evals.map((e) => ({
|
|
23
23
|
id: e.id,
|
|
24
24
|
fileId: e.fileId,
|
|
25
25
|
description: e.definition.description,
|
|
@@ -55,7 +55,7 @@ async function runHostedEvalCase(input) {
|
|
|
55
55
|
const deadline = new AbortController();
|
|
56
56
|
const cancel = new AbortController();
|
|
57
57
|
const result = await Promise.race([
|
|
58
|
-
runCase({ ...input, signal: cancel.signal }).catch(error => failedResult(input.evalCase, describeError(error), startedAt)),
|
|
58
|
+
runCase({ ...input, signal: cancel.signal }).catch((error) => failedResult(input.evalCase, describeError(error), startedAt)),
|
|
59
59
|
sleep(deadlineMs, undefined, { signal: deadline.signal }).then(async () => {
|
|
60
60
|
// The losing case body keeps running; it must not start turns after this verdict.
|
|
61
61
|
cancel.abort();
|
|
@@ -70,7 +70,7 @@ async function runHostedEvalCase(input) {
|
|
|
70
70
|
async function runCase(input) {
|
|
71
71
|
const startedAt = Date.now();
|
|
72
72
|
const { evals, config } = await discoverEvals(input.projectRoot);
|
|
73
|
-
const discovered = evals.find(e => e.id === input.evalCase.caseId);
|
|
73
|
+
const discovered = evals.find((e) => e.id === input.evalCase.caseId);
|
|
74
74
|
if (discovered === undefined) {
|
|
75
75
|
return failedResult(input.evalCase, `No eval case ${JSON.stringify(input.evalCase.caseId)} in this release`, startedAt);
|
|
76
76
|
}
|
|
@@ -152,7 +152,7 @@ function resultEventData(ref, result) {
|
|
|
152
152
|
inputs: result.inputs,
|
|
153
153
|
finalText: result.finalText,
|
|
154
154
|
tools: result.tools,
|
|
155
|
-
toolCalls: result.toolCalls?.map(call => ({
|
|
155
|
+
toolCalls: result.toolCalls?.map((call) => ({
|
|
156
156
|
toolName: call.toolName,
|
|
157
157
|
args: boundedIo(call.args),
|
|
158
158
|
output: boundedIo(call.output),
|
|
@@ -65,8 +65,8 @@ export function hostedErrorStackSnippet(error) {
|
|
|
65
65
|
if (stack !== undefined && stack.length > 0) {
|
|
66
66
|
const lines = stack
|
|
67
67
|
.split("\n")
|
|
68
|
-
.map(line => line.trimEnd())
|
|
69
|
-
.filter(line => line.trim().length > 0)
|
|
68
|
+
.map((line) => line.trimEnd())
|
|
69
|
+
.filter((line) => line.trim().length > 0)
|
|
70
70
|
.slice(0, HOSTED_ERROR_STACK_LINE_COUNT);
|
|
71
71
|
const text = lines.join("\n");
|
|
72
72
|
return text.length > HOSTED_ERROR_SNIPPET_MAX_CHARS
|
|
@@ -129,7 +129,7 @@ export function parseHostedExecutionDiag(raw) {
|
|
|
129
129
|
return undefined;
|
|
130
130
|
}
|
|
131
131
|
const body = parsed;
|
|
132
|
-
if (Object.keys(body).some(key => !DIAG_KEYS.has(key))) {
|
|
132
|
+
if (Object.keys(body).some((key) => !DIAG_KEYS.has(key))) {
|
|
133
133
|
return undefined;
|
|
134
134
|
}
|
|
135
135
|
if (body.v !== HOSTED_EXECUTION_DIAG_VERSION ||
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* it without pulling the hosted-delivery route — and its session-engine
|
|
11
11
|
* dependency graph — into their bundles.
|
|
12
12
|
*
|
|
13
|
-
* INTERNAL: first-party multi-tenant deployment plumbing.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* INTERNAL: first-party multi-tenant deployment plumbing. It ships because
|
|
14
|
+
* the published hosted-delivery runtime imports it; it is not an exported
|
|
15
|
+
* package subpath.
|
|
16
16
|
*/
|
|
17
17
|
import type { HostedAdmissionManagedAutomation } from "./hosted-delivery-protocol.js";
|
|
18
18
|
export declare function recordHostedManagedAutomation(delivery: {
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* it without pulling the hosted-delivery route — and its session-engine
|
|
11
11
|
* dependency graph — into their bundles.
|
|
12
12
|
*
|
|
13
|
-
* INTERNAL: first-party multi-tenant deployment plumbing.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* INTERNAL: first-party multi-tenant deployment plumbing. It ships because
|
|
14
|
+
* the published hosted-delivery runtime imports it; it is not an exported
|
|
15
|
+
* package subpath.
|
|
16
16
|
*/
|
|
17
17
|
/**
|
|
18
18
|
* Process-wide slot for the table. Hosted engines run the compiled CLI
|
package/dist/internal/hosting.js
CHANGED
|
@@ -71,7 +71,7 @@ export function isReservedSecretName(name) {
|
|
|
71
71
|
return true;
|
|
72
72
|
}
|
|
73
73
|
const upper = name.toUpperCase();
|
|
74
|
-
return PLATFORM_HOSTED_STORAGE_SECRET_NAMES.some(managed => managed === upper);
|
|
74
|
+
return PLATFORM_HOSTED_STORAGE_SECRET_NAMES.some((managed) => managed === upper);
|
|
75
75
|
}
|
|
76
76
|
/**
|
|
77
77
|
* Grammar and platform-managed-name errors in declared egress domains and
|
|
@@ -181,7 +181,7 @@ export function buildHttpChannelRoutes(args) {
|
|
|
181
181
|
playgroundUrl: playgroundUrlForSession(request, base, sessionId),
|
|
182
182
|
});
|
|
183
183
|
}
|
|
184
|
-
const ndjson = `${snapshot.map(e => JSON.stringify(e)).join("\n")}${snapshot.length > 0 ? "\n" : ""}`;
|
|
184
|
+
const ndjson = `${snapshot.map((e) => JSON.stringify(e)).join("\n")}${snapshot.length > 0 ? "\n" : ""}`;
|
|
185
185
|
return new Response(ndjson, {
|
|
186
186
|
status: 200,
|
|
187
187
|
headers: {
|
|
@@ -31,7 +31,7 @@ export function parseControlPlaneSessionPayload(payload) {
|
|
|
31
31
|
if (!isRecord(payload)) {
|
|
32
32
|
return { ok: false, error: "payload must be an object" };
|
|
33
33
|
}
|
|
34
|
-
if (Object.keys(payload).some(key => !PAYLOAD_KEYS.has(key))) {
|
|
34
|
+
if (Object.keys(payload).some((key) => !PAYLOAD_KEYS.has(key))) {
|
|
35
35
|
return { ok: false, error: "payload carries an unsupported field" };
|
|
36
36
|
}
|
|
37
37
|
const message = typeof payload.message === "string" ? payload.message.trim() : "";
|
|
@@ -58,7 +58,7 @@ export function parseControlPlaneEvalCasePayload(payload) {
|
|
|
58
58
|
if (!isRecord(payload)) {
|
|
59
59
|
return { ok: false, error: "payload must be an object" };
|
|
60
60
|
}
|
|
61
|
-
if (Object.keys(payload).some(key => !EVAL_CASE_PAYLOAD_KEYS.has(key))) {
|
|
61
|
+
if (Object.keys(payload).some((key) => !EVAL_CASE_PAYLOAD_KEYS.has(key))) {
|
|
62
62
|
return { ok: false, error: "payload carries an unsupported field" };
|
|
63
63
|
}
|
|
64
64
|
for (const key of ["runId", "caseId"]) {
|
|
@@ -22,7 +22,7 @@ export function isTemplateMetaPath(rel) {
|
|
|
22
22
|
}
|
|
23
23
|
export function templateFileHasReplacements(spec, rel) {
|
|
24
24
|
const file = posixRel(rel);
|
|
25
|
-
return spec.replace.some(rule => posixRel(rule.file) === file);
|
|
25
|
+
return spec.replace.some((rule) => posixRel(rule.file) === file);
|
|
26
26
|
}
|
|
27
27
|
export async function loadTemplateInitSpec(templateDir) {
|
|
28
28
|
try {
|
|
@@ -85,7 +85,7 @@ export async function collectTemplateAnswers(input) {
|
|
|
85
85
|
const vars = input.vars ?? {};
|
|
86
86
|
const answers = {};
|
|
87
87
|
const ask = input.ask ?? promptTemplateQuestion;
|
|
88
|
-
const out = input.out ?? (text => process.stdout.write(text));
|
|
88
|
+
const out = input.out ?? ((text) => process.stdout.write(text));
|
|
89
89
|
for (const question of input.spec.questions) {
|
|
90
90
|
if (question.id in vars || !input.interactive) {
|
|
91
91
|
const raw = vars[question.id]?.trim() || question.default;
|
|
@@ -143,7 +143,7 @@ export async function promptTemplateQuestion(question, options = {}) {
|
|
|
143
143
|
if (question.hint !== undefined) {
|
|
144
144
|
output.write(` ${question.hint}\n`);
|
|
145
145
|
}
|
|
146
|
-
return await new Promise(resolve => {
|
|
146
|
+
return await new Promise((resolve) => {
|
|
147
147
|
rl.question(`${question.prompt}${suffix} `, resolve);
|
|
148
148
|
});
|
|
149
149
|
}
|
|
@@ -182,7 +182,7 @@ function parseQuestionValue(question, raw) {
|
|
|
182
182
|
}
|
|
183
183
|
if (question.parse === "owner-repo-list") {
|
|
184
184
|
try {
|
|
185
|
-
const scope = parseCursorGithubRepoScope(trimmed.split(",").map(repo => repo.trim()));
|
|
185
|
+
const scope = parseCursorGithubRepoScope(trimmed.split(",").map((repo) => repo.trim()));
|
|
186
186
|
return { ok: true, value: scope.repos.join(", ") };
|
|
187
187
|
}
|
|
188
188
|
catch (error) {
|
|
@@ -196,10 +196,10 @@ function formatReplaceValue(rule, answers) {
|
|
|
196
196
|
if (raw === undefined || raw === "") {
|
|
197
197
|
return undefined;
|
|
198
198
|
}
|
|
199
|
-
const parts = raw.split(",").map(part => part.trim());
|
|
199
|
+
const parts = raw.split(",").map((part) => part.trim());
|
|
200
200
|
let value = raw;
|
|
201
201
|
if (rule.as === "json-array") {
|
|
202
|
-
value = `[${parts.map(part => JSON.stringify(part)).join(", ")}]`;
|
|
202
|
+
value = `[${parts.map((part) => JSON.stringify(part)).join(", ")}]`;
|
|
203
203
|
}
|
|
204
204
|
else if (rule.as === "first") {
|
|
205
205
|
const first = parts[0];
|
|
@@ -234,7 +234,7 @@ function parseQuestion(value, index) {
|
|
|
234
234
|
question.default = value.default;
|
|
235
235
|
}
|
|
236
236
|
if (Array.isArray(value.choices)) {
|
|
237
|
-
question.choices = value.choices.map(choice => String(choice));
|
|
237
|
+
question.choices = value.choices.map((choice) => String(choice));
|
|
238
238
|
}
|
|
239
239
|
if (value.parse === "owner-repo-list") {
|
|
240
240
|
question.parse = "owner-repo-list";
|