@cursor/july 0.1.1 → 0.1.3
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 +40 -7
- package/README.md +33 -24
- package/dist/bin/agent-serve.d.ts +3 -1
- package/dist/bin/agent-serve.d.ts.map +1 -1
- package/dist/bin/agent-serve.js +466 -140
- package/dist/channels/github/api.d.ts.map +1 -1
- package/dist/channels/github/api.js +31 -14
- package/dist/channels/github/cursor-account.d.ts +43 -0
- package/dist/channels/github/cursor-account.d.ts.map +1 -0
- package/dist/channels/github/cursor-account.js +95 -0
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +46 -9
- package/dist/channels/github/index.d.ts +2 -2
- package/dist/channels/github/index.js +2 -2
- package/dist/channels/github/types.d.ts +17 -0
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.d.ts +8 -2
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +8 -0
- package/dist/channels/slack/types.d.ts +24 -3
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/types.js +15 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +8 -8
- package/dist/docs/assets/{ab.md.COdXkces.js → ab.md.BMCZ6Hd7.js} +3 -3
- package/dist/docs/assets/{ab.md.COdXkces.lean.js → ab.md.BMCZ6Hd7.lean.js} +1 -1
- package/dist/docs/assets/{app.DqfFEmJd.js → app.BR0RbIdx.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DtIOQzGj.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BaLEdS15.js → VPLocalSearchBox.qjsVTneI.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CZRvu_0q.js → theme.2Kg8jIp_.js} +2 -2
- package/dist/docs/assets/{deployment.md.Dx1TYNk5.js → deployment.md.DTKwE15Z.js} +3 -3
- package/dist/docs/assets/{deployment.md.Dx1TYNk5.lean.js → deployment.md.DTKwE15Z.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.DPZ_MAnI.js → evals.md.DAgEc_hL.js} +3 -3
- package/dist/docs/assets/{guides_agent-to-agent.md.CrtrsySy.js → guides_agent-to-agent.md.Bpzgq2Pq.js} +1 -1
- package/dist/docs/assets/{guides_cloud-runtime.md.CYlNMTNp.js → guides_cloud-runtime.md.gVzabdQL.js} +1 -1
- package/dist/docs/assets/{guides_github.md.DwbKhCeS.js → guides_github.md.DOOCpqsW.js} +11 -4
- package/dist/docs/assets/{guides_github.md.DwbKhCeS.lean.js → guides_github.md.DOOCpqsW.lean.js} +1 -1
- package/dist/docs/assets/{guides_human-in-the-loop.md.Dvuctx7s.js → guides_human-in-the-loop.md.DlUqsp1S.js} +2 -2
- package/dist/docs/assets/{guides_slack.md.bv41fHfW.js → guides_slack.md.CCwqHvSV.js} +4 -4
- package/dist/docs/assets/{guides_slack.md.bv41fHfW.lean.js → guides_slack.md.CCwqHvSV.lean.js} +1 -1
- package/dist/docs/assets/{guides_webhooks.md.hFTik3lf.js → guides_webhooks.md.B1EswtUu.js} +2 -2
- package/dist/docs/assets/index.md.m81y7TY7.js +20 -0
- package/dist/docs/assets/{index.md.BPKcj5AI.lean.js → index.md.m81y7TY7.lean.js} +1 -1
- package/dist/docs/assets/quickstart.md.BU6Iwi_9.js +204 -0
- package/dist/docs/assets/quickstart.md.BU6Iwi_9.lean.js +1 -0
- package/dist/docs/assets/{reference_agent-config.md.Bpd7HQwf.js → reference_agent-config.md.DrW2JUM8.js} +4 -4
- package/dist/docs/assets/{reference_agent-config.md.Bpd7HQwf.lean.js → reference_agent-config.md.DrW2JUM8.lean.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.D7JTR03W.js → reference_channels.md.DdmiKgqf.js} +4 -4
- package/dist/docs/assets/{reference_channels.md.D7JTR03W.lean.js → reference_channels.md.DdmiKgqf.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.DA730zCu.js → reference_cli.md.Bv6pOxcF.js} +11 -6
- package/dist/docs/assets/{reference_cli.md.DA730zCu.lean.js → reference_cli.md.Bv6pOxcF.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.C3vNH_DE.js → reference_connections.md.zaEYCLHT.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.BCEc3MyM.js → reference_hooks.md.DyLVfE1O.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.BCEc3MyM.lean.js → reference_hooks.md.DyLVfE1O.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.DBAahtdz.js → reference_http-api.md.Dx_nmDG6.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.BC05LEQ8.js → reference_instructions.md.CgoV-YEb.js} +9 -7
- package/dist/docs/assets/{reference_instructions.md.BC05LEQ8.lean.js → reference_instructions.md.CgoV-YEb.lean.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.D7qijxLk.js → reference_schedules.md.w_F2mXB6.js} +2 -2
- package/dist/docs/assets/{reference_skills.md.VQnlBT3Q.js → reference_skills.md.B_jHN7JL.js} +3 -3
- package/dist/docs/assets/{reference_skills.md.VQnlBT3Q.lean.js → reference_skills.md.B_jHN7JL.lean.js} +1 -1
- package/dist/docs/assets/{reference_subagents.md.CIRAVcPK.js → reference_subagents.md.zWAMNfi1.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.DF5kwlt0.js → reference_tools.md.CqgJroI0.js} +2 -2
- package/dist/docs/assets/scaffolding-agents.md.C3pTrmoE.js +1 -0
- package/dist/docs/assets/scaffolding-agents.md.C3pTrmoE.lean.js +1 -0
- package/dist/docs/assets/storage.md.CVnInNiN.js +17 -0
- package/dist/docs/assets/storage.md.CVnInNiN.lean.js +1 -0
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +7 -7
- package/dist/docs/evals.html +7 -7
- package/dist/docs/guides/agent-to-agent.html +6 -6
- package/dist/docs/guides/cloud-runtime.html +5 -5
- package/dist/docs/guides/github.html +14 -7
- package/dist/docs/guides/human-in-the-loop.html +6 -6
- package/dist/docs/guides/slack.html +8 -8
- package/dist/docs/guides/webhooks.html +6 -6
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +5 -5
- package/dist/docs/index.html +7 -7
- package/dist/docs/quickstart.html +195 -26
- package/dist/docs/reference/agent-config.html +7 -7
- package/dist/docs/reference/channels.html +8 -8
- package/dist/docs/reference/cli.html +14 -9
- package/dist/docs/reference/connections.html +5 -5
- package/dist/docs/reference/hooks.html +5 -5
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/instructions.html +13 -11
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +4 -4
- package/dist/docs/reference/schedules.html +7 -7
- package/dist/docs/reference/sessions.html +4 -4
- package/dist/docs/reference/skills.html +6 -6
- package/dist/docs/reference/subagents.html +6 -6
- package/dist/docs/reference/tools.html +7 -7
- package/dist/docs/scaffolding-agents.html +5 -5
- package/dist/docs/storage.html +41 -0
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/internal/chat-client.d.ts +29 -3
- package/dist/internal/chat-client.d.ts.map +1 -1
- package/dist/internal/chat-client.js +180 -27
- package/dist/internal/cli-ax.d.ts +75 -2
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +600 -52
- package/dist/internal/cli-cursor.d.ts.map +1 -1
- package/dist/internal/cli-cursor.js +8 -36
- package/dist/internal/cli-deploy.d.ts +108 -0
- package/dist/internal/cli-deploy.d.ts.map +1 -0
- package/dist/internal/cli-deploy.js +1009 -0
- package/dist/internal/cursor/backend-client.d.ts +10 -1
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +79 -1
- package/dist/internal/cursor/credentials.d.ts +9 -0
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +12 -0
- package/dist/internal/cursor/github-credentials.d.ts +44 -0
- package/dist/internal/cursor/github-credentials.d.ts.map +1 -0
- package/dist/internal/cursor/github-credentials.js +195 -0
- package/dist/internal/deploy-client.d.ts +184 -0
- package/dist/internal/deploy-client.d.ts.map +1 -0
- package/dist/internal/deploy-client.js +395 -0
- package/dist/internal/deploy-source.d.ts +35 -0
- package/dist/internal/deploy-source.d.ts.map +1 -0
- package/dist/internal/deploy-source.js +118 -0
- package/dist/internal/discovery.d.ts +11 -0
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +116 -19
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +1 -0
- package/dist/internal/eval-run-store.d.ts +22 -3
- package/dist/internal/eval-run-store.d.ts.map +1 -1
- package/dist/internal/eval-run-store.js +39 -20
- package/dist/internal/eval-runner.d.ts +2 -0
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +2 -0
- package/dist/internal/event-mapper.d.ts +54 -1
- package/dist/internal/event-mapper.d.ts.map +1 -1
- package/dist/internal/event-mapper.js +151 -41
- package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
- package/dist/internal/handleAgentServeTrigger.js +10 -12
- package/dist/internal/host-platforms.d.ts +7 -2
- package/dist/internal/host-platforms.d.ts.map +1 -1
- package/dist/internal/host-platforms.js +15 -10
- package/dist/internal/hosting.d.ts +37 -0
- package/dist/internal/hosting.d.ts.map +1 -0
- package/dist/internal/hosting.js +67 -0
- package/dist/internal/init-project.d.ts +88 -1
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +221 -31
- package/dist/internal/install-cursor-skills.d.ts +64 -0
- package/dist/internal/install-cursor-skills.d.ts.map +1 -0
- package/dist/internal/install-cursor-skills.js +274 -0
- package/dist/internal/logs-client.d.ts +60 -0
- package/dist/internal/logs-client.d.ts.map +1 -0
- package/dist/internal/logs-client.js +311 -0
- package/dist/internal/open-browser.d.ts +5 -0
- package/dist/internal/open-browser.d.ts.map +1 -0
- package/dist/internal/open-browser.js +34 -0
- package/dist/internal/playground/toolchain.d.ts.map +1 -1
- package/dist/internal/playground/toolchain.js +16 -11
- package/dist/internal/playground-proxy.d.ts +69 -0
- package/dist/internal/playground-proxy.d.ts.map +1 -0
- package/dist/internal/playground-proxy.js +468 -0
- package/dist/internal/prompt-context.d.ts +35 -0
- package/dist/internal/prompt-context.d.ts.map +1 -0
- package/dist/internal/prompt-context.js +71 -0
- package/dist/internal/reminder-runner.d.ts +7 -0
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +50 -6
- package/dist/internal/reminder-store.d.ts +2 -0
- package/dist/internal/reminder-store.d.ts.map +1 -1
- package/dist/internal/reminder-store.js +18 -0
- package/dist/internal/request-headers.d.ts +11 -0
- package/dist/internal/request-headers.d.ts.map +1 -0
- package/dist/internal/request-headers.js +14 -0
- package/dist/internal/resolve-prod-target.d.ts +42 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -0
- package/dist/internal/resolve-prod-target.js +111 -0
- package/dist/internal/run-client.d.ts +2 -2
- package/dist/internal/run-client.d.ts.map +1 -1
- package/dist/internal/run-client.js +38 -23
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +182 -45
- package/dist/internal/session-engine.d.ts +50 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +267 -23
- package/dist/internal/sessions-client.d.ts +21 -0
- package/dist/internal/sessions-client.d.ts.map +1 -0
- package/dist/internal/sessions-client.js +168 -0
- package/dist/internal/storage-coordinator.d.ts +139 -0
- package/dist/internal/storage-coordinator.d.ts.map +1 -0
- package/dist/internal/storage-coordinator.js +499 -0
- package/dist/internal/stream-progress.d.ts.map +1 -1
- package/dist/internal/stream-progress.js +31 -3
- package/dist/internal/terminal-style.d.ts +22 -0
- package/dist/internal/terminal-style.d.ts.map +1 -0
- package/dist/internal/terminal-style.js +49 -0
- package/dist/internal/trajectory.d.ts +10 -5
- package/dist/internal/trajectory.d.ts.map +1 -1
- package/dist/internal/trajectory.js +82 -10
- package/dist/internal/workspace.d.ts +11 -0
- package/dist/internal/workspace.d.ts.map +1 -1
- package/dist/internal/workspace.js +38 -4
- package/dist/playground/assets/cursor-icons-outline-BxTT_FVJ.woff2 +0 -0
- package/dist/playground/assets/index-D-vo2lV_.css +1 -0
- package/dist/playground/assets/index-x60b9q2j.js +312 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage.d.ts +204 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +153 -0
- package/dist/types.d.ts +70 -4
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +3 -2
- package/docs/guides/github.md +43 -8
- package/docs/guides/slack.md +1 -1
- package/docs/quickstart.md +350 -57
- package/docs/reference/cli.md +51 -3
- package/docs/reference/instructions.md +8 -6
- package/docs/scaffolding-agents.md +1 -1
- package/docs/storage.md +98 -0
- package/package.json +10 -1
- package/skills/ab/SKILL.md +8 -8
- package/skills/create-agent/SKILL.md +28 -22
- package/skills/debug/SKILL.md +11 -11
- package/skills/evals/SKILL.md +16 -16
- package/skills/framework-map/SKILL.md +6 -6
- package/skills/github/SKILL.md +22 -14
- package/skills/hillclimb/SKILL.md +10 -10
- package/skills/setup-slack/SKILL.md +13 -13
- package/src/bin/agent-serve.ts +552 -179
- package/src/channels/github/api.ts +42 -23
- package/src/channels/github/cursor-account.ts +165 -0
- package/src/channels/github/github-channel.ts +66 -6
- package/src/channels/github/index.ts +2 -2
- package/src/channels/github/types.ts +19 -0
- package/src/channels/slack/slack-channel.ts +17 -3
- package/src/channels/slack/types.ts +44 -3
- package/src/index.ts +13 -0
- package/src/internal/chat-client.ts +252 -37
- package/src/internal/cli-ax.ts +722 -72
- package/src/internal/cli-cursor.ts +14 -42
- package/src/internal/cli-deploy.ts +1319 -0
- package/src/internal/cursor/backend-client.ts +103 -1
- package/src/internal/cursor/credentials.ts +14 -0
- package/src/internal/cursor/github-credentials.ts +248 -0
- package/src/internal/deploy-client.ts +632 -0
- package/src/internal/deploy-source.ts +133 -0
- package/src/internal/discovery.ts +141 -17
- package/src/internal/distribution.ts +1 -0
- package/src/internal/eval-run-store.ts +50 -20
- package/src/internal/eval-runner.ts +5 -0
- package/src/internal/event-mapper.ts +222 -42
- package/src/internal/handleAgentServeTrigger.ts +10 -12
- package/src/internal/host-platforms.ts +28 -11
- package/src/internal/hosting.ts +77 -0
- package/src/internal/init-project.ts +333 -51
- package/src/internal/install-cursor-skills.ts +327 -0
- package/src/internal/logs-client.ts +442 -0
- package/src/internal/open-browser.ts +41 -0
- package/src/internal/playground/toolchain.ts +15 -13
- package/src/internal/playground-proxy.ts +576 -0
- package/src/internal/prompt-context.ts +95 -0
- package/src/internal/reminder-runner.ts +50 -6
- package/src/internal/reminder-store.ts +21 -0
- package/src/internal/request-headers.ts +23 -0
- package/src/internal/resolve-prod-target.ts +150 -0
- package/src/internal/run-client.ts +39 -36
- package/src/internal/server.ts +223 -28
- package/src/internal/session-engine.ts +307 -10
- package/src/internal/sessions-client.ts +182 -0
- package/src/internal/storage-coordinator.ts +615 -0
- package/src/internal/stream-progress.ts +36 -2
- package/src/internal/terminal-style.ts +74 -0
- package/src/internal/trajectory.ts +91 -13
- package/src/internal/workspace.ts +42 -4
- package/src/storage.ts +325 -0
- package/src/types.ts +82 -8
- package/dist/docs/assets/chunks/@localSearchIndexroot.CcVk1uKq.js +0 -1
- package/dist/docs/assets/index.md.BPKcj5AI.js +0 -20
- package/dist/docs/assets/quickstart.md.tVPiGK_L.js +0 -35
- package/dist/docs/assets/quickstart.md.tVPiGK_L.lean.js +0 -1
- package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.js +0 -1
- package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.lean.js +0 -1
- package/dist/playground/assets/cursor-icons-outline-oY2V_mvK.woff2 +0 -0
- package/dist/playground/assets/index-1K-hG-7p.css +0 -1
- package/dist/playground/assets/index-FlWjhg3x.js +0 -79
- /package/dist/docs/assets/{evals.md.DPZ_MAnI.lean.js → evals.md.DAgEc_hL.lean.js} +0 -0
- /package/dist/docs/assets/{guides_agent-to-agent.md.CrtrsySy.lean.js → guides_agent-to-agent.md.Bpzgq2Pq.lean.js} +0 -0
- /package/dist/docs/assets/{guides_cloud-runtime.md.CYlNMTNp.lean.js → guides_cloud-runtime.md.gVzabdQL.lean.js} +0 -0
- /package/dist/docs/assets/{guides_human-in-the-loop.md.Dvuctx7s.lean.js → guides_human-in-the-loop.md.DlUqsp1S.lean.js} +0 -0
- /package/dist/docs/assets/{guides_webhooks.md.hFTik3lf.lean.js → guides_webhooks.md.B1EswtUu.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.C3vNH_DE.lean.js → reference_connections.md.zaEYCLHT.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.DBAahtdz.lean.js → reference_http-api.md.Dx_nmDG6.lean.js} +0 -0
- /package/dist/docs/assets/{reference_schedules.md.D7qijxLk.lean.js → reference_schedules.md.w_F2mXB6.lean.js} +0 -0
- /package/dist/docs/assets/{reference_subagents.md.CIRAVcPK.lean.js → reference_subagents.md.zWAMNfi1.lean.js} +0 -0
- /package/dist/docs/assets/{reference_tools.md.DF5kwlt0.lean.js → reference_tools.md.CqgJroI0.lean.js} +0 -0
|
@@ -35,8 +35,10 @@ import { registerAuthoredModuleLoaders } from "./authored-loaders.js";
|
|
|
35
35
|
import { getDefinitionKind } from "./brand.js";
|
|
36
36
|
import { isValidCron } from "./cron.js";
|
|
37
37
|
import { parseFrontmatter } from "./frontmatter.js";
|
|
38
|
+
import { isReservedSecretName, MAX_EGRESS_DOMAINS, validateEgressDomain, validateSecretName, } from "./hosting.js";
|
|
38
39
|
import { toolInputJsonSchema } from "./json-schema.js";
|
|
39
40
|
import { MCP_ENDPOINT_PATH, mcpEndpointToolNames } from "./mcp-endpoint.js";
|
|
41
|
+
import { withIdentityPreamble } from "./workspace.js";
|
|
40
42
|
const MODULE_EXTENSIONS = new Set([".ts", ".mts", ".js", ".mjs"]);
|
|
41
43
|
const NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]*$/;
|
|
42
44
|
const SKILL_DESCRIPTION_FALLBACK = (name) => `Instructions for the ${name} skill.`;
|
|
@@ -63,17 +65,15 @@ export function isAgentProjectDir(dir) {
|
|
|
63
65
|
});
|
|
64
66
|
}
|
|
65
67
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* multi-agent serving, where one server hosts many agents under
|
|
70
|
-
* `/<slug>/...`. Throws when no child projects are found.
|
|
68
|
+
* List agent projects directly under `rootDir` (one level deep) without
|
|
69
|
+
* loading them. Empty when the path is missing or has no child agents.
|
|
70
|
+
* Slug rules match {@link loadAgentProjects} / multi-agent serve.
|
|
71
71
|
*/
|
|
72
|
-
export function
|
|
73
|
-
return __awaiter(this,
|
|
72
|
+
export function listChildAgentDirs(rootDir) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
74
|
const resolved = resolve(rootDir);
|
|
75
75
|
if (!(yield isDirectory(resolved))) {
|
|
76
|
-
|
|
76
|
+
return [];
|
|
77
77
|
}
|
|
78
78
|
const results = [];
|
|
79
79
|
const seenSlugs = new Set();
|
|
@@ -93,11 +93,35 @@ export function loadAgentProjects(rootDir_1) {
|
|
|
93
93
|
throw new Error(`Duplicate agent slug "${slug}" under ${resolved}.`);
|
|
94
94
|
}
|
|
95
95
|
seenSlugs.add(slug);
|
|
96
|
-
results.push({ slug,
|
|
96
|
+
results.push({ slug, dir: childDir });
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
return results;
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Discover the agent projects directly under `rootDir` (one level deep):
|
|
103
|
+
* each immediate child directory that is itself an agent project becomes a
|
|
104
|
+
* mounted agent, keyed by a slug derived from its directory name. Used for
|
|
105
|
+
* multi-agent serving, where one server hosts many agents under
|
|
106
|
+
* `/<slug>/...`. Throws when no child projects are found.
|
|
107
|
+
*/
|
|
108
|
+
export function loadAgentProjects(rootDir_1) {
|
|
109
|
+
return __awaiter(this, arguments, void 0, function* (rootDir, options = {}) {
|
|
110
|
+
const resolved = resolve(rootDir);
|
|
111
|
+
if (!(yield isDirectory(resolved))) {
|
|
112
|
+
throw new Error(`Agent projects directory does not exist: ${resolved}`);
|
|
113
|
+
}
|
|
114
|
+
const children = yield listChildAgentDirs(resolved);
|
|
115
|
+
if (children.length === 0) {
|
|
99
116
|
throw new Error(`No agent projects found directly under ${resolved}. Each agent should be a subdirectory with its own agent/ directory (or flat-layout markers).`);
|
|
100
117
|
}
|
|
118
|
+
const results = [];
|
|
119
|
+
for (const child of children) {
|
|
120
|
+
results.push({
|
|
121
|
+
slug: child.slug,
|
|
122
|
+
project: yield loadAgentProject(child.dir, options),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
101
125
|
return results;
|
|
102
126
|
});
|
|
103
127
|
}
|
|
@@ -176,14 +200,24 @@ export function loadAgentProject(dir_1) {
|
|
|
176
200
|
const hooks = yield loadHooks(ctx, join(agentDir, "hooks"));
|
|
177
201
|
const abs = yield loadABs(ctx, agentDir);
|
|
178
202
|
const abConfig = yield loadABConfig(ctx, agentDir);
|
|
203
|
+
const storage = yield loadStorage(ctx, agentDir);
|
|
179
204
|
if (agentDir !== rootDir) {
|
|
180
205
|
yield warnUnknownSlots(ctx, agentDir);
|
|
181
206
|
}
|
|
182
|
-
return
|
|
183
|
-
|
|
207
|
+
return {
|
|
208
|
+
rootDir,
|
|
209
|
+
agentDir,
|
|
210
|
+
name: agent.name,
|
|
211
|
+
agent,
|
|
212
|
+
httpChannel: httpChannelDefinition !== null && httpChannelDefinition !== void 0 ? httpChannelDefinition : httpChannel(),
|
|
213
|
+
channels,
|
|
184
214
|
schedules,
|
|
185
215
|
hooks,
|
|
186
|
-
abs
|
|
216
|
+
abs,
|
|
217
|
+
abConfig,
|
|
218
|
+
storage,
|
|
219
|
+
diagnostics,
|
|
220
|
+
};
|
|
187
221
|
});
|
|
188
222
|
}
|
|
189
223
|
/** True when the project has diagnostics that must block serving. */
|
|
@@ -204,15 +238,21 @@ export function formatDiagnostics(diagnostics) {
|
|
|
204
238
|
function loadAgent(ctx, agentDir, options) {
|
|
205
239
|
return __awaiter(this, void 0, void 0, function* () {
|
|
206
240
|
var _a;
|
|
207
|
-
var _b
|
|
241
|
+
var _b;
|
|
208
242
|
const config = yield loadAgentConfig(ctx, agentDir, options.isRoot);
|
|
209
|
-
const
|
|
243
|
+
const name = (_b = config === null || config === void 0 ? void 0 : config.name) !== null && _b !== void 0 ? _b : options.name;
|
|
244
|
+
const authoredInstructions = yield loadInstructions(ctx, agentDir, config, options.isRoot);
|
|
245
|
+
// Root agents without authored instructions stay undefined (diagnostic
|
|
246
|
+
// already recorded). Subagents still get the identity line alone.
|
|
247
|
+
const instructions = authoredInstructions === undefined && options.isRoot
|
|
248
|
+
? undefined
|
|
249
|
+
: withIdentityPreamble(name, authoredInstructions);
|
|
210
250
|
// Subagents run as Cursor SDK custom subagents (prompt + description +
|
|
211
251
|
// model); their other slots are inert today, so don't load them — just
|
|
212
252
|
// warn that they exist.
|
|
213
253
|
if (!options.isRoot) {
|
|
214
254
|
yield warnUnsupportedSubagentSlots(ctx, agentDir);
|
|
215
|
-
return Object.assign(Object.assign(Object.assign(Object.assign({ name
|
|
255
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({ name }, ((config === null || config === void 0 ? void 0 : config.description) === undefined
|
|
216
256
|
? {}
|
|
217
257
|
: { description: config.description })), ((config === null || config === void 0 ? void 0 : config.model) === undefined ? {} : { model: config.model })), (instructions === undefined ? {} : { instructions })), { runtime: "local", tools: [], skills: [], connections: [], subagents: [], seedFiles: [] });
|
|
218
258
|
}
|
|
@@ -231,6 +271,7 @@ function loadAgent(ctx, agentDir, options) {
|
|
|
231
271
|
: {
|
|
232
272
|
cwd: localCwd,
|
|
233
273
|
};
|
|
274
|
+
const hosting = resolveHosting(ctx, agentDir, config === null || config === void 0 ? void 0 : config.hosting);
|
|
234
275
|
if (runtime === "cloud") {
|
|
235
276
|
warnCloudRuntimeLimitations(ctx, agentDir, {
|
|
236
277
|
serverTools: tools.filter((tool) => tool.execution === "server").length,
|
|
@@ -241,7 +282,7 @@ function loadAgent(ctx, agentDir, options) {
|
|
|
241
282
|
});
|
|
242
283
|
}
|
|
243
284
|
return {
|
|
244
|
-
name
|
|
285
|
+
name,
|
|
245
286
|
description: config === null || config === void 0 ? void 0 : config.description,
|
|
246
287
|
// Root agents always get a concrete model: authored value or DEFAULT_MODEL.
|
|
247
288
|
model: isValidModelSetting(config === null || config === void 0 ? void 0 : config.model) ? config.model : DEFAULT_MODEL,
|
|
@@ -249,6 +290,7 @@ function loadAgent(ctx, agentDir, options) {
|
|
|
249
290
|
runtime,
|
|
250
291
|
cloud,
|
|
251
292
|
local,
|
|
293
|
+
hosting,
|
|
252
294
|
tools,
|
|
253
295
|
skills,
|
|
254
296
|
connections,
|
|
@@ -268,6 +310,46 @@ function resolveAgentCwd(ctx, authored) {
|
|
|
268
310
|
}
|
|
269
311
|
return isAbsolute(trimmed) ? trimmed : resolve(ctx.rootDir, trimmed);
|
|
270
312
|
}
|
|
313
|
+
/**
|
|
314
|
+
* Validate the authored `hosting` block against the same grammar the
|
|
315
|
+
* backend enforces on deploy. Violations are warning diagnostics (reported
|
|
316
|
+
* by `agentkit validate`), not hard failures: the backend stays
|
|
317
|
+
* authoritative and `agentkit deploy` re-checks before any network call.
|
|
318
|
+
*/
|
|
319
|
+
function resolveHosting(ctx, agentDir, hosting) {
|
|
320
|
+
var _a, _b;
|
|
321
|
+
if (hosting === undefined) {
|
|
322
|
+
return undefined;
|
|
323
|
+
}
|
|
324
|
+
const agentPath = displayPath(ctx, join(agentDir, "agent.ts"));
|
|
325
|
+
const warn = (message) => {
|
|
326
|
+
ctx.diagnostics.push({ severity: "warning", path: agentPath, message });
|
|
327
|
+
};
|
|
328
|
+
const egressDomains = (_a = hosting.egressDomains) !== null && _a !== void 0 ? _a : [];
|
|
329
|
+
for (const domain of egressDomains) {
|
|
330
|
+
const domainError = validateEgressDomain(domain);
|
|
331
|
+
if (domainError !== undefined) {
|
|
332
|
+
warn(`hosting.egressDomains: ${domainError}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
if (egressDomains.length > MAX_EGRESS_DOMAINS) {
|
|
336
|
+
warn(`hosting.egressDomains lists ${egressDomains.length} domains; deploys are capped at ${MAX_EGRESS_DOMAINS}.`);
|
|
337
|
+
}
|
|
338
|
+
for (const name of (_b = hosting.secretNames) !== null && _b !== void 0 ? _b : []) {
|
|
339
|
+
const nameError = validateSecretName(name);
|
|
340
|
+
if (nameError !== undefined) {
|
|
341
|
+
warn(`hosting.secretNames: ${nameError}`);
|
|
342
|
+
}
|
|
343
|
+
else if (isReservedSecretName(name)) {
|
|
344
|
+
warn(`hosting.secretNames: ${JSON.stringify(name)} is platform-reserved (CURSOR_*) and injected automatically; it cannot be set with \`secrets set\`.`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return Object.assign(Object.assign({}, (hosting.egressDomains === undefined
|
|
348
|
+
? {}
|
|
349
|
+
: { egressDomains: [...hosting.egressDomains] })), (hosting.secretNames === undefined
|
|
350
|
+
? {}
|
|
351
|
+
: { secretNames: [...hosting.secretNames] }));
|
|
352
|
+
}
|
|
271
353
|
function loadAgentConfig(ctx, agentDir, isRoot) {
|
|
272
354
|
return __awaiter(this, void 0, void 0, function* () {
|
|
273
355
|
const configPath = yield findModuleFile(agentDir, "agent");
|
|
@@ -1088,6 +1170,19 @@ function loadABConfig(ctx, agentDir) {
|
|
|
1088
1170
|
}
|
|
1089
1171
|
});
|
|
1090
1172
|
}
|
|
1173
|
+
// ============================================================================
|
|
1174
|
+
// Storage (agent/storage.ts)
|
|
1175
|
+
// ============================================================================
|
|
1176
|
+
function loadStorage(ctx, agentDir) {
|
|
1177
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1178
|
+
const path = yield findModuleFile(agentDir, "storage");
|
|
1179
|
+
if (path === undefined) {
|
|
1180
|
+
return undefined;
|
|
1181
|
+
}
|
|
1182
|
+
const definition = yield importDefault(ctx, path, "storage");
|
|
1183
|
+
return definition;
|
|
1184
|
+
});
|
|
1185
|
+
}
|
|
1091
1186
|
function resolveABName(definition, fallback) {
|
|
1092
1187
|
if (typeof definition === "object" &&
|
|
1093
1188
|
definition !== null &&
|
|
@@ -1161,7 +1256,7 @@ export function projectInfo(project) {
|
|
|
1161
1256
|
url: "/v1/session/:sessionId/approvals/:callId",
|
|
1162
1257
|
},
|
|
1163
1258
|
];
|
|
1164
|
-
return Object.assign(Object.assign({ name: project.name, model: agent.model, runtime: agent.runtime, cloud: agent.cloud === undefined ? undefined : toPublicCloudInfo(agent.cloud), local: agent.local, mcp: { path: MCP_ENDPOINT_PATH, tools: mcpEndpointToolNames(project) }, instructions: agent.instructions === undefined
|
|
1259
|
+
return Object.assign(Object.assign({ name: project.name, model: agent.model, runtime: agent.runtime, cloud: agent.cloud === undefined ? undefined : toPublicCloudInfo(agent.cloud), local: agent.local, hosting: agent.hosting, mcp: { path: MCP_ENDPOINT_PATH, tools: mcpEndpointToolNames(project) }, instructions: agent.instructions === undefined
|
|
1165
1260
|
? undefined
|
|
1166
1261
|
: {
|
|
1167
1262
|
chars: agent.instructions.length,
|
|
@@ -1232,7 +1327,9 @@ export function projectInfo(project) {
|
|
|
1232
1327
|
durableSamples: ((_b = project.abConfig) === null || _b === void 0 ? void 0 : _b.persistSamples) !== undefined,
|
|
1233
1328
|
durableSnapshots: ((_c = project.abConfig) === null || _c === void 0 ? void 0 : _c.persistSnapshots) !== undefined,
|
|
1234
1329
|
},
|
|
1235
|
-
})), {
|
|
1330
|
+
})), { storage: project.storage === undefined
|
|
1331
|
+
? undefined
|
|
1332
|
+
: { name: project.storage.name }, diagnostics: project.diagnostics });
|
|
1236
1333
|
}
|
|
1237
1334
|
// ============================================================================
|
|
1238
1335
|
// Shared helpers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/internal/distribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,qEAAqE;AACrE,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAA+B,CAAC;AAc/D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/internal/distribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,qEAAqE;AACrE,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAA+B,CAAC;AAc/D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAezC,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Runs against the live mount's loopback URL so case sessions appear in
|
|
7
7
|
* the playground session list.
|
|
8
8
|
*/
|
|
9
|
-
import { type EvalRunSnapshot } from "../evals.js";
|
|
9
|
+
import { type EvalRunPersistence, type EvalRunSnapshot } from "../evals.js";
|
|
10
10
|
export type { EvalBatchStatus, EvalCaseRunStatus as EvalCaseStatus, EvalCaseSnapshot, EvalRunSnapshot, } from "../evals.js";
|
|
11
11
|
export interface StartEvalRunInput {
|
|
12
12
|
filterIds?: string[];
|
|
@@ -24,6 +24,11 @@ export type EvalListConfig = {
|
|
|
24
24
|
export declare class EvalRunStore {
|
|
25
25
|
private readonly projectRoot;
|
|
26
26
|
private readonly logger;
|
|
27
|
+
/**
|
|
28
|
+
* Project-wide sink from `agent/storage.ts` (`defineStorage`),
|
|
29
|
+
* used when `evals.config.ts` sets no `persistRuns` of its own.
|
|
30
|
+
*/
|
|
31
|
+
private readonly fallbackPersistence?;
|
|
27
32
|
private readonly runs;
|
|
28
33
|
private activeRunId;
|
|
29
34
|
private hydratePromise;
|
|
@@ -32,7 +37,14 @@ export declare class EvalRunStore {
|
|
|
32
37
|
private readonly persistChains;
|
|
33
38
|
/** Filled after listen — e.g. `http://127.0.0.1:3000/weather-agent`. */
|
|
34
39
|
loopbackUrl: string | undefined;
|
|
35
|
-
constructor(projectRoot: string, logger: (line: string) => void
|
|
40
|
+
constructor(projectRoot: string, logger: (line: string) => void,
|
|
41
|
+
/**
|
|
42
|
+
* Project-wide sink from `agent/storage.ts` (`defineStorage`),
|
|
43
|
+
* used when `evals.config.ts` sets no `persistRuns` of its own.
|
|
44
|
+
*/
|
|
45
|
+
fallbackPersistence?: EvalRunPersistence | undefined);
|
|
46
|
+
/** `evals.config.ts` `persistRuns` wins; `defineStorage` is fallback. */
|
|
47
|
+
private resolvePersist;
|
|
36
48
|
list(): Promise<{
|
|
37
49
|
evals: Array<{
|
|
38
50
|
id: string;
|
|
@@ -57,7 +69,14 @@ export declare class EvalRunStore {
|
|
|
57
69
|
getActiveRunId(): string | undefined;
|
|
58
70
|
start(input?: StartEvalRunInput): Promise<EvalRunSnapshot>;
|
|
59
71
|
private sortedRuns;
|
|
60
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Hydrate playground eval history from durable persistence
|
|
74
|
+
* (`evals.config.ts` `persistRuns`, else the `defineStorage`
|
|
75
|
+
* fallback). Called eagerly from the serve startup restore step —
|
|
76
|
+
* alongside session restore — and lazily as a safety net by every read.
|
|
77
|
+
* Idempotent; concurrent callers share one pass.
|
|
78
|
+
*/
|
|
79
|
+
hydrate(): Promise<void>;
|
|
61
80
|
private hydrateFromPersistence;
|
|
62
81
|
private pruneOldRuns;
|
|
63
82
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval-run-store.d.ts","sourceRoot":"","sources":["../../src/internal/eval-run-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"eval-run-store.d.ts","sourceRoot":"","sources":["../../src/internal/eval-run-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAErB,MAAM,aAAa,CAAC;AASrB,YAAY,EACV,eAAe,EACf,iBAAiB,IAAI,cAAc,EACnC,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAOF,qBAAa,YAAY;IAWrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAhBvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsC;IAC3D,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAS;IACzB,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoC;IAClE,wEAAwE;IACxE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,YACmB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAC/C;;;OAGG;IACc,mBAAmB,CAAC,EAAE,kBAAkB,YAAA,EACvD;IAEJ,yEAAyE;IACzE,OAAO,CAAC,cAAc;IAMhB,IAAI,IAAI,OAAO,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,MAAM,CAAC;YACf,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC,CAAC;QACH,MAAM,EAAE,cAAc,CAAC;KACxB,CAAC,CAiBD;IAEK,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAG7D;IAED,+EAA+E;IACzE,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAG3C;IAED;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC;QAClC,IAAI,EAAE,eAAe,EAAE,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAOD;IAED,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEK,KAAK,CAAC,KAAK,GAAE,iBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CA+DnE;IAED,OAAO,CAAC,UAAU;IAMlB;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ7B;YAEa,sBAAsB;YAkDtB,YAAY;IAe1B;;;;OAIG;IACH,OAAO,CAAC,cAAc;YAgBR,WAAW;YAcX,aAAa;YAiBb,OAAO;IAoGrB,OAAO,CAAC,eAAe;CAqCxB;AAwDD,qBAAa,oBAAqB,SAAQ,KAAK;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAAxC,YAAqB,WAAW,EAAE,MAAM,EAGvC;CACF;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,cAGC;CACF"}
|
|
@@ -21,36 +21,47 @@ import { discoverEvals, filterDiscoveredEvals, runDiscoveredEvals, } from "./eva
|
|
|
21
21
|
const INTERRUPTED_BATCH_ERROR = "Eval run interrupted (serve process exited before completion)";
|
|
22
22
|
const INTERRUPTED_CASE_ERROR = "Eval case interrupted (serve process exited before completion)";
|
|
23
23
|
export class EvalRunStore {
|
|
24
|
-
constructor(projectRoot, logger
|
|
24
|
+
constructor(projectRoot, logger,
|
|
25
|
+
/**
|
|
26
|
+
* Project-wide sink from `agent/storage.ts` (`defineStorage`),
|
|
27
|
+
* used when `evals.config.ts` sets no `persistRuns` of its own.
|
|
28
|
+
*/
|
|
29
|
+
fallbackPersistence) {
|
|
25
30
|
this.projectRoot = projectRoot;
|
|
26
31
|
this.logger = logger;
|
|
32
|
+
this.fallbackPersistence = fallbackPersistence;
|
|
27
33
|
this.runs = new Map();
|
|
28
34
|
this.hydrated = false;
|
|
29
35
|
/** Per-run persist chain so intermediate saves cannot overwrite a later final write. */
|
|
30
36
|
this.persistChains = new Map();
|
|
31
37
|
}
|
|
38
|
+
/** `evals.config.ts` `persistRuns` wins; `defineStorage` is fallback. */
|
|
39
|
+
resolvePersist(config) {
|
|
40
|
+
var _a;
|
|
41
|
+
return (_a = config.persistRuns) !== null && _a !== void 0 ? _a : this.fallbackPersistence;
|
|
42
|
+
}
|
|
32
43
|
list() {
|
|
33
44
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
yield this.
|
|
45
|
+
yield this.hydrate();
|
|
35
46
|
const { evals, config } = yield discoverEvals(this.projectRoot);
|
|
36
47
|
return {
|
|
37
48
|
evals: evals.map((e) => (Object.assign(Object.assign({ id: e.id, fileId: e.fileId }, (e.definition.description === undefined
|
|
38
49
|
? {}
|
|
39
50
|
: { description: e.definition.description })), (e.definition.tags === undefined ? {} : { tags: e.definition.tags })))),
|
|
40
|
-
config: snapshotListConfig(config),
|
|
51
|
+
config: snapshotListConfig(config, this.resolvePersist(config) !== undefined),
|
|
41
52
|
};
|
|
42
53
|
});
|
|
43
54
|
}
|
|
44
55
|
get(runId) {
|
|
45
56
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
yield this.
|
|
57
|
+
yield this.hydrate();
|
|
47
58
|
return this.runs.get(runId);
|
|
48
59
|
});
|
|
49
60
|
}
|
|
50
61
|
/** Newest-first snapshots for playground rehydrate after navigation/reload. */
|
|
51
62
|
listRuns() {
|
|
52
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
-
yield this.
|
|
64
|
+
yield this.hydrate();
|
|
54
65
|
return this.sortedRuns();
|
|
55
66
|
});
|
|
56
67
|
}
|
|
@@ -61,7 +72,7 @@ export class EvalRunStore {
|
|
|
61
72
|
*/
|
|
62
73
|
listRunsWithActive() {
|
|
63
74
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
yield this.
|
|
75
|
+
yield this.hydrate();
|
|
65
76
|
const activeRunId = this.activeRunId;
|
|
66
77
|
return Object.assign({ runs: this.sortedRuns() }, (activeRunId === undefined ? {} : { activeRunId }));
|
|
67
78
|
});
|
|
@@ -71,7 +82,7 @@ export class EvalRunStore {
|
|
|
71
82
|
}
|
|
72
83
|
start() {
|
|
73
84
|
return __awaiter(this, arguments, void 0, function* (input = {}) {
|
|
74
|
-
yield this.
|
|
85
|
+
yield this.hydrate();
|
|
75
86
|
if (this.activeRunId !== undefined) {
|
|
76
87
|
const active = this.runs.get(this.activeRunId);
|
|
77
88
|
if (active !== undefined && active.status === "running") {
|
|
@@ -103,12 +114,12 @@ export class EvalRunStore {
|
|
|
103
114
|
done: 0,
|
|
104
115
|
},
|
|
105
116
|
cases,
|
|
106
|
-
config: snapshotRunConfig(config),
|
|
117
|
+
config: snapshotRunConfig(config, this.resolvePersist(config) !== undefined),
|
|
107
118
|
};
|
|
108
119
|
this.runs.set(runId, snapshot);
|
|
109
120
|
this.activeRunId = runId;
|
|
110
121
|
yield this.pruneOldRuns(config);
|
|
111
|
-
yield this.enqueuePersist(snapshot, config
|
|
122
|
+
yield this.enqueuePersist(snapshot, this.resolvePersist(config));
|
|
112
123
|
this.logger(`[agent-serve] eval run ${runId}: starting ${cases.length} case(s)`);
|
|
113
124
|
void this.execute(runId, Object.assign(Object.assign({ baseUrl: loopbackUrl, evals: selected, config }, (input.bearerToken === undefined
|
|
114
125
|
? {}
|
|
@@ -119,7 +130,14 @@ export class EvalRunStore {
|
|
|
119
130
|
sortedRuns() {
|
|
120
131
|
return [...this.runs.values()].sort((a, b) => b.startedAt.localeCompare(a.startedAt));
|
|
121
132
|
}
|
|
122
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Hydrate playground eval history from durable persistence
|
|
135
|
+
* (`evals.config.ts` `persistRuns`, else the `defineStorage`
|
|
136
|
+
* fallback). Called eagerly from the serve startup restore step —
|
|
137
|
+
* alongside session restore — and lazily as a safety net by every read.
|
|
138
|
+
* Idempotent; concurrent callers share one pass.
|
|
139
|
+
*/
|
|
140
|
+
hydrate() {
|
|
123
141
|
return __awaiter(this, void 0, void 0, function* () {
|
|
124
142
|
if (this.hydrated) {
|
|
125
143
|
return;
|
|
@@ -134,7 +152,7 @@ export class EvalRunStore {
|
|
|
134
152
|
return __awaiter(this, void 0, void 0, function* () {
|
|
135
153
|
try {
|
|
136
154
|
const { config } = yield discoverEvals(this.projectRoot);
|
|
137
|
-
const persist = config
|
|
155
|
+
const persist = this.resolvePersist(config);
|
|
138
156
|
if (persist === undefined) {
|
|
139
157
|
this.hydrated = true;
|
|
140
158
|
return;
|
|
@@ -187,7 +205,7 @@ export class EvalRunStore {
|
|
|
187
205
|
continue;
|
|
188
206
|
}
|
|
189
207
|
this.runs.delete(stale.runId);
|
|
190
|
-
yield this.persistDelete(stale.runId, config
|
|
208
|
+
yield this.persistDelete(stale.runId, this.resolvePersist(config));
|
|
191
209
|
}
|
|
192
210
|
});
|
|
193
211
|
}
|
|
@@ -276,14 +294,15 @@ export class EvalRunStore {
|
|
|
276
294
|
c.inputs = [...((_c = c.inputs) !== null && _c !== void 0 ? _c : []), event.data.text];
|
|
277
295
|
}
|
|
278
296
|
if (event.type === "message.completed" &&
|
|
279
|
-
typeof ((_b = event.data) === null || _b === void 0 ? void 0 : _b.text) === "string"
|
|
297
|
+
typeof ((_b = event.data) === null || _b === void 0 ? void 0 : _b.text) === "string" &&
|
|
298
|
+
event.data.parentCallId === undefined) {
|
|
280
299
|
c.finalText = event.data.text;
|
|
281
300
|
}
|
|
282
301
|
}, onCaseDone: (result) => {
|
|
283
302
|
this.applyCaseResult(runId, result);
|
|
284
303
|
const run = this.runs.get(runId);
|
|
285
304
|
if (run !== undefined) {
|
|
286
|
-
void this.enqueuePersist(run, opts.config
|
|
305
|
+
void this.enqueuePersist(run, this.resolvePersist(opts.config));
|
|
287
306
|
}
|
|
288
307
|
} }));
|
|
289
308
|
const run = this.runs.get(runId);
|
|
@@ -292,7 +311,7 @@ export class EvalRunStore {
|
|
|
292
311
|
}
|
|
293
312
|
run.status = "completed";
|
|
294
313
|
run.finishedAt = new Date().toISOString();
|
|
295
|
-
yield this.enqueuePersist(run, opts.config
|
|
314
|
+
yield this.enqueuePersist(run, this.resolvePersist(opts.config));
|
|
296
315
|
this.logger(`[agent-serve] eval run ${runId}: done — ${run.summary.passed} passed, ${run.summary.failed} failed`);
|
|
297
316
|
}
|
|
298
317
|
catch (error) {
|
|
@@ -303,7 +322,7 @@ export class EvalRunStore {
|
|
|
303
322
|
run.status = "failed";
|
|
304
323
|
run.finishedAt = new Date().toISOString();
|
|
305
324
|
run.error = error instanceof Error ? error.message : String(error);
|
|
306
|
-
yield this.enqueuePersist(run, opts.config
|
|
325
|
+
yield this.enqueuePersist(run, this.resolvePersist(opts.config));
|
|
307
326
|
this.logger(`[agent-serve] eval run ${runId}: failed — ${run.error}`);
|
|
308
327
|
}
|
|
309
328
|
finally {
|
|
@@ -365,13 +384,13 @@ function markInterruptedRun(run) {
|
|
|
365
384
|
}
|
|
366
385
|
}
|
|
367
386
|
}
|
|
368
|
-
function snapshotListConfig(config) {
|
|
387
|
+
function snapshotListConfig(config, durableRuns) {
|
|
369
388
|
return Object.assign(Object.assign(Object.assign({}, (config.maxConcurrency === undefined
|
|
370
389
|
? {}
|
|
371
|
-
: { maxConcurrency: config.maxConcurrency })), (config.timeoutMs === undefined ? {} : { timeoutMs: config.timeoutMs })), { maxPlaygroundRuns: resolveEvalMaxPlaygroundRuns(config.maxPlaygroundRuns), durableRuns
|
|
390
|
+
: { maxConcurrency: config.maxConcurrency })), (config.timeoutMs === undefined ? {} : { timeoutMs: config.timeoutMs })), { maxPlaygroundRuns: resolveEvalMaxPlaygroundRuns(config.maxPlaygroundRuns), durableRuns });
|
|
372
391
|
}
|
|
373
|
-
function snapshotRunConfig(config) {
|
|
374
|
-
const list = snapshotListConfig(config);
|
|
392
|
+
function snapshotRunConfig(config, durableRuns) {
|
|
393
|
+
const list = snapshotListConfig(config, durableRuns);
|
|
375
394
|
return Object.assign(Object.assign(Object.assign({}, (list.maxConcurrency === undefined
|
|
376
395
|
? {}
|
|
377
396
|
: { maxConcurrency: list.maxConcurrency })), (list.timeoutMs === undefined ? {} : { timeoutMs: list.timeoutMs })), { maxPlaygroundRuns: list.maxPlaygroundRuns, durableRuns: list.durableRuns });
|
|
@@ -48,6 +48,8 @@ export interface RunEvalsOptions extends EvalSelectionOptions {
|
|
|
48
48
|
baseUrl: string;
|
|
49
49
|
timeoutMs?: number;
|
|
50
50
|
bearerToken?: string;
|
|
51
|
+
/** Extra request headers (e.g. hosted engineAccess). */
|
|
52
|
+
headers?: Record<string, string>;
|
|
51
53
|
verbose?: boolean;
|
|
52
54
|
onEvent?: (event: SessionEvent) => void;
|
|
53
55
|
/** Fired when a case begins executing (after concurrency slot acquired). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval-runner.d.ts","sourceRoot":"","sources":["../../src/internal/eval-runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"eval-runner.d.ts","sourceRoot":"","sources":["../../src/internal/eval-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -149,6 +149,7 @@ export function runDiscoveredEvals(options) {
|
|
|
149
149
|
baseUrl: options.baseUrl,
|
|
150
150
|
defaultTimeoutMs,
|
|
151
151
|
bearerToken: options.bearerToken,
|
|
152
|
+
headers: options.headers,
|
|
152
153
|
verbose: Boolean(options.verbose),
|
|
153
154
|
onEvent: (event) => {
|
|
154
155
|
var _a, _b;
|
|
@@ -209,6 +210,7 @@ function runOneEval(discovered, opts) {
|
|
|
209
210
|
// Keep defineEval traffic out of live defineAB enrollment/metrics.
|
|
210
211
|
purpose: "eval",
|
|
211
212
|
bearerToken: opts.bearerToken,
|
|
213
|
+
headers: opts.headers,
|
|
212
214
|
workspaceDir: options.workspaceDir,
|
|
213
215
|
workspaceFiles: options.workspaceFiles,
|
|
214
216
|
timeoutMs,
|
|
@@ -3,8 +3,53 @@
|
|
|
3
3
|
* (`InteractionUpdate`) onto the framework's channel event vocabulary
|
|
4
4
|
* (`SessionEvent` payloads). One mapper instance covers one turn.
|
|
5
5
|
*/
|
|
6
|
-
import type { InteractionUpdate, ToolCall } from "@cursor/sdk";
|
|
6
|
+
import type { InteractionUpdate as SdkInteractionUpdate, ToolCall } from "@cursor/sdk";
|
|
7
7
|
import type { SessionEventPayload, TurnUsage } from "../types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Nested interaction updates from a task/subagent tool-call-delta.
|
|
10
|
+
* Mirrored locally so agent-serve typechecks against published `@cursor/sdk`
|
|
11
|
+
* versions that do not yet export `NestedTaskUpdate` / `tool-call-delta`.
|
|
12
|
+
*/
|
|
13
|
+
type NestedTaskUpdate = {
|
|
14
|
+
type: "text-delta";
|
|
15
|
+
text: string;
|
|
16
|
+
} | {
|
|
17
|
+
type: "thinking-delta";
|
|
18
|
+
text: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: "thinking-completed";
|
|
21
|
+
thinkingDurationMs: number;
|
|
22
|
+
} | {
|
|
23
|
+
type: "tool-call-started";
|
|
24
|
+
callId: string;
|
|
25
|
+
toolCall: ToolCall;
|
|
26
|
+
modelCallId: string;
|
|
27
|
+
} | {
|
|
28
|
+
type: "tool-call-completed";
|
|
29
|
+
callId: string;
|
|
30
|
+
toolCall: ToolCall;
|
|
31
|
+
modelCallId: string;
|
|
32
|
+
} | {
|
|
33
|
+
type: "partial-tool-call";
|
|
34
|
+
callId: string;
|
|
35
|
+
toolCall: ToolCall;
|
|
36
|
+
modelCallId: string;
|
|
37
|
+
} | {
|
|
38
|
+
type: "step-started";
|
|
39
|
+
stepId: number;
|
|
40
|
+
} | {
|
|
41
|
+
type: "step-completed";
|
|
42
|
+
stepId: number;
|
|
43
|
+
stepDurationMs: number;
|
|
44
|
+
};
|
|
45
|
+
type ToolCallDeltaUpdate = {
|
|
46
|
+
type: "tool-call-delta";
|
|
47
|
+
callId: string;
|
|
48
|
+
modelCallId: string;
|
|
49
|
+
taskUpdate: NestedTaskUpdate;
|
|
50
|
+
};
|
|
51
|
+
/** SDK updates plus nested task deltas once the SDK exposes them. */
|
|
52
|
+
type InteractionUpdate = SdkInteractionUpdate | ToolCallDeltaUpdate;
|
|
8
53
|
export interface ToolCallDescription {
|
|
9
54
|
toolName: string;
|
|
10
55
|
args?: unknown;
|
|
@@ -24,6 +69,8 @@ export declare class TurnEventMapper {
|
|
|
24
69
|
private usageTotal;
|
|
25
70
|
private lastAssistantText;
|
|
26
71
|
private summaryTitle;
|
|
72
|
+
/** Per-parent-call accumulators for nested subagent streams. */
|
|
73
|
+
private readonly nested;
|
|
27
74
|
constructor(emit: (payload: SessionEventPayload) => void);
|
|
28
75
|
/** Per-turn token usage summed across model steps. */
|
|
29
76
|
get usage(): TurnUsage | undefined;
|
|
@@ -34,7 +81,12 @@ export declare class TurnEventMapper {
|
|
|
34
81
|
handleUpdate(update: InteractionUpdate): void;
|
|
35
82
|
/** Close out the turn: finalize any open assistant text block. */
|
|
36
83
|
finish(): void;
|
|
84
|
+
private handleNestedTaskUpdate;
|
|
85
|
+
private emitToolStarted;
|
|
86
|
+
private emitToolCompleted;
|
|
87
|
+
private ensureNested;
|
|
37
88
|
private flushAssistantText;
|
|
89
|
+
private flushNestedAssistantText;
|
|
38
90
|
}
|
|
39
91
|
/**
|
|
40
92
|
* Human-meaningful tool identity for stream events. In-process tools calls
|
|
@@ -43,4 +95,5 @@ export declare class TurnEventMapper {
|
|
|
43
95
|
*/
|
|
44
96
|
export declare function describeToolCall(toolCall: ToolCall): ToolCallDescription;
|
|
45
97
|
export declare function describeToolResult(toolCall: ToolCall): ToolResultDescription;
|
|
98
|
+
export {};
|
|
46
99
|
//# sourceMappingURL=event-mapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-mapper.d.ts","sourceRoot":"","sources":["../../src/internal/event-mapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"event-mapper.d.ts","sourceRoot":"","sources":["../../src/internal/event-mapper.ts"],"names":[],"mappings":"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"}
|