@cursor/july 0.1.101 → 0.1.102
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/README.md +27 -0
- package/dist/channels/slack/api.d.ts +1 -1
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +3 -1
- package/dist/channels/slack/assistant.d.ts +1 -1
- package/dist/channels/slack/assistant.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.d.ts +3 -2
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +28 -8
- package/dist/channels/slack/inbound.d.ts +8 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +28 -0
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +2 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.BASO9Kih.js → app.CLA03RCz.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.FAqdWIXo.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.DwkqxoE0.js → VPLocalSearchBox.ifxv-cJV.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CCil_13e.js → theme.DWCwM6p-.js} +2 -2
- package/dist/docs/assets/concepts.md.rPzW2HZN.js +1 -0
- package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +9 -0
- package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.lean.js +1 -0
- package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.js → guides_cloud-runtime.md.BRirbRAN.js} +1 -1
- package/dist/docs/assets/index.md.Kiht7ell.js +5 -0
- package/dist/docs/assets/{index.md.Bb4k8kUm.lean.js → index.md.Kiht7ell.lean.js} +1 -1
- package/dist/docs/assets/reference_extensions.md.9WQMZe1l.js +56 -0
- package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +1 -0
- package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.js → reference_project-layout.md.CA6QP6Lw.js} +2 -2
- package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.lean.js → reference_project-layout.md.CA6QP6Lw.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.BFW9retM.js → reference_skills.md.l2ezAcaN.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.CvAHsdSp.js → reference_tools.md.B1up2r9W.js} +1 -1
- package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +1 -0
- package/dist/docs/assets/{skills_framework-map.md.BTi817yv.lean.js → skills_framework-map.md.DDa4MeEW.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +5 -5
- package/dist/docs/concepts.md +3 -3
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/evals.html +4 -4
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-agents.html +35 -0
- package/dist/docs/guides/cloud-agents.md +93 -0
- package/dist/docs/guides/cloud-runtime.html +6 -6
- package/dist/docs/guides/cloud-runtime.md +2 -0
- package/dist/docs/guides/convert-automation.html +4 -4
- package/dist/docs/guides/github.html +4 -4
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +4 -4
- package/dist/docs/guides/opentelemetry.html +5 -5
- package/dist/docs/guides/slack.html +4 -4
- package/dist/docs/guides/webhooks.html +4 -4
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +4 -4
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +5 -1
- package/dist/docs/llms-full.txt +321 -4
- package/dist/docs/llms.txt +2 -0
- package/dist/docs/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +4 -4
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +5 -5
- package/dist/docs/reference/cli.html +4 -4
- package/dist/docs/reference/connections.html +4 -4
- package/dist/docs/reference/extensions.html +82 -0
- package/dist/docs/reference/extensions.md +200 -0
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +4 -4
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +6 -6
- package/dist/docs/reference/project-layout.md +3 -0
- 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 +6 -6
- package/dist/docs/reference/skills.md +2 -0
- package/dist/docs/reference/subagents.html +5 -5
- package/dist/docs/reference/tools.html +6 -6
- package/dist/docs/reference/tools.md +2 -0
- package/dist/docs/scaffolding-agents.html +4 -4
- package/dist/docs/skills/ab.html +4 -4
- package/dist/docs/skills/create-agent.html +4 -4
- package/dist/docs/skills/debug.html +4 -4
- package/dist/docs/skills/evals.html +4 -4
- package/dist/docs/skills/framework-map.html +5 -5
- package/dist/docs/skills/framework-map.md +1 -0
- package/dist/docs/skills/github.html +4 -4
- package/dist/docs/skills/hillclimb.html +4 -4
- package/dist/docs/skills/index.html +4 -4
- package/dist/docs/skills/mcp-auth.html +4 -4
- package/dist/docs/skills/otel.html +4 -4
- package/dist/docs/skills/setup-slack.html +4 -4
- 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 +4 -4
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +9 -7
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +9 -7
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +78 -0
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +286 -0
- package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +5 -0
- package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/inputs.js +4 -0
- package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts +8 -0
- package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/transcript.js +15 -0
- package/dist/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
- package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +26 -0
- package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/dump.js +54 -0
- package/dist/extensions/cursor-cloud-agents/tools/get.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/get.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/get.js +25 -0
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +14 -38
- package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/{follow_up.js → reply.js} +12 -14
- package/dist/extensions.d.ts +38 -14
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +49 -12
- package/dist/files-backends/cursor-hosted.d.ts +0 -8
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +1 -11
- package/dist/files.d.ts +5 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +22 -18
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/internal/conversation-mirror.d.ts.map +1 -1
- package/dist/internal/conversation-mirror.js +13 -15
- package/dist/internal/cursor/backend-client.d.ts +8 -1
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +25 -9
- package/dist/internal/cursor/hosted-store-secrets.d.ts +11 -0
- package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +15 -0
- package/dist/internal/discovery/ab.d.ts +9 -0
- package/dist/internal/discovery/ab.d.ts.map +1 -0
- package/dist/internal/discovery/ab.js +101 -0
- package/dist/internal/discovery/agent-config.d.ts +35 -0
- package/dist/internal/discovery/agent-config.d.ts.map +1 -0
- package/dist/internal/discovery/agent-config.js +173 -0
- package/dist/internal/discovery/agent.d.ts +11 -0
- package/dist/internal/discovery/agent.d.ts.map +1 -0
- package/dist/internal/discovery/agent.js +306 -0
- package/dist/internal/discovery/channels.d.ts +10 -0
- package/dist/internal/discovery/channels.d.ts.map +1 -0
- package/dist/internal/discovery/channels.js +97 -0
- package/dist/internal/discovery/connections.d.ts +17 -0
- package/dist/internal/discovery/connections.d.ts.map +1 -0
- package/dist/internal/discovery/connections.js +436 -0
- package/dist/internal/discovery/context.d.ts +20 -0
- package/dist/internal/discovery/context.d.ts.map +1 -0
- package/dist/internal/discovery/context.js +30 -0
- package/dist/internal/discovery/cursor-plugin.d.ts +25 -0
- package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -0
- package/dist/internal/discovery/cursor-plugin.js +570 -0
- package/dist/internal/discovery/extensions.d.ts +19 -0
- package/dist/internal/discovery/extensions.d.ts.map +1 -0
- package/dist/internal/discovery/extensions.js +238 -0
- package/dist/internal/discovery/fs.d.ts +15 -0
- package/dist/internal/discovery/fs.d.ts.map +1 -0
- package/dist/internal/discovery/fs.js +115 -0
- package/dist/internal/discovery/hooks.d.ts +7 -0
- package/dist/internal/discovery/hooks.d.ts.map +1 -0
- package/dist/internal/discovery/hooks.js +48 -0
- package/dist/internal/discovery/info.d.ts +6 -0
- package/dist/internal/discovery/info.d.ts.map +1 -0
- package/dist/internal/discovery/info.js +141 -0
- package/dist/internal/discovery/instructions.d.ts +7 -0
- package/dist/internal/discovery/instructions.d.ts.map +1 -0
- package/dist/internal/discovery/instructions.js +95 -0
- package/dist/internal/discovery/modules.d.ts +20 -0
- package/dist/internal/discovery/modules.d.ts.map +1 -0
- package/dist/internal/discovery/modules.js +101 -0
- package/dist/internal/discovery/names.d.ts +12 -0
- package/dist/internal/discovery/names.d.ts.map +1 -0
- package/dist/internal/discovery/names.js +36 -0
- package/dist/internal/discovery/project.d.ts +53 -0
- package/dist/internal/discovery/project.d.ts.map +1 -0
- package/dist/internal/discovery/project.js +239 -0
- package/dist/internal/discovery/runtime.d.ts +34 -0
- package/dist/internal/discovery/runtime.d.ts.map +1 -0
- package/dist/internal/discovery/runtime.js +98 -0
- package/dist/internal/discovery/schedules.d.ts +7 -0
- package/dist/internal/discovery/schedules.d.ts.map +1 -0
- package/dist/internal/discovery/schedules.js +97 -0
- package/dist/internal/discovery/seed-files.d.ts +7 -0
- package/dist/internal/discovery/seed-files.d.ts.map +1 -0
- package/dist/internal/discovery/seed-files.js +41 -0
- package/dist/internal/discovery/services.d.ts +17 -0
- package/dist/internal/discovery/services.d.ts.map +1 -0
- package/dist/internal/discovery/services.js +104 -0
- package/dist/internal/discovery/skills.d.ts +16 -0
- package/dist/internal/discovery/skills.d.ts.map +1 -0
- package/dist/internal/discovery/skills.js +151 -0
- package/dist/internal/discovery/subagent.d.ts +13 -0
- package/dist/internal/discovery/subagent.d.ts.map +1 -0
- package/dist/internal/discovery/subagent.js +19 -0
- package/dist/internal/discovery/tools.d.ts +18 -0
- package/dist/internal/discovery/tools.d.ts.map +1 -0
- package/dist/internal/discovery/tools.js +159 -0
- package/dist/internal/discovery.d.ts +8 -62
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +8 -2505
- package/dist/internal/framework-file-storage.js +6 -6
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +8 -7
- package/dist/internal/frontmatter.d.ts +11 -3
- package/dist/internal/frontmatter.d.ts.map +1 -1
- package/dist/internal/frontmatter.js +29 -3
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +37 -20
- package/dist/internal/otel/collector.d.ts +13 -0
- package/dist/internal/otel/collector.d.ts.map +1 -1
- package/dist/internal/otel/collector.js +84 -17
- package/dist/internal/otel/http.d.ts.map +1 -1
- package/dist/internal/otel/http.js +2 -10
- package/dist/internal/otel/mcp.d.ts +16 -0
- package/dist/internal/otel/mcp.d.ts.map +1 -0
- package/dist/internal/otel/mcp.js +68 -0
- package/dist/internal/otel/propagation.d.ts +6 -0
- package/dist/internal/otel/propagation.d.ts.map +1 -0
- package/dist/internal/otel/propagation.js +14 -0
- package/dist/internal/otel/runtime.d.ts.map +1 -1
- package/dist/internal/otel/runtime.js +2 -0
- package/dist/internal/session-engine.d.ts +5 -0
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +68 -32
- package/dist/internal/session-run-log.d.ts +2 -1
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +13 -14
- package/dist/internal/start-log-store.d.ts +1 -1
- package/dist/internal/start-log-store.d.ts.map +1 -1
- package/dist/internal/start-log-store.js +12 -14
- package/dist/internal/storage-coordinator.d.ts +4 -1
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +15 -13
- package/dist/internal/tool-catalog.d.ts.map +1 -1
- package/dist/internal/tool-catalog.js +9 -6
- package/dist/internal/turn-cost.d.ts +14 -0
- package/dist/internal/turn-cost.d.ts.map +1 -1
- package/dist/internal/turn-cost.js +41 -9
- package/dist/internal/v2-hosting.d.ts +22 -0
- package/dist/internal/v2-hosting.d.ts.map +1 -0
- package/dist/internal/v2-hosting.js +23 -0
- package/dist/otel.d.ts +16 -0
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +26 -0
- package/dist/playground/assets/index-B6C9S9nG.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-protocol.d.ts +24 -23
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +68 -65
- package/dist/storage.d.ts +2 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/tools.d.ts +9 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +9 -0
- package/dist/types.d.ts +39 -3
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +5 -1
- package/docs/concepts.md +3 -3
- package/docs/guides/cloud-agents.md +98 -0
- package/docs/guides/cloud-runtime.md +2 -0
- package/docs/reference/extensions.md +205 -0
- package/docs/reference/project-layout.md +3 -0
- package/docs/reference/skills.md +2 -0
- package/docs/reference/tools.md +2 -0
- package/package.json +1 -1
- package/skills/framework-map/SKILL.md +1 -0
- package/src/channels/slack/api.ts +4 -2
- package/src/channels/slack/assistant.ts +1 -1
- package/src/channels/slack/dispatch.ts +27 -2
- package/src/channels/slack/inbound.ts +37 -0
- package/src/channels/slack/manifest.ts +2 -1
- package/src/extensions/cursor-cloud-agents/extension.ts +9 -7
- package/src/extensions/cursor-cloud-agents/lib/backend.ts +395 -0
- package/src/extensions/cursor-cloud-agents/lib/inputs.ts +5 -0
- package/src/extensions/cursor-cloud-agents/lib/transcript.ts +23 -0
- package/src/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
- package/src/extensions/cursor-cloud-agents/tools/cancel.ts +19 -0
- package/src/extensions/cursor-cloud-agents/tools/dump.ts +51 -0
- package/src/extensions/cursor-cloud-agents/tools/get.ts +18 -0
- package/src/extensions/cursor-cloud-agents/tools/launch.ts +22 -42
- package/src/extensions/cursor-cloud-agents/tools/list.ts +1 -1
- package/src/extensions/cursor-cloud-agents/tools/reply.ts +34 -0
- package/src/extensions.ts +55 -12
- package/src/files-backends/cursor-hosted.ts +1 -17
- package/src/files.ts +43 -34
- package/src/index.ts +10 -1
- package/src/internal/conversation-mirror.ts +23 -18
- package/src/internal/cursor/backend-client.ts +32 -10
- package/src/internal/cursor/hosted-store-secrets.ts +27 -0
- package/src/internal/discovery/ab.ts +111 -0
- package/src/internal/discovery/agent-config.ts +222 -0
- package/src/internal/discovery/agent.ts +360 -0
- package/src/internal/discovery/channels.ts +103 -0
- package/src/internal/discovery/connections.ts +540 -0
- package/src/internal/discovery/context.ts +46 -0
- package/src/internal/discovery/cursor-plugin.ts +708 -0
- package/src/internal/discovery/extensions.ts +348 -0
- package/src/internal/discovery/fs.ts +108 -0
- package/src/internal/discovery/hooks.ts +45 -0
- package/src/internal/discovery/info.ts +179 -0
- package/src/internal/discovery/instructions.ts +113 -0
- package/src/internal/discovery/modules.ts +107 -0
- package/src/internal/discovery/names.ts +44 -0
- package/src/internal/discovery/project.ts +270 -0
- package/src/internal/discovery/runtime.ts +159 -0
- package/src/internal/discovery/schedules.ts +94 -0
- package/src/internal/discovery/seed-files.ts +37 -0
- package/src/internal/discovery/services.ts +124 -0
- package/src/internal/discovery/skills.ts +176 -0
- package/src/internal/discovery/subagent.ts +29 -0
- package/src/internal/discovery/tools.ts +182 -0
- package/src/internal/discovery.ts +20 -3081
- package/src/internal/framework-file-storage.ts +6 -6
- package/src/internal/framework-storage-selection.ts +9 -9
- package/src/internal/frontmatter.ts +36 -3
- package/src/internal/mcp-host.ts +84 -31
- package/src/internal/otel/collector.ts +125 -25
- package/src/internal/otel/http.ts +2 -12
- package/src/internal/otel/mcp.ts +69 -0
- package/src/internal/otel/propagation.ts +17 -0
- package/src/internal/otel/runtime.ts +2 -0
- package/src/internal/session-engine.ts +96 -11
- package/src/internal/session-run-log.ts +17 -16
- package/src/internal/start-log-store.ts +13 -16
- package/src/internal/storage-coordinator.ts +19 -16
- package/src/internal/tool-catalog.ts +9 -6
- package/src/internal/turn-cost.ts +47 -4
- package/src/internal/v2-hosting.ts +38 -0
- package/src/otel.ts +38 -0
- package/src/storage-protocol.ts +101 -91
- package/src/storage.ts +4 -0
- package/src/tools.ts +18 -0
- package/src/types.ts +43 -2
- package/dist/docs/assets/chunks/@localSearchIndexroot.DbFXINq2.js +0 -1
- package/dist/docs/assets/concepts.md.lwAgBIMI.js +0 -1
- package/dist/docs/assets/index.md.Bb4k8kUm.js +0 -5
- package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +0 -1
- package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts +0 -30
- package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts.map +0 -1
- package/dist/extensions/cursor-cloud-agents/lib/cloud.js +0 -45
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts +0 -4
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts.map +0 -1
- package/dist/extensions/cursor-cloud-agents/tools/status.d.ts +0 -4
- package/dist/extensions/cursor-cloud-agents/tools/status.d.ts.map +0 -1
- package/dist/extensions/cursor-cloud-agents/tools/status.js +0 -41
- package/dist/playground/assets/index-DBQCwFp0.css +0 -1
- package/src/extensions/cursor-cloud-agents/lib/cloud.ts +0 -79
- package/src/extensions/cursor-cloud-agents/tools/follow_up.ts +0 -29
- package/src/extensions/cursor-cloud-agents/tools/status.ts +0 -39
- /package/dist/docs/assets/{concepts.md.lwAgBIMI.lean.js → concepts.md.rPzW2HZN.lean.js} +0 -0
- /package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.lean.js → guides_cloud-runtime.md.BRirbRAN.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.BFW9retM.lean.js → reference_skills.md.l2ezAcaN.lean.js} +0 -0
- /package/dist/docs/assets/{reference_tools.md.CvAHsdSp.lean.js → reference_tools.md.B1up2r9W.lean.js} +0 -0
- /package/dist/playground/assets/{index-BnNN1-EK.js → index-ZqNoT8Ie.js} +0 -0
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Minimal Connect-JSON client for the handful of `aiserver.v1.DashboardService`
|
|
3
3
|
* RPCs agent-serve needs — `GetMe`, `ListSandMcpTools`, `ExecuteSandMcpTool`,
|
|
4
4
|
* and the login-time key lifecycle (`CreateUserApiKey`, `ListUserApiKeys`,
|
|
5
|
-
* `RevokeUserApiKey`).
|
|
5
|
+
* `RevokeUserApiKey`) — plus {@link CursorBackendClient.serviceRpc} for the
|
|
6
|
+
* odd unary call on another `aiserver.v1` service under the same token.
|
|
6
7
|
*
|
|
7
8
|
* Plain `fetch` POSTs with proto-JSON bodies and zod-validated responses:
|
|
8
9
|
* agent-serve is a published package and should not pull the generated
|
|
@@ -26,7 +27,7 @@ import { z } from "zod";
|
|
|
26
27
|
import { boundedToolAnnotations } from "../mcp-host.js";
|
|
27
28
|
import { CURSOR_SESSION_EXCHANGE_PATH, CursorSessionExchangeError, exchangeCursorApiKeyForSession, SESSION_TOKEN_EXPIRY_LEEWAY_MS, } from "./session-token.js";
|
|
28
29
|
const CLIENT_VERSION = "agent-serve-0.1.0";
|
|
29
|
-
const
|
|
30
|
+
const DASHBOARD_SERVICE = "DashboardService";
|
|
30
31
|
const LIST_TIMEOUT_MS = 60000;
|
|
31
32
|
/** Backend-executed tools call out to third-party servers; be generous. */
|
|
32
33
|
const EXECUTE_TIMEOUT_MS = 120000;
|
|
@@ -144,11 +145,11 @@ const executeResponseSchema = z.object({
|
|
|
144
145
|
// Shared request machinery (used by the client and the login-time mint)
|
|
145
146
|
// ============================================================================
|
|
146
147
|
/** One DashboardService Connect-JSON POST; auth is the caller's bearer. */
|
|
147
|
-
function
|
|
148
|
+
function connectRpc(args) {
|
|
148
149
|
return __awaiter(this, void 0, void 0, function* () {
|
|
149
150
|
var _a;
|
|
150
151
|
try {
|
|
151
|
-
return yield args.fetchImpl(`${args.backendUrl}
|
|
152
|
+
return yield args.fetchImpl(`${args.backendUrl}/aiserver.v1.${args.service}/${args.method}`, {
|
|
152
153
|
method: "POST",
|
|
153
154
|
headers: Object.assign({ "content-type": "application/json", authorization: `Bearer ${args.bearer}`, "x-ghost-mode": "true", "x-cursor-client-version": CLIENT_VERSION, "x-cursor-client-type": "agent-serve", "x-request-id": randomUUID() }, args.extraHeaders),
|
|
154
155
|
body: JSON.stringify((_a = args.body) !== null && _a !== void 0 ? _a : {}),
|
|
@@ -313,16 +314,27 @@ export class CursorBackendClient {
|
|
|
313
314
|
return githubTokenResponseSchema.parse(parsed);
|
|
314
315
|
});
|
|
315
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* One unary Connect-JSON call on `aiserver.v1.<service>` with the same
|
|
319
|
+
* token exchange and 401 retry as the dashboard RPCs. Callers parse the
|
|
320
|
+
* proto-JSON response themselves.
|
|
321
|
+
*/
|
|
322
|
+
serviceRpc(service, method, body, timeoutMs = LIST_TIMEOUT_MS) {
|
|
323
|
+
return this.rpc(method, body, timeoutMs, { service });
|
|
324
|
+
}
|
|
316
325
|
rpc(method_1, body_1) {
|
|
317
326
|
return __awaiter(this, arguments, void 0, function* (method, body, timeoutMs = LIST_TIMEOUT_MS, options) {
|
|
318
327
|
var _a, _b;
|
|
328
|
+
var _c;
|
|
329
|
+
const service = (_c = options === null || options === void 0 ? void 0 : options.service) !== null && _c !== void 0 ? _c : DASHBOARD_SERVICE;
|
|
319
330
|
const extraHeaders = (options === null || options === void 0 ? void 0 : options.teamId) === undefined
|
|
320
331
|
? undefined
|
|
321
332
|
: { "x-cursor-team-id": String(options.teamId) };
|
|
322
333
|
const bearer = yield this.getAccessToken();
|
|
323
|
-
const first = yield
|
|
334
|
+
const first = yield connectRpc({
|
|
324
335
|
fetchImpl: this.fetchImpl,
|
|
325
336
|
backendUrl: this.backendUrl,
|
|
337
|
+
service,
|
|
326
338
|
method,
|
|
327
339
|
bearer,
|
|
328
340
|
body,
|
|
@@ -340,9 +352,10 @@ export class CursorBackendClient {
|
|
|
340
352
|
this.token = undefined;
|
|
341
353
|
}
|
|
342
354
|
const retryBearer = yield this.getAccessToken();
|
|
343
|
-
const second = yield
|
|
355
|
+
const second = yield connectRpc({
|
|
344
356
|
fetchImpl: this.fetchImpl,
|
|
345
357
|
backendUrl: this.backendUrl,
|
|
358
|
+
service,
|
|
346
359
|
method,
|
|
347
360
|
bearer: retryBearer,
|
|
348
361
|
body,
|
|
@@ -421,11 +434,12 @@ export class CursorBackendClient {
|
|
|
421
434
|
export function createUserApiKeyWithSessionToken(args) {
|
|
422
435
|
return __awaiter(this, void 0, void 0, function* () {
|
|
423
436
|
var _a;
|
|
424
|
-
const response = yield
|
|
437
|
+
const response = yield connectRpc({
|
|
425
438
|
fetchImpl: (_a = args.fetchImpl) !== null && _a !== void 0 ? _a : fetch,
|
|
426
439
|
backendUrl: args.backendUrl.endsWith("/")
|
|
427
440
|
? args.backendUrl.slice(0, -1)
|
|
428
441
|
: args.backendUrl,
|
|
442
|
+
service: DASHBOARD_SERVICE,
|
|
429
443
|
method: "CreateUserApiKey",
|
|
430
444
|
bearer: args.sessionToken,
|
|
431
445
|
body: { name: args.keyName },
|
|
@@ -463,9 +477,10 @@ export function revokeMintedUserApiKey(args) {
|
|
|
463
477
|
const backendUrl = args.backendUrl.endsWith("/")
|
|
464
478
|
? args.backendUrl.slice(0, -1)
|
|
465
479
|
: args.backendUrl;
|
|
466
|
-
const listResponse = yield
|
|
480
|
+
const listResponse = yield connectRpc({
|
|
467
481
|
fetchImpl,
|
|
468
482
|
backendUrl,
|
|
483
|
+
service: DASHBOARD_SERVICE,
|
|
469
484
|
method: "ListUserApiKeys",
|
|
470
485
|
bearer: args.sessionToken,
|
|
471
486
|
body: {},
|
|
@@ -479,9 +494,10 @@ export function revokeMintedUserApiKey(args) {
|
|
|
479
494
|
// lagging replica — skip rather than touch any other key.
|
|
480
495
|
return;
|
|
481
496
|
}
|
|
482
|
-
const revokeResponse = yield
|
|
497
|
+
const revokeResponse = yield connectRpc({
|
|
483
498
|
fetchImpl,
|
|
484
499
|
backendUrl,
|
|
500
|
+
service: DASHBOARD_SERVICE,
|
|
485
501
|
method: "RevokeUserApiKey",
|
|
486
502
|
bearer: args.sessionToken,
|
|
487
503
|
body: { id: match.id },
|
|
@@ -12,4 +12,15 @@ export declare const DEFAULT_AGENT_SERVE_FRAMEWORK_STORE_SOURCE_ID_FILE = "/run/
|
|
|
12
12
|
export declare function resolveDeploymentStoreSourceIdSync(env?: NodeJS.ProcessEnv): string | undefined;
|
|
13
13
|
/** Engine framework store: env, then task-bind file. */
|
|
14
14
|
export declare function resolveFrameworkStoreSourceIdSync(env?: NodeJS.ProcessEnv): string | undefined;
|
|
15
|
+
export type CursorManagedV2StoreIds = {
|
|
16
|
+
deploymentStoreSourceId: string;
|
|
17
|
+
frameworkStoreSourceId: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the complete managed-v2 store identity at the process boundary.
|
|
21
|
+
*
|
|
22
|
+
* Freeze snapshots construct storage before task bind, so callers keep this
|
|
23
|
+
* resolver lazy. Once an operation needs storage, both ids are mandatory.
|
|
24
|
+
*/
|
|
25
|
+
export declare function requireCursorManagedV2StoreIdsSync(env?: NodeJS.ProcessEnv): CursorManagedV2StoreIds;
|
|
15
26
|
//# sourceMappingURL=hosted-store-secrets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-store-secrets.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/hosted-store-secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,wCAAwC,oDACF,CAAC;AAEpD,eAAO,MAAM,kDAAkD,8DACF,CAAC;AA4B9D,4DAA4D;AAC5D,wBAAgB,kCAAkC,CAChD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAUpB;AAED,wDAAwD;AACxD,wBAAgB,iCAAiC,CAC/C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAUpB"}
|
|
1
|
+
{"version":3,"file":"hosted-store-secrets.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/hosted-store-secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,wCAAwC,oDACF,CAAC;AAEpD,eAAO,MAAM,kDAAkD,8DACF,CAAC;AA4B9D,4DAA4D;AAC5D,wBAAgB,kCAAkC,CAChD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAUpB;AAED,wDAAwD;AACxD,wBAAgB,iCAAiC,CAC/C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAUpB;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,uBAAuB,CAYzB"}
|
|
@@ -46,3 +46,18 @@ export function resolveFrameworkStoreSourceIdSync(env = process.env) {
|
|
|
46
46
|
}
|
|
47
47
|
return readBoundSecretFile(FRAMEWORK_STORE_SOURCE_ID_FILE_ENV, DEFAULT_AGENT_SERVE_FRAMEWORK_STORE_SOURCE_ID_FILE, env);
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolve the complete managed-v2 store identity at the process boundary.
|
|
51
|
+
*
|
|
52
|
+
* Freeze snapshots construct storage before task bind, so callers keep this
|
|
53
|
+
* resolver lazy. Once an operation needs storage, both ids are mandatory.
|
|
54
|
+
*/
|
|
55
|
+
export function requireCursorManagedV2StoreIdsSync(env = process.env) {
|
|
56
|
+
const deploymentStoreSourceId = resolveDeploymentStoreSourceIdSync(env);
|
|
57
|
+
const frameworkStoreSourceId = resolveFrameworkStoreSourceIdSync(env);
|
|
58
|
+
if (deploymentStoreSourceId === undefined ||
|
|
59
|
+
frameworkStoreSourceId === undefined) {
|
|
60
|
+
throw new Error("Cursor-managed AgentSDK v2 requires AGENT_SERVE_STORE_SOURCE_ID and AGENT_SERVE_FRAMEWORK_STORE_SOURCE_ID");
|
|
61
|
+
}
|
|
62
|
+
return { deploymentStoreSourceId, frameworkStoreSourceId };
|
|
63
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agent/ab.ts` or `agent/ab/*.ts` plus `agent/ab.config.ts`: live A/B experiments.
|
|
3
|
+
*/
|
|
4
|
+
import type { ABConfigFile } from "../../ab.js";
|
|
5
|
+
import type { DiscoveredAB } from "../../types.js";
|
|
6
|
+
import { type DiscoveryContext } from "./context.js";
|
|
7
|
+
export declare function loadABs(ctx: DiscoveryContext, agentDir: string): Promise<DiscoveredAB[]>;
|
|
8
|
+
export declare function loadABConfig(ctx: DiscoveryContext, agentDir: string): Promise<ABConfigFile | undefined>;
|
|
9
|
+
//# sourceMappingURL=ab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ab.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/ab.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,gBAAgB,EAAe,MAAM,cAAc,CAAC;AAUlE,wBAAsB,OAAO,CAC3B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,EAAE,CAAC,CA+CzB;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAyBnC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agent/ab.ts` or `agent/ab/*.ts` plus `agent/ab.config.ts`: live A/B experiments.
|
|
3
|
+
*/
|
|
4
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
import { basename, extname, join, relative } from "node:path";
|
|
14
|
+
import { displayPath } from "./context.js";
|
|
15
|
+
import { findModuleFile, isDirectory, isModuleFile, toPosix, walkFiles, } from "./fs.js";
|
|
16
|
+
import { importDefault } from "./modules.js";
|
|
17
|
+
export function loadABs(ctx, agentDir) {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const abs = [];
|
|
20
|
+
const seen = new Set();
|
|
21
|
+
const single = yield findModuleFile(agentDir, "ab");
|
|
22
|
+
if (single !== undefined) {
|
|
23
|
+
const definition = yield importDefault(ctx, single, "ab");
|
|
24
|
+
if (definition !== undefined) {
|
|
25
|
+
const name = resolveABName(definition, "ab");
|
|
26
|
+
seen.add(name);
|
|
27
|
+
abs.push({
|
|
28
|
+
name,
|
|
29
|
+
definition: definition,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const absDir = join(agentDir, "ab");
|
|
34
|
+
if (yield isDirectory(absDir)) {
|
|
35
|
+
for (const filePath of yield walkFiles(absDir)) {
|
|
36
|
+
if (!isModuleFile(basename(filePath))) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const rel = toPosix(relative(absDir, filePath));
|
|
40
|
+
const stem = rel.slice(0, -extname(rel).length);
|
|
41
|
+
const definition = yield importDefault(ctx, filePath, "ab");
|
|
42
|
+
if (definition === undefined) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const name = resolveABName(definition, stem);
|
|
46
|
+
if (seen.has(name)) {
|
|
47
|
+
ctx.diagnostics.push({
|
|
48
|
+
severity: "error",
|
|
49
|
+
path: displayPath(ctx, filePath),
|
|
50
|
+
message: `Duplicate A/B experiment name ${JSON.stringify(name)}.`,
|
|
51
|
+
});
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
seen.add(name);
|
|
55
|
+
abs.push({
|
|
56
|
+
name,
|
|
57
|
+
definition: definition,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return abs;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function loadABConfig(ctx, agentDir) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
const path = yield findModuleFile(agentDir, "ab.config");
|
|
67
|
+
if (path === undefined) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const mod = yield ctx.importModule(path);
|
|
72
|
+
if (mod.default === null || typeof mod.default !== "object") {
|
|
73
|
+
ctx.diagnostics.push({
|
|
74
|
+
severity: "error",
|
|
75
|
+
path: displayPath(ctx, path),
|
|
76
|
+
message: "ab.config.ts must default-export defineABConfig({ ... }) from @cursor/july/ab.",
|
|
77
|
+
});
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
return mod.default;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
ctx.diagnostics.push({
|
|
84
|
+
severity: "error",
|
|
85
|
+
path: displayPath(ctx, path),
|
|
86
|
+
message: `Failed to load ab.config: ${error instanceof Error ? error.message : String(error)}`,
|
|
87
|
+
});
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function resolveABName(definition, fallback) {
|
|
93
|
+
if (typeof definition === "object" &&
|
|
94
|
+
definition !== null &&
|
|
95
|
+
"name" in definition &&
|
|
96
|
+
typeof definition.name === "string" &&
|
|
97
|
+
definition.name.length > 0) {
|
|
98
|
+
return definition.name;
|
|
99
|
+
}
|
|
100
|
+
return fallback;
|
|
101
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agent/agent.ts`: model, runtime architecture, working directory, hosting, and concurrency.
|
|
3
|
+
*/
|
|
4
|
+
import { type AgentArchitecture, type AgentConcurrencyOptions, type AgentConfigDefinition, type AgentHostingOptions, type AgentRuntime, type ModelSetting } from "../../types.js";
|
|
5
|
+
import { type DiscoveryContext } from "./context.js";
|
|
6
|
+
export declare function runtimeArchitectureCompatibilityError(agent: {
|
|
7
|
+
runtime: AgentRuntime;
|
|
8
|
+
architecture?: AgentArchitecture;
|
|
9
|
+
}): string | undefined;
|
|
10
|
+
export declare function resolveArchitecture(ctx: DiscoveryContext, agentDir: string, architecture: AgentArchitecture | undefined): AgentArchitecture | undefined;
|
|
11
|
+
/** Absolute harness cwd parent, or undefined when unset / blank. */
|
|
12
|
+
export declare function resolveAgentCwd(ctx: DiscoveryContext, authored: string | undefined): string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Nested git checkouts inherit ancestor AGENTS.md / .cursor rules and MCP.
|
|
15
|
+
* Point those harnesses at ~/.cache/agent-serve/<dir> unless the agent
|
|
16
|
+
* already set cwd or workspaceDir.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveLocalCwd(ctx: DiscoveryContext, authoredCwd: string | undefined, authoredWorkspaceDir: string | undefined): Promise<string | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* Validate the authored `hosting` block against the same grammar the
|
|
21
|
+
* backend enforces on deploy. Violations are warning diagnostics (reported
|
|
22
|
+
* by `agent-sdk validate`), not hard failures: the backend stays
|
|
23
|
+
* authoritative and `agent-sdk deploy` re-checks before any network call.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveHosting(ctx: DiscoveryContext, agentDir: string, hosting: AgentHostingOptions | undefined): AgentHostingOptions | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Validate the authored `concurrency` block. Invalid values are **error**
|
|
28
|
+
* diagnostics (serve refuses to start): silently dropping a turn ceiling
|
|
29
|
+
* would fail open to unlimited parallelism, the opposite of what the
|
|
30
|
+
* author asked for.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveConcurrency(ctx: DiscoveryContext, agentDir: string, concurrency: AgentConcurrencyOptions | undefined): AgentConcurrencyOptions | undefined;
|
|
33
|
+
export declare function loadAgentConfig(ctx: DiscoveryContext, agentDir: string, isRoot: boolean): Promise<AgentConfigDefinition | undefined>;
|
|
34
|
+
export declare function isValidModelSetting(model: unknown): model is ModelSetting;
|
|
35
|
+
//# sourceMappingURL=agent-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/agent-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAEjB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AASxB,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AAI3E,wBAAgB,qCAAqC,CAAC,KAAK,EAAE;IAC3D,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,GAAG,MAAM,GAAG,SAAS,CAIrB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,iBAAiB,GAAG,SAAS,GAC1C,iBAAiB,GAAG,SAAS,CAc/B;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CASpB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,oBAAoB,EAAE,MAAM,GAAG,SAAS,GACvC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAY7B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,mBAAmB,GAAG,SAAS,CAyCjC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,uBAAuB,GAAG,SAAS,GAC/C,uBAAuB,GAAG,SAAS,CAmBrC;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA4B5C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAUzE"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agent/agent.ts`: model, runtime architecture, working directory, hosting, and concurrency.
|
|
3
|
+
*/
|
|
4
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
import { basename, isAbsolute, join, resolve } from "node:path";
|
|
14
|
+
import { MAX_RUNNING_TURNS_LIMIT, } from "../../types.js";
|
|
15
|
+
import { normalizePositiveInt } from "../bounded-int.js";
|
|
16
|
+
import { isReservedSecretName, MAX_EGRESS_DOMAINS, validateEgressDomain, validateSecretName, } from "../hosting.js";
|
|
17
|
+
import { defaultLocalHarnessCwd, isNestedInGitRepo } from "../workspace.js";
|
|
18
|
+
import { displayPath, isBlank } from "./context.js";
|
|
19
|
+
import { findModuleFile } from "./fs.js";
|
|
20
|
+
import { importDefault } from "./modules.js";
|
|
21
|
+
export function runtimeArchitectureCompatibilityError(agent) {
|
|
22
|
+
return agent.architecture === "v2" && agent.runtime === "grokbot"
|
|
23
|
+
? 'architecture: "v2" cannot use runtime: "grokbot": the grokbot runtime executes through the signed-in account\'s hosted /v0/grokbot box, not a deployment-scoped v2 runtime.'
|
|
24
|
+
: undefined;
|
|
25
|
+
}
|
|
26
|
+
export function resolveArchitecture(ctx, agentDir, architecture) {
|
|
27
|
+
if (architecture === undefined ||
|
|
28
|
+
architecture === "v1" ||
|
|
29
|
+
architecture === "v2") {
|
|
30
|
+
return architecture;
|
|
31
|
+
}
|
|
32
|
+
ctx.diagnostics.push({
|
|
33
|
+
severity: "error",
|
|
34
|
+
path: displayPath(ctx, join(agentDir, "agent.ts")),
|
|
35
|
+
message: `architecture must be "v1" or "v2"; got ${JSON.stringify(architecture)}.`,
|
|
36
|
+
});
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
/** Absolute harness cwd parent, or undefined when unset / blank. */
|
|
40
|
+
export function resolveAgentCwd(ctx, authored) {
|
|
41
|
+
if (authored === undefined) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const trimmed = authored.trim();
|
|
45
|
+
if (trimmed === "") {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
return isAbsolute(trimmed) ? trimmed : resolve(ctx.rootDir, trimmed);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Nested git checkouts inherit ancestor AGENTS.md / .cursor rules and MCP.
|
|
52
|
+
* Point those harnesses at ~/.cache/agent-serve/<dir> unless the agent
|
|
53
|
+
* already set cwd or workspaceDir.
|
|
54
|
+
*/
|
|
55
|
+
export function resolveLocalCwd(ctx, authoredCwd, authoredWorkspaceDir) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const cwd = resolveAgentCwd(ctx, authoredCwd);
|
|
58
|
+
if (cwd !== undefined) {
|
|
59
|
+
return cwd;
|
|
60
|
+
}
|
|
61
|
+
if (resolveAgentCwd(ctx, authoredWorkspaceDir) !== undefined) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
if (!(yield isNestedInGitRepo(ctx.rootDir))) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
return defaultLocalHarnessCwd(basename(ctx.rootDir));
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Validate the authored `hosting` block against the same grammar the
|
|
72
|
+
* backend enforces on deploy. Violations are warning diagnostics (reported
|
|
73
|
+
* by `agent-sdk validate`), not hard failures: the backend stays
|
|
74
|
+
* authoritative and `agent-sdk deploy` re-checks before any network call.
|
|
75
|
+
*/
|
|
76
|
+
export function resolveHosting(ctx, agentDir, hosting) {
|
|
77
|
+
var _a, _b;
|
|
78
|
+
if (hosting === undefined) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
const agentPath = displayPath(ctx, join(agentDir, "agent.ts"));
|
|
82
|
+
const warn = (message) => {
|
|
83
|
+
ctx.diagnostics.push({ severity: "warning", path: agentPath, message });
|
|
84
|
+
};
|
|
85
|
+
const egressDomains = (_a = hosting.egressDomains) !== null && _a !== void 0 ? _a : [];
|
|
86
|
+
for (const domain of egressDomains) {
|
|
87
|
+
const domainError = validateEgressDomain(domain);
|
|
88
|
+
if (domainError !== undefined) {
|
|
89
|
+
warn(`hosting.egressDomains: ${domainError}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (egressDomains.length > MAX_EGRESS_DOMAINS) {
|
|
93
|
+
warn(`hosting.egressDomains lists ${egressDomains.length} domains; deploys are capped at ${MAX_EGRESS_DOMAINS}.`);
|
|
94
|
+
}
|
|
95
|
+
for (const name of (_b = hosting.secretNames) !== null && _b !== void 0 ? _b : []) {
|
|
96
|
+
const nameError = validateSecretName(name);
|
|
97
|
+
if (nameError !== undefined) {
|
|
98
|
+
warn(`hosting.secretNames: ${nameError}`);
|
|
99
|
+
}
|
|
100
|
+
else if (isReservedSecretName(name)) {
|
|
101
|
+
warn(`hosting.secretNames: ${JSON.stringify(name)} is platform-managed (CURSOR_* / reserved hosted-storage names); omit it from secretNames.`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return Object.assign(Object.assign({}, (hosting.egressDomains === undefined
|
|
105
|
+
? {}
|
|
106
|
+
: { egressDomains: [...hosting.egressDomains] })), (hosting.secretNames === undefined
|
|
107
|
+
? {}
|
|
108
|
+
: { secretNames: [...hosting.secretNames] }));
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Validate the authored `concurrency` block. Invalid values are **error**
|
|
112
|
+
* diagnostics (serve refuses to start): silently dropping a turn ceiling
|
|
113
|
+
* would fail open to unlimited parallelism, the opposite of what the
|
|
114
|
+
* author asked for.
|
|
115
|
+
*/
|
|
116
|
+
export function resolveConcurrency(ctx, agentDir, concurrency) {
|
|
117
|
+
if (concurrency === undefined || concurrency.maxRunningTurns === undefined) {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
return {
|
|
122
|
+
maxRunningTurns: normalizePositiveInt(concurrency.maxRunningTurns, {
|
|
123
|
+
label: "concurrency.maxRunningTurns",
|
|
124
|
+
max: MAX_RUNNING_TURNS_LIMIT,
|
|
125
|
+
}),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
ctx.diagnostics.push({
|
|
130
|
+
severity: "error",
|
|
131
|
+
path: displayPath(ctx, join(agentDir, "agent.ts")),
|
|
132
|
+
message: error instanceof Error ? error.message : String(error),
|
|
133
|
+
});
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
export function loadAgentConfig(ctx, agentDir, isRoot) {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const configPath = yield findModuleFile(agentDir, "agent");
|
|
140
|
+
if (configPath === undefined) {
|
|
141
|
+
ctx.diagnostics.push({
|
|
142
|
+
severity: "error",
|
|
143
|
+
path: displayPath(ctx, join(agentDir, "agent.ts")),
|
|
144
|
+
message: isRoot
|
|
145
|
+
? "agent.ts is required on the root agent: default-export defineAgent({ ... })"
|
|
146
|
+
: "agent.ts is required on a subagent: default-export defineAgent({ description: ... })",
|
|
147
|
+
});
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
const definition = yield importDefault(ctx, configPath, "agent");
|
|
151
|
+
if (definition === undefined) {
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
const config = definition;
|
|
155
|
+
if (!isRoot && isBlank(config.description)) {
|
|
156
|
+
ctx.diagnostics.push({
|
|
157
|
+
severity: "error",
|
|
158
|
+
path: displayPath(ctx, configPath),
|
|
159
|
+
message: "Subagents require a description; the parent model reads it to decide when to delegate.",
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return config;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
export function isValidModelSetting(model) {
|
|
166
|
+
if (typeof model === "string") {
|
|
167
|
+
return model.trim() !== "";
|
|
168
|
+
}
|
|
169
|
+
return (typeof model === "object" &&
|
|
170
|
+
model !== null &&
|
|
171
|
+
typeof model.id === "string" &&
|
|
172
|
+
model.id.trim() !== "");
|
|
173
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile one `agent/` directory (and its subagents) into a {@link ResolvedAgent}.
|
|
3
|
+
*/
|
|
4
|
+
import { type ResolvedAgent } from "../../types.js";
|
|
5
|
+
import { type DiscoveryContext } from "./context.js";
|
|
6
|
+
export declare function loadAgent(ctx: DiscoveryContext, agentDir: string, options: {
|
|
7
|
+
name: string;
|
|
8
|
+
isRoot: boolean;
|
|
9
|
+
}): Promise<ResolvedAgent>;
|
|
10
|
+
export declare function warnUnknownSlots(ctx: DiscoveryContext, agentDir: string): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/internal/discovery/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAkBnE,OAAO,EAAE,KAAK,gBAAgB,EAAe,MAAM,cAAc,CAAC;AAelE,wBAAsB,SAAS,CAC7B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,aAAa,CAAC,CAyNxB;AAqDD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
|