@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
|
@@ -17,17 +17,19 @@
|
|
|
17
17
|
*
|
|
18
18
|
* - **Cursor-managed hosting** (the deployment-generation environment
|
|
19
19
|
* variable is set, same signal that registers `GET /v1/manifest`):
|
|
20
|
-
* the
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* the KV proxy
|
|
29
|
-
*
|
|
30
|
-
*
|
|
20
|
+
* the deployment's **framework-level file store**
|
|
21
|
+
* (`AGENT_SERVE_FRAMEWORK_STORE_SOURCE_ID`, bound at task time) holds
|
|
22
|
+
* session records, event transcripts, and the continuation index —
|
|
23
|
+
* file-shaped state on file storage, apart from the author-facing user
|
|
24
|
+
* store. Author `host.kv`, eval runs, A/B samples, and conditional writes
|
|
25
|
+
* ride the AgentSDK v2 KV proxy (cursor-hosted-v2.ts), which resolves the
|
|
26
|
+
* pod service account to the factorydb deployment row (the v1 Bugbot
|
|
27
|
+
* proxy cannot resolve v2 pods at all). Framework session state never
|
|
28
|
+
* routes to the KV proxy — the composite splits by key kind — so
|
|
29
|
+
* transcripts stay off the author-reachable KV namespace. The API key
|
|
30
|
+
* resolves through the full credential chain on every call because hosted
|
|
31
|
+
* freeze snapshots listen unsigned and the binder drops the key file
|
|
32
|
+
* after restore.
|
|
31
33
|
* - **Self-hosted**: no mirror. `--state-root` is the durable copy, which
|
|
32
34
|
* is correct when the operator owns the disk.
|
|
33
35
|
*
|
|
@@ -41,7 +43,7 @@
|
|
|
41
43
|
*/
|
|
42
44
|
import { cursorFrameworkStoreSourceId, cursorHostedFiles, } from "../files-backends/cursor-hosted.js";
|
|
43
45
|
import { defineStorage } from "../storage.js";
|
|
44
|
-
import {
|
|
46
|
+
import { cursorHostedStorageV2 } from "../storage-backends/cursor-hosted-v2.js";
|
|
45
47
|
import { resolveApiKeySync } from "./cursor/credentials.js";
|
|
46
48
|
import { AGENT_SERVE_GENERATION_ENV_VAR } from "./cursor-relay-core.js";
|
|
47
49
|
import { composeFrameworkStorage, fileSinkStorageCore, frameworkGuardedCas, } from "./framework-file-storage.js";
|
|
@@ -74,21 +76,24 @@ export function selectFrameworkStorageDefinition(input) {
|
|
|
74
76
|
// comes up). Follow-ups restore lazily by continuation or session id;
|
|
75
77
|
// GET /v1/sessions lists from the sink either way.
|
|
76
78
|
const policy = { restore: "off" };
|
|
77
|
-
|
|
78
|
-
//
|
|
79
|
+
const envSnapshot = env;
|
|
80
|
+
// Full chain (env → bind file → stored login): frozen engines listen
|
|
81
|
+
// unsigned and bind store ids + CURSOR_API_KEY at task time, after this
|
|
79
82
|
// definition is constructed.
|
|
80
83
|
const resolveApiKey = () => { var _a; return (_a = resolveApiKeySync()) === null || _a === void 0 ? void 0 : _a.apiKey; };
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
// also carries the cursor-hosted marker for GET /v1/sessions).
|
|
84
|
+
// v2 pods carry a factorydb-bound service account, which the v1 Bugbot
|
|
85
|
+
// storage proxy cannot resolve; author KV, CAS coordination, and the
|
|
86
|
+
// eval/A-B tables speak the AgentSDK v2 KV proxy instead. It also carries
|
|
87
|
+
// the cursor-hosted marker, so GET /v1/sessions prefers the durable list
|
|
88
|
+
// (session records are on the framework store, which the composed core
|
|
89
|
+
// lists).
|
|
90
|
+
const kv = cursorHostedStorageV2({ resolveApiKey });
|
|
89
91
|
return defineStorage(Object.assign(Object.assign(Object.assign({ name: "cursor-hosted (framework files)", policy }, kv), composeFrameworkStorage({
|
|
90
92
|
kv,
|
|
91
|
-
files: fileSinkStorageCore(cursorHostedFiles({
|
|
93
|
+
files: fileSinkStorageCore(cursorHostedFiles({
|
|
94
|
+
resolveStoreSourceId: () => cursorFrameworkStoreSourceId(envSnapshot),
|
|
95
|
+
resolveApiKey,
|
|
96
|
+
})),
|
|
92
97
|
})), {
|
|
93
98
|
// CAS stays on the KV proxy but must refuse framework-file keys, or a
|
|
94
99
|
// future coordination path would split-brain against the plain core.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ChannelHandlerArgs } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Hosted-admission hook a channel pack attaches to its definition.
|
|
4
|
+
*
|
|
5
|
+
* Hosted delivery looks this up from the mounted definition — it does not
|
|
6
|
+
* switch on `channelKind`. A new forge implements `dispatch` / `getOutcome`
|
|
7
|
+
* next to its webhook handler and calls {@link attachHostedAdmissionAdapter}
|
|
8
|
+
* from the channel constructor.
|
|
9
|
+
*/
|
|
10
|
+
export type HostedAdmissionDispatchOutcome = "skip" | "task";
|
|
11
|
+
export type HostedAdmissionAdapter = {
|
|
12
|
+
kind: string;
|
|
13
|
+
/**
|
|
14
|
+
* Optional wrap of the capturing `send` / `waitUntil` args (GitHub uses
|
|
15
|
+
* this to propagate background-task errors). Identity when omitted.
|
|
16
|
+
*/
|
|
17
|
+
prepareArgs?(args: ChannelHandlerArgs): ChannelHandlerArgs;
|
|
18
|
+
dispatch(input: {
|
|
19
|
+
eventType: string;
|
|
20
|
+
payload: unknown;
|
|
21
|
+
deliveryId: string;
|
|
22
|
+
args: ChannelHandlerArgs;
|
|
23
|
+
}): Promise<Response>;
|
|
24
|
+
getOutcome(response: Response): HostedAdmissionDispatchOutcome | undefined;
|
|
25
|
+
};
|
|
26
|
+
export declare function attachHostedAdmissionAdapter(definition: object, adapter: HostedAdmissionAdapter): void;
|
|
27
|
+
export declare function getHostedAdmissionAdapter(definition: object): HostedAdmissionAdapter | undefined;
|
|
28
|
+
//# sourceMappingURL=hosted-admission-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-admission-adapter.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-admission-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,WAAW,CAAC,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,kBAAkB,CAAC;KAC1B,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,8BAA8B,GAAG,SAAS,CAAC;CAC5E,CAAC;AAIF,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CAEN;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GACjB,sBAAsB,GAAG,SAAS,CAEpC"}
|
|
@@ -16,7 +16,12 @@ export type HostedAdmissionManagedAutomation = {
|
|
|
16
16
|
export type HostedAdmission = {
|
|
17
17
|
v: 2;
|
|
18
18
|
channelId: string;
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Mailbox / subscription channel kind (`github`, `origin`, …). The guest
|
|
21
|
+
* resolves dispatch from the mounted definition's hosted-admission
|
|
22
|
+
* adapter; this field is not an allowlist.
|
|
23
|
+
*/
|
|
24
|
+
channelKind: string;
|
|
20
25
|
eventType: string;
|
|
21
26
|
deliveryId: string;
|
|
22
27
|
sessionMode: "event" | "continuation";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-delivery-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery-protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,sBAAsB,gCAAgC,CAAC;AACpE,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AACrE,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AACrE;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,0BAA0B,CAAC;AAEtE,MAAM,MAAM,gCAAgC,GAAG;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,CAAC,CAAC;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"hosted-delivery-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery-protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,sBAAsB,gCAAgC,CAAC;AACpE,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AACrE,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AACrE;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,0BAA0B,CAAC;AAEtE,MAAM,MAAM,gCAAgC,GAAG;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,CAAC,CAAC;IACL,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,GAAG,cAAc,CAAC;IACtC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,gCAAgC,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,CAAC,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,CAAC,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,CAAC,CAAC;IACL,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,CAAC,EAAE,CAAC,CAAC;IACL,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAsDF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,eAAe,GAAG,SAAS,CAuB7B;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,eAAe,GAAG,SAAS,CAe7B;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,GACb,sBAAsB,GAAG,SAAS,CAkBpC"}
|
|
@@ -63,7 +63,7 @@ export function parseHostedAdmission(value) {
|
|
|
63
63
|
!Object.hasOwn(body, "payload") ||
|
|
64
64
|
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
65
65
|
!boundedString(body.channelId, 128) ||
|
|
66
|
-
body.channelKind
|
|
66
|
+
!boundedString(body.channelKind, 128) ||
|
|
67
67
|
!boundedString(body.eventType, 128) ||
|
|
68
68
|
!boundedString(body.deliveryId, 256) ||
|
|
69
69
|
(body.sessionMode !== "event" && body.sessionMode !== "continuation") ||
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { ChannelHandlerArgs, SendMessageOptions } from "../types.js";
|
|
2
2
|
import { type HostedAdmission } from "./hosted-delivery-protocol.js";
|
|
3
|
+
import type { LogRingEntry } from "./log-ring.js";
|
|
3
4
|
import type { Router } from "./router.js";
|
|
5
|
+
import { type SessionRunExecutionWrite } from "./session-run-log.js";
|
|
4
6
|
type DispatchInput = {
|
|
5
7
|
delivery: HostedAdmission;
|
|
6
8
|
definition: object;
|
|
@@ -17,11 +19,14 @@ type AdmissionDispatch = {
|
|
|
17
19
|
pendingSend?: PendingSend;
|
|
18
20
|
};
|
|
19
21
|
/**
|
|
20
|
-
* Run authored admission without creating a framework session.
|
|
22
|
+
* Run authored admission without creating a framework session. Authored
|
|
21
23
|
* `task` callbacks execute as sessionless work; the first `send` is captured
|
|
22
24
|
* and executed only after the control plane allocates `ses_…`. Capturing
|
|
23
25
|
* does not terminate the caller — `send` returns an inert deferred handle so
|
|
24
26
|
* a task body runs to completion before the admission response is computed.
|
|
27
|
+
*
|
|
28
|
+
* Dispatch is the adapter the mounted channel attached. Hosted delivery
|
|
29
|
+
* does not switch on `channelKind`.
|
|
25
30
|
*/
|
|
26
31
|
export declare function dispatchHostedAdmission(input: DispatchInput): Promise<AdmissionDispatch>;
|
|
27
32
|
export declare function registerHostedDeliveryRoute(input: {
|
|
@@ -45,6 +50,15 @@ export declare function registerHostedDeliveryRoute(input: {
|
|
|
45
50
|
* `hosted-execution.json` from that path after the POST returns.
|
|
46
51
|
*/
|
|
47
52
|
stateRoot?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Upsert this execution into the v2 session-level framework-store log.
|
|
55
|
+
* Called for the pre-turn `running` claim and every terminal outcome so
|
|
56
|
+
* a dead Node process still leaves a leftover. Soft-fail inside the
|
|
57
|
+
* store; this path still awaits so a parked pod cannot shed the write.
|
|
58
|
+
*/
|
|
59
|
+
persistSessionRun?(write: SessionRunExecutionWrite): Promise<void>;
|
|
60
|
+
/** Snapshot of the process log ring at persist time. */
|
|
61
|
+
snapshotLogs?(): LogRingEntry[];
|
|
48
62
|
}): void;
|
|
49
63
|
export {};
|
|
50
64
|
//# sourceMappingURL=hosted-delivery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAarB,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,+BAA+B,CAAC;AAUvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,KAAK,wBAAwB,EAG9B,MAAM,sBAAsB,CAAC;AAE9B,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,kBAAkB,CAAC;CAC1B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AA6DF;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAa5B;AA2GD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,GACvB,kBAAkB,CAAC;IACtB;;;;;OAKG;IACH,sBAAsB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,iBAAiB,CAAC,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,wDAAwD;IACxD,YAAY,CAAC,IAAI,YAAY,EAAE,CAAC;CACjC,GAAG,IAAI,CAyQP"}
|
|
@@ -8,13 +8,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { randomBytes } from "node:crypto";
|
|
11
|
-
import { dispatchGitHubWebhook, getGitHubChannelOptions, getGitHubDispatchOutcome, withPropagatingGitHubBackgroundErrors, } from "../channels/github/github-channel.js";
|
|
12
11
|
import { createDeferredChannelSession, DeferredChannelSessionError, } from "./deferred-channel-session.js";
|
|
12
|
+
import { getHostedAdmissionAdapter, } from "./hosted-admission-adapter.js";
|
|
13
13
|
import { HostedAdmissionLocalSendError, runDuringHostedAdmission, } from "./hosted-admission-context.js";
|
|
14
14
|
import { HOSTED_ADMISSION_PATH, HOSTED_DELIVERY_HEADER, HOSTED_DELIVERY_PROTOCOL_VERSION, HOSTED_EXECUTION_PATH, parseHostedAdmission, parseHostedExecution, } from "./hosted-delivery-protocol.js";
|
|
15
|
-
import { abortReasonFromTurnStatus, HOSTED_EXECUTION_DIAG_RUNNING_STATUS, hostedExecutionDiagId, writeHostedExecutionDiag, } from "./hosted-execution-diag.js";
|
|
15
|
+
import { abortReasonFromTurnStatus, HOSTED_EXECUTION_DIAG_RUNNING_STATUS, hostedErrorStackSnippet, hostedExecutionDiagId, writeHostedExecutionDiag, } from "./hosted-execution-diag.js";
|
|
16
16
|
import { recordHostedManagedAutomation } from "./hosted-managed-automation.js";
|
|
17
17
|
import { errorResponse, readJsonObject } from "./http-channel.js";
|
|
18
|
+
import { serializeSessionRunError, snapshotSessionRunLogs, } from "./session-run-log.js";
|
|
18
19
|
/**
|
|
19
20
|
* A second `send()` in one delivery is a deterministic authored bug — the
|
|
20
21
|
* wire protocol carries exactly one pending send per delivery — so it must
|
|
@@ -59,30 +60,35 @@ function nonRetryableRejection(error) {
|
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
/**
|
|
62
|
-
* Run authored admission without creating a framework session.
|
|
63
|
+
* Run authored admission without creating a framework session. Authored
|
|
63
64
|
* `task` callbacks execute as sessionless work; the first `send` is captured
|
|
64
65
|
* and executed only after the control plane allocates `ses_…`. Capturing
|
|
65
66
|
* does not terminate the caller — `send` returns an inert deferred handle so
|
|
66
67
|
* a task body runs to completion before the admission response is computed.
|
|
68
|
+
*
|
|
69
|
+
* Dispatch is the adapter the mounted channel attached. Hosted delivery
|
|
70
|
+
* does not switch on `channelKind`.
|
|
67
71
|
*/
|
|
68
72
|
export function dispatchHostedAdmission(input) {
|
|
69
73
|
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
const
|
|
71
|
-
if (
|
|
74
|
+
const adapter = getHostedAdmissionAdapter(input.definition);
|
|
75
|
+
if (adapter === undefined || adapter.kind !== input.delivery.channelKind) {
|
|
72
76
|
return {
|
|
73
77
|
response: Response.json({ ok: false, error: "channel_kind_mismatch" }, { status: 422 }),
|
|
74
78
|
};
|
|
75
79
|
}
|
|
76
80
|
// The admission window marker follows the async graph into task bodies so
|
|
77
81
|
// the engine can refuse local sends that would bypass the capture stub.
|
|
78
|
-
return runDuringHostedAdmission(() => runAdmission(input,
|
|
82
|
+
return runDuringHostedAdmission(() => runAdmission(input, adapter));
|
|
79
83
|
});
|
|
80
84
|
}
|
|
81
|
-
function runAdmission(input,
|
|
85
|
+
function runAdmission(input, adapter) {
|
|
82
86
|
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
var _a;
|
|
88
|
+
var _b;
|
|
83
89
|
const background = [];
|
|
84
90
|
let captured;
|
|
85
|
-
const
|
|
91
|
+
const capturingArgs = Object.assign(Object.assign({}, input.args), { send: (message_1, ...args_1) => __awaiter(this, [message_1, ...args_1], void 0, function* (message, options = {}) {
|
|
86
92
|
if (captured !== undefined) {
|
|
87
93
|
throw new HostedSendLimitExceeded();
|
|
88
94
|
}
|
|
@@ -90,12 +96,12 @@ function runAdmission(input, github) {
|
|
|
90
96
|
return createDeferredChannelSession();
|
|
91
97
|
}), waitUntil: (promise) => {
|
|
92
98
|
background.push(promise);
|
|
93
|
-
} })
|
|
99
|
+
} });
|
|
100
|
+
const args = (_b = (_a = adapter.prepareArgs) === null || _a === void 0 ? void 0 : _a.call(adapter, capturingArgs)) !== null && _b !== void 0 ? _b : capturingArgs;
|
|
94
101
|
let dispatched;
|
|
95
102
|
try {
|
|
96
|
-
dispatched = yield
|
|
97
|
-
|
|
98
|
-
eventName: input.delivery.eventType,
|
|
103
|
+
dispatched = yield adapter.dispatch({
|
|
104
|
+
eventType: input.delivery.eventType,
|
|
99
105
|
payload: input.delivery.payload,
|
|
100
106
|
deliveryId: input.delivery.deliveryId,
|
|
101
107
|
args,
|
|
@@ -140,7 +146,7 @@ function runAdmission(input, github) {
|
|
|
140
146
|
},
|
|
141
147
|
};
|
|
142
148
|
}
|
|
143
|
-
const outcome =
|
|
149
|
+
const outcome = adapter.getOutcome(dispatched);
|
|
144
150
|
if (outcome === undefined) {
|
|
145
151
|
return {
|
|
146
152
|
response: Response.json({ ok: false, error: "channel_outcome_missing" }, { status: 502 }),
|
|
@@ -252,17 +258,36 @@ export function registerHostedDeliveryRoute(input) {
|
|
|
252
258
|
const startedAt = performance.now();
|
|
253
259
|
const executionId = hostedExecutionDiagId(execution.admissionToken);
|
|
254
260
|
const writeDiag = (fields) => __awaiter(this, void 0, void 0, function* () {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
261
|
+
var _a;
|
|
262
|
+
var _b;
|
|
263
|
+
const durationMs = Math.max(0, Math.round(performance.now() - startedAt));
|
|
258
264
|
const message = fields.message === undefined
|
|
259
265
|
? undefined
|
|
260
266
|
: boundedMessage(fields.message);
|
|
261
|
-
|
|
262
|
-
?
|
|
263
|
-
:
|
|
264
|
-
|
|
265
|
-
|
|
267
|
+
const stack = fields.error === undefined
|
|
268
|
+
? undefined
|
|
269
|
+
: hostedErrorStackSnippet(fields.error);
|
|
270
|
+
if (input.stateRoot !== undefined) {
|
|
271
|
+
yield writeHostedExecutionDiag(input.stateRoot, Object.assign(Object.assign(Object.assign(Object.assign({ v: 1, executionId, writtenAt: new Date().toISOString(), sessionPublicId: execution.sessionPublicId, sessionId: fields.sessionId, turnStatus: fields.turnStatus, durationMs }, (message === undefined ? {} : { message })), (stack === undefined || stack.length === 0 ? {} : { stack })), (message !== undefined && /abort/i.test(message)
|
|
272
|
+
? { signalAborted: true }
|
|
273
|
+
: {})), (fields.abortReason === undefined
|
|
274
|
+
? {}
|
|
275
|
+
: { abortReason: fields.abortReason })));
|
|
276
|
+
}
|
|
277
|
+
if (input.persistSessionRun === undefined) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const error = fields.error === undefined
|
|
281
|
+
? undefined
|
|
282
|
+
: serializeSessionRunError(fields.error);
|
|
283
|
+
try {
|
|
284
|
+
yield input.persistSessionRun(Object.assign(Object.assign(Object.assign(Object.assign({ executionId, writtenAt: new Date().toISOString(), sessionPublicId: execution.sessionPublicId, sessionId: fields.sessionId, turnStatus: fields.turnStatus, durationMs }, (fields.abortReason === undefined
|
|
285
|
+
? {}
|
|
286
|
+
: { abortReason: fields.abortReason })), (message === undefined ? {} : { message })), (error === undefined ? {} : { error })), { logs: snapshotSessionRunLogs((_b = (_a = input.snapshotLogs) === null || _a === void 0 ? void 0 : _a.call(input)) !== null && _b !== void 0 ? _b : []) }));
|
|
287
|
+
}
|
|
288
|
+
catch (_c) {
|
|
289
|
+
// Soft-fail: a store outage must not change the HTTP reply.
|
|
290
|
+
}
|
|
266
291
|
});
|
|
267
292
|
// Claim the file before the turn runs. The host reads it after its
|
|
268
293
|
// own POST returns, which for a 9-minute timeout is while this turn
|
|
@@ -313,6 +338,7 @@ export function registerHostedDeliveryRoute(input) {
|
|
|
313
338
|
turnStatus: "error",
|
|
314
339
|
message: error instanceof Error ? error.message : String(error),
|
|
315
340
|
abortReason: "execute_throw",
|
|
341
|
+
error,
|
|
316
342
|
});
|
|
317
343
|
throw error;
|
|
318
344
|
}
|
|
@@ -31,12 +31,23 @@ export type HostedExecutionDiag = {
|
|
|
31
31
|
turnStatus: string;
|
|
32
32
|
durationMs: number;
|
|
33
33
|
message?: string;
|
|
34
|
+
/** First frames of a thrown Error; omitted on soft turn failures. */
|
|
35
|
+
stack?: string;
|
|
34
36
|
signalAborted?: boolean;
|
|
35
37
|
requestId?: string;
|
|
36
38
|
abortReason?: HostedExecutionDiagAbortReason;
|
|
37
39
|
};
|
|
38
40
|
/** Written before the turn starts so a stalled execution still has a record. */
|
|
39
41
|
export declare const HOSTED_EXECUTION_DIAG_RUNNING_STATUS = "running";
|
|
42
|
+
/** First line + frames; factory `last_error` is 1024 chars with a TAS prefix. */
|
|
43
|
+
export declare const HOSTED_ERROR_STACK_LINE_COUNT = 5;
|
|
44
|
+
export declare const HOSTED_ERROR_SNIPPET_MAX_CHARS = 700;
|
|
45
|
+
/**
|
|
46
|
+
* Bounded throw text for the hosted 500 body and the on-disk diag `stack`.
|
|
47
|
+
* Prefers `Error.stack` (message line + `at` frames) so `last_error` is not
|
|
48
|
+
* the generic "Internal server error." when the throw has a stack.
|
|
49
|
+
*/
|
|
50
|
+
export declare function hostedErrorStackSnippet(error: unknown): string;
|
|
40
51
|
export declare function hostedExecutionDiagPath(stateRoot: string): string;
|
|
41
52
|
export declare function abortReasonFromTurnStatus(status: string, message: string | undefined): HostedExecutionDiagAbortReason | undefined;
|
|
42
53
|
export declare function parseHostedExecutionDiag(raw: string): HostedExecutionDiag | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-execution-diag.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-execution-diag.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,2EAA2E;AAC3E,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,MAAM,MAAM,8BAA8B,GACtC,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,eAAe,CAAC;AAEpB;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,EAAE,OAAO,6BAA6B,CAAC;IACxC,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,8BAA8B,CAAC;CAC9C,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,oCAAoC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"hosted-execution-diag.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-execution-diag.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,2EAA2E;AAC3E,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,MAAM,MAAM,8BAA8B,GACtC,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,eAAe,CAAC;AAEpB;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,EAAE,OAAO,6BAA6B,CAAC;IACxC,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,8BAA8B,CAAC;CAC9C,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,oCAAoC,YAAY,CAAC;AAmC9D,iFAAiF;AACjF,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAyB9D;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,8BAA8B,GAAG,SAAS,CAU5C;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,GACV,mBAAmB,GAAG,SAAS,CA2EjC;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
@@ -40,6 +40,7 @@ const DIAG_KEYS = new Set([
|
|
|
40
40
|
"turnStatus",
|
|
41
41
|
"durationMs",
|
|
42
42
|
"message",
|
|
43
|
+
"stack",
|
|
43
44
|
"signalAborted",
|
|
44
45
|
"requestId",
|
|
45
46
|
"abortReason",
|
|
@@ -57,6 +58,41 @@ function boundedOptionalString(value, max) {
|
|
|
57
58
|
: value
|
|
58
59
|
: undefined;
|
|
59
60
|
}
|
|
61
|
+
/** First line + frames; factory `last_error` is 1024 chars with a TAS prefix. */
|
|
62
|
+
export const HOSTED_ERROR_STACK_LINE_COUNT = 5;
|
|
63
|
+
export const HOSTED_ERROR_SNIPPET_MAX_CHARS = 700;
|
|
64
|
+
/**
|
|
65
|
+
* Bounded throw text for the hosted 500 body and the on-disk diag `stack`.
|
|
66
|
+
* Prefers `Error.stack` (message line + `at` frames) so `last_error` is not
|
|
67
|
+
* the generic "Internal server error." when the throw has a stack.
|
|
68
|
+
*/
|
|
69
|
+
export function hostedErrorStackSnippet(error) {
|
|
70
|
+
var _a;
|
|
71
|
+
if (error instanceof Error) {
|
|
72
|
+
const stack = (_a = error.stack) === null || _a === void 0 ? void 0 : _a.trim();
|
|
73
|
+
if (stack !== undefined && stack.length > 0) {
|
|
74
|
+
const lines = stack
|
|
75
|
+
.split("\n")
|
|
76
|
+
.map((line) => line.trimEnd())
|
|
77
|
+
.filter((line) => line.trim().length > 0)
|
|
78
|
+
.slice(0, HOSTED_ERROR_STACK_LINE_COUNT);
|
|
79
|
+
const text = lines.join("\n");
|
|
80
|
+
return text.length > HOSTED_ERROR_SNIPPET_MAX_CHARS
|
|
81
|
+
? `${text.slice(0, HOSTED_ERROR_SNIPPET_MAX_CHARS)}…`
|
|
82
|
+
: text;
|
|
83
|
+
}
|
|
84
|
+
return error.message.length > HOSTED_ERROR_SNIPPET_MAX_CHARS
|
|
85
|
+
? `${error.message.slice(0, HOSTED_ERROR_SNIPPET_MAX_CHARS)}…`
|
|
86
|
+
: error.message;
|
|
87
|
+
}
|
|
88
|
+
const text = String(error);
|
|
89
|
+
if (text.length === 0) {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
return text.length > HOSTED_ERROR_SNIPPET_MAX_CHARS
|
|
93
|
+
? `${text.slice(0, HOSTED_ERROR_SNIPPET_MAX_CHARS)}…`
|
|
94
|
+
: text;
|
|
95
|
+
}
|
|
60
96
|
export function hostedExecutionDiagPath(stateRoot) {
|
|
61
97
|
return join(stateRoot, HOSTED_EXECUTION_DIAG_FILENAME);
|
|
62
98
|
}
|
|
@@ -110,6 +146,7 @@ export function parseHostedExecutionDiag(raw) {
|
|
|
110
146
|
return undefined;
|
|
111
147
|
}
|
|
112
148
|
const message = boundedOptionalString(body.message, 1024);
|
|
149
|
+
const stack = boundedOptionalString(body.stack, HOSTED_ERROR_SNIPPET_MAX_CHARS);
|
|
113
150
|
const requestId = boundedOptionalString(body.requestId, 128);
|
|
114
151
|
const abortReason = body.abortReason === undefined
|
|
115
152
|
? undefined
|
|
@@ -124,7 +161,7 @@ export function parseHostedExecutionDiag(raw) {
|
|
|
124
161
|
typeof body.signalAborted !== "boolean") {
|
|
125
162
|
return undefined;
|
|
126
163
|
}
|
|
127
|
-
return Object.assign(Object.assign(Object.assign(Object.assign({ v: HOSTED_EXECUTION_DIAG_VERSION, executionId: body.executionId, writtenAt: body.writtenAt, sessionPublicId: body.sessionPublicId, sessionId: body.sessionId, turnStatus: body.turnStatus, durationMs: body.durationMs }, (message === undefined ? {} : { message })), (body.signalAborted === true ? { signalAborted: true } : {})), (requestId === undefined ? {} : { requestId })), (abortReason === undefined ? {} : { abortReason }));
|
|
164
|
+
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ v: HOSTED_EXECUTION_DIAG_VERSION, executionId: body.executionId, writtenAt: body.writtenAt, sessionPublicId: body.sessionPublicId, sessionId: body.sessionId, turnStatus: body.turnStatus, durationMs: body.durationMs }, (message === undefined ? {} : { message })), (stack === undefined ? {} : { stack })), (body.signalAborted === true ? { signalAborted: true } : {})), (requestId === undefined ? {} : { requestId })), (abortReason === undefined ? {} : { abortReason }));
|
|
128
165
|
}
|
|
129
166
|
/**
|
|
130
167
|
* Overwrite the per-execution diag file. Soft-fail: a write error must not
|
|
@@ -138,7 +175,7 @@ export function writeHostedExecutionDiag(stateRoot, diag) {
|
|
|
138
175
|
yield mkdir(stateRoot, { recursive: true });
|
|
139
176
|
const serialized = JSON.stringify(diag);
|
|
140
177
|
const body = serialized.length > HOSTED_EXECUTION_DIAG_MAX_BYTES
|
|
141
|
-
? JSON.stringify(Object.assign(Object.assign({}, diag), { message: boundedOptionalString(diag.message, 256) }))
|
|
178
|
+
? JSON.stringify(Object.assign(Object.assign({}, diag), { stack: undefined, message: boundedOptionalString(diag.message, 256) }))
|
|
142
179
|
: serialized;
|
|
143
180
|
yield writeFile(tmp, body, "utf8");
|
|
144
181
|
yield rename(tmp, path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-channel.d.ts","sourceRoot":"","sources":["../../src/internal/http-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAQ7B,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GAAG,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"http-channel.d.ts","sourceRoot":"","sources":["../../src/internal/http-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAQ7B,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GAAG,WAAW,EAAE,CA2fhB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACA,QAAQ,GAAG,SAAS,CAiBtB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAC/D,QAAQ,CAQV;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,QAAQ,CAEV;AAoGD,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAc9C"}
|
|
@@ -48,12 +48,15 @@ export function buildHttpChannelRoutes(args) {
|
|
|
48
48
|
if (body === undefined || typeof body.message !== "string") {
|
|
49
49
|
return errorResponse(400, "invalid_request", "Expected a JSON body with a string `message`.");
|
|
50
50
|
}
|
|
51
|
+
if (body.asOf !== undefined && typeof body.asOf !== "string") {
|
|
52
|
+
return errorResponse(400, "invalid_request", "`asOf` must be an ISO-8601 instant with a timezone when provided.");
|
|
53
|
+
}
|
|
51
54
|
const message = yield transformMessage(body.message, ctx.auth);
|
|
52
55
|
const workspaceFiles = readWorkspaceFiles(body.workspaceFiles);
|
|
53
56
|
// Per-session cloud attach (create only). Eval harness uses this to pin
|
|
54
57
|
// fixture repos without putting them on the agent's default cloud.repos.
|
|
55
58
|
const cloud = readCloudOptions(body.cloud);
|
|
56
|
-
const session = yield engine.send(HTTP_CHANNEL_ID, message, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ auth: ctx.auth }, (typeof body.title === "string" ? { title: body.title } : {})), (body.purpose === "eval" ? { purpose: "eval" } : {})), (body.dryRun === true ? { dryRun: true } : {})), (workspaceFiles === undefined ? {} : { workspaceFiles })), (cloud === undefined ? {} : { cloud })));
|
|
59
|
+
const session = yield engine.send(HTTP_CHANNEL_ID, message, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ auth: ctx.auth }, (typeof body.title === "string" ? { title: body.title } : {})), (body.purpose === "eval" ? { purpose: "eval" } : {})), (body.dryRun === true ? { dryRun: true } : {})), { asOf: body.asOf }), (workspaceFiles === undefined ? {} : { workspaceFiles })), (cloud === undefined ? {} : { cloud })));
|
|
57
60
|
return jsonResponse({
|
|
58
61
|
ok: true,
|
|
59
62
|
sessionId: session.id,
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import type { AgentProject, AgentServeHandle, ServeOptions } from "../types.js";
|
|
8
8
|
import type { McpOauthSecretsTarget } from "./mcp-oauth-persist.js";
|
|
9
9
|
import { type AgentRunner } from "./sdk-runner.js";
|
|
10
|
+
import { selectSessionRunLogStore } from "./session-run-log.js";
|
|
10
11
|
/** One agent to serve: its slug (empty for single-agent mode) and project. */
|
|
11
12
|
export interface AgentMount {
|
|
12
13
|
slug: string;
|
|
@@ -18,6 +19,8 @@ export interface StartServerInternalOptions {
|
|
|
18
19
|
runner?: AgentRunner;
|
|
19
20
|
/** Test seam: bind the `--store` secrets client for on-demand MCP OAuth. */
|
|
20
21
|
mcpOauthSecrets?: McpOauthSecretsTarget;
|
|
22
|
+
/** Test seam: persist hosted-execution run logs without a live store. */
|
|
23
|
+
sessionRunLog?: ReturnType<typeof selectSessionRunLogStore>;
|
|
21
24
|
}
|
|
22
25
|
/**
|
|
23
26
|
* Start an HTTP server hosting one or more agents. A single agent with an
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoCH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAOhB,YAAY,EACb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoCH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAOhB,YAAY,EACb,MAAM,aAAa,CAAC;AAuFrB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAyCpE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAWpE,OAAO,EAEL,wBAAwB,EAEzB,MAAM,sBAAsB,CAAC;AAiB9B,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAmCD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,yEAAyE;IACzE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;CAC7D;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,YAAY,GAAG,0BAA+B,GACtD,OAAO,CAAC,gBAAgB,CAAC,CA2+B3B"}
|