@cursor/july 0.1.97 → 0.1.100
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 +5 -3
- package/dist/bin/agent-serve.js +6 -7
- package/dist/channels/github/defaults.d.ts.map +1 -1
- package/dist/channels/github/defaults.js +28 -3
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +16 -0
- package/dist/channels/github/progress.d.ts +7 -0
- package/dist/channels/github/progress.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.d.ts +2 -0
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +37 -4
- package/dist/channels/slack/api.d.ts +16 -7
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +29 -13
- package/dist/channels/slack/constants.d.ts +6 -0
- package/dist/channels/slack/constants.d.ts.map +1 -1
- package/dist/channels/slack/constants.js +6 -0
- package/dist/channels/slack/defaults.d.ts +9 -4
- package/dist/channels/slack/defaults.d.ts.map +1 -1
- package/dist/channels/slack/defaults.js +221 -122
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +3 -3
- package/dist/channels/slack/inbound.d.ts +9 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +14 -0
- package/dist/channels/slack/index.d.ts +1 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +1 -0
- package/dist/channels/slack/live-delivery.d.ts +6 -1
- package/dist/channels/slack/live-delivery.d.ts.map +1 -1
- package/dist/channels/slack/live-delivery.js +110 -20
- package/dist/channels/slack/progress-delivery.d.ts +28 -0
- package/dist/channels/slack/progress-delivery.d.ts.map +1 -0
- package/dist/channels/slack/progress-delivery.js +115 -0
- package/dist/channels/slack/reasoning-card.d.ts +38 -0
- package/dist/channels/slack/reasoning-card.d.ts.map +1 -0
- package/dist/channels/slack/reasoning-card.js +104 -0
- package/dist/channels/slack/redact.d.ts +2 -0
- package/dist/channels/slack/redact.d.ts.map +1 -0
- package/dist/channels/slack/redact.js +5 -0
- package/dist/channels/slack/reply-options.d.ts +40 -0
- package/dist/channels/slack/reply-options.d.ts.map +1 -0
- package/dist/channels/slack/reply-options.js +150 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +8 -4
- package/dist/channels/slack/stream.d.ts +22 -10
- package/dist/channels/slack/stream.d.ts.map +1 -1
- package/dist/channels/slack/stream.js +9 -16
- package/dist/channels/slack/tool-cards.d.ts +22 -0
- package/dist/channels/slack/tool-cards.d.ts.map +1 -0
- package/dist/channels/slack/tool-cards.js +178 -0
- package/dist/channels/slack/types.d.ts +154 -7
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +6 -6
- package/dist/docs/ab.md +1 -1
- package/dist/docs/assets/{ab.md.DJo5r4R-.js → ab.md.mlVgqvSk.js} +1 -1
- package/dist/docs/assets/{app.B3rWNYE1.js → app.DZ1e0Ycq.js} +1 -1
- package/dist/docs/assets/{building-with-agents.md.DI4mEzlt.js → building-with-agents.md.CUSWxlP_.js} +2 -2
- package/dist/docs/assets/chunks/@localSearchIndexroot.j70vvPL4.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.C1lhqJJR.js → VPLocalSearchBox.l8omwc6D.js} +1 -1
- package/dist/docs/assets/chunks/{theme.B40_SXuv.js → theme.JVcD6gel.js} +2 -2
- package/dist/docs/assets/{evals.md.lfJoEVc8.js → evals.md.CPzDAwoH.js} +1 -1
- package/dist/docs/assets/{guides_github.md.Cnh2mL4a.js → guides_github.md.BtPr9GaP.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.CN-6YmTJ.js → guides_mcp-oauth.md.Dp6cDP7f.js} +1 -1
- package/dist/docs/assets/{guides_opentelemetry.md.bmPmkvJu.js → guides_opentelemetry.md.BVTXDCRg.js} +2 -2
- package/dist/docs/assets/{guides_slack.md.VDXQV3ja.js → guides_slack.md.9oHPye9o.js} +19 -3
- package/dist/docs/assets/{guides_slack.md.VDXQV3ja.lean.js → guides_slack.md.9oHPye9o.lean.js} +1 -1
- package/dist/docs/assets/hillclimbing.md.CpTGTCle.js +4 -0
- package/dist/docs/assets/{index.md.CVeRUOeZ.js → index.md.Bb4k8kUm.js} +1 -1
- package/dist/docs/assets/{quickstart.md.Nj_LjW_a.js → quickstart.md.DdQOF7Y8.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.RyZf5OTE.js → reference_cli.md.DfoeyvL0.js} +4 -4
- package/dist/docs/assets/{reference_cli.md.RyZf5OTE.lean.js → reference_cli.md.DfoeyvL0.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DxldvyIB.js → reference_connections.md.BiGoBAk2.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.5zOAbV86.js → reference_http-api.md.BEJx9XVj.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.B84gw9Ii.js → reference_tools.md.CvAHsdSp.js} +10 -2
- package/dist/docs/assets/{reference_tools.md.B84gw9Ii.lean.js → reference_tools.md.CvAHsdSp.lean.js} +1 -1
- package/dist/docs/assets/scaffolding-agents.md.em43xlY1.js +1 -0
- package/dist/docs/assets/skills_ab.md.CsFNatVx.js +26 -0
- package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +1 -0
- package/dist/docs/assets/skills_create-agent.md.BVoWPcan.js +8 -0
- package/dist/docs/assets/skills_create-agent.md.BVoWPcan.lean.js +1 -0
- package/dist/docs/assets/skills_debug.md.CDbPhHfg.js +1 -0
- package/dist/docs/assets/skills_debug.md.CDbPhHfg.lean.js +1 -0
- package/dist/docs/assets/skills_evals.md.723kpUmA.js +25 -0
- package/dist/docs/assets/skills_evals.md.723kpUmA.lean.js +1 -0
- package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +1 -0
- package/dist/docs/assets/skills_framework-map.md.BTi817yv.lean.js +1 -0
- package/dist/docs/assets/skills_github.md.D0JahM8c.js +16 -0
- package/dist/docs/assets/skills_github.md.D0JahM8c.lean.js +1 -0
- package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.js +7 -0
- package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.lean.js +1 -0
- package/dist/docs/assets/skills_index.md.DKwIxzGg.js +1 -0
- package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +1 -0
- package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.js +18 -0
- package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.lean.js +1 -0
- package/dist/docs/assets/skills_otel.md.CgiZryR3.js +8 -0
- package/dist/docs/assets/skills_otel.md.CgiZryR3.lean.js +1 -0
- package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.js +20 -0
- package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.lean.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.DCiPBhYs.js → troubleshooting.md.Cus_YZga.js} +1 -1
- package/dist/docs/building-with-agents.html +6 -6
- package/dist/docs/building-with-agents.md +14 -11
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/design/runtime-abstraction.md +1757 -0
- package/dist/docs/evals.html +6 -6
- package/dist/docs/evals.md +1 -1
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-runtime.html +4 -4
- package/dist/docs/guides/convert-automation.html +4 -4
- package/dist/docs/guides/github.html +5 -5
- package/dist/docs/guides/github.md +1 -1
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +5 -5
- package/dist/docs/guides/mcp-oauth.md +1 -1
- package/dist/docs/guides/opentelemetry.html +7 -7
- package/dist/docs/guides/opentelemetry.md +2 -2
- package/dist/docs/guides/slack.html +22 -6
- package/dist/docs/guides/slack.md +80 -1
- package/dist/docs/guides/webhooks.html +5 -5
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +6 -6
- package/dist/docs/hillclimbing.md +5 -5
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +1 -1
- package/dist/docs/llms-full.txt +2830 -37
- package/dist/docs/llms.txt +15 -0
- package/dist/docs/quickstart.html +5 -5
- package/dist/docs/quickstart.md +1 -1
- package/dist/docs/reference/agent-config.html +4 -4
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +4 -4
- package/dist/docs/reference/cli.html +7 -7
- package/dist/docs/reference/cli.md +1 -7
- package/dist/docs/reference/connections.html +6 -6
- package/dist/docs/reference/connections.md +1 -1
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/http-api.md +1 -0
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +4 -4
- package/dist/docs/reference/prompt.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +4 -4
- package/dist/docs/reference/skills.html +4 -4
- package/dist/docs/reference/subagents.html +4 -4
- package/dist/docs/reference/tools.html +14 -6
- package/dist/docs/reference/tools.md +25 -0
- package/dist/docs/scaffolding-agents.html +5 -5
- package/dist/docs/scaffolding-agents.md +3 -3
- package/dist/docs/skills/ab.html +52 -0
- package/dist/docs/skills/ab.md +50 -0
- package/dist/docs/skills/create-agent.html +34 -0
- package/dist/docs/skills/create-agent.md +160 -0
- package/dist/docs/skills/debug.html +27 -0
- package/dist/docs/skills/debug.md +36 -0
- package/dist/docs/skills/evals.html +51 -0
- package/dist/docs/skills/evals.md +99 -0
- package/dist/docs/skills/framework-map.html +27 -0
- package/dist/docs/skills/framework-map.md +95 -0
- package/dist/docs/skills/github.html +42 -0
- package/dist/docs/skills/github.md +93 -0
- package/dist/docs/skills/hillclimb.html +33 -0
- package/dist/docs/skills/hillclimb.md +55 -0
- package/dist/docs/skills/index.html +27 -0
- package/dist/docs/skills/index.md +21 -0
- package/dist/docs/skills/mcp-auth.html +44 -0
- package/dist/docs/skills/mcp-auth.md +76 -0
- package/dist/docs/skills/otel.html +34 -0
- package/dist/docs/skills/otel.md +48 -0
- package/dist/docs/skills/setup-slack.html +46 -0
- package/dist/docs/skills/setup-slack.md +141 -0
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +4 -4
- package/dist/docs/templates/agents-md.html +4 -4
- package/dist/docs/templates/code-wiki.html +4 -4
- package/dist/docs/templates/demo.html +4 -4
- package/dist/docs/templates/pr-autofixer.html +4 -4
- package/dist/docs/templates/security-help.html +4 -4
- package/dist/docs/templates/security-reviewer.html +4 -4
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/docs/troubleshooting.md +1 -1
- package/dist/files-backends/cursor-hosted.d.ts +9 -2
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +9 -11
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/internal/as-of.d.ts +19 -0
- package/dist/internal/as-of.d.ts.map +1 -0
- package/dist/internal/as-of.js +82 -0
- package/dist/internal/cli-deploy.d.ts +2 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +102 -7
- package/dist/internal/conversation-mirror.d.ts.map +1 -1
- package/dist/internal/conversation-mirror.js +3 -4
- package/dist/internal/cursor/hosted-store-secrets.d.ts +15 -0
- package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -0
- package/dist/internal/cursor/hosted-store-secrets.js +48 -0
- package/dist/internal/cursor-event-relay.d.ts.map +1 -1
- package/dist/internal/cursor-event-relay.js +5 -6
- package/dist/internal/deploy-client.d.ts +6 -6
- package/dist/internal/deploy-client.js +7 -7
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +11 -1
- package/dist/internal/framework-file-storage.d.ts +5 -4
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +6 -4
- package/dist/internal/framework-storage-selection.d.ts +13 -11
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +28 -23
- package/dist/internal/hosted-admission-adapter.d.ts +28 -0
- package/dist/internal/hosted-admission-adapter.d.ts.map +1 -0
- package/dist/internal/hosted-admission-adapter.js +7 -0
- package/dist/internal/hosted-delivery-protocol.d.ts +6 -1
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +1 -1
- package/dist/internal/hosted-delivery.d.ts +15 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +47 -21
- package/dist/internal/hosted-execution-diag.d.ts +11 -0
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +39 -2
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +4 -1
- package/dist/internal/server.d.ts +3 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +82 -19
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +24 -4
- package/dist/internal/session-run-log.d.ts +120 -0
- package/dist/internal/session-run-log.d.ts.map +1 -0
- package/dist/internal/session-run-log.js +358 -0
- package/dist/internal/tool-policy.d.ts +20 -8
- package/dist/internal/tool-policy.d.ts.map +1 -1
- package/dist/internal/tool-policy.js +11 -0
- package/dist/playground/assets/index-BszoQDc6.css +1 -0
- package/dist/playground/assets/index-DVs98vPL.js +69 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted-v2.d.ts +83 -0
- package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -0
- package/dist/storage-backends/cursor-hosted-v2.js +164 -0
- package/dist/storage-backends/cursor-hosted.d.ts +6 -0
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +6 -1
- package/dist/storage-protocol.d.ts +8 -0
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +8 -0
- package/dist/tools.d.ts +12 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +1 -1
- package/docs/ab.md +1 -1
- package/docs/building-with-agents.md +14 -11
- package/docs/design/runtime-abstraction.md +1757 -0
- package/docs/evals.md +1 -1
- package/docs/guides/github.md +1 -1
- package/docs/guides/mcp-oauth.md +1 -1
- package/docs/guides/opentelemetry.md +2 -2
- package/docs/guides/slack.md +80 -1
- package/docs/hillclimbing.md +5 -5
- package/docs/quickstart.md +1 -1
- package/docs/reference/cli.md +1 -7
- package/docs/reference/connections.md +1 -1
- package/docs/reference/http-api.md +1 -0
- package/docs/reference/tools.md +25 -0
- package/docs/scaffolding-agents.md +3 -3
- package/docs/skills/index.md +26 -0
- package/docs/troubleshooting.md +1 -1
- package/package.json +1 -1
- package/src/bin/agent-serve.ts +6 -7
- package/src/channels/github/defaults.ts +36 -3
- package/src/channels/github/github-channel.ts +17 -0
- package/src/channels/github/progress.ts +7 -0
- package/src/channels/origin/origin-channel.ts +74 -10
- package/src/channels/slack/api.ts +35 -17
- package/src/channels/slack/constants.ts +6 -0
- package/src/channels/slack/defaults.ts +253 -144
- package/src/channels/slack/dispatch.ts +10 -1
- package/src/channels/slack/inbound.ts +17 -0
- package/src/channels/slack/index.ts +1 -0
- package/src/channels/slack/live-delivery.ts +135 -22
- package/src/channels/slack/progress-delivery.ts +133 -0
- package/src/channels/slack/reasoning-card.ts +140 -0
- package/src/channels/slack/redact.ts +6 -0
- package/src/channels/slack/reply-options.ts +229 -0
- package/src/channels/slack/slack-channel.ts +7 -2
- package/src/channels/slack/stream.ts +31 -24
- package/src/channels/slack/tool-cards.ts +221 -0
- package/src/channels/slack/types.ts +168 -7
- package/src/files-backends/cursor-hosted.ts +18 -7
- package/src/index.ts +4 -0
- package/src/internal/as-of.ts +107 -0
- package/src/internal/cli-deploy.ts +130 -10
- package/src/internal/conversation-mirror.ts +3 -8
- package/src/internal/cursor/hosted-store-secrets.ts +72 -0
- package/src/internal/cursor-event-relay.ts +5 -6
- package/src/internal/deploy-client.ts +10 -10
- package/src/internal/discovery.ts +9 -1
- package/src/internal/framework-file-storage.ts +6 -4
- package/src/internal/framework-storage-selection.ts +28 -25
- package/src/internal/hosted-admission-adapter.ts +42 -0
- package/src/internal/hosted-delivery-protocol.ts +7 -2
- package/src/internal/hosted-delivery.ts +88 -36
- package/src/internal/hosted-execution-diag.ts +45 -0
- package/src/internal/http-channel.ts +8 -0
- package/src/internal/server.ts +100 -2
- package/src/internal/session-engine.ts +32 -1
- package/src/internal/session-run-log.ts +579 -0
- package/src/internal/tool-policy.ts +31 -9
- package/src/storage-backends/cursor-hosted-v2.ts +219 -0
- package/src/storage-backends/cursor-hosted.ts +6 -1
- package/src/storage-protocol.ts +10 -0
- package/src/tools.ts +12 -2
- package/src/types.ts +30 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.BU9nHdnQ.js +0 -1
- package/dist/docs/assets/hillclimbing.md.DhESf3OO.js +0 -4
- package/dist/docs/assets/scaffolding-agents.md.D7UUkWw0.js +0 -1
- package/dist/playground/assets/index-DrkI6y5O.js +0 -88
- package/dist/playground/assets/index-DzNGwm7q.css +0 -1
- /package/dist/docs/assets/{ab.md.DJo5r4R-.lean.js → ab.md.mlVgqvSk.lean.js} +0 -0
- /package/dist/docs/assets/{building-with-agents.md.DI4mEzlt.lean.js → building-with-agents.md.CUSWxlP_.lean.js} +0 -0
- /package/dist/docs/assets/{evals.md.lfJoEVc8.lean.js → evals.md.CPzDAwoH.lean.js} +0 -0
- /package/dist/docs/assets/{guides_github.md.Cnh2mL4a.lean.js → guides_github.md.BtPr9GaP.lean.js} +0 -0
- /package/dist/docs/assets/{guides_mcp-oauth.md.CN-6YmTJ.lean.js → guides_mcp-oauth.md.Dp6cDP7f.lean.js} +0 -0
- /package/dist/docs/assets/{guides_opentelemetry.md.bmPmkvJu.lean.js → guides_opentelemetry.md.BVTXDCRg.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.DhESf3OO.lean.js → hillclimbing.md.CpTGTCle.lean.js} +0 -0
- /package/dist/docs/assets/{index.md.CVeRUOeZ.lean.js → index.md.Bb4k8kUm.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.Nj_LjW_a.lean.js → quickstart.md.DdQOF7Y8.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.DxldvyIB.lean.js → reference_connections.md.BiGoBAk2.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.5zOAbV86.lean.js → reference_http-api.md.BEJx9XVj.lean.js} +0 -0
- /package/dist/docs/assets/{scaffolding-agents.md.D7UUkWw0.lean.js → scaffolding-agents.md.em43xlY1.lean.js} +0 -0
- /package/dist/docs/assets/{troubleshooting.md.DCiPBhYs.lean.js → troubleshooting.md.Cus_YZga.lean.js} +0 -0
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
/>
|
|
9
9
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
10
10
|
<title>agent-serve playground</title>
|
|
11
|
-
<script type="module" crossorigin src="./assets/index-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
11
|
+
<script type="module" crossorigin src="./assets/index-DVs98vPL.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="./assets/index-BszoQDc6.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor-managed durable KV for hosted **architecture v2** agents.
|
|
3
|
+
*
|
|
4
|
+
* Talks to the AgentSDK v2 KV proxy
|
|
5
|
+
* (`POST /internal/agentsdk/kv/*`) using the engine's pod
|
|
6
|
+
* `CURSOR_API_KEY`. The server resolves the v2 deployment from that service
|
|
7
|
+
* account (factorydb `agentsdk_deployment`) and persists rows in factorydb
|
|
8
|
+
* `agentsdk_kv` — v1's Bugbot-backed `/internal/agent-serve/storage/*`
|
|
9
|
+
* routes cannot resolve a v2 pod credential at all.
|
|
10
|
+
*
|
|
11
|
+
* The v2 wire protocol is four routes, not v1's eight:
|
|
12
|
+
*
|
|
13
|
+
* - `POST /internal/agentsdk/kv/get`
|
|
14
|
+
* `{ key }` → `{ found, value, version }` — reads always carry the CAS
|
|
15
|
+
* version token ({@link KvV2GetResponse}).
|
|
16
|
+
* - `POST /internal/agentsdk/kv/put`
|
|
17
|
+
* `{ key, value, ifAbsent? | ifVersion? }` → `{ ok, version, current }`
|
|
18
|
+
* ({@link KvV2PutResponse}) — one write primitive: last-write-wins when
|
|
19
|
+
* unconditional (still bumps the token), atomic create-if-absent with
|
|
20
|
+
* `ifAbsent: true`, atomic compare-and-swap with `ifVersion`.
|
|
21
|
+
* - `POST /internal/agentsdk/kv/delete` `{ key }` → `{ ok }`.
|
|
22
|
+
* - `POST /internal/agentsdk/kv/list`
|
|
23
|
+
* `{ prefix, limit?, cursor?, keysOnly? }` → `{ entries, nextCursor }`
|
|
24
|
+
* ({@link KvV2ListResponse}) — ascending key order with keyset
|
|
25
|
+
* pagination. `list` / `listKeys` below drain every page, so the v1
|
|
26
|
+
* truncated-scan failure mode does not exist here.
|
|
27
|
+
*
|
|
28
|
+
* Eval runs and A/B samples still ride the v1 storage proxy's dedicated
|
|
29
|
+
* tables (`evals` / `abs` below); moving them to factorydb is a separate
|
|
30
|
+
* follow-up from the KV cutover.
|
|
31
|
+
*
|
|
32
|
+
* This backend is platform-selected for architecture v2
|
|
33
|
+
* (framework-storage-selection.ts) — authors never import it; `agent/storage.ts`
|
|
34
|
+
* is rejected on v2.
|
|
35
|
+
*/
|
|
36
|
+
import type { StorageABTable, StorageCasTable, StorageConfig, StorageEvalsTable } from "../storage.js";
|
|
37
|
+
import type { JsonValue } from "../types.js";
|
|
38
|
+
import { CURSOR_HOSTED_STORAGE, type CursorHostedStorageOptions } from "./cursor-hosted.js";
|
|
39
|
+
/** Wire shape of the v2 `get` route. `null` ⇒ JSON `undefined`. */
|
|
40
|
+
export interface KvV2GetResponse {
|
|
41
|
+
found: boolean;
|
|
42
|
+
value: JsonValue | null;
|
|
43
|
+
version: string | null;
|
|
44
|
+
}
|
|
45
|
+
/** Wire shape of the v2 `put` route (all three write modes). */
|
|
46
|
+
export interface KvV2PutResponse {
|
|
47
|
+
ok: boolean;
|
|
48
|
+
/** New version token on an accepted write, else `null`. */
|
|
49
|
+
version: string | null;
|
|
50
|
+
/** Entry observed when a conditional write lost; `null` when absent. */
|
|
51
|
+
current: {
|
|
52
|
+
value: JsonValue | null;
|
|
53
|
+
version: string;
|
|
54
|
+
} | null;
|
|
55
|
+
}
|
|
56
|
+
/** Wire shape of the v2 `list` route. */
|
|
57
|
+
export interface KvV2ListResponse {
|
|
58
|
+
entries: Array<{
|
|
59
|
+
key: string;
|
|
60
|
+
/** Omitted when the request asked for keys only. */
|
|
61
|
+
value?: JsonValue | null;
|
|
62
|
+
version: string;
|
|
63
|
+
}>;
|
|
64
|
+
/** Last key of this page when more rows remain, else `null`. */
|
|
65
|
+
nextCursor: string | null;
|
|
66
|
+
}
|
|
67
|
+
type CursorHostedStorageV2Methods = Required<Pick<StorageConfig, "put" | "get" | "delete" | "list">> & {
|
|
68
|
+
readonly [CURSOR_HOSTED_STORAGE]: true;
|
|
69
|
+
cas: StorageCasTable;
|
|
70
|
+
evals: StorageEvalsTable;
|
|
71
|
+
abs: StorageABTable;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Architecture-v2 `defineStorage` methods (AgentSDK v2 KV proxy → factorydb
|
|
75
|
+
* `agentsdk_kv`). Platform-selected; spread into `defineStorage({...})` by
|
|
76
|
+
* framework-storage-selection.ts. No `listNewest`: v2 session records live
|
|
77
|
+
* on the framework file store, so the only consumer of write-time ordering
|
|
78
|
+
* never reaches this backend and the engine's `list` fallback covers the
|
|
79
|
+
* rest.
|
|
80
|
+
*/
|
|
81
|
+
export declare function cursorHostedStorageV2(options?: CursorHostedStorageOptions): CursorHostedStorageV2Methods;
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=cursor-hosted-v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-hosted-v2.d.ts","sourceRoot":"","sources":["../../src/storage-backends/cursor-hosted-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,aAAa,EAEb,iBAAiB,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,SAAS,EAAiC,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,EAGhC,MAAM,oBAAoB,CAAC;AAI5B,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,2DAA2D;IAC3D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wEAAwE;IACxE,OAAO,EAAE;QAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9D;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,oDAAoD;QACpD,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,gEAAgE;IAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,KAAK,4BAA4B,GAAG,QAAQ,CAC1C,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,CACvD,GAAG;IACF,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;IACvC,GAAG,EAAE,eAAe,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,GAAG,EAAE,cAAc,CAAC;CACrB,CAAC;AAoDF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,0BAA+B,GACvC,4BAA4B,CAoE9B"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor-managed durable KV for hosted **architecture v2** agents.
|
|
3
|
+
*
|
|
4
|
+
* Talks to the AgentSDK v2 KV proxy
|
|
5
|
+
* (`POST /internal/agentsdk/kv/*`) using the engine's pod
|
|
6
|
+
* `CURSOR_API_KEY`. The server resolves the v2 deployment from that service
|
|
7
|
+
* account (factorydb `agentsdk_deployment`) and persists rows in factorydb
|
|
8
|
+
* `agentsdk_kv` — v1's Bugbot-backed `/internal/agent-serve/storage/*`
|
|
9
|
+
* routes cannot resolve a v2 pod credential at all.
|
|
10
|
+
*
|
|
11
|
+
* The v2 wire protocol is four routes, not v1's eight:
|
|
12
|
+
*
|
|
13
|
+
* - `POST /internal/agentsdk/kv/get`
|
|
14
|
+
* `{ key }` → `{ found, value, version }` — reads always carry the CAS
|
|
15
|
+
* version token ({@link KvV2GetResponse}).
|
|
16
|
+
* - `POST /internal/agentsdk/kv/put`
|
|
17
|
+
* `{ key, value, ifAbsent? | ifVersion? }` → `{ ok, version, current }`
|
|
18
|
+
* ({@link KvV2PutResponse}) — one write primitive: last-write-wins when
|
|
19
|
+
* unconditional (still bumps the token), atomic create-if-absent with
|
|
20
|
+
* `ifAbsent: true`, atomic compare-and-swap with `ifVersion`.
|
|
21
|
+
* - `POST /internal/agentsdk/kv/delete` `{ key }` → `{ ok }`.
|
|
22
|
+
* - `POST /internal/agentsdk/kv/list`
|
|
23
|
+
* `{ prefix, limit?, cursor?, keysOnly? }` → `{ entries, nextCursor }`
|
|
24
|
+
* ({@link KvV2ListResponse}) — ascending key order with keyset
|
|
25
|
+
* pagination. `list` / `listKeys` below drain every page, so the v1
|
|
26
|
+
* truncated-scan failure mode does not exist here.
|
|
27
|
+
*
|
|
28
|
+
* Eval runs and A/B samples still ride the v1 storage proxy's dedicated
|
|
29
|
+
* tables (`evals` / `abs` below); moving them to factorydb is a separate
|
|
30
|
+
* follow-up from the KV cutover.
|
|
31
|
+
*
|
|
32
|
+
* This backend is platform-selected for architecture v2
|
|
33
|
+
* (framework-storage-selection.ts) — authors never import it; `agent/storage.ts`
|
|
34
|
+
* is rejected on v2.
|
|
35
|
+
*/
|
|
36
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
import { CURSOR_HOSTED_STORAGE, cursorHostedStorage, storageRpc, } from "./cursor-hosted.js";
|
|
46
|
+
const KV_V2_PREFIX = "/internal/agentsdk/kv";
|
|
47
|
+
function toCasResult(response) {
|
|
48
|
+
var _a;
|
|
49
|
+
if (response.ok) {
|
|
50
|
+
if (response.version === null) {
|
|
51
|
+
throw new Error("cursorHostedStorageV2: conditional write succeeded without a version token");
|
|
52
|
+
}
|
|
53
|
+
return { ok: true, version: response.version };
|
|
54
|
+
}
|
|
55
|
+
const current = response.current === null
|
|
56
|
+
? undefined
|
|
57
|
+
: {
|
|
58
|
+
value: (_a = response.current.value) !== null && _a !== void 0 ? _a : null,
|
|
59
|
+
version: response.current.version,
|
|
60
|
+
};
|
|
61
|
+
return { ok: false, current };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Drain every page of a v2 `list` scan. The server pages by keyset (each
|
|
65
|
+
* `nextCursor` is the strictly-greatest key returned so far), so a cursor
|
|
66
|
+
* that fails to advance means a broken server — fail loudly rather than
|
|
67
|
+
* loop forever.
|
|
68
|
+
*/
|
|
69
|
+
function listAllPages(options, body) {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const entries = [];
|
|
72
|
+
let cursor;
|
|
73
|
+
for (;;) {
|
|
74
|
+
const page = yield storageRpc(options, `${KV_V2_PREFIX}/list`, cursor === undefined ? body : Object.assign(Object.assign({}, body), { cursor }));
|
|
75
|
+
entries.push(...page.entries);
|
|
76
|
+
if (page.nextCursor === null) {
|
|
77
|
+
return entries;
|
|
78
|
+
}
|
|
79
|
+
if (cursor !== undefined && page.nextCursor <= cursor) {
|
|
80
|
+
throw new Error(`cursorHostedStorageV2: list("${body.prefix}") cursor did not advance`);
|
|
81
|
+
}
|
|
82
|
+
cursor = page.nextCursor;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Architecture-v2 `defineStorage` methods (AgentSDK v2 KV proxy → factorydb
|
|
88
|
+
* `agentsdk_kv`). Platform-selected; spread into `defineStorage({...})` by
|
|
89
|
+
* framework-storage-selection.ts. No `listNewest`: v2 session records live
|
|
90
|
+
* on the framework file store, so the only consumer of write-time ordering
|
|
91
|
+
* never reaches this backend and the engine's `list` fallback covers the
|
|
92
|
+
* rest.
|
|
93
|
+
*/
|
|
94
|
+
export function cursorHostedStorageV2(options = {}) {
|
|
95
|
+
// Eval runs and A/B samples stay on the v1 proxy's dedicated tables.
|
|
96
|
+
const v1 = cursorHostedStorage(options);
|
|
97
|
+
return {
|
|
98
|
+
[CURSOR_HOSTED_STORAGE]: true,
|
|
99
|
+
put(key, value) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
yield storageRpc(options, `${KV_V2_PREFIX}/put`, { key, value });
|
|
102
|
+
});
|
|
103
|
+
},
|
|
104
|
+
get(key) {
|
|
105
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
var _a;
|
|
107
|
+
const result = yield storageRpc(options, `${KV_V2_PREFIX}/get`, { key });
|
|
108
|
+
if (!result.found) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
return (_a = result.value) !== null && _a !== void 0 ? _a : undefined;
|
|
112
|
+
});
|
|
113
|
+
},
|
|
114
|
+
delete(key) {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
yield storageRpc(options, `${KV_V2_PREFIX}/delete`, { key });
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
list(prefix) {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
const entries = yield listAllPages(options, { prefix });
|
|
122
|
+
return entries.map((entry) => { var _a; return ({
|
|
123
|
+
key: entry.key,
|
|
124
|
+
value: (_a = entry.value) !== null && _a !== void 0 ? _a : null,
|
|
125
|
+
}); });
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
cas: {
|
|
129
|
+
getWithVersion(key) {
|
|
130
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
var _a;
|
|
132
|
+
const result = yield storageRpc(options, `${KV_V2_PREFIX}/get`, { key });
|
|
133
|
+
if (!result.found || result.version === null) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
return { value: (_a = result.value) !== null && _a !== void 0 ? _a : null, version: result.version };
|
|
137
|
+
});
|
|
138
|
+
},
|
|
139
|
+
putIfAbsent(key, value) {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
const result = yield storageRpc(options, `${KV_V2_PREFIX}/put`, { key, value, ifAbsent: true });
|
|
142
|
+
return toCasResult(result);
|
|
143
|
+
});
|
|
144
|
+
},
|
|
145
|
+
putIfVersion(key, value, expectedVersion) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
const result = yield storageRpc(options, `${KV_V2_PREFIX}/put`, { key, value, ifVersion: expectedVersion });
|
|
148
|
+
return toCasResult(result);
|
|
149
|
+
});
|
|
150
|
+
},
|
|
151
|
+
listKeys(prefix) {
|
|
152
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
153
|
+
const entries = yield listAllPages(options, {
|
|
154
|
+
prefix,
|
|
155
|
+
keysOnly: true,
|
|
156
|
+
});
|
|
157
|
+
return entries.map((entry) => entry.key);
|
|
158
|
+
});
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
evals: v1.evals,
|
|
162
|
+
abs: v1.abs,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
@@ -101,6 +101,12 @@ export interface KvListKeysResponse {
|
|
|
101
101
|
*/
|
|
102
102
|
truncated?: boolean;
|
|
103
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* One authenticated POST to the control-plane proxy. Shared with the
|
|
106
|
+
* architecture-v2 backend (`cursor-hosted-v2.ts`), which speaks a different
|
|
107
|
+
* route family over the same transport and credential chain.
|
|
108
|
+
*/
|
|
109
|
+
export declare function storageRpc<T>(options: CursorHostedStorageOptions, path: string, body: Record<string, unknown>): Promise<T>;
|
|
104
110
|
/**
|
|
105
111
|
* Cursor-hosted `defineStorage` methods (control-plane storage proxy →
|
|
106
112
|
* Bugbot `agent_serve_*` tables). Spread into `defineStorage({...})`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-hosted.d.ts","sourceRoot":"","sources":["../../src/storage-backends/cursor-hosted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,aAAa,EAEb,iBAAiB,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,SAAS,EAAiC,MAAM,aAAa,CAAC;AAW5E;;;GAGG;AACH,eAAO,MAAM,+CAA+C,EAC1D,cAAuB,CAAC;AAE1B;;;GAGG;AACH,eAAO,MAAM,iCAAiC,EAC5C,2BAAoC,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,SAAS;IACpD,OAAO,+CAA+C;IACtD,OAAO,iCAAiC;CAIzC,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACzC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,MAE1C,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM7D;AAED,KAAK,0BAA0B,GAAG,QAAQ,CACxC,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC,CACtE,GAAG;IACF,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;IACvC,GAAG,EAAE,eAAe,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,GAAG,EAAE,cAAc,CAAC;CACrB,CAAC;AA4BF,6EAA6E;AAC7E,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iEAAiE;IACjE,OAAO,EAAE;QAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9D;AAED,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"cursor-hosted.d.ts","sourceRoot":"","sources":["../../src/storage-backends/cursor-hosted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,aAAa,EAEb,iBAAiB,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,SAAS,EAAiC,MAAM,aAAa,CAAC;AAW5E;;;GAGG;AACH,eAAO,MAAM,+CAA+C,EAC1D,cAAuB,CAAC;AAE1B;;;GAGG;AACH,eAAO,MAAM,iCAAiC,EAC5C,2BAAoC,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,SAAS;IACpD,OAAO,+CAA+C;IACtD,OAAO,iCAAiC;CAIzC,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACzC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,MAE1C,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM7D;AAED,KAAK,0BAA0B,GAAG,QAAQ,CACxC,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC,CACtE,GAAG;IACF,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;IACvC,GAAG,EAAE,eAAe,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,GAAG,EAAE,cAAc,CAAC;CACrB,CAAC;AA4BF,6EAA6E;AAC7E,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iEAAiE;IACjE,OAAO,EAAE;QAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9D;AAED,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAyCD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,OAAO,EAAE,0BAA0B,EACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,CAAC,CAAC,CAmCZ;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,0BAA+B,GACvC,0BAA0B,CAuJ5B"}
|
|
@@ -100,7 +100,12 @@ function resolveBaseUrl(options) {
|
|
|
100
100
|
const raw = ((_b = (_a = options.baseUrl) !== null && _a !== void 0 ? _a : process.env.CURSOR_API_BASE_URL) !== null && _b !== void 0 ? _b : DEFAULT_CURSOR_EXTERNAL_API_URL).trim();
|
|
101
101
|
return raw.endsWith("/") ? raw.slice(0, -1) : raw;
|
|
102
102
|
}
|
|
103
|
-
|
|
103
|
+
/**
|
|
104
|
+
* One authenticated POST to the control-plane proxy. Shared with the
|
|
105
|
+
* architecture-v2 backend (`cursor-hosted-v2.ts`), which speaks a different
|
|
106
|
+
* route family over the same transport and credential chain.
|
|
107
|
+
*/
|
|
108
|
+
export function storageRpc(options, path, body) {
|
|
104
109
|
return __awaiter(this, void 0, void 0, function* () {
|
|
105
110
|
var _a;
|
|
106
111
|
const baseUrl = resolveBaseUrl(options);
|
|
@@ -27,6 +27,7 @@ export declare const STORAGE_KEY_ROOT: "agentkit/v1";
|
|
|
27
27
|
* | --- | --- |
|
|
28
28
|
* | `agentkit/v1/{agent}/session/{sessionId}` | `SessionRecord` |
|
|
29
29
|
* | `agentkit/v1/{agent}/session-events/{sessionId}/{index}` | `SessionEvent[]` chunk (index = first event's index, zero-padded) |
|
|
30
|
+
* | `agentkit/v1/{agent}/session-runs/{sessionPublicId}` | One session-level hosted-execution log (executions[] + lastFailure) |
|
|
30
31
|
* | `agentkit/v1/{agent}/continuation/{channelId}/{token}` | `{ sessionId }` |
|
|
31
32
|
* | `agentkit/v1/{agent}/kv/{key}` | Author JSON via `HostContext.kv` |
|
|
32
33
|
*
|
|
@@ -40,6 +41,13 @@ export declare const storageKeys: {
|
|
|
40
41
|
readonly sessionPrefix: (agent: string) => string;
|
|
41
42
|
readonly sessionEvents: (agent: string, sessionId: string, firstIndex: number) => string;
|
|
42
43
|
readonly sessionEventsPrefix: (agent: string, sessionId: string) => string;
|
|
44
|
+
/**
|
|
45
|
+
* One session-level hosted-execution log (v2 only). `sessionPublicId` is
|
|
46
|
+
* the factory `ses_…` so a throw that never minted a July session still
|
|
47
|
+
* lands under a stable key. Per-execution rows live inside the document.
|
|
48
|
+
*/
|
|
49
|
+
readonly sessionRun: (agent: string, sessionPublicId: string) => string;
|
|
50
|
+
readonly sessionRunsPrefix: (agent: string) => string;
|
|
43
51
|
readonly continuation: (agent: string, channelId: string, continuationKey: string) => string;
|
|
44
52
|
/**
|
|
45
53
|
* Author-facing opaque JSON (see `HostContext.kv`). `key` is URI-encoded /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-protocol.d.ts","sourceRoot":"","sources":["../src/storage-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAG,aAAsB,CAAC;AASvD
|
|
1
|
+
{"version":3,"file":"storage-protocol.d.ts","sourceRoot":"","sources":["../src/storage-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAG,aAAsB,CAAC;AASvD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,WAAW;aACtB,OAAO,UAAU,MAAM,aAAa,MAAM,KAAG,MAAM;aAEnD,aAAa,UAAU,MAAM,KAAG,MAAM;aAEtC,aAAa,UACJ,MAAM,aACF,MAAM,cACL,MAAM,KACjB,MAAM;aAET,mBAAmB,UAAU,MAAM,aAAa,MAAM,KAAG,MAAM;IAE/D;;;;OAIG;aACH,UAAU,UAAU,MAAM,mBAAmB,MAAM,KAAG,MAAM;aAE5D,iBAAiB,UAAU,MAAM,KAAG,MAAM;aAE1C,YAAY,UACH,MAAM,aACF,MAAM,mBACA,MAAM,KACtB,MAAM;IAET;;;OAGG;aACH,EAAE,UAAU,MAAM,OAAO,MAAM,KAAG,MAAM;aAExC,QAAQ,UAAU,MAAM,KAAG,MAAM;IACjC,gEAAgE;aAChE,OAAO,UAAU,MAAM,SAAS,MAAM,KAAG,MAAM;aAE/C,cAAc,UAAU,MAAM,KAAG,MAAM;IAEvC;;;OAGG;aACH,QAAQ,UACC,MAAM,cACD,MAAM,aACP,MAAM,MACb,MAAM,KACT,MAAM;IAET,gEAAgE;aAChE,UAAU,UAAU,MAAM,KAAG,MAAM;CAE3B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED,kFAAkF;AAClF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B,CAAC;AAUF;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb,oBAAoB,GAAG,SAAS,CAwClC;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,qBAAqB,CAYxB;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAYjE,CAAC"}
|
package/dist/storage-protocol.js
CHANGED
|
@@ -33,6 +33,7 @@ const DURABLE_SESSION_RECORD_KEY_RE = /^agentkit\/v1\/([^/]+)\/session\/([^/]+)$
|
|
|
33
33
|
* | --- | --- |
|
|
34
34
|
* | `agentkit/v1/{agent}/session/{sessionId}` | `SessionRecord` |
|
|
35
35
|
* | `agentkit/v1/{agent}/session-events/{sessionId}/{index}` | `SessionEvent[]` chunk (index = first event's index, zero-padded) |
|
|
36
|
+
* | `agentkit/v1/{agent}/session-runs/{sessionPublicId}` | One session-level hosted-execution log (executions[] + lastFailure) |
|
|
36
37
|
* | `agentkit/v1/{agent}/continuation/{channelId}/{token}` | `{ sessionId }` |
|
|
37
38
|
* | `agentkit/v1/{agent}/kv/{key}` | Author JSON via `HostContext.kv` |
|
|
38
39
|
*
|
|
@@ -46,6 +47,13 @@ export const storageKeys = {
|
|
|
46
47
|
sessionPrefix: (agent) => `${STORAGE_KEY_ROOT}/${agent}/session/`,
|
|
47
48
|
sessionEvents: (agent, sessionId, firstIndex) => `${STORAGE_KEY_ROOT}/${agent}/session-events/${sessionId}/${String(firstIndex).padStart(8, "0")}`,
|
|
48
49
|
sessionEventsPrefix: (agent, sessionId) => `${STORAGE_KEY_ROOT}/${agent}/session-events/${sessionId}/`,
|
|
50
|
+
/**
|
|
51
|
+
* One session-level hosted-execution log (v2 only). `sessionPublicId` is
|
|
52
|
+
* the factory `ses_…` so a throw that never minted a July session still
|
|
53
|
+
* lands under a stable key. Per-execution rows live inside the document.
|
|
54
|
+
*/
|
|
55
|
+
sessionRun: (agent, sessionPublicId) => `${STORAGE_KEY_ROOT}/${agent}/session-runs/${keySegment(sessionPublicId)}`,
|
|
56
|
+
sessionRunsPrefix: (agent) => `${STORAGE_KEY_ROOT}/${agent}/session-runs/`,
|
|
49
57
|
continuation: (agent, channelId, continuationKey) => `${STORAGE_KEY_ROOT}/${agent}/continuation/${keySegment(channelId)}/${keySegment(continuationKey)}`,
|
|
50
58
|
/**
|
|
51
59
|
* Author-facing opaque JSON (see `HostContext.kv`). `key` is URI-encoded /
|
package/dist/tools.d.ts
CHANGED
|
@@ -71,6 +71,15 @@ type ServerToolConfig<TSchema> = {
|
|
|
71
71
|
* write, so a dry-run session answers it instead of running it.
|
|
72
72
|
*/
|
|
73
73
|
effect?: ToolEffectDeclaration<ToolInput<TSchema>>;
|
|
74
|
+
/**
|
|
75
|
+
* Input properties carrying time bounds. In an `asOf` session each named
|
|
76
|
+
* argument must be an absolute ISO-8601 instant with a timezone, no later
|
|
77
|
+
* than the frozen instant; a call that omits one, or supplies a relative
|
|
78
|
+
* or later value, is refused so the model retries with absolute bounds.
|
|
79
|
+
* Names must exist in {@link inputSchema} or the frozen session refuses to
|
|
80
|
+
* start. Ignored without `asOf`.
|
|
81
|
+
*/
|
|
82
|
+
timeArgs?: readonly string[];
|
|
74
83
|
/** What a `"write"` tool returns in a dry-run session. */
|
|
75
84
|
dryRunResult?: ToolExecuteResult | ((input: ToolInput<TSchema>) => ToolExecuteResult);
|
|
76
85
|
execute: (input: ToolInput<TSchema>, ctx: ToolContext) => ToolExecuteResult | Promise<ToolExecuteResult>;
|
|
@@ -92,10 +101,11 @@ type AgentToolConfig<TSchema> = {
|
|
|
92
101
|
needsApproval?: never;
|
|
93
102
|
/**
|
|
94
103
|
* Agent tools run inside the harness, not through the host's tool path, so
|
|
95
|
-
* a dry run cannot answer them
|
|
96
|
-
*
|
|
104
|
+
* a dry run cannot answer them and an `asOf` session cannot bound them.
|
|
105
|
+
* Classify the work as a server tool if it needs either.
|
|
97
106
|
*/
|
|
98
107
|
effect?: never;
|
|
108
|
+
timeArgs?: never;
|
|
99
109
|
dryRunResult?: never;
|
|
100
110
|
};
|
|
101
111
|
/**
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,4EAA4E;AAC5E,MAAM,MAAM,SAAS,CAAC,OAAO,IAAI,OAAO,SAAS,CAAC,CAAC,UAAU,GACzD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAChB,UAAU,CAAC;AAEf,KAAK,gBAAgB,CAAC,OAAO,IAAI;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,gBAAgB,CAAC;IAC/C,aAAa,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD;;;OAGG;IACH,MAAM,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,0DAA0D;IAC1D,YAAY,CAAC,EACT,iBAAiB,GACjB,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,iBAAiB,CAAC,CAAC;IACvD,OAAO,EAAE,CACP,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EACzB,GAAG,EAAE,WAAW,KACb,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,KAAK,eAAe,CAAC,OAAO,IAAI;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,gBAAgB,CAAC;IAC/C;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,uEAAuE;IACvE,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,gBAAgB,GAAG,SAAS,GAAG,SAAS,EAEvE,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,GAC3D,cAAc,CAEhB"}
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,4EAA4E;AAC5E,MAAM,MAAM,SAAS,CAAC,OAAO,IAAI,OAAO,SAAS,CAAC,CAAC,UAAU,GACzD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAChB,UAAU,CAAC;AAEf,KAAK,gBAAgB,CAAC,OAAO,IAAI;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,gBAAgB,CAAC;IAC/C,aAAa,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD;;;OAGG;IACH,MAAM,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,0DAA0D;IAC1D,YAAY,CAAC,EACT,iBAAiB,GACjB,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,iBAAiB,CAAC,CAAC;IACvD,OAAO,EAAE,CACP,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EACzB,GAAG,EAAE,WAAW,KACb,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,KAAK,eAAe,CAAC,OAAO,IAAI;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,gBAAgB,CAAC;IAC/C;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,uEAAuE;IACvE,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,gBAAgB,GAAG,SAAS,GAAG,SAAS,EAEvE,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,GAC3D,cAAc,CAEhB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -718,6 +718,8 @@ export interface ToolContext {
|
|
|
718
718
|
* `subagent.completed`). Omitted for scratch `callTool` with no session.
|
|
719
719
|
*/
|
|
720
720
|
emit?: (payload: SessionEventPayload) => void;
|
|
721
|
+
/** The session's frozen `asOf`, or the wall clock. Use instead of `Date.now()`. */
|
|
722
|
+
now(): Date;
|
|
721
723
|
}
|
|
722
724
|
/**
|
|
723
725
|
* Where a tool's body runs.
|
|
@@ -803,6 +805,17 @@ export interface ToolConfig<TInput> {
|
|
|
803
805
|
* write, so a dry run stubs it — see {@link ToolEffect}.
|
|
804
806
|
*/
|
|
805
807
|
effect?: ToolEffectDeclaration<TInput>;
|
|
808
|
+
/**
|
|
809
|
+
* Input properties that carry time bounds. In a session created with
|
|
810
|
+
* {@link SendMessageOptions.asOf}, every named argument must be an
|
|
811
|
+
* absolute ISO-8601 instant with a timezone, no later than the session's
|
|
812
|
+
* frozen instant — a call that omits one, or supplies a relative or later
|
|
813
|
+
* value, is refused so the model retries with absolute bounds. Names must
|
|
814
|
+
* exist in {@link inputSchema}; a session with `asOf` refuses to start
|
|
815
|
+
* otherwise, because a misspelled name would silently check nothing.
|
|
816
|
+
* Ignored in sessions without `asOf`.
|
|
817
|
+
*/
|
|
818
|
+
timeArgs?: readonly string[];
|
|
806
819
|
/**
|
|
807
820
|
* What a write tool returns in a dry-run session instead of executing.
|
|
808
821
|
*
|
|
@@ -832,6 +845,7 @@ export interface ToolDefinition extends BrandedDefinition<"tool"> {
|
|
|
832
845
|
readonly outputSchema?: z.ZodTypeAny | JsonSchemaObject;
|
|
833
846
|
readonly needsApproval?: ToolNeedsApproval<never>;
|
|
834
847
|
readonly effect?: ToolEffectDeclaration<never>;
|
|
848
|
+
readonly timeArgs?: readonly string[];
|
|
835
849
|
readonly dryRunResult?: ToolExecuteResult | ((input: never) => ToolExecuteResult);
|
|
836
850
|
readonly execute?: (input: never, ctx: ToolContext) => ToolExecuteResult | Promise<ToolExecuteResult>;
|
|
837
851
|
readonly script?: string;
|
|
@@ -1384,6 +1398,8 @@ export interface SessionInfo {
|
|
|
1384
1398
|
purpose?: SessionPurpose;
|
|
1385
1399
|
/** True when write-classified tool calls are answered by the host. */
|
|
1386
1400
|
dryRun?: boolean;
|
|
1401
|
+
/** Frozen instant this session reads at; absent means the wall clock. */
|
|
1402
|
+
asOf?: string;
|
|
1387
1403
|
auth: AuthContext | null;
|
|
1388
1404
|
title?: string;
|
|
1389
1405
|
/**
|
|
@@ -1417,6 +1433,8 @@ export interface SessionRecord {
|
|
|
1417
1433
|
purpose?: SessionPurpose;
|
|
1418
1434
|
/** Frozen at create from {@link SendMessageOptions.dryRun}. */
|
|
1419
1435
|
dryRun?: boolean;
|
|
1436
|
+
/** Frozen at create from {@link SendMessageOptions.asOf}. */
|
|
1437
|
+
asOf?: string;
|
|
1420
1438
|
/**
|
|
1421
1439
|
* Denormalized sticky A/B arms (mirrors durable `ab.assigned` events) so
|
|
1422
1440
|
* the agent loop / tools can read arms without re-folding the log. Source
|
|
@@ -1611,6 +1629,13 @@ export interface SendMessageOptions {
|
|
|
1611
1629
|
* model chose stay on the session log as the record of the intended action.
|
|
1612
1630
|
*/
|
|
1613
1631
|
dryRun?: boolean;
|
|
1632
|
+
/**
|
|
1633
|
+
* ISO-8601 instant with a timezone, frozen at create: the prompt states
|
|
1634
|
+
* it, {@link ToolContext.now} returns it, and tools that declare
|
|
1635
|
+
* {@link ToolConfig.timeArgs} refuse calls not bounded at or before it. A
|
|
1636
|
+
* tool that declares nothing still reads the present.
|
|
1637
|
+
*/
|
|
1638
|
+
asOf?: string;
|
|
1614
1639
|
/**
|
|
1615
1640
|
* Absolute directory used as the local harness `cwd` for this session.
|
|
1616
1641
|
* On create, sets the session workspace. On resume (continuation hit),
|
|
@@ -1965,6 +1990,11 @@ export interface ChannelMeta {
|
|
|
1965
1990
|
* by `info` so watched channels are auditable.
|
|
1966
1991
|
*/
|
|
1967
1992
|
slackChannelPosts?: readonly string[];
|
|
1993
|
+
/**
|
|
1994
|
+
* Author-facing notices about deprecated options the pack still honored.
|
|
1995
|
+
* Discovery surfaces each one as a `validate` warning on the channel file.
|
|
1996
|
+
*/
|
|
1997
|
+
deprecations?: readonly string[];
|
|
1968
1998
|
}
|
|
1969
1999
|
export interface ChannelConfig<TState = JsonValue> {
|
|
1970
2000
|
/**
|