@cursor/july 0.1.30 → 0.1.32
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/AGENTS.md +1 -1
- package/README.md +10 -5
- package/dist/bin/agent-serve.js +4 -4
- package/dist/channels/github/index.d.ts +1 -1
- package/dist/channels/github/index.js +1 -1
- package/dist/channels/slack/bot-mentions.d.ts +1 -1
- package/dist/channels/slack/bot-mentions.d.ts.map +1 -1
- package/dist/channels/slack/bot-mentions.js +1 -1
- package/dist/channels/slack/eval-directive.js +1 -1
- package/dist/channels/slack/external-policy.d.ts +1 -1
- package/dist/channels/slack/external-policy.js +1 -1
- package/dist/channels/slack/log.d.ts +1 -1
- package/dist/channels/slack/log.js +1 -1
- package/dist/channels/slack/post-update-delivery.d.ts +85 -0
- package/dist/channels/slack/post-update-delivery.d.ts.map +1 -0
- package/dist/channels/slack/setup.js +1 -1
- package/dist/channels/slack/socket-mode.js +1 -1
- package/dist/docs/404.html +3 -3
- package/dist/docs/ab.html +11 -11
- package/dist/docs/assets/{ab.md.BMCZ6Hd7.js → ab.md.DAQoJ-up.js} +6 -6
- package/dist/docs/assets/{ab.md.BMCZ6Hd7.lean.js → ab.md.DAQoJ-up.lean.js} +1 -1
- package/dist/docs/assets/{app.Cm4lsMc4.js → app.C2aVczmo.js} +1 -1
- package/dist/docs/assets/building-with-agents.md.CnHqvYDd.js +13 -0
- package/dist/docs/assets/{building-with-agents.md.CJCtZCyi.lean.js → building-with-agents.md.CnHqvYDd.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.xgMnlUSO.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CYUFXspH.js → VPLocalSearchBox.DLEzetbD.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CTjkX9vc.js → theme.BkOH1oMp.js} +2 -2
- package/dist/docs/assets/concepts.md.DFaQEFkA.js +4 -0
- package/dist/docs/assets/concepts.md.DFaQEFkA.lean.js +1 -0
- package/dist/docs/assets/deployment.md.9MYBuKM1.js +55 -0
- package/dist/docs/assets/deployment.md.9MYBuKM1.lean.js +1 -0
- package/dist/docs/assets/{evals.md.DYOjkRCX.js → evals.md.BIUoVZ6X.js} +13 -13
- package/dist/docs/assets/evals.md.BIUoVZ6X.lean.js +1 -0
- package/dist/docs/assets/{example-agents_approval-buddy.md.DFGBYLcc.js → example-agents_approval-buddy.md.BhEfleVx.js} +4 -4
- package/dist/docs/assets/{example-agents_approval-buddy.md.DFGBYLcc.lean.js → example-agents_approval-buddy.md.BhEfleVx.lean.js} +1 -1
- package/dist/docs/assets/example-agents_benny.md.2Et1qa8f.js +7 -0
- package/dist/docs/assets/{example-agents_bugbot.md.DelIdhxB.js → example-agents_bugbot.md.ByUexi5i.js} +5 -5
- package/dist/docs/assets/{example-agents_codebase-wiki.md.DC6sgwn0.js → example-agents_codebase-wiki.md.B4y-7ZVW.js} +6 -6
- package/dist/docs/assets/{example-agents_codebase-wiki.md.DC6sgwn0.lean.js → example-agents_codebase-wiki.md.B4y-7ZVW.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_codeowners-review.md.Ku_tG2RY.js → example-agents_codeowners-review.md.D6ay4nvf.js} +6 -6
- package/dist/docs/assets/{example-agents_codeowners-review.md.Ku_tG2RY.lean.js → example-agents_codeowners-review.md.D6ay4nvf.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_concierge.md.4rQTSMXt.js → example-agents_concierge.md.lL8rhYlj.js} +7 -7
- package/dist/docs/assets/{example-agents_fsd.md.CzgUrDfi.js → example-agents_fsd.md.DfNKQTHz.js} +5 -5
- package/dist/docs/assets/example-agents_index.md.DgGBwckv.js +2 -0
- package/dist/docs/assets/example-agents_index.md.DgGBwckv.lean.js +1 -0
- package/dist/docs/assets/{example-agents_knowledge-base.md.BPJiVueF.js → example-agents_knowledge-base.md.CzyZ2DCr.js} +5 -5
- package/dist/docs/assets/{example-agents_knowledge-base.md.BPJiVueF.lean.js → example-agents_knowledge-base.md.CzyZ2DCr.lean.js} +1 -1
- package/dist/docs/assets/example-agents_oncall.md.wFFXXEyW.js +10 -0
- package/dist/docs/assets/{example-agents_security-reviewer.md.Dhj_m7_B.js → example-agents_security-reviewer.md.Dkf1gyo6.js} +8 -8
- package/dist/docs/assets/example-agents_slack-agent.md.DvgvT4nn.js +5 -0
- package/dist/docs/assets/example-agents_weather-agent.md.Dmrcphhl.js +24 -0
- package/dist/docs/assets/example-agents_weather-agent.md.Dmrcphhl.lean.js +1 -0
- package/dist/docs/assets/{guides_agent-to-agent.md.Bpzgq2Pq.js → guides_agent-to-agent.md.Bmbxy-FA.js} +4 -4
- package/dist/docs/assets/guides_cloud-runtime.md.BZ2GA7Es.js +9 -0
- package/dist/docs/assets/{guides_github.md.DOOCpqsW.js → guides_github.md.R2QlpR75.js} +5 -5
- package/dist/docs/assets/{guides_human-in-the-loop.md.DlUqsp1S.js → guides_human-in-the-loop.md.BWvT7UqY.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.Dd8EgSem.js → guides_mcp-oauth.md.C7G7IykG.js} +5 -5
- package/dist/docs/assets/guides_mcp-oauth.md.C7G7IykG.lean.js +1 -0
- package/dist/docs/assets/guides_slack.md.zriQpU_9.js +47 -0
- package/dist/docs/assets/guides_slack.md.zriQpU_9.lean.js +1 -0
- package/dist/docs/assets/{guides_webhooks.md.wSOYas3X.js → guides_webhooks.md.DiAwSR42.js} +1 -1
- package/dist/docs/assets/{hillclimbing.md.DHNast08.js → hillclimbing.md.D9Y1_bYh.js} +1 -1
- package/dist/docs/assets/index.md.CZqbBJPB.js +20 -0
- package/dist/docs/assets/index.md.CZqbBJPB.lean.js +1 -0
- package/dist/docs/assets/{quickstart.md.BU6Iwi_9.js → quickstart.md.TnEXYgYW.js} +12 -12
- package/dist/docs/assets/{reference_agent-config.md.DrW2JUM8.js → reference_agent-config.md.kuN6-OxK.js} +1 -1
- package/dist/docs/assets/reference_cli.md.sD-IUWjg.js +73 -0
- package/dist/docs/assets/{reference_cli.md.ccoKOoXt.lean.js → reference_cli.md.sD-IUWjg.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.B9Q3TOve.js → reference_connections.md.DGqAsFXb.js} +3 -3
- package/dist/docs/assets/reference_http-api.md.CfVM_ICa.js +11 -0
- package/dist/docs/assets/{reference_project-layout.md.Bd_CKtNS.js → reference_project-layout.md.D8E6ZmHJ.js} +4 -4
- package/dist/docs/assets/{reference_project-layout.md.Bd_CKtNS.lean.js → reference_project-layout.md.D8E6ZmHJ.lean.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.w_F2mXB6.js → reference_schedules.md.gmfYzf_I.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.DLd6mvbv.js → reference_sessions.md.C_ouF_uf.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.BRSDnTbN.js → reference_tools.md.BswAQM41.js} +3 -3
- package/dist/docs/assets/{scaffolding-agents.md.C3pTrmoE.js → scaffolding-agents.md.Bsr9Pwzu.js} +1 -1
- package/dist/docs/assets/{scaffolding-agents.md.C3pTrmoE.lean.js → scaffolding-agents.md.Bsr9Pwzu.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.DRTdnFvd.js → storage.md.xZoiGM58.js} +3 -3
- package/dist/docs/assets/storage.md.xZoiGM58.lean.js +1 -0
- package/dist/docs/assets/troubleshooting.md.B5RVX_tL.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.CmQkmnzC.lean.js → troubleshooting.md.B5RVX_tL.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +12 -12
- package/dist/docs/concepts.html +6 -6
- package/dist/docs/deployment.html +32 -32
- package/dist/docs/evals.html +19 -19
- package/dist/docs/example-agents/approval-buddy.html +9 -9
- package/dist/docs/example-agents/benny.html +11 -11
- package/dist/docs/example-agents/bugbot.html +10 -10
- package/dist/docs/example-agents/codebase-wiki.html +11 -11
- package/dist/docs/example-agents/codeowners-review.html +11 -11
- package/dist/docs/example-agents/concierge.html +12 -12
- package/dist/docs/example-agents/fsd.html +10 -10
- package/dist/docs/example-agents/index.html +7 -7
- package/dist/docs/example-agents/knowledge-base.html +10 -10
- package/dist/docs/example-agents/oncall.html +10 -10
- package/dist/docs/example-agents/security-reviewer.html +13 -13
- package/dist/docs/example-agents/slack-agent.html +10 -10
- package/dist/docs/example-agents/weather-agent.html +16 -16
- package/dist/docs/guides/agent-to-agent.html +9 -9
- package/dist/docs/guides/cloud-runtime.html +7 -7
- package/dist/docs/guides/github.html +10 -10
- package/dist/docs/guides/human-in-the-loop.html +7 -7
- package/dist/docs/guides/mcp-oauth.html +11 -11
- package/dist/docs/guides/slack.html +22 -17
- package/dist/docs/guides/webhooks.html +7 -7
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +7 -7
- package/dist/docs/index.html +9 -9
- package/dist/docs/quickstart.html +17 -17
- package/dist/docs/reference/agent-config.html +7 -7
- package/dist/docs/reference/channels.html +5 -5
- package/dist/docs/reference/cli.html +56 -48
- package/dist/docs/reference/connections.html +9 -9
- package/dist/docs/reference/hooks.html +5 -5
- package/dist/docs/reference/http-api.html +7 -7
- package/dist/docs/reference/instructions.html +5 -5
- package/dist/docs/reference/playground.html +5 -5
- package/dist/docs/reference/project-layout.html +9 -9
- package/dist/docs/reference/prompt.html +5 -5
- package/dist/docs/reference/schedules.html +7 -7
- package/dist/docs/reference/sessions.html +8 -8
- package/dist/docs/reference/skills.html +5 -5
- package/dist/docs/reference/subagents.html +5 -5
- package/dist/docs/reference/tools.html +9 -9
- package/dist/docs/scaffolding-agents.html +6 -6
- package/dist/docs/storage.html +9 -9
- package/dist/docs/troubleshooting.html +6 -6
- package/dist/evals/reporters.d.ts +1 -1
- package/dist/evals/reporters.js +1 -1
- package/dist/evals.d.ts +2 -2
- package/dist/files-backends/agent-store-presigned-url.d.ts +3 -0
- package/dist/files-backends/agent-store-presigned-url.d.ts.map +1 -0
- package/dist/files-backends/agent-store-presigned-url.js +1023 -0
- package/dist/files-backends/cursor-hosted.d.ts +87 -0
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -0
- package/dist/files-backends/cursor-hosted.js +563 -0
- package/dist/files-backends/local-fs.d.ts +33 -0
- package/dist/files-backends/local-fs.d.ts.map +1 -0
- package/dist/files-backends/local-fs.js +199 -0
- package/dist/files.d.ts +139 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +89 -0
- package/dist/internal/ab-collector.js +2 -2
- package/dist/internal/ab-fold.js +1 -1
- package/dist/internal/cli-ax.d.ts +2 -2
- package/dist/internal/cli-ax.js +2 -2
- package/dist/internal/cli-deploy.d.ts +1 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +7 -2
- package/dist/internal/cli-docs.d.ts +1 -1
- package/dist/internal/cli-docs.js +1 -1
- package/dist/internal/cli-github.js +13 -13
- package/dist/internal/cli-mcp-oauth.d.ts +1 -1
- package/dist/internal/cli-mcp-oauth.js +2 -2
- package/dist/internal/cli-mcp.d.ts +3 -3
- package/dist/internal/cli-mcp.js +4 -4
- package/dist/internal/cli-skills.js +1 -1
- package/dist/internal/cloud-turn-cost.d.ts +9 -1
- package/dist/internal/cloud-turn-cost.d.ts.map +1 -1
- package/dist/internal/cloud-turn-cost.js +14 -4
- package/dist/internal/cursor/account-mcp.js +5 -5
- package/dist/internal/cursor/backend-client.js +1 -1
- package/dist/internal/cursor/github-credentials.js +3 -3
- package/dist/internal/cursor-account-mcp-auth.d.ts +1 -1
- package/dist/internal/cursor-account-mcp-auth.js +1 -1
- 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/cursor-slack-relay.js +1 -1
- package/dist/internal/deploy-client.d.ts +6 -1
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +3 -2
- package/dist/internal/deploy-source.d.ts +2 -2
- package/dist/internal/deploy-source.js +2 -2
- package/dist/internal/discovery.js +2 -2
- package/dist/internal/distribution.d.ts +5 -5
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +6 -6
- package/dist/internal/docs-site.js +5 -5
- package/dist/internal/eval-run-store.js +8 -8
- package/dist/internal/evals-client.d.ts +1 -1
- package/dist/internal/evals-client.js +1 -1
- package/dist/internal/github-fanout.js +2 -2
- package/dist/internal/host-files.d.ts +29 -0
- package/dist/internal/host-files.d.ts.map +1 -0
- package/dist/internal/host-files.js +283 -0
- package/dist/internal/host-platforms.js +5 -5
- package/dist/internal/hosting.d.ts +1 -1
- package/dist/internal/hosting.js +1 -1
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +26 -0
- package/dist/internal/install-cursor-skills.d.ts +1 -1
- package/dist/internal/install-cursor-skills.d.ts.map +1 -1
- package/dist/internal/install-cursor-skills.js +33 -4
- package/dist/internal/json-dir-store.d.ts +32 -0
- package/dist/internal/json-dir-store.d.ts.map +1 -0
- package/dist/internal/local-control-plane.js +2 -2
- package/dist/internal/logs-client.d.ts +2 -2
- package/dist/internal/logs-client.js +2 -2
- package/dist/internal/mcp-endpoint.js +1 -1
- package/dist/internal/mcp-oauth.js +2 -2
- package/dist/internal/persistence-coordinator.d.ts +127 -0
- package/dist/internal/persistence-coordinator.d.ts.map +1 -0
- package/dist/internal/platform-schedule-sync.js +2 -2
- package/dist/internal/playground/toolchain.js +6 -6
- package/dist/internal/reminder-runner.js +13 -13
- package/dist/internal/resolved-connections.js +6 -6
- package/dist/internal/schedule-runner.js +1 -1
- package/dist/internal/sdk-runner.js +5 -5
- package/dist/internal/server.js +16 -16
- package/dist/internal/session-cost.d.ts +3 -2
- package/dist/internal/session-cost.d.ts.map +1 -1
- package/dist/internal/session-cost.js +7 -6
- package/dist/internal/session-engine.d.ts +31 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +119 -31
- package/dist/internal/slack-provision-client.js +1 -1
- package/dist/internal/storage-coordinator.js +7 -7
- package/dist/internal/trajectory.js +2 -2
- package/dist/internal/turn-cost.d.ts +27 -0
- package/dist/internal/turn-cost.d.ts.map +1 -0
- package/dist/internal/turn-cost.js +83 -0
- package/dist/internal/update-check.d.ts +3 -3
- package/dist/internal/update-check.d.ts.map +1 -1
- package/dist/internal/update-check.js +5 -5
- package/dist/memory.d.ts +1 -1
- package/dist/memory.js +1 -1
- package/dist/multi-tenant.d.ts +80 -0
- package/dist/multi-tenant.d.ts.map +1 -0
- package/dist/multi-tenant.js +69 -0
- package/dist/persistence.d.ts +184 -0
- package/dist/persistence.d.ts.map +1 -0
- package/dist/playground/assets/index-50PKeJlG.css +1 -0
- package/dist/playground/assets/index-C0f2Wl1q.js +85 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage.d.ts +1 -1
- package/dist/storage.js +1 -1
- package/dist/types.d.ts +120 -16
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +23 -23
- package/docs/ab.md +12 -12
- package/docs/building-with-agents.md +9 -9
- package/docs/concepts.md +11 -11
- package/docs/deployment.md +55 -43
- package/docs/evals.md +20 -20
- package/docs/example-agents/approval-buddy.md +9 -9
- package/docs/example-agents/benny.md +13 -13
- package/docs/example-agents/bugbot.md +6 -6
- package/docs/example-agents/codebase-wiki.md +8 -8
- package/docs/example-agents/codeowners-review.md +8 -8
- package/docs/example-agents/concierge.md +10 -10
- package/docs/example-agents/fsd.md +7 -7
- package/docs/example-agents/index.md +8 -8
- package/docs/example-agents/knowledge-base.md +9 -9
- package/docs/example-agents/oncall.md +7 -7
- package/docs/example-agents/security-reviewer.md +12 -12
- package/docs/example-agents/slack-agent.md +10 -10
- package/docs/example-agents/weather-agent.md +30 -26
- package/docs/guides/agent-to-agent.md +4 -4
- package/docs/guides/cloud-runtime.md +3 -3
- package/docs/guides/github.md +6 -6
- package/docs/guides/human-in-the-loop.md +1 -1
- package/docs/guides/mcp-oauth.md +9 -9
- package/docs/guides/slack.md +94 -21
- package/docs/guides/webhooks.md +1 -1
- package/docs/hillclimbing.md +3 -3
- package/docs/quickstart.md +18 -18
- package/docs/reference/agent-config.md +1 -1
- package/docs/reference/cli.md +110 -79
- package/docs/reference/connections.md +3 -3
- package/docs/reference/http-api.md +2 -2
- package/docs/reference/project-layout.md +7 -7
- package/docs/reference/schedules.md +1 -1
- package/docs/reference/sessions.md +7 -7
- package/docs/reference/tools.md +3 -3
- package/docs/scaffolding-agents.md +2 -2
- package/docs/storage.md +5 -5
- package/docs/troubleshooting.md +11 -10
- package/package.json +5 -2
- package/skills/ab/SKILL.md +5 -5
- package/skills/create-agent/SKILL.md +17 -17
- package/skills/debug/SKILL.md +10 -10
- package/skills/evals/SKILL.md +13 -13
- package/skills/framework-map/SKILL.md +3 -3
- package/skills/github/SKILL.md +11 -11
- package/skills/hillclimb/SKILL.md +9 -9
- package/skills/mcp-auth/SKILL.md +11 -11
- package/skills/setup-slack/SKILL.md +28 -28
- package/src/bin/agent-serve.ts +4 -4
- package/src/channels/github/index.ts +1 -1
- package/src/channels/slack/bot-mentions.ts +1 -1
- package/src/channels/slack/eval-directive.ts +1 -1
- package/src/channels/slack/external-policy.ts +1 -1
- package/src/channels/slack/log.ts +1 -1
- package/src/channels/slack/setup.ts +1 -1
- package/src/channels/slack/socket-mode.ts +1 -1
- package/src/evals/reporters.ts +1 -1
- package/src/evals.ts +2 -2
- package/src/files-backends/agent-store-presigned-url.ts +8 -0
- package/src/files-backends/cursor-hosted.ts +724 -0
- package/src/files-backends/local-fs.ts +178 -0
- package/src/files.ts +195 -0
- package/src/internal/ab-collector.ts +2 -2
- package/src/internal/ab-fold.ts +1 -1
- package/src/internal/cli-ax.ts +2 -2
- package/src/internal/cli-deploy.ts +7 -2
- package/src/internal/cli-docs.ts +1 -1
- package/src/internal/cli-github.ts +13 -13
- package/src/internal/cli-mcp-oauth.ts +2 -2
- package/src/internal/cli-mcp.ts +4 -4
- package/src/internal/cli-skills.ts +1 -1
- package/src/internal/cloud-turn-cost.ts +20 -4
- package/src/internal/cursor/account-mcp.ts +5 -5
- package/src/internal/cursor/backend-client.ts +1 -1
- package/src/internal/cursor/github-credentials.ts +3 -3
- package/src/internal/cursor-account-mcp-auth.ts +1 -1
- package/src/internal/cursor-event-relay.ts +1 -1
- package/src/internal/cursor-relay-core.ts +1 -1
- package/src/internal/cursor-slack-relay.ts +1 -1
- package/src/internal/deploy-client.ts +8 -2
- package/src/internal/deploy-source.ts +2 -2
- package/src/internal/discovery.ts +2 -2
- package/src/internal/distribution.ts +6 -6
- package/src/internal/docs-site.ts +5 -5
- package/src/internal/eval-run-store.ts +8 -8
- package/src/internal/evals-client.ts +1 -1
- package/src/internal/github-fanout.ts +2 -2
- package/src/internal/host-files.ts +372 -0
- package/src/internal/host-platforms.ts +5 -5
- package/src/internal/hosting.ts +1 -1
- package/src/internal/http-channel.ts +30 -0
- package/src/internal/install-cursor-skills.ts +31 -3
- package/src/internal/local-control-plane.ts +2 -2
- package/src/internal/logs-client.ts +2 -2
- package/src/internal/mcp-endpoint.ts +1 -1
- package/src/internal/mcp-oauth.ts +2 -2
- package/src/internal/platform-schedule-sync.ts +2 -2
- package/src/internal/playground/toolchain.ts +6 -6
- package/src/internal/reminder-runner.ts +13 -13
- package/src/internal/resolved-connections.ts +6 -6
- package/src/internal/schedule-runner.ts +1 -1
- package/src/internal/sdk-runner.ts +5 -5
- package/src/internal/server.ts +16 -16
- package/src/internal/session-cost.ts +7 -6
- package/src/internal/session-engine.ts +141 -28
- package/src/internal/slack-provision-client.ts +1 -1
- package/src/internal/storage-coordinator.ts +7 -7
- package/src/internal/trajectory.ts +2 -2
- package/src/internal/turn-cost.ts +110 -0
- package/src/internal/update-check.ts +6 -6
- package/src/memory.ts +1 -1
- package/src/storage.ts +1 -1
- package/src/types.ts +148 -16
- package/dist/docs/assets/building-with-agents.md.CJCtZCyi.js +0 -13
- package/dist/docs/assets/chunks/@localSearchIndexroot.CbQshWFK.js +0 -1
- package/dist/docs/assets/concepts.md.Cfb9b-k1.js +0 -4
- package/dist/docs/assets/concepts.md.Cfb9b-k1.lean.js +0 -1
- package/dist/docs/assets/deployment.md.TecHo0_2.js +0 -55
- package/dist/docs/assets/deployment.md.TecHo0_2.lean.js +0 -1
- package/dist/docs/assets/evals.md.DYOjkRCX.lean.js +0 -1
- package/dist/docs/assets/example-agents_benny.md.B0gjhI-p.js +0 -7
- package/dist/docs/assets/example-agents_index.md.D2PEVSXl.js +0 -2
- package/dist/docs/assets/example-agents_index.md.D2PEVSXl.lean.js +0 -1
- package/dist/docs/assets/example-agents_oncall.md.BG_sUMly.js +0 -10
- package/dist/docs/assets/example-agents_slack-agent.md.buLbgvBf.js +0 -5
- package/dist/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.js +0 -24
- package/dist/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.lean.js +0 -1
- package/dist/docs/assets/guides_cloud-runtime.md.gVzabdQL.js +0 -9
- package/dist/docs/assets/guides_mcp-oauth.md.Dd8EgSem.lean.js +0 -1
- package/dist/docs/assets/guides_slack.md.CjmJSvZS.js +0 -42
- package/dist/docs/assets/guides_slack.md.CjmJSvZS.lean.js +0 -1
- package/dist/docs/assets/index.md.CH_s5uZe.js +0 -20
- package/dist/docs/assets/index.md.CH_s5uZe.lean.js +0 -1
- package/dist/docs/assets/reference_cli.md.ccoKOoXt.js +0 -65
- package/dist/docs/assets/reference_http-api.md.BncLd3PZ.js +0 -11
- package/dist/docs/assets/storage.md.DRTdnFvd.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.CmQkmnzC.js +0 -1
- package/dist/internal/model-pricing.d.ts +0 -49
- package/dist/internal/model-pricing.d.ts.map +0 -1
- package/dist/internal/model-pricing.js +0 -377
- package/dist/playground/assets/index-CquRB-l0.js +0 -85
- package/dist/playground/assets/index-Dj0bWpkn.css +0 -1
- package/src/internal/model-pricing.ts +0 -426
- /package/dist/docs/assets/{example-agents_benny.md.B0gjhI-p.lean.js → example-agents_benny.md.2Et1qa8f.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_bugbot.md.DelIdhxB.lean.js → example-agents_bugbot.md.ByUexi5i.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_concierge.md.4rQTSMXt.lean.js → example-agents_concierge.md.lL8rhYlj.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_fsd.md.CzgUrDfi.lean.js → example-agents_fsd.md.DfNKQTHz.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_oncall.md.BG_sUMly.lean.js → example-agents_oncall.md.wFFXXEyW.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_security-reviewer.md.Dhj_m7_B.lean.js → example-agents_security-reviewer.md.Dkf1gyo6.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_slack-agent.md.buLbgvBf.lean.js → example-agents_slack-agent.md.DvgvT4nn.lean.js} +0 -0
- /package/dist/docs/assets/{guides_agent-to-agent.md.Bpzgq2Pq.lean.js → guides_agent-to-agent.md.Bmbxy-FA.lean.js} +0 -0
- /package/dist/docs/assets/{guides_cloud-runtime.md.gVzabdQL.lean.js → guides_cloud-runtime.md.BZ2GA7Es.lean.js} +0 -0
- /package/dist/docs/assets/{guides_github.md.DOOCpqsW.lean.js → guides_github.md.R2QlpR75.lean.js} +0 -0
- /package/dist/docs/assets/{guides_human-in-the-loop.md.DlUqsp1S.lean.js → guides_human-in-the-loop.md.BWvT7UqY.lean.js} +0 -0
- /package/dist/docs/assets/{guides_webhooks.md.wSOYas3X.lean.js → guides_webhooks.md.DiAwSR42.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.DHNast08.lean.js → hillclimbing.md.D9Y1_bYh.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.BU6Iwi_9.lean.js → quickstart.md.TnEXYgYW.lean.js} +0 -0
- /package/dist/docs/assets/{reference_agent-config.md.DrW2JUM8.lean.js → reference_agent-config.md.kuN6-OxK.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.B9Q3TOve.lean.js → reference_connections.md.DGqAsFXb.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.BncLd3PZ.lean.js → reference_http-api.md.CfVM_ICa.lean.js} +0 -0
- /package/dist/docs/assets/{reference_schedules.md.w_F2mXB6.lean.js → reference_schedules.md.gmfYzf_I.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.DLd6mvbv.lean.js → reference_sessions.md.C_ouF_uf.lean.js} +0 -0
- /package/dist/docs/assets/{reference_tools.md.BRSDnTbN.lean.js → reference_tools.md.BswAQM41.lean.js} +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local-disk file sink: one file per key under a directory you own.
|
|
3
|
+
*
|
|
4
|
+
* The default off Cursor-managed hosting. Paths are real, so the harness can
|
|
5
|
+
* open a file with its ordinary tools — that is why this reports
|
|
6
|
+
* `materialized` — and there are no etags, so `conflictDetection` is honestly
|
|
7
|
+
* false and concurrent writers are last-writer-wins.
|
|
8
|
+
*/
|
|
9
|
+
import { type FileSink } from "../files.js";
|
|
10
|
+
export interface LocalFilesOptions {
|
|
11
|
+
/** Directory the sink owns. */
|
|
12
|
+
filesRoot: string;
|
|
13
|
+
/**
|
|
14
|
+
* Prefix trimmed off each key before building the on-disk path, so the tree
|
|
15
|
+
* reads `deployment/notes.md` instead of repeating the framework key root.
|
|
16
|
+
*
|
|
17
|
+
* Framework-supplied. Authors should omit it: the value has to match the
|
|
18
|
+
* internal key scheme exactly, and a near-miss would silently nest files
|
|
19
|
+
* under a redundant path instead of failing. Omitted, keys are stored
|
|
20
|
+
* verbatim, which is always correct and lets two agents share one root.
|
|
21
|
+
*/
|
|
22
|
+
stripKeyPrefix?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Default sink: one file per key under the state root, written atomically.
|
|
26
|
+
*
|
|
27
|
+
* Reports `materialized` because the paths are real — that is what lets the
|
|
28
|
+
* harness read a file with its ordinary tools — and reports no `etags`, so
|
|
29
|
+
* `host.files.capabilities.conflictDetection` is honestly false and concurrent
|
|
30
|
+
* writers are last-writer-wins.
|
|
31
|
+
*/
|
|
32
|
+
export declare function localFiles(options: LocalFilesOptions): FileSink;
|
|
33
|
+
//# sourceMappingURL=local-fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-fs.d.ts","sourceRoot":"","sources":["../../src/files-backends/local-fs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,EAEL,KAAK,QAAQ,EAGd,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,QAAQ,CAmG/D"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local-disk file sink: one file per key under a directory you own.
|
|
3
|
+
*
|
|
4
|
+
* The default off Cursor-managed hosting. Paths are real, so the harness can
|
|
5
|
+
* open a file with its ordinary tools — that is why this reports
|
|
6
|
+
* `materialized` — and there are no etags, so `conflictDetection` is honestly
|
|
7
|
+
* false and concurrent writers are last-writer-wins.
|
|
8
|
+
*/
|
|
9
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
10
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
11
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
12
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
13
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
14
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
15
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
19
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
20
|
+
var m = o[Symbol.asyncIterator], i;
|
|
21
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
22
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
23
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
24
|
+
};
|
|
25
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
26
|
+
var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {
|
|
27
|
+
var i, p;
|
|
28
|
+
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
29
|
+
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
|
|
30
|
+
};
|
|
31
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
32
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
33
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
34
|
+
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
35
|
+
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
|
|
36
|
+
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
|
|
37
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
38
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
39
|
+
function fulfill(value) { resume("next", value); }
|
|
40
|
+
function reject(value) { resume("throw", value); }
|
|
41
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
42
|
+
};
|
|
43
|
+
import { randomUUID } from "node:crypto";
|
|
44
|
+
import { mkdir, readdir, readFile, rename, rm, stat, writeFile, } from "node:fs/promises";
|
|
45
|
+
import { join, relative, resolve, sep } from "node:path";
|
|
46
|
+
import { FilePathRejectedError, } from "../files.js";
|
|
47
|
+
/**
|
|
48
|
+
* Default sink: one file per key under the state root, written atomically.
|
|
49
|
+
*
|
|
50
|
+
* Reports `materialized` because the paths are real — that is what lets the
|
|
51
|
+
* harness read a file with its ordinary tools — and reports no `etags`, so
|
|
52
|
+
* `host.files.capabilities.conflictDetection` is honestly false and concurrent
|
|
53
|
+
* writers are last-writer-wins.
|
|
54
|
+
*/
|
|
55
|
+
export function localFiles(options) {
|
|
56
|
+
var _a;
|
|
57
|
+
const root = resolve(options.filesRoot);
|
|
58
|
+
const stripPrefix = (_a = options.stripKeyPrefix) !== null && _a !== void 0 ? _a : "";
|
|
59
|
+
const pathForKey = (key) => {
|
|
60
|
+
const rel = stripPrefix !== "" && key.startsWith(stripPrefix)
|
|
61
|
+
? key.slice(stripPrefix.length)
|
|
62
|
+
: key;
|
|
63
|
+
const candidate = resolve(root, rel);
|
|
64
|
+
const within = relative(root, candidate);
|
|
65
|
+
if (within === "" || within === ".." || within.startsWith(`..${sep}`)) {
|
|
66
|
+
throw new FilePathRejectedError(`host.files key does not resolve under the state root: ${key}`);
|
|
67
|
+
}
|
|
68
|
+
return candidate;
|
|
69
|
+
};
|
|
70
|
+
const entryFor = (key, absPath) => __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
try {
|
|
72
|
+
const info = yield stat(absPath);
|
|
73
|
+
if (!info.isFile()) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
return { key, size: info.size, mtimeMs: info.mtimeMs };
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error.code === "ENOENT") {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
return {
|
|
86
|
+
capabilities: { materialized: true },
|
|
87
|
+
materializedPath: (key) => pathForKey(key),
|
|
88
|
+
put(key, body) {
|
|
89
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
const target = pathForKey(key);
|
|
91
|
+
yield mkdir(join(target, ".."), { recursive: true });
|
|
92
|
+
// Same-directory temp + rename: a reader either sees the previous value
|
|
93
|
+
// or the whole new one, never a half-written file.
|
|
94
|
+
const tmp = join(target, "..", `.tmp-${randomUUID()}`);
|
|
95
|
+
try {
|
|
96
|
+
yield writeFile(tmp, body);
|
|
97
|
+
yield rename(tmp, target);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
yield rm(tmp, { force: true });
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
},
|
|
105
|
+
get(key) {
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
try {
|
|
108
|
+
return { body: new Uint8Array(yield readFile(pathForKey(key))) };
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
const code = error.code;
|
|
112
|
+
if (code === "ENOENT" || code === "EISDIR") {
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
delete(key) {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
yield rm(pathForKey(key), { force: true });
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
stat(key) {
|
|
125
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
+
return yield entryFor(key, pathForKey(key));
|
|
127
|
+
});
|
|
128
|
+
},
|
|
129
|
+
list(prefix) {
|
|
130
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
var _a, e_1, _b, _c;
|
|
132
|
+
// Walk the deepest existing directory at or above the prefix, then keep
|
|
133
|
+
// the keys that actually start with it — `prefix` is a key prefix, not a
|
|
134
|
+
// directory, so `notes/sum` must match `notes/summary.md`.
|
|
135
|
+
const prefixPath = pathForKey(prefix);
|
|
136
|
+
const searchRoot = (yield isDirectory(prefixPath))
|
|
137
|
+
? prefixPath
|
|
138
|
+
: join(prefixPath, "..");
|
|
139
|
+
const out = [];
|
|
140
|
+
try {
|
|
141
|
+
for (var _d = true, _e = __asyncValues(walkFiles(searchRoot)), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
|
|
142
|
+
_c = _f.value;
|
|
143
|
+
_d = false;
|
|
144
|
+
const absPath = _c;
|
|
145
|
+
const key = `${stripPrefix}${relative(root, absPath).split(sep).join("/")}`;
|
|
146
|
+
if (!key.startsWith(prefix)) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const entry = yield entryFor(key, absPath);
|
|
150
|
+
if (entry !== undefined) {
|
|
151
|
+
out.push(entry);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
156
|
+
finally {
|
|
157
|
+
try {
|
|
158
|
+
if (!_d && !_a && (_b = _e.return)) yield _b.call(_e);
|
|
159
|
+
}
|
|
160
|
+
finally { if (e_1) throw e_1.error; }
|
|
161
|
+
}
|
|
162
|
+
return out.sort((a, b) => (a.key < b.key ? -1 : a.key > b.key ? 1 : 0));
|
|
163
|
+
});
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function isDirectory(absPath) {
|
|
168
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
169
|
+
try {
|
|
170
|
+
return (yield stat(absPath)).isDirectory();
|
|
171
|
+
}
|
|
172
|
+
catch (_a) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
function walkFiles(dir) {
|
|
178
|
+
return __asyncGenerator(this, arguments, function* walkFiles_1() {
|
|
179
|
+
let entries;
|
|
180
|
+
try {
|
|
181
|
+
entries = yield __await(readdir(dir, { withFileTypes: true }));
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
if (error.code === "ENOENT") {
|
|
185
|
+
return yield __await(void 0);
|
|
186
|
+
}
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
for (const entry of entries) {
|
|
190
|
+
const abs = join(dir, entry.name);
|
|
191
|
+
if (entry.isDirectory()) {
|
|
192
|
+
yield __await(yield* __asyncDelegator(__asyncValues(walkFiles(abs))));
|
|
193
|
+
}
|
|
194
|
+
else if (entry.isFile() && !entry.name.startsWith(".tmp-")) {
|
|
195
|
+
yield yield __await(abs);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
package/dist/files.d.ts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The internal sink contract behind `ctx.host.files` — durable, file-shaped
|
|
3
|
+
* state that must outlive the engine process.
|
|
4
|
+
*
|
|
5
|
+
* Deliberately **not a filesystem**: no file descriptors, no seeking, no
|
|
6
|
+
* rename, no directories as first-class objects, and no POSIX errno contract
|
|
7
|
+
* — a sink that is an HTTP API can implement all of it. The framework
|
|
8
|
+
* **mints every key** from a stable, versioned scheme (see {@link fileKeys});
|
|
9
|
+
* sinks see opaque strings and never learn which deployment or session a key
|
|
10
|
+
* belongs to, which is what keeps one deployment's files unreachable from
|
|
11
|
+
* another's.
|
|
12
|
+
*
|
|
13
|
+
* Internal for now: the authored plug-in surface (`agent/files.ts` with a
|
|
14
|
+
* `defineFiles`, mirroring `defineStorage`) is deliberately deferred so this
|
|
15
|
+
* ships as exactly the hosted connector plus the local default. When it
|
|
16
|
+
* lands, {@link FileSink} is the contract authored sinks implement.
|
|
17
|
+
*
|
|
18
|
+
* Delivery semantics differ from {@link import("./storage.js").defineStorage}
|
|
19
|
+
* on purpose. Storage is a fire-and-forget mirror of framework state, so a
|
|
20
|
+
* throwing `put` is logged and dropped. Files are author data the next turn
|
|
21
|
+
* may depend on, so {@link HostFilesApi} writes are **awaited and surface
|
|
22
|
+
* their failure** — an author who writes evidence and then delegates has to
|
|
23
|
+
* know the write did not land.
|
|
24
|
+
*/
|
|
25
|
+
/** One entry returned by {@link FileSink.list}. */
|
|
26
|
+
export interface FileSinkEntry {
|
|
27
|
+
/** Framework-minted key, as passed to {@link FileSink.put}. */
|
|
28
|
+
key: string;
|
|
29
|
+
size: number;
|
|
30
|
+
/** Last-modified epoch ms, when the sink tracks one. */
|
|
31
|
+
mtimeMs?: number;
|
|
32
|
+
/** Opaque version tag; required for `ifMatch` to be usable. */
|
|
33
|
+
etag?: string;
|
|
34
|
+
}
|
|
35
|
+
/** One stored value plus the version it was read at. */
|
|
36
|
+
export interface FileSinkBody {
|
|
37
|
+
body: Uint8Array;
|
|
38
|
+
etag?: string;
|
|
39
|
+
}
|
|
40
|
+
/** Outcome of {@link FileSink.put}. */
|
|
41
|
+
export interface FileSinkPutResult {
|
|
42
|
+
/** Version tag after the write, when the sink issues one. */
|
|
43
|
+
etag?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* What a sink can do beyond the four required calls. Absent flags are false,
|
|
47
|
+
* so the narrowest possible sink — four functions over an HTTP API — is valid
|
|
48
|
+
* and the framework degrades visibly rather than assuming.
|
|
49
|
+
*/
|
|
50
|
+
export interface FileSinkCapabilities {
|
|
51
|
+
/**
|
|
52
|
+
* `put` honors `ifMatch` and rejects a stale write. Required for
|
|
53
|
+
* {@link HostFilesApi} to report `conflictDetection`.
|
|
54
|
+
*/
|
|
55
|
+
etags?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* The sink keeps a local copy at {@link FileSink.materializedPath} that the
|
|
58
|
+
* harness can read with ordinary file tools.
|
|
59
|
+
*/
|
|
60
|
+
materialized?: boolean;
|
|
61
|
+
/** Largest value the sink accepts, in bytes. */
|
|
62
|
+
maxBytes?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The pluggable file store. Keys are framework-minted opaque strings; a sink
|
|
66
|
+
* may treat them as flat keys or split on `/` to build a hierarchy.
|
|
67
|
+
*/
|
|
68
|
+
export interface FileSink {
|
|
69
|
+
/**
|
|
70
|
+
* Write or replace one value. When `ifMatch` is set and the sink reports
|
|
71
|
+
* {@link FileSinkCapabilities.etags}, the write must fail unless the stored
|
|
72
|
+
* version matches — throw {@link FileConflictError} to say so precisely.
|
|
73
|
+
* `ifMatch: null` means "must not already exist".
|
|
74
|
+
*/
|
|
75
|
+
put(key: string, body: Uint8Array, options?: {
|
|
76
|
+
ifMatch?: string | null;
|
|
77
|
+
}): Promise<FileSinkPutResult | void>;
|
|
78
|
+
/** Read one value. Miss → `undefined`. */
|
|
79
|
+
get(key: string): Promise<FileSinkBody | Uint8Array | undefined>;
|
|
80
|
+
/** Remove one key. No-op when missing. */
|
|
81
|
+
delete(key: string): Promise<void>;
|
|
82
|
+
/** Entries whose key starts with `prefix`, in key order. */
|
|
83
|
+
list(prefix: string): Promise<FileSinkEntry[]>;
|
|
84
|
+
/** Per-key metadata without transferring the body. Optional; `list` is the fallback. */
|
|
85
|
+
stat?(key: string): Promise<FileSinkEntry | undefined>;
|
|
86
|
+
/**
|
|
87
|
+
* Absolute path of the sink's local copy of `key`, or `undefined` when it
|
|
88
|
+
* keeps none. Only consulted when
|
|
89
|
+
* {@link FileSinkCapabilities.materialized} is set.
|
|
90
|
+
*/
|
|
91
|
+
materializedPath?(key: string): string | undefined;
|
|
92
|
+
capabilities?: FileSinkCapabilities;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The framework-owned file key scheme, a stable versioned contract under
|
|
96
|
+
* {@link STORAGE_KEY_ROOT}. Sinks may treat these as opaque, or route on
|
|
97
|
+
* prefixes.
|
|
98
|
+
*
|
|
99
|
+
* | Key | Holds |
|
|
100
|
+
* | --- | --- |
|
|
101
|
+
* | `agentkit/v1/{agent}/files/deployment/{path}` | Deployment-scoped file, shared by every session and surviving redeploys |
|
|
102
|
+
* | `agentkit/v1/{agent}/files/deployment/{partition}/{path}` | Deployment-scoped file under an author partition (a PR, a customer, a branch) |
|
|
103
|
+
* | `agentkit/v1/{agent}/files/sessions/{sessionId}/{path}` | Session-scoped file |
|
|
104
|
+
*
|
|
105
|
+
* Scoping lives here, above the sink, so a sink cannot be handed a key for a
|
|
106
|
+
* deployment or session other than its own.
|
|
107
|
+
*/
|
|
108
|
+
export declare const fileKeys: {
|
|
109
|
+
readonly deployment: (agent: string, path: string) => string;
|
|
110
|
+
readonly deploymentPartition: (agent: string, partition: string, path: string) => string;
|
|
111
|
+
readonly session: (agent: string, sessionId: string, path: string) => string;
|
|
112
|
+
readonly deploymentPrefix: (agent: string) => string;
|
|
113
|
+
readonly sessionPrefix: (agent: string, sessionId: string) => string;
|
|
114
|
+
};
|
|
115
|
+
/** Errors raised by the file surface. Thrown by sinks and by the framework. */
|
|
116
|
+
export declare class FileConflictError extends Error {
|
|
117
|
+
readonly key: string;
|
|
118
|
+
constructor(key: string, options?: {
|
|
119
|
+
cause?: unknown;
|
|
120
|
+
storedEtag?: string;
|
|
121
|
+
});
|
|
122
|
+
storedEtag?: string;
|
|
123
|
+
}
|
|
124
|
+
/** A path the framework refuses to mint a key for. */
|
|
125
|
+
export declare class FilePathRejectedError extends Error {
|
|
126
|
+
constructor(message: string);
|
|
127
|
+
}
|
|
128
|
+
/** A session-scoped call with no session in scope. */
|
|
129
|
+
export declare class FileSessionRequiredError extends Error {
|
|
130
|
+
constructor(message: string);
|
|
131
|
+
}
|
|
132
|
+
/** A value larger than the sink accepts. */
|
|
133
|
+
export declare class FileTooLargeError extends Error {
|
|
134
|
+
readonly key: string;
|
|
135
|
+
readonly size: number;
|
|
136
|
+
readonly maxBytes: number;
|
|
137
|
+
constructor(key: string, size: number, maxBytes: number);
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|
package/dist/files.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The internal sink contract behind `ctx.host.files` — durable, file-shaped
|
|
3
|
+
* state that must outlive the engine process.
|
|
4
|
+
*
|
|
5
|
+
* Deliberately **not a filesystem**: no file descriptors, no seeking, no
|
|
6
|
+
* rename, no directories as first-class objects, and no POSIX errno contract
|
|
7
|
+
* — a sink that is an HTTP API can implement all of it. The framework
|
|
8
|
+
* **mints every key** from a stable, versioned scheme (see {@link fileKeys});
|
|
9
|
+
* sinks see opaque strings and never learn which deployment or session a key
|
|
10
|
+
* belongs to, which is what keeps one deployment's files unreachable from
|
|
11
|
+
* another's.
|
|
12
|
+
*
|
|
13
|
+
* Internal for now: the authored plug-in surface (`agent/files.ts` with a
|
|
14
|
+
* `defineFiles`, mirroring `defineStorage`) is deliberately deferred so this
|
|
15
|
+
* ships as exactly the hosted connector plus the local default. When it
|
|
16
|
+
* lands, {@link FileSink} is the contract authored sinks implement.
|
|
17
|
+
*
|
|
18
|
+
* Delivery semantics differ from {@link import("./storage.js").defineStorage}
|
|
19
|
+
* on purpose. Storage is a fire-and-forget mirror of framework state, so a
|
|
20
|
+
* throwing `put` is logged and dropped. Files are author data the next turn
|
|
21
|
+
* may depend on, so {@link HostFilesApi} writes are **awaited and surface
|
|
22
|
+
* their failure** — an author who writes evidence and then delegates has to
|
|
23
|
+
* know the write did not land.
|
|
24
|
+
*/
|
|
25
|
+
import { STORAGE_KEY_ROOT } from "./storage.js";
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Key scheme
|
|
28
|
+
// ============================================================================
|
|
29
|
+
/**
|
|
30
|
+
* The framework-owned file key scheme, a stable versioned contract under
|
|
31
|
+
* {@link STORAGE_KEY_ROOT}. Sinks may treat these as opaque, or route on
|
|
32
|
+
* prefixes.
|
|
33
|
+
*
|
|
34
|
+
* | Key | Holds |
|
|
35
|
+
* | --- | --- |
|
|
36
|
+
* | `agentkit/v1/{agent}/files/deployment/{path}` | Deployment-scoped file, shared by every session and surviving redeploys |
|
|
37
|
+
* | `agentkit/v1/{agent}/files/deployment/{partition}/{path}` | Deployment-scoped file under an author partition (a PR, a customer, a branch) |
|
|
38
|
+
* | `agentkit/v1/{agent}/files/sessions/{sessionId}/{path}` | Session-scoped file |
|
|
39
|
+
*
|
|
40
|
+
* Scoping lives here, above the sink, so a sink cannot be handed a key for a
|
|
41
|
+
* deployment or session other than its own.
|
|
42
|
+
*/
|
|
43
|
+
export const fileKeys = {
|
|
44
|
+
deployment: (agent, path) => `${STORAGE_KEY_ROOT}/${agent}/files/deployment/${path}`,
|
|
45
|
+
deploymentPartition: (agent, partition, path) => `${STORAGE_KEY_ROOT}/${agent}/files/deployment/${partition}/${path}`,
|
|
46
|
+
session: (agent, sessionId, path) => `${STORAGE_KEY_ROOT}/${agent}/files/sessions/${sessionId}/${path}`,
|
|
47
|
+
deploymentPrefix: (agent) => `${STORAGE_KEY_ROOT}/${agent}/files/deployment/`,
|
|
48
|
+
sessionPrefix: (agent, sessionId) => `${STORAGE_KEY_ROOT}/${agent}/files/sessions/${sessionId}/`,
|
|
49
|
+
};
|
|
50
|
+
/** Errors raised by the file surface. Thrown by sinks and by the framework. */
|
|
51
|
+
export class FileConflictError extends Error {
|
|
52
|
+
constructor(key, options) {
|
|
53
|
+
super(`host.files write for "${key}" lost a race with another writer${(options === null || options === void 0 ? void 0 : options.storedEtag) === undefined
|
|
54
|
+
? ""
|
|
55
|
+
: ` (stored version ${options.storedEtag})`}`);
|
|
56
|
+
this.key = key;
|
|
57
|
+
this.name = "FileConflictError";
|
|
58
|
+
if ((options === null || options === void 0 ? void 0 : options.cause) !== undefined) {
|
|
59
|
+
this.cause = options.cause;
|
|
60
|
+
}
|
|
61
|
+
if ((options === null || options === void 0 ? void 0 : options.storedEtag) !== undefined) {
|
|
62
|
+
this.storedEtag = options.storedEtag;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** A path the framework refuses to mint a key for. */
|
|
67
|
+
export class FilePathRejectedError extends Error {
|
|
68
|
+
constructor(message) {
|
|
69
|
+
super(message);
|
|
70
|
+
this.name = "FilePathRejectedError";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** A session-scoped call with no session in scope. */
|
|
74
|
+
export class FileSessionRequiredError extends Error {
|
|
75
|
+
constructor(message) {
|
|
76
|
+
super(message);
|
|
77
|
+
this.name = "FileSessionRequiredError";
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** A value larger than the sink accepts. */
|
|
81
|
+
export class FileTooLargeError extends Error {
|
|
82
|
+
constructor(key, size, maxBytes) {
|
|
83
|
+
super(`host.files value for "${key}" is ${size} bytes, over the sink's ${maxBytes}-byte limit`);
|
|
84
|
+
this.key = key;
|
|
85
|
+
this.size = size;
|
|
86
|
+
this.maxBytes = maxBytes;
|
|
87
|
+
this.name = "FileTooLargeError";
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -103,7 +103,7 @@ export class ABCollector {
|
|
|
103
103
|
experiment: experiment.name,
|
|
104
104
|
variant,
|
|
105
105
|
}, (key, error) => {
|
|
106
|
-
this.logger(`[
|
|
106
|
+
this.logger(`[agent-sdk] ab "${experiment.name}" derive.${key} threw: ${describeError(error)}`);
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
if (!options.emitSamples) {
|
|
@@ -118,7 +118,7 @@ export class ABCollector {
|
|
|
118
118
|
yield def.onSample(sample);
|
|
119
119
|
}
|
|
120
120
|
catch (error) {
|
|
121
|
-
this.logger(`[
|
|
121
|
+
this.logger(`[agent-sdk] ab "${experiment.name}" onSample threw: ${describeError(error)}`);
|
|
122
122
|
}
|
|
123
123
|
(_b = this.persistSample) === null || _b === void 0 ? void 0 : _b.call(this, sample);
|
|
124
124
|
}
|
package/dist/internal/ab-fold.js
CHANGED
|
@@ -113,7 +113,7 @@ export function applyABDerive(state, events, experiments, sessionInfo, agentName
|
|
|
113
113
|
const ctx = collectContext(experiment.name, variant, sessionInfo, agentName);
|
|
114
114
|
for (const event of events) {
|
|
115
115
|
yield applyDeriveForEvent(accum.metrics.custom, def.derive, event, ctx, (key, error) => {
|
|
116
|
-
logger(`[
|
|
116
|
+
logger(`[agent-sdk] ab "${experiment.name}" derive.${key} threw: ${describeError(error)}`);
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
}
|
|
@@ -201,8 +201,8 @@ export declare function cmdSession(sessionId: string | undefined, options: AxCli
|
|
|
201
201
|
* With a session id: per-turn token usage + estimated cost for that session.
|
|
202
202
|
* Without one: one row per session (all sessions on the target) plus a
|
|
203
203
|
* total row. `--json` prints the underlying report(s); text is the default.
|
|
204
|
-
* Costs are
|
|
205
|
-
* (
|
|
204
|
+
* Costs are recorded on `turn.completed` via `POST /v1/models/estimate-cost`
|
|
205
|
+
* (billed usage when available). Turns persisted before cost tracking simply
|
|
206
206
|
* count as unpriced.
|
|
207
207
|
*/
|
|
208
208
|
export declare function cmdCost(sessionId: string | undefined, options: AxCliOptions): Promise<number>;
|
package/dist/internal/cli-ax.js
CHANGED
|
@@ -1420,8 +1420,8 @@ const COST_FETCH_CONCURRENCY = 4;
|
|
|
1420
1420
|
* With a session id: per-turn token usage + estimated cost for that session.
|
|
1421
1421
|
* Without one: one row per session (all sessions on the target) plus a
|
|
1422
1422
|
* total row. `--json` prints the underlying report(s); text is the default.
|
|
1423
|
-
* Costs are
|
|
1424
|
-
* (
|
|
1423
|
+
* Costs are recorded on `turn.completed` via `POST /v1/models/estimate-cost`
|
|
1424
|
+
* (billed usage when available). Turns persisted before cost tracking simply
|
|
1425
1425
|
* count as unpriced.
|
|
1426
1426
|
*/
|
|
1427
1427
|
export function cmdCost(sessionId, options) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `
|
|
2
|
+
* `agent-sdk deploy | deployments | deployment | stop | rotate-token |
|
|
3
3
|
* rotate-pod-credential | secrets set|list|unset` — Heroku-style deploys
|
|
4
4
|
* onto Cursor's managed agent-serve hosting.
|
|
5
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-deploy.d.ts","sourceRoot":"","sources":["../../src/internal/cli-deploy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-deploy.d.ts","sourceRoot":"","sources":["../../src/internal/cli-deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `
|
|
2
|
+
* `agent-sdk deploy | deployments | deployment | stop | rotate-token |
|
|
3
3
|
* rotate-pod-credential | secrets set|list|unset` — Heroku-style deploys
|
|
4
4
|
* onto Cursor's managed agent-serve hosting.
|
|
5
5
|
*
|
|
@@ -360,7 +360,7 @@ function deployOne(ctx, options, target, extras) {
|
|
|
360
360
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
361
361
|
const { dir, slug } = target;
|
|
362
362
|
// Fill --repo/--ref/--path from the local git checkout when omitted so
|
|
363
|
-
// `
|
|
363
|
+
// `agent-sdk deploy` inside an agent directory is enough. Only probe git
|
|
364
364
|
// for real agent projects (avoids ambient monorepo remotes when someone
|
|
365
365
|
// deploys a bare --slug). Explicit flags always win.
|
|
366
366
|
const isAgent = yield isAgentProjectDir(dir);
|
|
@@ -676,6 +676,11 @@ export function cmdDeploymentStatus(slug, options) {
|
|
|
676
676
|
detail.serviceAccountId !== null) {
|
|
677
677
|
lines.push(` service account: ${detail.serviceAccountId}`);
|
|
678
678
|
}
|
|
679
|
+
if (detail.agentStoreSourceId !== undefined) {
|
|
680
|
+
// The durable file store's address: GET /v0/agent-serve-files/<id> lists
|
|
681
|
+
// it, and the pod sees it as AGENT_SERVE_STORE_SOURCE_ID.
|
|
682
|
+
lines.push(` file store: ${detail.agentStoreSourceId}`);
|
|
683
|
+
}
|
|
679
684
|
if (detail.egressAllowedDomains !== undefined &&
|
|
680
685
|
detail.egressAllowedDomains.length > 0) {
|
|
681
686
|
lines.push(` egress: ${detail.egressAllowedDomains.join(", ")}`);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `
|
|
2
|
+
* `agent-sdk docs` / `npx @cursor/july docs` — serve the shipped VitePress
|
|
3
3
|
* site on loopback and open it in a browser. Does not start an agent host.
|
|
4
4
|
*/
|
|
5
5
|
import { createServer } from "node:http";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `
|
|
2
|
+
* `agent-sdk docs` / `npx @cursor/july docs` — serve the shipped VitePress
|
|
3
3
|
* site on loopback and open it in a browser. Does not start an agent host.
|
|
4
4
|
*/
|
|
5
5
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|