@cursor/july 0.1.108 → 0.1.109
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 +2 -6
- package/README.md +3 -6
- package/dist/channels/bitbucket/api.d.ts +41 -0
- package/dist/channels/bitbucket/api.d.ts.map +1 -1
- package/dist/channels/bitbucket/api.js +260 -0
- package/dist/channels/bitbucket/binding.d.ts +4 -0
- package/dist/channels/bitbucket/binding.d.ts.map +1 -1
- package/dist/channels/bitbucket/binding.js +16 -0
- package/dist/channels/bitbucket/index.d.ts +1 -1
- package/dist/channels/bitbucket/index.d.ts.map +1 -1
- package/dist/channels/bitbucket/index.js +1 -1
- package/dist/channels/gitlab/api.d.ts +27 -0
- package/dist/channels/gitlab/api.d.ts.map +1 -1
- package/dist/channels/gitlab/api.js +88 -0
- package/dist/channels/gitlab/binding.d.ts +5 -0
- package/dist/channels/gitlab/binding.d.ts.map +1 -1
- package/dist/channels/gitlab/binding.js +10 -0
- package/dist/channels/gitlab/index.d.ts +1 -1
- package/dist/channels/gitlab/index.d.ts.map +1 -1
- package/dist/channels/gitlab/index.js +1 -1
- package/dist/channels/slack/dispatch.d.ts +10 -0
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +20 -3
- package/dist/channels/slack/slack-channel.d.ts +12 -5
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +59 -8
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.BASKM3M4.js → app.Cr-wVbnB.js} +1 -1
- package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.js → building-with-agents.md.D0KbSkJn.js} +2 -2
- package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.lean.js → building-with-agents.md.D0KbSkJn.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.CFVQ4S17.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BOKxlYGP.js → VPLocalSearchBox.CVQERt56.js} +1 -1
- package/dist/docs/assets/chunks/{theme.DbDZW-zb.js → theme.Dnsd3XOn.js} +2 -2
- package/dist/docs/assets/concepts.md.B4o63Gul.js +1 -0
- package/dist/docs/assets/evals.md.C7JLjoEP.js +211 -0
- package/dist/docs/assets/evals.md.C7JLjoEP.lean.js +1 -0
- package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.js +10 -0
- package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.lean.js +1 -0
- package/dist/docs/assets/{guides_github.md.BH33UEBJ.js → guides_github.md.TZaTZlfz.js} +13 -3
- package/dist/docs/assets/{guides_github.md.BH33UEBJ.lean.js → guides_github.md.TZaTZlfz.lean.js} +1 -1
- package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.js +14 -0
- package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.lean.js +1 -0
- package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.js → guides_webhooks.md.CJK484ex.js} +2 -2
- package/dist/docs/assets/{hillclimbing.md.CpTGTCle.js → hillclimbing.md.BOiVo1tf.js} +1 -1
- package/dist/docs/assets/index.md.DD9Q2XuJ.js +5 -0
- package/dist/docs/assets/{index.md.BjH1w2ZW.lean.js → index.md.DD9Q2XuJ.lean.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.D-qTqwcq.js → reference_channels.md.CAo-iK4j.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.D-qTqwcq.lean.js → reference_channels.md.CAo-iK4j.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.Ca26u0Es.js → reference_cli.md.Deg7849l.js} +1 -1
- package/dist/docs/assets/{reference_extensions.md.CPWt00ds.js → reference_extensions.md.ZAVUyuEX.js} +2 -2
- package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.js → reference_hooks.md.BlM_bOg6.js} +3 -3
- package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.lean.js → reference_hooks.md.BlM_bOg6.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.oySXBO8o.js → reference_http-api.md.BwaCo-VO.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.4myJPxrf.js → reference_playground.md.DLnoaczX.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.4myJPxrf.lean.js → reference_playground.md.DLnoaczX.lean.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.js → reference_project-layout.md.BEU8MtQV.js} +3 -3
- package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.lean.js → reference_project-layout.md.BEU8MtQV.lean.js} +1 -1
- package/dist/docs/assets/reference_sessions.md.CyXV1MUw.js +1 -0
- package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.js +35 -0
- package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.lean.js +1 -0
- package/dist/docs/assets/{skills_evals.md.BhovOvrl.js → skills_evals.md.DFxYPErF.js} +3 -3
- package/dist/docs/assets/skills_evals.md.DFxYPErF.lean.js +1 -0
- package/dist/docs/assets/{skills_framework-map.md.D-tFZhFS.js → skills_framework-map.md.BxLSOhSY.js} +1 -1
- package/dist/docs/assets/skills_index.md.DL7EHaQ-.js +1 -0
- package/dist/docs/assets/skills_index.md.DL7EHaQ-.lean.js +1 -0
- package/dist/docs/assets/{storage.md.BOHeqk2M.js → storage.md.BUrhJ-Zz.js} +4 -4
- package/dist/docs/assets/{storage.md.BOHeqk2M.lean.js → storage.md.BUrhJ-Zz.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +5 -5
- package/dist/docs/building-with-agents.md +3 -2
- package/dist/docs/concepts.html +5 -5
- package/dist/docs/concepts.md +2 -4
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/evals.html +161 -35
- package/dist/docs/evals.md +612 -297
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/bitbucket.html +36 -0
- package/dist/docs/guides/bitbucket.md +84 -0
- package/dist/docs/guides/cloud-agents.html +4 -4
- package/dist/docs/guides/convert-automation.html +4 -4
- package/dist/docs/guides/github.html +17 -7
- package/dist/docs/guides/github.md +31 -0
- package/dist/docs/guides/gitlab.html +40 -0
- package/dist/docs/guides/gitlab.md +92 -0
- package/dist/docs/guides/grokbot-agents.html +4 -4
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/improve.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +4 -4
- package/dist/docs/guides/opentelemetry.html +4 -4
- package/dist/docs/guides/slack.html +5 -5
- package/dist/docs/guides/webhooks.html +6 -6
- package/dist/docs/guides/webhooks.md +4 -2
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +6 -6
- package/dist/docs/hillclimbing.md +2 -2
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +10 -6
- package/dist/docs/llms-full.txt +1113 -778
- package/dist/docs/llms.txt +6 -5
- 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 +6 -6
- package/dist/docs/reference/channels.md +16 -3
- package/dist/docs/reference/cli.html +6 -6
- package/dist/docs/reference/cli.md +6 -4
- package/dist/docs/reference/connections.html +4 -4
- package/dist/docs/reference/extensions.html +7 -7
- package/dist/docs/reference/extensions.md +0 -3
- package/dist/docs/reference/hooks.html +7 -7
- package/dist/docs/reference/hooks.md +9 -12
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/http-api.md +2 -3
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +5 -5
- package/dist/docs/reference/playground.md +0 -4
- package/dist/docs/reference/project-layout.html +7 -7
- package/dist/docs/reference/project-layout.md +1 -8
- package/dist/docs/reference/prompt.html +4 -4
- package/dist/docs/reference/result.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +5 -5
- package/dist/docs/reference/sessions.md +1 -2
- package/dist/docs/reference/skills.html +4 -4
- package/dist/docs/reference/subagents.html +4 -4
- package/dist/docs/reference/tools.html +4 -4
- package/dist/docs/scaffolding-agents.html +4 -4
- package/dist/docs/skills/create-agent.html +4 -4
- package/dist/docs/skills/debug.html +4 -4
- package/dist/docs/skills/deploy.html +61 -0
- package/dist/docs/skills/deploy.md +161 -0
- package/dist/docs/skills/evals.html +8 -8
- package/dist/docs/skills/evals.md +44 -6
- package/dist/docs/skills/framework-map.html +5 -5
- package/dist/docs/skills/framework-map.md +1 -2
- package/dist/docs/skills/github.html +4 -4
- package/dist/docs/skills/hillclimb.html +4 -4
- package/dist/docs/skills/index.html +6 -6
- package/dist/docs/skills/index.md +1 -1
- 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 +8 -8
- package/dist/docs/storage.md +15 -24
- 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/grokbot-agents.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.d.ts +2 -3
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +2 -5
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/internal/authored-alias-hooks.d.ts +5 -0
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
- package/dist/internal/authored-alias-hooks.js +17 -0
- package/dist/internal/authored-loaders.d.ts +4 -0
- package/dist/internal/authored-loaders.d.ts.map +1 -1
- package/dist/internal/authored-loaders.js +21 -2
- package/dist/internal/cli-ax.d.ts +1 -2
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +1 -2
- package/dist/internal/continuation-channel.d.ts.map +1 -1
- package/dist/internal/continuation-channel.js +2 -2
- package/dist/internal/continuation-identity.js +8 -3
- package/dist/internal/discovery/agent.d.ts +1 -1
- package/dist/internal/discovery/agent.d.ts.map +1 -1
- package/dist/internal/discovery/agent.js +0 -5
- package/dist/internal/discovery/extension-overlay.d.ts +1 -2
- package/dist/internal/discovery/extension-overlay.d.ts.map +1 -1
- package/dist/internal/discovery/extension-overlay.js +0 -14
- package/dist/internal/discovery/extensions.d.ts +1 -2
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +4 -22
- package/dist/internal/discovery/info.d.ts.map +1 -1
- package/dist/internal/discovery/info.js +42 -24
- package/dist/internal/discovery/modules.js +0 -1
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +0 -16
- package/dist/internal/eval-runner.js +0 -1
- package/dist/internal/framework-file-storage.d.ts +4 -5
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +4 -5
- package/dist/internal/framework-storage-selection.d.ts +2 -2
- package/dist/internal/framework-storage-selection.js +2 -2
- package/dist/internal/init-scaffold.d.ts.map +1 -1
- package/dist/internal/init-scaffold.js +1 -2
- package/dist/internal/install-cursor-skills.d.ts +5 -2
- package/dist/internal/install-cursor-skills.d.ts.map +1 -1
- package/dist/internal/install-cursor-skills.js +25 -5
- package/dist/internal/run-client.d.ts +1 -1
- package/dist/internal/sdk-runner.js +1 -1
- package/dist/internal/server.js +0 -14
- package/dist/internal/session-engine.d.ts +5 -35
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +17 -162
- package/dist/internal/storage-coordinator.d.ts +5 -19
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +3 -62
- package/dist/internal/storage-roles.d.ts +4 -9
- package/dist/internal/storage-roles.d.ts.map +1 -1
- package/dist/internal/storage-roles.js +2 -2
- package/dist/playground/assets/index-Bhxzrcf6.css +1 -0
- package/dist/playground/assets/index-CqLX5uF3.js +67 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted-v2.d.ts +4 -5
- package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted-v2.js +4 -5
- package/dist/storage-backends/cursor-hosted.d.ts +1 -2
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +0 -30
- package/dist/storage-backends/file-kv.d.ts +9 -12
- package/dist/storage-backends/file-kv.d.ts.map +1 -1
- package/dist/storage-backends/file-kv.js +11 -47
- package/dist/storage-protocol.d.ts +3 -11
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +3 -11
- package/dist/storage.d.ts +8 -36
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +8 -44
- package/dist/types.d.ts +20 -57
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +10 -6
- package/docs/building-with-agents.md +3 -2
- package/docs/concepts.md +2 -4
- package/docs/evals.md +613 -298
- package/docs/guides/bitbucket.md +89 -0
- package/docs/guides/github.md +31 -0
- package/docs/guides/gitlab.md +97 -0
- package/docs/guides/webhooks.md +4 -2
- package/docs/hillclimbing.md +2 -2
- package/docs/reference/channels.md +16 -3
- package/docs/reference/cli.md +6 -4
- package/docs/reference/extensions.md +0 -3
- package/docs/reference/hooks.md +9 -12
- package/docs/reference/http-api.md +2 -3
- package/docs/reference/playground.md +0 -4
- package/docs/reference/project-layout.md +1 -8
- package/docs/reference/sessions.md +1 -2
- package/docs/skills/index.md +2 -2
- package/docs/storage.md +15 -24
- package/package.json +1 -7
- package/skills/deploy/SKILL.md +169 -0
- package/skills/evals/SKILL.md +45 -8
- package/skills/framework-map/SKILL.md +1 -2
- package/src/channels/bitbucket/api.ts +341 -0
- package/src/channels/bitbucket/binding.ts +25 -0
- package/src/channels/bitbucket/index.ts +2 -0
- package/src/channels/gitlab/api.ts +123 -0
- package/src/channels/gitlab/binding.ts +12 -0
- package/src/channels/gitlab/index.ts +1 -0
- package/src/channels/slack/dispatch.ts +30 -0
- package/src/channels/slack/slack-channel.ts +69 -7
- package/src/extensions.ts +2 -6
- package/src/index.ts +0 -3
- package/src/internal/authored-alias-hooks.ts +32 -0
- package/src/internal/authored-loaders.ts +26 -2
- package/src/internal/cli-ax.ts +1 -2
- package/src/internal/continuation-channel.ts +2 -1
- package/src/internal/continuation-identity.ts +10 -2
- package/src/internal/discovery/agent.ts +1 -7
- package/src/internal/discovery/extension-overlay.ts +0 -18
- package/src/internal/discovery/extensions.ts +2 -26
- package/src/internal/discovery/info.ts +3 -13
- package/src/internal/discovery/modules.ts +0 -1
- package/src/internal/discovery/project.ts +0 -16
- package/src/internal/eval-runner.ts +0 -1
- package/src/internal/framework-file-storage.ts +4 -5
- package/src/internal/framework-storage-selection.ts +2 -2
- package/src/internal/init-scaffold.ts +1 -2
- package/src/internal/install-cursor-skills.ts +38 -5
- package/src/internal/run-client.ts +1 -1
- package/src/internal/sdk-runner.ts +1 -1
- package/src/internal/server.ts +0 -16
- package/src/internal/session-engine.ts +14 -202
- package/src/internal/storage-coordinator.ts +5 -76
- package/src/internal/storage-roles.ts +4 -9
- package/src/storage-backends/cursor-hosted-v2.ts +4 -7
- package/src/storage-backends/cursor-hosted.ts +0 -37
- package/src/storage-backends/file-kv.ts +10 -51
- package/src/storage-protocol.ts +3 -17
- package/src/storage.ts +10 -101
- package/src/types.ts +19 -56
- package/templates/demo/README.md +10 -6
- package/templates/demo/agent/channels/github.ts +2 -0
- package/templates/demo/agent/channels/queue.ts +6 -2
- package/templates/demo/agent/lib/repos.ts +5 -0
- package/templates/demo/init.json +25 -0
- package/dist/ab.d.ts +0 -209
- package/dist/ab.d.ts.map +0 -1
- package/dist/ab.js +0 -246
- package/dist/docs/ab.html +0 -80
- package/dist/docs/ab.md +0 -332
- package/dist/docs/assets/ab.md.mlVgqvSk.js +0 -54
- package/dist/docs/assets/ab.md.mlVgqvSk.lean.js +0 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.BHZYsNVi.js +0 -1
- package/dist/docs/assets/concepts.md.DgEcZOfT.js +0 -1
- package/dist/docs/assets/evals.md.C1ekS3k2.js +0 -85
- package/dist/docs/assets/evals.md.C1ekS3k2.lean.js +0 -1
- package/dist/docs/assets/index.md.BjH1w2ZW.js +0 -5
- package/dist/docs/assets/reference_sessions.md.CueyOHSL.js +0 -1
- package/dist/docs/assets/skills_ab.md.CsFNatVx.js +0 -26
- package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +0 -1
- package/dist/docs/assets/skills_evals.md.BhovOvrl.lean.js +0 -1
- package/dist/docs/assets/skills_index.md.DKwIxzGg.js +0 -1
- package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +0 -1
- package/dist/docs/skills/ab.html +0 -52
- package/dist/docs/skills/ab.md +0 -50
- package/dist/internal/ab-collector.d.ts +0 -44
- package/dist/internal/ab-collector.d.ts.map +0 -1
- package/dist/internal/ab-collector.js +0 -142
- package/dist/internal/ab-fold.d.ts +0 -36
- package/dist/internal/ab-fold.d.ts.map +0 -1
- package/dist/internal/ab-fold.js +0 -175
- package/dist/internal/ab-snapshot.d.ts +0 -68
- package/dist/internal/ab-snapshot.d.ts.map +0 -1
- package/dist/internal/ab-snapshot.js +0 -208
- package/dist/internal/discovery/ab.d.ts +0 -9
- package/dist/internal/discovery/ab.d.ts.map +0 -1
- package/dist/internal/discovery/ab.js +0 -113
- package/dist/playground/assets/index-BMDqAeXu.js +0 -67
- package/dist/playground/assets/index-LUgJoWdL.css +0 -1
- package/docs/ab.md +0 -337
- package/skills/ab/SKILL.md +0 -58
- package/src/ab.ts +0 -430
- package/src/internal/ab-collector.ts +0 -200
- package/src/internal/ab-fold.ts +0 -232
- package/src/internal/ab-snapshot.ts +0 -331
- package/src/internal/discovery/ab.ts +0 -131
- /package/dist/docs/assets/{concepts.md.DgEcZOfT.lean.js → concepts.md.B4o63Gul.lean.js} +0 -0
- /package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.lean.js → guides_webhooks.md.CJK484ex.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.CpTGTCle.lean.js → hillclimbing.md.BOiVo1tf.lean.js} +0 -0
- /package/dist/docs/assets/{reference_cli.md.Ca26u0Es.lean.js → reference_cli.md.Deg7849l.lean.js} +0 -0
- /package/dist/docs/assets/{reference_extensions.md.CPWt00ds.lean.js → reference_extensions.md.ZAVUyuEX.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.oySXBO8o.lean.js → reference_http-api.md.BwaCo-VO.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.CueyOHSL.lean.js → reference_sessions.md.CyXV1MUw.lean.js} +0 -0
- /package/dist/docs/assets/{skills_framework-map.md.D-tFZhFS.lean.js → skills_framework-map.md.BxLSOhSY.lean.js} +0 -0
|
@@ -8,7 +8,6 @@ import { join, resolve } from "node:path";
|
|
|
8
8
|
import type {
|
|
9
9
|
ArtifactsDefinition,
|
|
10
10
|
ConnectionDefinition,
|
|
11
|
-
DiscoveredAB,
|
|
12
11
|
DiscoveredChannel,
|
|
13
12
|
DiscoveredConnection,
|
|
14
13
|
DiscoveredExtension,
|
|
@@ -22,7 +21,6 @@ import type {
|
|
|
22
21
|
ToolDefinition,
|
|
23
22
|
} from "../../types.js";
|
|
24
23
|
import { buildIdentityPreamble, withIdentityPreamble } from "../workspace.js";
|
|
25
|
-
import { loadABs } from "./ab.js";
|
|
26
24
|
import { loadChannels } from "./channels.js";
|
|
27
25
|
import {
|
|
28
26
|
compileConnection,
|
|
@@ -33,7 +31,6 @@ import {
|
|
|
33
31
|
import { type DiscoveryContext, displayPath } from "./context.js";
|
|
34
32
|
import { type CursorPluginAgent, readCursorPlugin } from "./cursor-plugin.js";
|
|
35
33
|
import {
|
|
36
|
-
overlayAbs,
|
|
37
34
|
overlayArtifacts,
|
|
38
35
|
overlayChannels,
|
|
39
36
|
overlayHooks,
|
|
@@ -74,7 +71,6 @@ export interface ExtensionContributions {
|
|
|
74
71
|
schedules: DiscoveredSchedule[];
|
|
75
72
|
instructionParts: string[];
|
|
76
73
|
seedFiles: SeedFile[];
|
|
77
|
-
abs: DiscoveredAB[];
|
|
78
74
|
artifacts: ArtifactsDefinition | undefined;
|
|
79
75
|
}
|
|
80
76
|
|
|
@@ -171,7 +167,6 @@ interface ExtensionTree {
|
|
|
171
167
|
schedules: DiscoveredSchedule[];
|
|
172
168
|
instructions?: string;
|
|
173
169
|
seedFiles: SeedFile[];
|
|
174
|
-
abs: DiscoveredAB[];
|
|
175
170
|
artifacts?: ArtifactsDefinition;
|
|
176
171
|
}
|
|
177
172
|
|
|
@@ -192,7 +187,6 @@ function emptyDiscovered(
|
|
|
192
187
|
schedules: [],
|
|
193
188
|
instructions: false,
|
|
194
189
|
seedFiles: [],
|
|
195
|
-
abs: [],
|
|
196
190
|
artifactKinds: [],
|
|
197
191
|
};
|
|
198
192
|
}
|
|
@@ -242,7 +236,6 @@ async function mountExtension(
|
|
|
242
236
|
const seedFiles = new Map(
|
|
243
237
|
tree.seedFiles.map((seed) => [seed.relativePath, seed])
|
|
244
238
|
);
|
|
245
|
-
const abs = byAbSource(tree.abs);
|
|
246
239
|
let artifacts = tree.artifacts;
|
|
247
240
|
let instructions = tree.instructions;
|
|
248
241
|
|
|
@@ -333,7 +326,6 @@ async function mountExtension(
|
|
|
333
326
|
for (const seed of await loadSeedFiles(ctx, site.overlayDir)) {
|
|
334
327
|
seedFiles.set(seed.relativePath, seed);
|
|
335
328
|
}
|
|
336
|
-
await overlayAbs(ctx, site, abs, site.overlayDir);
|
|
337
329
|
artifacts = await overlayArtifacts(ctx, site.overlayDir, artifacts);
|
|
338
330
|
}
|
|
339
331
|
|
|
@@ -407,14 +399,6 @@ async function mountExtension(
|
|
|
407
399
|
into.seedFiles.push(seed);
|
|
408
400
|
mounted.seedFiles.push(seed.relativePath);
|
|
409
401
|
}
|
|
410
|
-
for (const experiment of abs.values()) {
|
|
411
|
-
const composed = `${site.ns}__${experiment.name}`;
|
|
412
|
-
into.abs.push({
|
|
413
|
-
name: composed,
|
|
414
|
-
definition: experiment.definition,
|
|
415
|
-
});
|
|
416
|
-
mounted.abs.push(composed);
|
|
417
|
-
}
|
|
418
402
|
if (artifacts !== undefined) {
|
|
419
403
|
const kinds: NonNullable<ArtifactsDefinition["kinds"]> = {};
|
|
420
404
|
for (const [kind, config] of Object.entries(artifacts.kinds ?? {})) {
|
|
@@ -464,7 +448,6 @@ async function readExtensionTree(
|
|
|
464
448
|
channels: [],
|
|
465
449
|
schedules: [],
|
|
466
450
|
seedFiles: [],
|
|
467
|
-
abs: [],
|
|
468
451
|
};
|
|
469
452
|
}
|
|
470
453
|
return readNativeTree(ctx, root);
|
|
@@ -490,7 +473,6 @@ async function readNativeTree(
|
|
|
490
473
|
schedules: await loadSchedules(ctx, join(root, "schedules")),
|
|
491
474
|
instructions: await loadInstructions(ctx, root, undefined, false),
|
|
492
475
|
seedFiles: await loadSeedFiles(ctx, root),
|
|
493
|
-
abs: await loadABs(ctx, root),
|
|
494
476
|
artifacts: await loadArtifacts(ctx, root),
|
|
495
477
|
};
|
|
496
478
|
}
|
|
@@ -519,19 +501,14 @@ function byName<T extends { name: string }>(items: T[]): Map<string, T> {
|
|
|
519
501
|
return new Map(items.map((item) => [item.name, item]));
|
|
520
502
|
}
|
|
521
503
|
|
|
522
|
-
function byAbSource(items: DiscoveredAB[]): Map<string, DiscoveredAB> {
|
|
523
|
-
return new Map(items.map((item) => [item.source ?? item.name, item]));
|
|
524
|
-
}
|
|
525
|
-
|
|
526
504
|
function byId<T extends { id: string }>(items: T[]): Map<string, T> {
|
|
527
505
|
return new Map(items.map((item) => [item.id, item]));
|
|
528
506
|
}
|
|
529
507
|
|
|
530
508
|
/**
|
|
531
509
|
* Agent-singleton slots: one runtime (`agent.ts`), one storage backend,
|
|
532
|
-
* one OTLP exporter
|
|
533
|
-
*
|
|
534
|
-
* `extensions/` are not mounted.
|
|
510
|
+
* one OTLP exporter. Playground chips are a Vite glob of the agent tree,
|
|
511
|
+
* not a discovery walk. Nested `extensions/` are not mounted.
|
|
535
512
|
*/
|
|
536
513
|
async function warnAgentRootOnlySlots(
|
|
537
514
|
ctx: DiscoveryContext,
|
|
@@ -541,7 +518,6 @@ async function warnAgentRootOnlySlots(
|
|
|
541
518
|
["agent.ts", "agent.ts"],
|
|
542
519
|
["storage.ts", "storage"],
|
|
543
520
|
["otel.ts", "otel"],
|
|
544
|
-
["ab.config.ts", "A/B config"],
|
|
545
521
|
] as const;
|
|
546
522
|
for (const [file, label] of files) {
|
|
547
523
|
const path = join(root, file);
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* The `info` / `GET /v1/info` projection of an {@link AgentProject}.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { resolveABMaxPlaygroundSessions } from "../../ab.js";
|
|
6
5
|
import { resolveArtifactsMax } from "../../artifacts.js";
|
|
7
6
|
import {
|
|
8
7
|
type AgentProject,
|
|
@@ -140,6 +139,9 @@ export function projectInfo(project: AgentProject): AgentProjectInfo {
|
|
|
140
139
|
if (meta?.factoryEventTypes !== undefined) {
|
|
141
140
|
info.factoryEventTypes = meta.factoryEventTypes;
|
|
142
141
|
}
|
|
142
|
+
if (meta?.slackEventTypes !== undefined) {
|
|
143
|
+
info.slackEventTypes = meta.slackEventTypes;
|
|
144
|
+
}
|
|
143
145
|
if (meta?.slackChannelPosts !== undefined) {
|
|
144
146
|
info.slackChannelPosts = meta.slackChannelPosts;
|
|
145
147
|
}
|
|
@@ -158,18 +160,6 @@ export function projectInfo(project: AgentProject): AgentProjectInfo {
|
|
|
158
160
|
name: reminder.name,
|
|
159
161
|
})),
|
|
160
162
|
hooks: project.hooks.map((hook) => hook.name),
|
|
161
|
-
abs: project.abs.map((experiment) => experiment.name),
|
|
162
|
-
...(project.abConfig === undefined && project.abs.length === 0
|
|
163
|
-
? {}
|
|
164
|
-
: {
|
|
165
|
-
abConfig: {
|
|
166
|
-
maxPlaygroundSessions: resolveABMaxPlaygroundSessions(
|
|
167
|
-
project.abConfig?.maxPlaygroundSessions
|
|
168
|
-
),
|
|
169
|
-
durableSamples: project.storage?.abs !== undefined,
|
|
170
|
-
durableSnapshots: project.storage?.abs?.putSnapshot !== undefined,
|
|
171
|
-
},
|
|
172
|
-
}),
|
|
173
163
|
storage:
|
|
174
164
|
project.storage === undefined
|
|
175
165
|
? undefined
|
|
@@ -103,7 +103,6 @@ const DEFINE_HELPER_NAME: Record<ImportableKind, string> = {
|
|
|
103
103
|
schedule: "defineSchedule",
|
|
104
104
|
reminder: "defineReminder",
|
|
105
105
|
hook: "defineHook",
|
|
106
|
-
ab: "defineAB",
|
|
107
106
|
storage: "defineStorage",
|
|
108
107
|
artifacts: "defineArtifacts",
|
|
109
108
|
otel: "defineOtel",
|
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
applyAgentContinuationDefaults,
|
|
15
15
|
warnOmittedContinuationDowngrades,
|
|
16
16
|
} from "../continuation-channel.js";
|
|
17
|
-
import { loadABConfig, loadABs } from "./ab.js";
|
|
18
17
|
import { loadAgent, warnUnknownSlots } from "./agent.js";
|
|
19
18
|
import { loadChannels } from "./channels.js";
|
|
20
19
|
import {
|
|
@@ -240,19 +239,6 @@ export async function loadAgentProject(
|
|
|
240
239
|
const reminders = await loadReminders(ctx, join(agentDir, "reminders"));
|
|
241
240
|
const hooks = await loadHooks(ctx, join(agentDir, "hooks"));
|
|
242
241
|
hooks.push(...projectSlots.hooks);
|
|
243
|
-
const abs = await loadABs(ctx, agentDir);
|
|
244
|
-
for (const experiment of projectSlots.abs) {
|
|
245
|
-
if (abs.some((existing) => existing.name === experiment.name)) {
|
|
246
|
-
ctx.diagnostics.push({
|
|
247
|
-
severity: "error",
|
|
248
|
-
path: displayPath(ctx, join(agentDir, "extensions")),
|
|
249
|
-
message: `Extension A/B experiment "${experiment.name}" collides with an agent experiment.`,
|
|
250
|
-
});
|
|
251
|
-
continue;
|
|
252
|
-
}
|
|
253
|
-
abs.push(experiment);
|
|
254
|
-
}
|
|
255
|
-
const abConfig = await loadABConfig(ctx, agentDir);
|
|
256
242
|
const storage = await loadStorage(ctx, agentDir, agent.architecture);
|
|
257
243
|
const artifacts = await mergeProjectArtifacts(
|
|
258
244
|
ctx,
|
|
@@ -295,8 +281,6 @@ export async function loadAgentProject(
|
|
|
295
281
|
schedules,
|
|
296
282
|
reminders,
|
|
297
283
|
hooks,
|
|
298
|
-
abs,
|
|
299
|
-
abConfig,
|
|
300
284
|
storage,
|
|
301
285
|
artifacts,
|
|
302
286
|
result,
|
|
@@ -21,9 +21,8 @@
|
|
|
21
21
|
* `continuation` go to the framework file store (file-shaped; the store
|
|
22
22
|
* accepts values up to 64 MiB per
|
|
23
23
|
* object without chunking, versus the KV proxy's 1 MiB row cap), while
|
|
24
|
-
* author `kv`, eval runs,
|
|
25
|
-
*
|
|
26
|
-
* database).
|
|
24
|
+
* author `kv`, eval runs, and conditional writes stay on the control-plane
|
|
25
|
+
* KV proxy (the dashboard reads them there, and CAS needs a database).
|
|
27
26
|
*
|
|
28
27
|
* v2 only, by construction: the composite is selected in
|
|
29
28
|
* framework-storage-selection.ts, which v1 never reaches with a
|
|
@@ -202,8 +201,8 @@ function decodeDocument(key: string, bytes: Uint8Array): JsonValue {
|
|
|
202
201
|
/**
|
|
203
202
|
* Split one storage core by key kind: framework session state to `files`,
|
|
204
203
|
* everything else to `kv`. Spread over the KV backend when building the
|
|
205
|
-
* full definition so its `evals`
|
|
206
|
-
*
|
|
204
|
+
* full definition so its `evals` group (and the cursor-hosted marker)
|
|
205
|
+
* rides along untouched; wrap the KV `cas` group with
|
|
207
206
|
* {@link frameworkGuardedCas} rather than spreading it as-is.
|
|
208
207
|
*/
|
|
209
208
|
export function composeFrameworkStorage(input: {
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
* (`AGENT_SERVE_FRAMEWORK_STORE_SOURCE_ID`, bound at task time) holds
|
|
25
25
|
* session records, event transcripts, and the continuation index —
|
|
26
26
|
* file-shaped state on file storage, apart from the author-facing user
|
|
27
|
-
* store. Author `host.kv`, eval runs,
|
|
28
|
-
*
|
|
27
|
+
* store. Author `host.kv`, eval runs, and conditional writes ride the
|
|
28
|
+
* AgentSDK v2 KV proxy (cursor-hosted-v2.ts), which resolves the
|
|
29
29
|
* pod service account to the factorydb deployment row (the v1 Bugbot
|
|
30
30
|
* proxy cannot resolve v2 pods at all). Framework session state never
|
|
31
31
|
* routes to the KV proxy — the composite splits by key kind — so
|
|
@@ -20,7 +20,6 @@ const EMPTY_DIRS: readonly string[] = [
|
|
|
20
20
|
"agent/subagents",
|
|
21
21
|
"agent/channels",
|
|
22
22
|
"agent/hooks",
|
|
23
|
-
"agent/ab",
|
|
24
23
|
"agent/schedules",
|
|
25
24
|
"agent/sandbox/workspace",
|
|
26
25
|
"agent/lib",
|
|
@@ -101,7 +100,7 @@ Run the CLI under Node, never Bun.
|
|
|
101
100
|
## Pointers
|
|
102
101
|
|
|
103
102
|
- Package loop: \`node_modules/${PACKAGE_NAME}/AGENTS.md\`
|
|
104
|
-
- Skills: \`node_modules/${PACKAGE_NAME}/skills/\` (\`create-agent\`, \`evals\`, \`hillclimb\`, \`debug\`)
|
|
103
|
+
- Skills: \`node_modules/${PACKAGE_NAME}/skills/\` (\`create-agent\`, \`deploy\`, \`evals\`, \`hillclimb\`, \`debug\`)
|
|
105
104
|
- Docs: \`npx ${PACKAGE_NAME} docs\`
|
|
106
105
|
- LLM docs index: \`node_modules/${PACKAGE_NAME}/dist/docs/llms.txt\`
|
|
107
106
|
`;
|
|
@@ -57,6 +57,8 @@ export interface PackageSkill {
|
|
|
57
57
|
leafDir: string;
|
|
58
58
|
/** Absolute path to the source skill directory in the package. */
|
|
59
59
|
sourceDir: string;
|
|
60
|
+
/** Exact package version that supplied this skill. */
|
|
61
|
+
packageVersion: string;
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
export function cursorSkillsHome(home?: string): string {
|
|
@@ -116,6 +118,7 @@ export async function listShippedPackageSkills(
|
|
|
116
118
|
} catch {
|
|
117
119
|
return [];
|
|
118
120
|
}
|
|
121
|
+
const packageVersion = await readPackageVersion(packageRoot);
|
|
119
122
|
|
|
120
123
|
const skills: PackageSkill[] = [];
|
|
121
124
|
for (const entry of entries) {
|
|
@@ -133,12 +136,23 @@ export async function listShippedPackageSkills(
|
|
|
133
136
|
const name =
|
|
134
137
|
parseFrontmatter(raw).data.name ||
|
|
135
138
|
`${CURSOR_SKILLS_NAMESPACE}-${entry.name}`;
|
|
136
|
-
skills.push({ name, leafDir: entry.name, sourceDir });
|
|
139
|
+
skills.push({ name, leafDir: entry.name, sourceDir, packageVersion });
|
|
137
140
|
}
|
|
138
141
|
skills.sort((a, b) => a.leafDir.localeCompare(b.leafDir));
|
|
139
142
|
return skills;
|
|
140
143
|
}
|
|
141
144
|
|
|
145
|
+
const PACKAGE_VERSION_PLACEHOLDER = "__CURSOR_JULY_VERSION__";
|
|
146
|
+
|
|
147
|
+
async function readPackageVersion(packageRoot: string): Promise<string> {
|
|
148
|
+
const raw = await readFile(join(packageRoot, "package.json"), "utf8");
|
|
149
|
+
const manifest = JSON.parse(raw) as { version?: unknown };
|
|
150
|
+
if (typeof manifest.version !== "string" || manifest.version.trim() === "") {
|
|
151
|
+
throw new Error("The @cursor/july package must declare a version.");
|
|
152
|
+
}
|
|
153
|
+
return manifest.version;
|
|
154
|
+
}
|
|
155
|
+
|
|
142
156
|
/**
|
|
143
157
|
* Skills that do not yet have a SKILL.md under ~/.cursor/skills/agentsdk/.
|
|
144
158
|
* Install still overwrites every shipped skill when the user confirms — this
|
|
@@ -200,7 +214,10 @@ export async function installCursorSkills(
|
|
|
200
214
|
await makeTreeWritable(target);
|
|
201
215
|
const skillMdPath = join(target, "SKILL.md");
|
|
202
216
|
const raw = await readFile(skillMdPath, "utf8");
|
|
203
|
-
const adjusted = prepareSkillMarkdownForCursorInstall(
|
|
217
|
+
const adjusted = prepareSkillMarkdownForCursorInstall(
|
|
218
|
+
raw,
|
|
219
|
+
skill.packageVersion
|
|
220
|
+
);
|
|
204
221
|
if (adjusted !== raw) {
|
|
205
222
|
await writeFile(skillMdPath, adjusted, "utf8");
|
|
206
223
|
}
|
|
@@ -276,9 +293,13 @@ async function hasLegacyCursorSkillsNamespace(
|
|
|
276
293
|
|
|
277
294
|
/**
|
|
278
295
|
* Drop monorepo `paths` globs, set `alwaysApply: true` so Cursor injects the
|
|
279
|
-
* body as a global rule,
|
|
296
|
+
* body as a global rule, bind package commands to the installing version, and
|
|
297
|
+
* fix package doc links for ~/.cursor installs.
|
|
280
298
|
*/
|
|
281
|
-
export function prepareSkillMarkdownForCursorInstall(
|
|
299
|
+
export function prepareSkillMarkdownForCursorInstall(
|
|
300
|
+
content: string,
|
|
301
|
+
packageVersion?: string
|
|
302
|
+
): string {
|
|
282
303
|
const match = /^---\r?\n([\s\S]*?)\r?\n---/.exec(content);
|
|
283
304
|
if (match === null) {
|
|
284
305
|
return content;
|
|
@@ -291,7 +312,19 @@ export function prepareSkillMarkdownForCursorInstall(content: string): string {
|
|
|
291
312
|
/\[`docs\/([^`]+)`\]\(\.\.\/\.\.\/docs\/[^)]+\)/g,
|
|
292
313
|
"docs/$1 in the @cursor/july package"
|
|
293
314
|
);
|
|
294
|
-
|
|
315
|
+
if (
|
|
316
|
+
adjustedBody.includes(PACKAGE_VERSION_PLACEHOLDER) &&
|
|
317
|
+
(packageVersion === undefined || packageVersion.trim() === "")
|
|
318
|
+
) {
|
|
319
|
+
throw new Error(
|
|
320
|
+
"Cannot install an Agent SDK skill without a package version."
|
|
321
|
+
);
|
|
322
|
+
}
|
|
323
|
+
const versionBoundBody =
|
|
324
|
+
packageVersion === undefined
|
|
325
|
+
? adjustedBody
|
|
326
|
+
: adjustedBody.replaceAll(PACKAGE_VERSION_PLACEHOLDER, packageVersion);
|
|
327
|
+
return `---\n${frontmatter.trimEnd()}\n---${versionBoundBody}`;
|
|
295
328
|
}
|
|
296
329
|
|
|
297
330
|
function stripPathsFromFrontmatter(frontmatter: string): string {
|
|
@@ -34,7 +34,7 @@ export interface RunClientOptions extends RequestAuth {
|
|
|
34
34
|
onEvent?: (event: SessionEvent) => void;
|
|
35
35
|
/**
|
|
36
36
|
* Create-time session purpose. Pass `"eval"` from the eval harness so
|
|
37
|
-
*
|
|
37
|
+
* the session is marked as regression traffic. Default `"live"`.
|
|
38
38
|
*/
|
|
39
39
|
purpose?: SessionPurpose;
|
|
40
40
|
}
|
|
@@ -355,7 +355,7 @@ export class CursorSdkRunner implements AgentRunner {
|
|
|
355
355
|
) {
|
|
356
356
|
// Cloud `wait()` drops usage after stream reconnect / getRun replay,
|
|
357
357
|
// or returns an all-zero stub. `getUsage` still has the run's tokens
|
|
358
|
-
// (eventually); without them traces
|
|
358
|
+
// (eventually); without them traces never record an estimated cost.
|
|
359
359
|
outcome = await fillMissingCloudUsage(agent, result.id, outcome);
|
|
360
360
|
}
|
|
361
361
|
return outcome;
|
package/src/internal/server.ts
CHANGED
|
@@ -1777,22 +1777,6 @@ function mountAgentRoutes(
|
|
|
1777
1777
|
},
|
|
1778
1778
|
});
|
|
1779
1779
|
|
|
1780
|
-
// Playground A/Bs tab: fold durable event streams into per-session
|
|
1781
|
-
// assignments and aggregate arm metrics (built-ins + derive).
|
|
1782
|
-
router.add({
|
|
1783
|
-
method: "GET",
|
|
1784
|
-
pattern: `${base}/v1/abs`,
|
|
1785
|
-
auth: httpAuth,
|
|
1786
|
-
handler: async (_request, ctx) => {
|
|
1787
|
-
const includeAll =
|
|
1788
|
-
dev === true &&
|
|
1789
|
-
(args.allowAnonymous === true ||
|
|
1790
|
-
(typeof ctx.requestIp === "string" &&
|
|
1791
|
-
isLoopbackAddress(ctx.requestIp)));
|
|
1792
|
-
return jsonResponse(await engine.abSnapshot(ctx.auth, { includeAll }));
|
|
1793
|
-
},
|
|
1794
|
-
});
|
|
1795
|
-
|
|
1796
1780
|
// Durable artifacts (ctx.artifacts / tag_artifact), newest-updated first.
|
|
1797
1781
|
router.add({
|
|
1798
1782
|
method: "GET",
|