@cursor/bdk 0.2.6 → 0.2.7
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 +52 -57
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +34 -8
- package/dist/channels/github/types.d.ts +6 -0
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +37 -29
- package/dist/channels/slack/external-policy.d.ts.map +1 -1
- package/dist/channels/slack/external-policy.js +6 -6
- package/dist/channels/slack/inbound.d.ts +5 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +13 -0
- package/dist/channels/slack/index.d.ts +3 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +3 -0
- package/dist/channels/slack/log.d.ts +1 -1
- package/dist/channels/slack/log.js +1 -1
- package/dist/channels/slack/self-identity.d.ts +15 -0
- package/dist/channels/slack/self-identity.d.ts.map +1 -0
- package/dist/channels/slack/self-identity.js +48 -0
- package/dist/channels/slack/sender-name.d.ts +17 -0
- package/dist/channels/slack/sender-name.d.ts.map +1 -0
- package/dist/channels/slack/sender-name.js +87 -0
- package/dist/channels/slack/setup.js +1 -1
- package/dist/channels/slack/user-info.d.ts +15 -0
- package/dist/channels/slack/user-info.d.ts.map +1 -0
- package/dist/channels/slack/user-info.js +57 -0
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.CJLKDVza.js → app.oyjtOr3W.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.C25zYVuc.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BW9mrQmq.js → VPLocalSearchBox.D0P6J_UJ.js} +1 -1
- package/dist/docs/assets/chunks/{arc.D8ZOvM1m.js → arc.B0LY1J1h.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CXEKhLW-.js → architectureDiagram-Q4EWVU46.dPduLUxY.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.BJkVKblr.js → baseUniq.B_Ohm21h.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DQDbHxor.js → blockDiagram-DXYQGD6D.B4zcanaJ.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.ByMD6LYM.js → c4Diagram-AHTNJAMY.D9Iw21nx.js} +1 -1
- package/dist/docs/assets/chunks/channel.CRUyWDV-.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.Dtq1aVI9.js → chunk-4BX2VUAB.DDVwRShI.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.BL_XrkoQ.js → chunk-4TB4RGXK.DsYcdn1i.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.BDPXu94_.js → chunk-55IACEB6.BzzQvcYp.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DhGOQj4k.js → chunk-EDXVE4YY.BMiXZ7FX.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DSF5nr8v.js → chunk-FMBD7UC4.D_mBcLoc.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Day7wayw.js → chunk-OYMX7WX6.CMVjWVMx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.CpBEC0zA.js → chunk-QZHKN3VN.BG-FrPv9.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.X_7rY1rx.js → chunk-YZCP3GAM.CkFE1ap3.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CG_UObcQ.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CG_UObcQ.js +1 -0
- package/dist/docs/assets/chunks/clone.NYSZ9qZN.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BVRmi2ko.js → cose-bilkent-S5V4N54A.BVNnCTvY.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.Dei9oslB.js → dagre-KV5264BT.CDN5PR9l.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD._M-efGt7.js → diagram-5BDNPKRD.DQRUlT-i.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.D1Vmhfsj.js → diagram-G4DWMVQ6.CoeblYQT.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.cE1bmvAC.js → diagram-MMDJMWI5.DW3ymjl0.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.DkXAfznP.js → diagram-TYMM5635.BP0uN4Jw.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DH_pSwPg.js → erDiagram-SMLLAGMA.DVFUWEn4.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.kAWVN9j1.js → flowDiagram-DWJPFMVM.HU-eHspv.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.8r0w49-p.js → ganttDiagram-T4ZO3ILL.DHNhXijY.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.BDa7Bi1i.js → gitGraphDiagram-UUTBAWPF.DkISXcO3.js} +1 -1
- package/dist/docs/assets/chunks/{graph.BMPXHz_B.js → graph.CCV0fuRR.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.BmlcqewS.js → infoDiagram-42DDH7IO.bgILzOoc.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.CVSEQSul.js → ishikawaDiagram-UXIWVN3A.CuryXC0F.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BpeWJ5n-.js → journeyDiagram-VCZTEJTY.BL1Pr-wu.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.DHbDXuxB.js → kanban-definition-6JOO6SKY.BbGjvk4l.js} +1 -1
- package/dist/docs/assets/chunks/{layout.CzrCDgkP.js → layout.C4PfdldS.js} +1 -1
- package/dist/docs/assets/chunks/{linear.HwBsflwN.js → linear.C3xD1T6X.js} +1 -1
- package/dist/docs/assets/chunks/{min.DqGHolT3.js → min.CzgRAQ9c.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.ZYGlOawh.js → mindmap-definition-QFDTVHPH.CA9rSWum.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.C2KRXlNR.js → pieDiagram-DEJITSTG.B8MprgJu.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CHj3Qefp.js → quadrantDiagram-34T5L4WZ.DndDwbKT.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.B1L4Tf7k.js → requirementDiagram-MS252O5E.Zhfgwlnn.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.dNR2yi1B.js → sankeyDiagram-XADWPNL6.B6RRm6N5.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.BrvQ3C6m.js → sequenceDiagram-FGHM5R23.Bfmz-1PN.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BtehEykA.js → stateDiagram-FHFEXIEX.gbrdNqgj.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DOOmulfQ.js +1 -0
- package/dist/docs/assets/chunks/{theme.BDHBZUkP.js → theme.gpWjytMh.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Bn7nhqEN.js → timeline-definition-GMOUNBTQ.Bl1l7M1f.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.DKhc38sz.js → vennDiagram-DHZGUBPP.Dfle4U0d.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.DOXQ0w8J.js → wardley-RL74JXVD.BJrCW6xc.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.Bbq5B2Ic.js → wardleyDiagram-NUSXRM2D.CM_4lmvZ.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.B77HE1K8.js → xychartDiagram-5P7HB3ND.CHT5X28R.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.BsgDqYPh.js → reference_cli.md.GwugN3n-.js} +5 -5
- package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +1 -0
- package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
- package/dist/docs/building-with-agents.html +35 -35
- package/dist/docs/deployment.html +35 -35
- package/dist/docs/evals.html +35 -35
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +35 -35
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +35 -35
- package/dist/docs/guides/gitlab.html +35 -35
- package/dist/docs/guides/grokbot-agents.html +35 -35
- package/dist/docs/guides/hooks.html +35 -35
- package/dist/docs/guides/improve.html +35 -35
- package/dist/docs/guides/jev.html +35 -35
- package/dist/docs/guides/mcp-oauth.html +35 -35
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- package/dist/docs/guides/webhooks.html +35 -35
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +35 -35
- package/dist/docs/llms-full.txt +20 -9
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +35 -35
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +39 -39
- package/dist/docs/reference/cli.md +20 -9
- package/dist/docs/reference/connections.html +35 -35
- package/dist/docs/reference/evals.html +35 -35
- package/dist/docs/reference/extensions.html +35 -35
- package/dist/docs/reference/hooks.html +35 -35
- package/dist/docs/reference/http-api.html +35 -35
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +35 -35
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +35 -35
- package/dist/docs/reference/sessions.html +35 -35
- package/dist/docs/reference/skills.html +38 -38
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +35 -35
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/grokbot-agents.html +35 -35
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +35 -35
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +14 -0
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +5 -0
- package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts +17 -0
- package/dist/extensions/cursor-cloud-agents/lib/watch.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/watch.js +99 -0
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.d.ts +19 -0
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +71 -0
- package/dist/extensions/cursor-cloud-agents/skills/handoff.md +9 -5
- package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +3 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +3 -2
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +1 -1
- package/dist/files-backends/cursor-hosted.d.ts +22 -83
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +46 -160
- package/dist/files.d.ts +9 -32
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +7 -32
- package/dist/internal/artifacts-store.d.ts +13 -25
- package/dist/internal/artifacts-store.d.ts.map +1 -1
- package/dist/internal/artifacts-store.js +25 -46
- package/dist/internal/cli-ax.d.ts +10 -17
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +87 -155
- package/dist/internal/cli-bitbucket.js +5 -5
- package/dist/internal/cli-deploy.d.ts +4 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +117 -20
- package/dist/internal/cli-github.js +13 -13
- package/dist/internal/cli-gitlab.js +5 -5
- package/dist/internal/continuation-identity.d.ts +2 -0
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +4 -0
- package/dist/internal/conversation-mirror.d.ts +9 -38
- package/dist/internal/conversation-mirror.d.ts.map +1 -1
- package/dist/internal/conversation-mirror.js +62 -68
- package/dist/internal/cursor/account-mcp.d.ts +1 -1
- package/dist/internal/cursor/account-mcp.js +1 -1
- package/dist/internal/cursor/backend-client.js +1 -1
- package/dist/internal/cursor/github-credentials.js +3 -3
- package/dist/internal/cursor/hosted-bound-secrets.d.ts +6 -2
- package/dist/internal/cursor/hosted-bound-secrets.d.ts.map +1 -1
- package/dist/internal/cursor/hosted-bound-secrets.js +13 -2
- package/dist/internal/cursor/hosted-store-secrets.d.ts +13 -37
- package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +13 -37
- package/dist/internal/cursor/store-api-client.d.ts +17 -39
- package/dist/internal/cursor/store-api-client.d.ts.map +1 -1
- package/dist/internal/cursor/store-api-client.js +15 -37
- package/dist/internal/cursor-deployment-relay.js +3 -3
- package/dist/internal/cursor-event-relay.js +1 -1
- package/dist/internal/cursor-relay-core.d.ts +1 -1
- package/dist/internal/cursor-relay-core.d.ts.map +1 -1
- package/dist/internal/deploy-client.d.ts +55 -63
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +48 -28
- package/dist/internal/discovery/agent.d.ts +1 -1
- package/dist/internal/discovery/agent.d.ts.map +1 -1
- package/dist/internal/discovery/agent.js +4 -0
- package/dist/internal/discovery/extensions.d.ts +2 -1
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +11 -1
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +1 -0
- package/dist/internal/distribution.d.ts +2 -2
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +2 -2
- package/dist/internal/docs-site.js +3 -3
- package/dist/internal/eval-run-store.js +8 -8
- package/dist/internal/framework-file-storage.d.ts +10 -34
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +12 -39
- package/dist/internal/framework-storage-selection.d.ts +10 -46
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +15 -64
- package/dist/internal/github-fanout.js +2 -2
- package/dist/internal/handleAgentServeTrigger.d.ts +5 -8
- package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
- package/dist/internal/handleAgentServeTrigger.js +5 -8
- package/dist/internal/host-files.js +6 -9
- package/dist/internal/host-platforms.js +5 -5
- package/dist/internal/hosted-catch.d.ts +3 -2
- package/dist/internal/hosted-catch.d.ts.map +1 -1
- package/dist/internal/hosted-catch.js +27 -9
- package/dist/internal/hosted-delivery-protocol.d.ts +31 -8
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +102 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +32 -12
- package/dist/internal/hosted-execution-diag.d.ts +13 -24
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +11 -20
- package/dist/internal/hosted-execution-flush.d.ts +22 -10
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
- package/dist/internal/hosted-execution-flush.js +45 -9
- package/dist/internal/hosted-managed-automation.js +5 -5
- package/dist/internal/hosting.d.ts +5 -10
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +5 -10
- package/dist/internal/legacy-command-guard.d.ts +1 -4
- package/dist/internal/legacy-command-guard.d.ts.map +1 -1
- package/dist/internal/legacy-command-guard.js +2 -11
- package/dist/internal/listen-port.js +1 -1
- package/dist/internal/local-control-plane.js +6 -6
- package/dist/internal/logs-client.d.ts +20 -1
- package/dist/internal/logs-client.d.ts.map +1 -1
- package/dist/internal/logs-client.js +89 -1
- package/dist/internal/mcp-endpoint.js +1 -1
- package/dist/internal/otel/collector.js +1 -1
- package/dist/internal/otel/runtime.js +13 -13
- package/dist/internal/platform-schedule-sync.js +2 -2
- package/dist/internal/playground/toolchain.js +6 -6
- package/dist/internal/process-memory-telemetry.js +2 -2
- package/dist/internal/reminder-runner.d.ts +8 -3
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +51 -52
- package/dist/internal/resolve-prod-target.d.ts +1 -12
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +2 -32
- package/dist/internal/resolved-connections.js +8 -8
- package/dist/internal/run-client.d.ts +4 -3
- package/dist/internal/run-client.d.ts.map +1 -1
- package/dist/internal/run-client.js +98 -61
- package/dist/internal/runtime-dispatch-runner.d.ts +1 -0
- package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
- package/dist/internal/runtime-dispatch-runner.js +7 -1
- package/dist/internal/schedule-runner.js +1 -1
- package/dist/internal/sdk-runner.d.ts +4 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +37 -22
- package/dist/internal/server.d.ts +2 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +39 -38
- package/dist/internal/session-engine.d.ts +31 -44
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +67 -83
- package/dist/internal/session-run-log.d.ts +10 -24
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +13 -27
- package/dist/internal/sessions-client.d.ts.map +1 -1
- package/dist/internal/sessions-client.js +6 -3
- package/dist/internal/skills-sync.d.ts +3 -5
- package/dist/internal/skills-sync.d.ts.map +1 -1
- package/dist/internal/skills-sync.js +3 -5
- package/dist/internal/start-log-store.d.ts +7 -18
- package/dist/internal/start-log-store.d.ts.map +1 -1
- package/dist/internal/start-log-store.js +47 -24
- package/dist/internal/storage-coordinator.d.ts +7 -10
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +18 -20
- package/dist/internal/storage-roles.d.ts +5 -0
- package/dist/internal/storage-roles.d.ts.map +1 -1
- package/dist/internal/store-api-protocol.d.ts +12 -33
- package/dist/internal/store-api-protocol.d.ts.map +1 -1
- package/dist/internal/store-api-protocol.js +6 -22
- package/dist/internal/store-mirror.d.ts +4 -5
- package/dist/internal/store-mirror.d.ts.map +1 -1
- package/dist/internal/store-mirror.js +6 -8
- package/dist/internal/turn-lease-store.d.ts +12 -5
- package/dist/internal/turn-lease-store.d.ts.map +1 -1
- package/dist/internal/turn-lease-store.js +61 -8
- package/dist/internal/v2-hosting.d.ts +4 -7
- package/dist/internal/v2-hosting.d.ts.map +1 -1
- package/dist/internal/v2-hosting.js +4 -7
- package/dist/internal/workspace-sync.d.ts +3 -6
- package/dist/internal/workspace-sync.d.ts.map +1 -1
- package/dist/internal/workspace-sync.js +3 -6
- package/dist/internal/workspace.d.ts +10 -16
- package/dist/internal/workspace.d.ts.map +1 -1
- package/dist/internal/workspace.js +9 -14
- package/dist/memory.d.ts +17 -43
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +34 -80
- package/dist/playground/assets/index-DPKLl4C_.css +1 -0
- package/dist/playground/assets/index-MijLHTbB.js +71 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted-v2.d.ts +8 -36
- package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted-v2.js +9 -37
- package/dist/storage-backends/cursor-hosted.d.ts +17 -30
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +14 -27
- package/dist/storage-protocol.d.ts +13 -38
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +14 -39
- package/dist/types.d.ts +29 -30
- package/dist/types.d.ts.map +1 -1
- package/docs/reference/cli.md +20 -9
- package/package.json +1 -1
- package/templates/pr-autofixer/bot/instructions.md +3 -3
- package/dist/docs/assets/chunks/@localSearchIndexroot.Bq-pxRXm.js +0 -1
- package/dist/docs/assets/chunks/channel.DCU8W1RP.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.DwpXsM06.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DwpXsM06.js +0 -1
- package/dist/docs/assets/chunks/clone.DH6Mx2zB.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.kzD0-U89.js +0 -1
- package/dist/docs/assets/reference_cli.md.BsgDqYPh.lean.js +0 -1
- package/dist/playground/assets/index-6BbTPnaT.css +0 -1
- package/dist/playground/assets/index-CI7FAmOP.js +0 -71
- /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
* Durable artifact rows and payloads behind `ctx.artifacts`
|
|
3
3
|
* ({@link ArtifactsApi}).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* deploys and are visible on cloud VMs under the store mount); otherwise
|
|
8
|
-
* they land under `--state-root/artifacts` on local disk.
|
|
5
|
+
* Cursor-managed hosting preserves artifacts across deployment replacement.
|
|
6
|
+
* Self-hosted agents store them under `--state-root/artifacts`.
|
|
9
7
|
*/
|
|
10
8
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
11
9
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -36,26 +34,19 @@ export const ARTIFACTS_PAGE_MAX_LIMIT = 1000;
|
|
|
36
34
|
*/
|
|
37
35
|
const ARTIFACTS_PAGE_SCAN_MIN = 250;
|
|
38
36
|
/**
|
|
39
|
-
* Row-body hydration
|
|
40
|
-
*
|
|
41
|
-
* `Promise.all` over ~1k rows is a fleet-visible read burst (the 2026-09-18
|
|
42
|
-
* Agent Store read storm was this exact fan-out, run once per insert by the
|
|
43
|
-
* pre-metadata eviction path).
|
|
37
|
+
* Row-body hydration concurrency. A bounded fan-out keeps large listings
|
|
38
|
+
* from overwhelming the backing store.
|
|
44
39
|
*/
|
|
45
40
|
const ROW_HYDRATION_CONCURRENCY = 8;
|
|
46
41
|
/**
|
|
47
|
-
* Rows hydrated per round trip when the row store
|
|
48
|
-
*
|
|
49
|
-
* batch, so one page-scan slice is one control-plane request instead of one
|
|
50
|
-
* per row.
|
|
42
|
+
* Rows hydrated per round trip when the row store supports
|
|
43
|
+
* {@link ArtifactRowStore.getMany}.
|
|
51
44
|
*/
|
|
52
45
|
const ARTIFACTS_SCAN_BATCH_ROWS = 100;
|
|
53
46
|
/**
|
|
54
47
|
* Most rows one eviction pass may delete. Bounds the tag-latency cost of
|
|
55
|
-
* draining a store
|
|
56
|
-
*
|
|
57
|
-
* {@link ROW_HYDRATION_CONCURRENCY}-way batching, a full pass stays under
|
|
58
|
-
* ~10s while a backlog drains across the inserts that keep arriving.
|
|
48
|
+
* draining a store far past the retention cap; a backlog drains across
|
|
49
|
+
* subsequent inserts.
|
|
59
50
|
*/
|
|
60
51
|
const ARTIFACTS_EVICT_MAX_PER_PASS = 64;
|
|
61
52
|
/** Kind used by freeform tags when no kinds are declared. */
|
|
@@ -157,7 +148,7 @@ export class ArtifactsStore {
|
|
|
157
148
|
}
|
|
158
149
|
/**
|
|
159
150
|
* Bounded cursor pagination, newest-updated first. On a store whose
|
|
160
|
-
* listing tracks mtimes
|
|
151
|
+
* listing tracks mtimes, a page hydrates only
|
|
161
152
|
* the rows it examines — roughly `limit` bodies, never the whole store.
|
|
162
153
|
* Row-body order is the listing's mtime order (upserts rewrite the row,
|
|
163
154
|
* so mtime tracks `updatedAt`; same argument as eviction). The
|
|
@@ -165,15 +156,15 @@ export class ArtifactsStore {
|
|
|
165
156
|
* exactly by `updatedAt`.
|
|
166
157
|
*
|
|
167
158
|
* `matches` is a host-side *visibility* predicate composed with the
|
|
168
|
-
* public filter
|
|
159
|
+
* public filter. The engine passes session ownership through it. Its
|
|
169
160
|
* presence forces the exact hydrated lane: the metadata lane's cursor
|
|
170
|
-
* and
|
|
171
|
-
*
|
|
161
|
+
* and short-page continuation include hidden records. Returning them to a
|
|
162
|
+
* caller who cannot see those records would create a
|
|
172
163
|
* side channel (existence, count within the scan budget, boundary
|
|
173
164
|
* mtimes and cohort depths of hidden rows) that the pre-pagination
|
|
174
165
|
* filtered list never had. The exact lane's cursor names only a record
|
|
175
166
|
* the caller received, and continues only while more *visible* records
|
|
176
|
-
* remain
|
|
167
|
+
* remain, at the bounded cost of hydrating the full set.
|
|
177
168
|
*/
|
|
178
169
|
page(options) {
|
|
179
170
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -230,9 +221,8 @@ export class ArtifactsStore {
|
|
|
230
221
|
const records = [];
|
|
231
222
|
let examined = 0;
|
|
232
223
|
let lastExamined = start - 1;
|
|
233
|
-
// A batched row store hydrates a bigger slice per round trip
|
|
234
|
-
//
|
|
235
|
-
// the per-row fan-out bound so concurrency stays capped. An unfiltered
|
|
224
|
+
// A batched row store hydrates a bigger slice per round trip. Without
|
|
225
|
+
// one, keep the slice at the per-row fan-out bound. An unfiltered
|
|
236
226
|
// page needs exactly the rows it returns — every hydrated row matches —
|
|
237
227
|
// so cap its slice at the remaining page instead of over-hydrating a
|
|
238
228
|
// full batch for a small `limit`.
|
|
@@ -351,21 +341,11 @@ export class ArtifactsStore {
|
|
|
351
341
|
/**
|
|
352
342
|
* Trim toward the retention cap from listing metadata alone. Past the
|
|
353
343
|
* cap this runs on every new-row insert, so it must not hydrate row
|
|
354
|
-
* bodies
|
|
355
|
-
*
|
|
356
|
-
* 2026-09-18 read storm on the security-reviewer deployment. The store
|
|
357
|
-
* listing carries last-modified metadata, and a row is rewritten on
|
|
358
|
-
* every upsert, so listing mtime orders rows the same way their
|
|
359
|
-
* `updatedAt` does.
|
|
344
|
+
* bodies. The listing carries last-modified metadata, and each upsert
|
|
345
|
+
* rewrites its row, so listing mtime orders rows like `updatedAt`.
|
|
360
346
|
*
|
|
361
|
-
* Deletes are capped per pass
|
|
362
|
-
*
|
|
363
|
-
* store far past the cap (evictions failed during the 2026-09-19 read
|
|
364
|
-
* throttling and the backlog grew unchecked) must drain amortized
|
|
365
|
-
* across inserts, not wedge one insert deleting the whole backlog — on
|
|
366
|
-
* 2026-09-20 an uncapped pass held security-reviewer tags for hours and
|
|
367
|
-
* tripled review stage durations. Steady state (excess of 1) is
|
|
368
|
-
* unaffected.
|
|
347
|
+
* Deletes are capped per pass so a store far past the cap drains across
|
|
348
|
+
* inserts instead of delaying one insert for the entire backlog.
|
|
369
349
|
*/
|
|
370
350
|
evictPastCap() {
|
|
371
351
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -387,9 +367,8 @@ export class ArtifactsStore {
|
|
|
387
367
|
return __awaiter(this, void 0, void 0, function* () {
|
|
388
368
|
if (metas.some(meta => meta.mtimeMs !== undefined)) {
|
|
389
369
|
// A store that tracks mtimes must never regress to per-insert
|
|
390
|
-
// hydration.
|
|
391
|
-
//
|
|
392
|
-
// evicting an anomaly beats re-reading every row on every insert.
|
|
370
|
+
// hydration. An entry missing one sorts oldest via the comparator's
|
|
371
|
+
// `?? 0` and is evicted first, avoiding a full hydration on each insert.
|
|
393
372
|
return metas
|
|
394
373
|
.sort(byOldestModified)
|
|
395
374
|
.slice(0, excess)
|
|
@@ -457,9 +436,9 @@ export function artifactIdForKey(key) {
|
|
|
457
436
|
return `art_${createHash("sha256").update(key, "utf8").digest("hex").slice(0, 32)}`;
|
|
458
437
|
}
|
|
459
438
|
/**
|
|
460
|
-
* Oldest-modified first. Store mtimes can be coarse
|
|
461
|
-
*
|
|
462
|
-
*
|
|
439
|
+
* Oldest-modified first. Store mtimes can be coarse, so equal stamps
|
|
440
|
+
* tie-break by id. Within the same-stamp cohort, any victim is equally past
|
|
441
|
+
* the retention cap.
|
|
463
442
|
*/
|
|
464
443
|
function byOldestModified(a, b) {
|
|
465
444
|
var _a, _b;
|
|
@@ -517,7 +496,7 @@ function sinkBody(found) {
|
|
|
517
496
|
}
|
|
518
497
|
return found instanceof Uint8Array ? found : found.body;
|
|
519
498
|
}
|
|
520
|
-
/** Rows as one JSON
|
|
499
|
+
/** Rows as one JSON document each in the durable sink. */
|
|
521
500
|
function createSinkRowStore(sink, agentName) {
|
|
522
501
|
const key = (id) => agentStoreKeys.artifactRow(agentName, id);
|
|
523
502
|
return {
|
|
@@ -67,15 +67,13 @@ export interface AxCliOptions {
|
|
|
67
67
|
/** Remote agent base URL (skip local host) for run/eval/chat. */
|
|
68
68
|
url?: string;
|
|
69
69
|
/**
|
|
70
|
-
* Route chat/resume/run/call/
|
|
70
|
+
* Route chat/resume/run/call/logs/sessions at the team's hosted
|
|
71
71
|
* deployment instead of a local ephemeral server. Mutually exclusive with
|
|
72
|
-
* `--url`.
|
|
73
|
-
* `/v1/dev/evals/runs` (persisted when `defineStorage` has an `evals` table);
|
|
74
|
-
* without `--prod`, eval defaults to an ephemeral local harness.
|
|
72
|
+
* `--url`. `eval` rejects it.
|
|
75
73
|
*/
|
|
76
74
|
prod?: boolean;
|
|
77
75
|
/**
|
|
78
|
-
* `eval` (`--
|
|
76
|
+
* `eval` (`--url` only): start the batch via
|
|
79
77
|
* `POST /v1/dev/evals/runs` and return the `runId` without polling.
|
|
80
78
|
* Mutually exclusive with `--list`.
|
|
81
79
|
*/
|
|
@@ -157,26 +155,20 @@ export declare function cmdCall(options: AxCliOptions): Promise<number>;
|
|
|
157
155
|
export declare function cmdSkill(skillName: string | undefined, options: AxCliOptions): Promise<number>;
|
|
158
156
|
export declare function cmdTrajectory(options: AxCliOptions): Promise<number>;
|
|
159
157
|
/**
|
|
160
|
-
* Which surface `eval` should target
|
|
161
|
-
*
|
|
162
|
-
* Exported for tests.
|
|
158
|
+
* Which surface `eval` should target: an ephemeral local server by default,
|
|
159
|
+
* or a running server with `--url`. Exported for tests.
|
|
163
160
|
*/
|
|
164
|
-
export declare function resolveEvalTargetMode(options: Pick<AxCliOptions, "prod" | "url">): "local" | "url" |
|
|
161
|
+
export declare function resolveEvalTargetMode(options: Pick<AxCliOptions, "prod" | "url">): "local" | "url" | {
|
|
165
162
|
error: string;
|
|
166
163
|
};
|
|
167
164
|
export declare function cmdEval(options: AxCliOptions): Promise<number>;
|
|
168
|
-
/**
|
|
169
|
-
* Flags to re-target the same surface from an `eval --no-wait` hint.
|
|
170
|
-
* Exported for tests.
|
|
171
|
-
*/
|
|
172
|
-
export declare function formatEvalStatusFlags(options: Pick<AxCliOptions, "prod" | "url" | "slug" | "team">): string;
|
|
173
165
|
/**
|
|
174
166
|
* `eval cancel <runId>` — cancel a running remote batch by Eval ID.
|
|
175
167
|
*/
|
|
176
168
|
export declare function cmdEvalCancel(runId: string | undefined, options: AxCliOptions): Promise<number>;
|
|
177
169
|
/**
|
|
178
|
-
* `eval status [runId]` — fetch one batch (or list recent) on the
|
|
179
|
-
*
|
|
170
|
+
* `eval status [runId]` — fetch one batch (or list recent) on the `--url`
|
|
171
|
+
* target. Exit `0` when the batch is completed with all cases passing,
|
|
180
172
|
* `1` when failed / any case failed / unknown, `2` for usage errors, `3` when
|
|
181
173
|
* the batch is still running (for poll loops after `--no-wait`).
|
|
182
174
|
*/
|
|
@@ -196,7 +188,8 @@ export declare function resolveEvalArtifactsDir(projectRoot: string, options: Pi
|
|
|
196
188
|
export declare function formatEvalAssertionLine(assertion: EvalAssertionResult): string;
|
|
197
189
|
/**
|
|
198
190
|
* `logs` — follow deploy progress (`--prod`) then runtime agent logs.
|
|
199
|
-
* Local / `--url` tails `/v1/logs` only.
|
|
191
|
+
* Local / `--url` tails `/v1/logs` only. On architecture v2, `--prod` tails
|
|
192
|
+
* the output of the deployment's recent sessions, or one with `--session`.
|
|
200
193
|
*/
|
|
201
194
|
export declare function cmdLogs(options: AxCliOptions): Promise<number>;
|
|
202
195
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-ax.d.ts","sourceRoot":"","sources":["../../src/internal/cli-ax.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAA8C,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-ax.d.ts","sourceRoot":"","sources":["../../src/internal/cli-ax.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/cli-ax.js
CHANGED
|
@@ -30,12 +30,12 @@ import { cancelRemoteEvalRun, getRemoteEvalRun, listRemoteEvalRuns, listRemoteEv
|
|
|
30
30
|
import { runTemplateInit } from "./init-interview.js";
|
|
31
31
|
import { checkInitTarget, formatInitNextSteps, formatInitScaffoldSummary, initNextCommands, initProject, installScaffoldDependencies, linkCliOntoPath, printInitGuide, resolveTemplate, } from "./init-project.js";
|
|
32
32
|
import { offerInstallCursorSkills } from "./install-cursor-skills.js";
|
|
33
|
-
import {
|
|
34
|
-
import { runLogsTail, sanitizeCustomerError } from "./logs-client.js";
|
|
33
|
+
import { deploymentArchitecture, v2HostedVerifyHint } from "./legacy-command-guard.js";
|
|
34
|
+
import { followHostedLogs, runLogsTail, sanitizeCustomerError } from "./logs-client.js";
|
|
35
35
|
import { mapPool } from "./map-pool.js";
|
|
36
36
|
import { openBrowser } from "./open-browser.js";
|
|
37
37
|
import { startPlaygroundProxy } from "./playground-proxy.js";
|
|
38
|
-
import {
|
|
38
|
+
import { resolveProdPlaygroundUrl, resolveProdSlug, resolveProdTarget, } from "./resolve-prod-target.js";
|
|
39
39
|
import { runSession } from "./run-client.js";
|
|
40
40
|
import { buildSessionCostReport, formatSessionCostText, formatSessionsCostText, } from "./session-cost.js";
|
|
41
41
|
import { fetchSessionEvents, formatSessionsTable, listSessionsWithSource, resolvePreviousSessionId, } from "./sessions-client.js";
|
|
@@ -683,25 +683,17 @@ export function cmdTrajectory(options) {
|
|
|
683
683
|
});
|
|
684
684
|
}
|
|
685
685
|
/**
|
|
686
|
-
* Which surface `eval` should target
|
|
687
|
-
*
|
|
688
|
-
* Exported for tests.
|
|
686
|
+
* Which surface `eval` should target: an ephemeral local server by default,
|
|
687
|
+
* or a running server with `--url`. Exported for tests.
|
|
689
688
|
*/
|
|
690
689
|
export function resolveEvalTargetMode(options) {
|
|
691
|
-
const flags = [
|
|
692
|
-
options.prod === true ? "--prod" : undefined,
|
|
693
|
-
options.url !== undefined ? "--url" : undefined,
|
|
694
|
-
].filter(flag => flag !== undefined);
|
|
695
|
-
if (flags.length > 1) {
|
|
696
|
-
return { error: `${flags.join(" and ")} are mutually exclusive` };
|
|
697
|
-
}
|
|
698
|
-
if (options.url !== undefined) {
|
|
699
|
-
return "url";
|
|
700
|
-
}
|
|
701
690
|
if (options.prod === true) {
|
|
702
|
-
return
|
|
691
|
+
return {
|
|
692
|
+
error: `eval does not support --prod. Run \`${CLI_COMMAND_NAME} eval\` locally, ` +
|
|
693
|
+
`or pass --url for a running server.`,
|
|
694
|
+
};
|
|
703
695
|
}
|
|
704
|
-
return "local";
|
|
696
|
+
return options.url === undefined ? "local" : "url";
|
|
705
697
|
}
|
|
706
698
|
/** Resolve the eval target; prints a CLI-ready error and returns an exit code on failure. */
|
|
707
699
|
function resolveEvalTarget(options) {
|
|
@@ -714,39 +706,7 @@ function resolveEvalTarget(options) {
|
|
|
714
706
|
if (mode === "url") {
|
|
715
707
|
return { agentUrl: options.url.replace(/\/$/, "") };
|
|
716
708
|
}
|
|
717
|
-
|
|
718
|
-
return startEphemeral(options, true);
|
|
719
|
-
}
|
|
720
|
-
try {
|
|
721
|
-
const prod = yield resolveProdTarget({
|
|
722
|
-
dir: options.dir,
|
|
723
|
-
cwd: options.cwd,
|
|
724
|
-
slug: options.slug,
|
|
725
|
-
team: options.team,
|
|
726
|
-
apiKey: options.apiKey,
|
|
727
|
-
fetchImpl: options.fetchImpl,
|
|
728
|
-
command: "eval",
|
|
729
|
-
});
|
|
730
|
-
return { agentUrl: prod.agentUrl, headers: prod.headers };
|
|
731
|
-
}
|
|
732
|
-
catch (error) {
|
|
733
|
-
if (error instanceof ProdTargetError && error.notFound) {
|
|
734
|
-
// Keep the API error text: a 404 can also mean a wrong API host or a
|
|
735
|
-
// disabled feature gate, and the message distinguishes those from a
|
|
736
|
-
// genuinely missing deployment.
|
|
737
|
-
process.stderr.write(`${sanitizeCustomerError(error.message)}\n` +
|
|
738
|
-
` deploy it first: ${CLI_COMMAND_NAME} deploy --slug ${error.slug}\n` +
|
|
739
|
-
` or omit --prod: ${CLI_COMMAND_NAME} eval --dir ${options.dir}\n`);
|
|
740
|
-
return 1;
|
|
741
|
-
}
|
|
742
|
-
if (isUnsupportedV2LegacyCommandError(error)) {
|
|
743
|
-
process.stderr.write(`${error.message}\n`);
|
|
744
|
-
return 1;
|
|
745
|
-
}
|
|
746
|
-
process.stderr.write(`${sanitizeCustomerError(error instanceof Error ? error.message : String(error))}\n` +
|
|
747
|
-
`Omit --prod to run on an ephemeral local server.\n`);
|
|
748
|
-
return 1;
|
|
749
|
-
}
|
|
709
|
+
return startEphemeral(options, true);
|
|
750
710
|
});
|
|
751
711
|
}
|
|
752
712
|
export function cmdEval(options) {
|
|
@@ -765,7 +725,7 @@ export function cmdEval(options) {
|
|
|
765
725
|
return 2;
|
|
766
726
|
}
|
|
767
727
|
if (mode === "local") {
|
|
768
|
-
process.stderr.write("--no-wait requires --
|
|
728
|
+
process.stderr.write("--no-wait requires --url (not the default local target)\n");
|
|
769
729
|
return 2;
|
|
770
730
|
}
|
|
771
731
|
}
|
|
@@ -783,7 +743,7 @@ export function cmdEval(options) {
|
|
|
783
743
|
const tags = options.tags === undefined || options.tags.length === 0 ? undefined : options.tags;
|
|
784
744
|
if (options.list) {
|
|
785
745
|
// List the same surface a run will execute: local filesystem by default,
|
|
786
|
-
// GET /v1/dev/evals on --
|
|
746
|
+
// GET /v1/dev/evals on --url.
|
|
787
747
|
if (mode === "local") {
|
|
788
748
|
return listLocalEvals(projectRoot, options, filterIds, tags);
|
|
789
749
|
}
|
|
@@ -829,7 +789,7 @@ export function cmdEval(options) {
|
|
|
829
789
|
process.stderr.write(`eval target: ${target.agentUrl}\n`);
|
|
830
790
|
}
|
|
831
791
|
// Default local: ephemeral in-process harness against local eval sources.
|
|
832
|
-
// --
|
|
792
|
+
// --url: run on the serve process via /v1/dev/evals/runs so the
|
|
833
793
|
// batch lands in playground history and defineStorage evals (when set).
|
|
834
794
|
if (mode === "local") {
|
|
835
795
|
const progress = stream ? createStreamProgress() : undefined;
|
|
@@ -875,7 +835,7 @@ export function cmdEval(options) {
|
|
|
875
835
|
},
|
|
876
836
|
fetchImpl: options.fetchImpl,
|
|
877
837
|
});
|
|
878
|
-
return
|
|
838
|
+
return printEvalAccepted(started, options, target.agentUrl);
|
|
879
839
|
}
|
|
880
840
|
const progress = createRemoteEvalProgress(options.verbose === true || stream);
|
|
881
841
|
// Start first so we can print the Eval ID before the (often long) wait.
|
|
@@ -891,7 +851,7 @@ export function cmdEval(options) {
|
|
|
891
851
|
},
|
|
892
852
|
fetchImpl: options.fetchImpl,
|
|
893
853
|
});
|
|
894
|
-
|
|
854
|
+
printEvalIdBanner(started, options, target.agentUrl);
|
|
895
855
|
(_a = progress === null || progress === void 0 ? void 0 : progress.onSnapshot) === null || _a === void 0 ? void 0 : _a.call(progress, started);
|
|
896
856
|
const snapshot = yield pollRemoteEvalRun({
|
|
897
857
|
baseUrl: target.agentUrl,
|
|
@@ -930,106 +890,58 @@ export function cmdEval(options) {
|
|
|
930
890
|
}
|
|
931
891
|
});
|
|
932
892
|
}
|
|
933
|
-
/**
|
|
934
|
-
* Flags to re-target the same surface from an `eval --no-wait` hint.
|
|
935
|
-
* Exported for tests.
|
|
936
|
-
*/
|
|
937
|
-
export function formatEvalStatusFlags(options) {
|
|
938
|
-
const parts = [];
|
|
939
|
-
if (options.url !== undefined) {
|
|
940
|
-
parts.push(`--url ${options.url.replace(/\/$/, "")}`);
|
|
941
|
-
}
|
|
942
|
-
else {
|
|
943
|
-
parts.push("--prod");
|
|
944
|
-
if (options.slug !== undefined && options.slug !== "") {
|
|
945
|
-
parts.push(`--slug ${options.slug}`);
|
|
946
|
-
}
|
|
947
|
-
}
|
|
948
|
-
if (options.team !== undefined && options.team !== "") {
|
|
949
|
-
parts.push(`--team ${options.team}`);
|
|
950
|
-
}
|
|
951
|
-
return parts.length === 0 ? "" : ` ${parts.join(" ")}`;
|
|
952
|
-
}
|
|
953
893
|
/** Print Eval ID + cancel/status hints after a remote batch is accepted. */
|
|
954
894
|
function printEvalIdBanner(started, options, agentUrl) {
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
}
|
|
971
|
-
});
|
|
895
|
+
const pollPath = `${agentUrl.replace(/\/$/, "")}/v1/dev/evals/runs/${started.runId}`;
|
|
896
|
+
const statusFlags = ` --url ${agentUrl.replace(/\/$/, "")}`;
|
|
897
|
+
const playgroundUrl = evalPlaygroundDeepLink(started.runId, agentUrl);
|
|
898
|
+
if (options.json) {
|
|
899
|
+
// Waiters still want the id on stderr so progress text stays readable.
|
|
900
|
+
process.stderr.write(`${JSON.stringify(Object.assign({ evalId: started.runId, runId: started.runId, status: started.status, summary: started.summary, pollUrl: pollPath }, (playgroundUrl === undefined ? {} : { playgroundUrl })))}\n`);
|
|
901
|
+
return;
|
|
902
|
+
}
|
|
903
|
+
const durable = started.config.durableRuns === true ? " (persisted)" : "";
|
|
904
|
+
process.stderr.write(`Eval ID: ${started.runId}${durable} — ${started.summary.total} case(s)\n`);
|
|
905
|
+
process.stderr.write(`Cancel: ${CLI_COMMAND_NAME} eval cancel ${started.runId}${statusFlags}\n`);
|
|
906
|
+
process.stderr.write(`Status: ${CLI_COMMAND_NAME} eval status ${started.runId}${statusFlags}\n`);
|
|
907
|
+
if (playgroundUrl !== undefined) {
|
|
908
|
+
process.stderr.write(`Playground: ${playgroundUrl}\n`);
|
|
909
|
+
}
|
|
972
910
|
}
|
|
973
911
|
/** `--no-wait`: print the accepted batch id (and how to poll) then exit. */
|
|
974
912
|
function printEvalAccepted(started, options, agentUrl) {
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
process.stdout.write(`Playground: ${playgroundUrl}\n`);
|
|
989
|
-
}
|
|
990
|
-
process.stdout.write(`Poll: ${pollPath}\n`);
|
|
913
|
+
const pollPath = `${agentUrl.replace(/\/$/, "")}/v1/dev/evals/runs/${started.runId}`;
|
|
914
|
+
const statusFlags = ` --url ${agentUrl.replace(/\/$/, "")}`;
|
|
915
|
+
const playgroundUrl = evalPlaygroundDeepLink(started.runId, agentUrl);
|
|
916
|
+
if (options.json) {
|
|
917
|
+
process.stdout.write(`${JSON.stringify(Object.assign({ ok: true, accepted: true, evalId: started.runId, runId: started.runId, status: started.status, summary: started.summary, pollUrl: pollPath, durableRuns: started.config.durableRuns === true }, (playgroundUrl === undefined ? {} : { playgroundUrl })), null, 2)}\n`);
|
|
918
|
+
}
|
|
919
|
+
else {
|
|
920
|
+
const durable = started.config.durableRuns === true ? " (persisted)" : "";
|
|
921
|
+
process.stdout.write(`Eval ID: ${started.runId}${durable} — ${started.summary.total} case(s)\n`);
|
|
922
|
+
process.stdout.write(`Cancel: ${CLI_COMMAND_NAME} eval cancel ${started.runId}${statusFlags}\n`);
|
|
923
|
+
process.stdout.write(`Status: ${CLI_COMMAND_NAME} eval status ${started.runId}${statusFlags}\n`);
|
|
924
|
+
if (playgroundUrl !== undefined) {
|
|
925
|
+
process.stdout.write(`Playground: ${playgroundUrl}\n`);
|
|
991
926
|
}
|
|
992
|
-
|
|
993
|
-
}
|
|
927
|
+
process.stdout.write(`Poll: ${pollPath}\n`);
|
|
928
|
+
}
|
|
929
|
+
return 0;
|
|
994
930
|
}
|
|
995
931
|
/**
|
|
996
|
-
*
|
|
997
|
-
*
|
|
932
|
+
* Playground URL with `view=evals` + `evalRunId` so the SPA opens the batch
|
|
933
|
+
* that CLI / Slack started (not a stale sessionStorage id).
|
|
998
934
|
*/
|
|
999
|
-
function
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
catch (_a) {
|
|
1010
|
-
return undefined;
|
|
1011
|
-
}
|
|
1012
|
-
}
|
|
1013
|
-
try {
|
|
1014
|
-
const resolved = yield resolveProdAliasPlaygroundUrl({
|
|
1015
|
-
dir: options.dir,
|
|
1016
|
-
cwd: options.cwd,
|
|
1017
|
-
slug: options.slug,
|
|
1018
|
-
team: options.team,
|
|
1019
|
-
apiKey: options.apiKey,
|
|
1020
|
-
fetchImpl: options.fetchImpl,
|
|
1021
|
-
// Avoid a second "Using hosted deployment" line; banner already has context.
|
|
1022
|
-
err: () => { },
|
|
1023
|
-
});
|
|
1024
|
-
const url = new URL(resolved.playgroundUrl);
|
|
1025
|
-
url.searchParams.set("view", "evals");
|
|
1026
|
-
url.searchParams.set("evalRunId", runId);
|
|
1027
|
-
return url.toString();
|
|
1028
|
-
}
|
|
1029
|
-
catch (_b) {
|
|
1030
|
-
return undefined;
|
|
1031
|
-
}
|
|
1032
|
-
});
|
|
935
|
+
function evalPlaygroundDeepLink(runId, agentUrl) {
|
|
936
|
+
try {
|
|
937
|
+
const url = new URL(`${agentUrl.replace(/\/$/, "")}/playground`);
|
|
938
|
+
url.searchParams.set("view", "evals");
|
|
939
|
+
url.searchParams.set("evalRunId", runId);
|
|
940
|
+
return url.toString();
|
|
941
|
+
}
|
|
942
|
+
catch (_a) {
|
|
943
|
+
return undefined;
|
|
944
|
+
}
|
|
1033
945
|
}
|
|
1034
946
|
/**
|
|
1035
947
|
* `eval cancel <runId>` — cancel a running remote batch by Eval ID.
|
|
@@ -1042,11 +954,11 @@ export function cmdEvalCancel(runId, options) {
|
|
|
1042
954
|
return 2;
|
|
1043
955
|
}
|
|
1044
956
|
if (mode === "local") {
|
|
1045
|
-
process.stderr.write("eval cancel requires --
|
|
957
|
+
process.stderr.write("eval cancel requires --url (not the default local target)\n");
|
|
1046
958
|
return 2;
|
|
1047
959
|
}
|
|
1048
960
|
if (runId === undefined || runId === "") {
|
|
1049
|
-
process.stderr.write("usage: eval cancel <evalId> --
|
|
961
|
+
process.stderr.write("usage: eval cancel <evalId> --url <baseUrl>\n");
|
|
1050
962
|
return 2;
|
|
1051
963
|
}
|
|
1052
964
|
if (options.list === true || options.noWait === true) {
|
|
@@ -1087,8 +999,8 @@ export function cmdEvalCancel(runId, options) {
|
|
|
1087
999
|
});
|
|
1088
1000
|
}
|
|
1089
1001
|
/**
|
|
1090
|
-
* `eval status [runId]` — fetch one batch (or list recent) on the
|
|
1091
|
-
*
|
|
1002
|
+
* `eval status [runId]` — fetch one batch (or list recent) on the `--url`
|
|
1003
|
+
* target. Exit `0` when the batch is completed with all cases passing,
|
|
1092
1004
|
* `1` when failed / any case failed / unknown, `2` for usage errors, `3` when
|
|
1093
1005
|
* the batch is still running (for poll loops after `--no-wait`).
|
|
1094
1006
|
*/
|
|
@@ -1100,7 +1012,7 @@ export function cmdEvalStatus(runId, options) {
|
|
|
1100
1012
|
return 2;
|
|
1101
1013
|
}
|
|
1102
1014
|
if (mode === "local") {
|
|
1103
|
-
process.stderr.write("eval status requires --
|
|
1015
|
+
process.stderr.write("eval status requires --url (not the default local target)\n");
|
|
1104
1016
|
return 2;
|
|
1105
1017
|
}
|
|
1106
1018
|
if (options.list === true || options.noWait === true) {
|
|
@@ -1405,7 +1317,8 @@ export function formatEvalAssertionLine(assertion) {
|
|
|
1405
1317
|
}
|
|
1406
1318
|
/**
|
|
1407
1319
|
* `logs` — follow deploy progress (`--prod`) then runtime agent logs.
|
|
1408
|
-
* Local / `--url` tails `/v1/logs` only.
|
|
1320
|
+
* Local / `--url` tails `/v1/logs` only. On architecture v2, `--prod` tails
|
|
1321
|
+
* the output of the deployment's recent sessions, or one with `--session`.
|
|
1409
1322
|
*/
|
|
1410
1323
|
export function cmdLogs(options) {
|
|
1411
1324
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1414,6 +1327,11 @@ export function cmdLogs(options) {
|
|
|
1414
1327
|
process.stderr.write("--prod and --url are mutually exclusive\n");
|
|
1415
1328
|
return 2;
|
|
1416
1329
|
}
|
|
1330
|
+
const sessionId = trimNonEmpty(options.sessionId);
|
|
1331
|
+
if (sessionId !== undefined && options.prod !== true) {
|
|
1332
|
+
process.stderr.write("A session id needs --prod on an architecture v2 deployment\n");
|
|
1333
|
+
return 2;
|
|
1334
|
+
}
|
|
1417
1335
|
const controller = new AbortController();
|
|
1418
1336
|
const onSignal = () => {
|
|
1419
1337
|
controller.abort();
|
|
@@ -1435,12 +1353,26 @@ export function cmdLogs(options) {
|
|
|
1435
1353
|
if (typeof auth === "number") {
|
|
1436
1354
|
return auth;
|
|
1437
1355
|
}
|
|
1438
|
-
yield
|
|
1356
|
+
const architecture = yield deploymentArchitecture({
|
|
1439
1357
|
client: auth.client,
|
|
1440
1358
|
teamId: auth.teamId,
|
|
1441
1359
|
slug,
|
|
1442
|
-
command: "logs",
|
|
1443
1360
|
});
|
|
1361
|
+
if (architecture === "v2") {
|
|
1362
|
+
yield followHostedLogs({
|
|
1363
|
+
slug,
|
|
1364
|
+
read: signal => auth.client.getAgentkitDeploymentLogs({ teamId: auth.teamId, slug, sessionId, signal }),
|
|
1365
|
+
scoped: sessionId !== undefined,
|
|
1366
|
+
once: options.once === true,
|
|
1367
|
+
json: options.json === true,
|
|
1368
|
+
signal: controller.signal,
|
|
1369
|
+
});
|
|
1370
|
+
return 0;
|
|
1371
|
+
}
|
|
1372
|
+
if (sessionId !== undefined) {
|
|
1373
|
+
process.stderr.write(`A session id needs an architecture v2 deployment; "${slug}" is v1\n`);
|
|
1374
|
+
return 2;
|
|
1375
|
+
}
|
|
1444
1376
|
yield runLogsTail({
|
|
1445
1377
|
prod: true,
|
|
1446
1378
|
dir: options.dir,
|
|
@@ -151,7 +151,7 @@ function cmdBitbucketReplay(options) {
|
|
|
151
151
|
const declared = [...new Set(targets.flatMap(target => target.events))];
|
|
152
152
|
const { events, unsupported } = selectBitbucketReplayEvents(requested, declared);
|
|
153
153
|
if (unsupported.length > 0) {
|
|
154
|
-
process.stderr.write(`[
|
|
154
|
+
process.stderr.write(`[bdk] cannot synthesize (skipped): ${unsupported.join(", ")}\n`);
|
|
155
155
|
}
|
|
156
156
|
if (events.length === 0) {
|
|
157
157
|
process.stderr.write("no synthesizable events selected\n");
|
|
@@ -180,7 +180,7 @@ function cmdBitbucketReplay(options) {
|
|
|
180
180
|
comment: options.comment,
|
|
181
181
|
});
|
|
182
182
|
if ("error" in result) {
|
|
183
|
-
process.stderr.write(`[
|
|
183
|
+
process.stderr.write(`[bdk] skipping ${event}: ${result.error}\n`);
|
|
184
184
|
continue;
|
|
185
185
|
}
|
|
186
186
|
synthesized.push(result);
|
|
@@ -190,7 +190,7 @@ function cmdBitbucketReplay(options) {
|
|
|
190
190
|
return 1;
|
|
191
191
|
}
|
|
192
192
|
const secret = (_a = options.secret) !== null && _a !== void 0 ? _a : process.env.BITBUCKET_WEBHOOK_SECRET;
|
|
193
|
-
process.stderr.write(`[
|
|
193
|
+
process.stderr.write(`[bdk] replaying ${ref.label} (${ref.dialect}; ${synthesized
|
|
194
194
|
.map(event => event.eventType)
|
|
195
195
|
.join(", ")}) → ${targets.length} channel${targets.length === 1 ? "" : "s"}\n`);
|
|
196
196
|
const report = [];
|
|
@@ -207,7 +207,7 @@ function cmdBitbucketReplay(options) {
|
|
|
207
207
|
}
|
|
208
208
|
if (options.out !== undefined) {
|
|
209
209
|
const file = yield writeReplayFixture(options.out, event);
|
|
210
|
-
process.stderr.write(`[
|
|
210
|
+
process.stderr.write(`[bdk] wrote ${file}\n`);
|
|
211
211
|
}
|
|
212
212
|
if (options.dryRun === true) {
|
|
213
213
|
report.push(Object.assign(Object.assign({}, eventReport(event)), { payload: event.payload }));
|
|
@@ -225,7 +225,7 @@ function cmdBitbucketReplay(options) {
|
|
|
225
225
|
const summary = deliveries
|
|
226
226
|
.map(d => `${d.label} ${d.status || "ERR"}${d.ok ? "" : " (rejected)"}`)
|
|
227
227
|
.join(", ") || "(no matching channel)";
|
|
228
|
-
process.stderr.write(`[
|
|
228
|
+
process.stderr.write(`[bdk] ${event.header} → ${summary}\n`);
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
if (options.json === true) {
|