@cursor/july 0.1.2 → 0.1.4
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 +16 -5
- package/README.md +8 -9
- 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 +416 -155
- package/dist/channels/slack/log.d.ts +1 -1
- package/dist/channels/slack/log.d.ts.map +1 -1
- package/dist/channels/slack/log.js +4 -5
- package/dist/channels/slack/setup.js +1 -1
- package/dist/channels/slack/socket-mode.d.ts.map +1 -1
- package/dist/channels/slack/socket-mode.js +10 -9
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +3 -3
- package/dist/docs/assets/{app.Oje4vhlk.js → app.DF-Yx4OP.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.0XrheBv2.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.H5XZ2zCB.js → VPLocalSearchBox.DSeJSudL.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CTR_TuaE.js → theme.DZVLTXOC.js} +2 -2
- package/dist/docs/assets/{index.md.m81y7TY7.js → index.md.Cylk70gg.js} +1 -1
- package/dist/docs/assets/{quickstart.md.CfU8_uTC.js → quickstart.md.BU6Iwi_9.js} +18 -6
- 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/building-with-agents.html +3 -3
- package/dist/docs/concepts.html +3 -3
- package/dist/docs/deployment.html +3 -3
- package/dist/docs/evals.html +3 -3
- package/dist/docs/guides/agent-to-agent.html +3 -3
- package/dist/docs/guides/cloud-runtime.html +3 -3
- package/dist/docs/guides/github.html +3 -3
- package/dist/docs/guides/human-in-the-loop.html +3 -3
- package/dist/docs/guides/slack.html +3 -3
- package/dist/docs/guides/webhooks.html +3 -3
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +3 -3
- package/dist/docs/index.html +5 -5
- package/dist/docs/quickstart.html +22 -10
- package/dist/docs/reference/agent-config.html +3 -3
- package/dist/docs/reference/channels.html +3 -3
- package/dist/docs/reference/cli.html +14 -9
- package/dist/docs/reference/connections.html +3 -3
- package/dist/docs/reference/hooks.html +3 -3
- package/dist/docs/reference/http-api.html +3 -3
- package/dist/docs/reference/instructions.html +3 -3
- package/dist/docs/reference/playground.html +3 -3
- package/dist/docs/reference/project-layout.html +3 -3
- package/dist/docs/reference/schedules.html +3 -3
- package/dist/docs/reference/sessions.html +3 -3
- package/dist/docs/reference/skills.html +3 -3
- package/dist/docs/reference/subagents.html +3 -3
- package/dist/docs/reference/tools.html +3 -3
- package/dist/docs/scaffolding-agents.html +3 -3
- package/dist/docs/storage.html +3 -3
- package/dist/docs/troubleshooting.html +3 -3
- package/dist/internal/ab-collector.js +3 -3
- package/dist/internal/ab-fold.js +1 -1
- 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 +83 -2
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +626 -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 +59 -3
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +316 -38
- package/dist/internal/cli-github.js +13 -13
- package/dist/internal/cursor/account-mcp.js +3 -3
- package/dist/internal/cursor/backend-client.js +1 -1
- package/dist/internal/cursor/credentials.d.ts +14 -3
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +21 -6
- package/dist/internal/cursor/github-credentials.js +3 -3
- package/dist/internal/cursor-event-relay.js +1 -1
- package/dist/internal/cursor-relay-core.d.ts +1 -1
- package/dist/internal/cursor-relay-core.d.ts.map +1 -1
- package/dist/internal/cursor-relay-core.js +2 -1
- package/dist/internal/cursor-slack-relay.js +1 -1
- package/dist/internal/deploy-client.d.ts +9 -1
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +23 -3
- 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 +43 -14
- package/dist/internal/distribution.d.ts +7 -0
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +7 -0
- package/dist/internal/docs-site.js +3 -3
- package/dist/internal/eval-run-store.d.ts.map +1 -1
- package/dist/internal/eval-run-store.js +10 -9
- 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/github-fanout.js +2 -2
- package/dist/internal/host-platforms.js +5 -5
- 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/mcp-endpoint.d.ts.map +1 -1
- package/dist/internal/mcp-endpoint.js +1 -1
- 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 +19 -14
- 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.map +1 -1
- package/dist/internal/reminder-runner.js +11 -11
- 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 +44 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -0
- package/dist/internal/resolve-prod-target.js +134 -0
- package/dist/internal/resolved-connections.js +5 -5
- 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/schedule-runner.js +1 -1
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +23 -17
- package/dist/internal/session-engine.d.ts +1 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +34 -19
- package/dist/internal/sessions-client.d.ts +34 -0
- package/dist/internal/sessions-client.d.ts.map +1 -0
- package/dist/internal/sessions-client.js +193 -0
- package/dist/internal/storage-coordinator.js +6 -6
- 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/update-check.d.ts +93 -0
- package/dist/internal/update-check.d.ts.map +1 -0
- package/dist/internal/update-check.js +431 -0
- 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/index-Ct_Usdm8.css +1 -0
- package/dist/playground/assets/index-Dsyb-Vaj.js +319 -0
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +29 -2
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +0 -1
- package/docs/quickstart.md +22 -7
- package/docs/reference/cli.md +51 -3
- package/package.json +4 -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 +13 -13
- package/skills/hillclimb/SKILL.md +10 -10
- package/skills/setup-slack/SKILL.md +14 -14
- package/src/bin/agent-serve.ts +451 -191
- package/src/channels/slack/log.ts +5 -5
- package/src/channels/slack/setup.ts +1 -1
- package/src/channels/slack/socket-mode.ts +11 -9
- package/src/internal/ab-collector.ts +3 -3
- package/src/internal/ab-fold.ts +1 -1
- package/src/internal/chat-client.ts +252 -37
- package/src/internal/cli-ax.ts +761 -72
- package/src/internal/cli-cursor.ts +14 -42
- package/src/internal/cli-deploy.ts +428 -49
- package/src/internal/cli-github.ts +13 -15
- package/src/internal/cursor/account-mcp.ts +3 -3
- package/src/internal/cursor/backend-client.ts +1 -1
- package/src/internal/cursor/credentials.ts +26 -7
- package/src/internal/cursor/github-credentials.ts +3 -3
- package/src/internal/cursor-event-relay.ts +1 -1
- package/src/internal/cursor-relay-core.ts +4 -2
- package/src/internal/cursor-slack-relay.ts +1 -1
- package/src/internal/deploy-client.ts +45 -4
- package/src/internal/deploy-source.ts +133 -0
- package/src/internal/discovery.ts +53 -16
- package/src/internal/distribution.ts +8 -0
- package/src/internal/docs-site.ts +3 -3
- package/src/internal/eval-run-store.ts +10 -11
- package/src/internal/eval-runner.ts +5 -0
- package/src/internal/event-mapper.ts +222 -42
- package/src/internal/github-fanout.ts +2 -2
- package/src/internal/host-platforms.ts +5 -5
- 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/mcp-endpoint.ts +1 -3
- package/src/internal/open-browser.ts +41 -0
- package/src/internal/playground/toolchain.ts +18 -16
- package/src/internal/playground-proxy.ts +576 -0
- package/src/internal/prompt-context.ts +95 -0
- package/src/internal/reminder-runner.ts +11 -17
- package/src/internal/request-headers.ts +23 -0
- package/src/internal/resolve-prod-target.ts +182 -0
- package/src/internal/resolved-connections.ts +5 -5
- package/src/internal/run-client.ts +39 -36
- package/src/internal/schedule-runner.ts +1 -1
- package/src/internal/server.ts +25 -16
- package/src/internal/session-engine.ts +35 -18
- package/src/internal/sessions-client.ts +216 -0
- package/src/internal/storage-coordinator.ts +6 -6
- 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/update-check.ts +552 -0
- package/src/internal/workspace.ts +42 -4
- package/src/types.ts +45 -7
- package/dist/docs/assets/chunks/@localSearchIndexroot.zwQ9RCQ7.js +0 -1
- package/dist/playground/assets/index-B1Qc9h2u.css +0 -1
- package/dist/playground/assets/index-CpDYCj8W.js +0 -79
- /package/dist/docs/assets/{index.md.m81y7TY7.lean.js → index.md.Cylk70gg.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.CfU8_uTC.lean.js → quickstart.md.BU6Iwi_9.lean.js} +0 -0
|
@@ -38,6 +38,7 @@ import { parseFrontmatter } from "./frontmatter.js";
|
|
|
38
38
|
import { isReservedSecretName, MAX_EGRESS_DOMAINS, validateEgressDomain, validateSecretName, } from "./hosting.js";
|
|
39
39
|
import { toolInputJsonSchema } from "./json-schema.js";
|
|
40
40
|
import { MCP_ENDPOINT_PATH, mcpEndpointToolNames } from "./mcp-endpoint.js";
|
|
41
|
+
import { withIdentityPreamble } from "./workspace.js";
|
|
41
42
|
const MODULE_EXTENSIONS = new Set([".ts", ".mts", ".js", ".mjs"]);
|
|
42
43
|
const NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]*$/;
|
|
43
44
|
const SKILL_DESCRIPTION_FALLBACK = (name) => `Instructions for the ${name} skill.`;
|
|
@@ -64,17 +65,15 @@ export function isAgentProjectDir(dir) {
|
|
|
64
65
|
});
|
|
65
66
|
}
|
|
66
67
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* multi-agent serving, where one server hosts many agents under
|
|
71
|
-
* `/<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.
|
|
72
71
|
*/
|
|
73
|
-
export function
|
|
74
|
-
return __awaiter(this,
|
|
72
|
+
export function listChildAgentDirs(rootDir) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
75
74
|
const resolved = resolve(rootDir);
|
|
76
75
|
if (!(yield isDirectory(resolved))) {
|
|
77
|
-
|
|
76
|
+
return [];
|
|
78
77
|
}
|
|
79
78
|
const results = [];
|
|
80
79
|
const seenSlugs = new Set();
|
|
@@ -94,11 +93,35 @@ export function loadAgentProjects(rootDir_1) {
|
|
|
94
93
|
throw new Error(`Duplicate agent slug "${slug}" under ${resolved}.`);
|
|
95
94
|
}
|
|
96
95
|
seenSlugs.add(slug);
|
|
97
|
-
results.push({ slug,
|
|
96
|
+
results.push({ slug, dir: childDir });
|
|
98
97
|
}
|
|
99
|
-
|
|
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) {
|
|
100
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).`);
|
|
101
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
|
+
}
|
|
102
125
|
return results;
|
|
103
126
|
});
|
|
104
127
|
}
|
|
@@ -215,15 +238,21 @@ export function formatDiagnostics(diagnostics) {
|
|
|
215
238
|
function loadAgent(ctx, agentDir, options) {
|
|
216
239
|
return __awaiter(this, void 0, void 0, function* () {
|
|
217
240
|
var _a;
|
|
218
|
-
var _b
|
|
241
|
+
var _b;
|
|
219
242
|
const config = yield loadAgentConfig(ctx, agentDir, options.isRoot);
|
|
220
|
-
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);
|
|
221
250
|
// Subagents run as Cursor SDK custom subagents (prompt + description +
|
|
222
251
|
// model); their other slots are inert today, so don't load them — just
|
|
223
252
|
// warn that they exist.
|
|
224
253
|
if (!options.isRoot) {
|
|
225
254
|
yield warnUnsupportedSubagentSlots(ctx, agentDir);
|
|
226
|
-
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
|
|
227
256
|
? {}
|
|
228
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: [] });
|
|
229
258
|
}
|
|
@@ -253,7 +282,7 @@ function loadAgent(ctx, agentDir, options) {
|
|
|
253
282
|
});
|
|
254
283
|
}
|
|
255
284
|
return {
|
|
256
|
-
name
|
|
285
|
+
name,
|
|
257
286
|
description: config === null || config === void 0 ? void 0 : config.description,
|
|
258
287
|
// Root agents always get a concrete model: authored value or DEFAULT_MODEL.
|
|
259
288
|
model: isValidModelSetting(config === null || config === void 0 ? void 0 : config.model) ? config.model : DEFAULT_MODEL,
|
|
@@ -17,6 +17,13 @@ export declare const LEGACY_PACKAGE_NAME = "@anysphere/agent-serve";
|
|
|
17
17
|
* as PACKAGE_NAME so the eventual rename keeps authored imports working.
|
|
18
18
|
*/
|
|
19
19
|
export declare const AGENTKIT_PACKAGE_NAME = "@cursor/agentkit";
|
|
20
|
+
/**
|
|
21
|
+
* Bracketed product tag for stderr / ServeOptions.logger lines
|
|
22
|
+
* (`[agentkit] …`, `[agentkit/slack] …`).
|
|
23
|
+
*/
|
|
24
|
+
export declare const LOG_PRODUCT = "agentkit";
|
|
25
|
+
export declare const LOG_PREFIX: string;
|
|
26
|
+
export declare const SLACK_LOG_PREFIX: string;
|
|
20
27
|
/**
|
|
21
28
|
* Command name this CLI was invoked as. Both bins point at the same entry;
|
|
22
29
|
* keep help text and hints copy-pasteable for whichever the user typed.
|
|
@@ -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,CAezC,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,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,UAAU,EAAE,MAA2B,CAAC;AACrD,eAAO,MAAM,gBAAgB,EAAE,MAAiC,CAAC;AAEjE;;;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"}
|
|
@@ -20,6 +20,13 @@ export const LEGACY_PACKAGE_NAME = "@anysphere/agent-serve";
|
|
|
20
20
|
* as PACKAGE_NAME so the eventual rename keeps authored imports working.
|
|
21
21
|
*/
|
|
22
22
|
export const AGENTKIT_PACKAGE_NAME = "@cursor/agentkit";
|
|
23
|
+
/**
|
|
24
|
+
* Bracketed product tag for stderr / ServeOptions.logger lines
|
|
25
|
+
* (`[agentkit] …`, `[agentkit/slack] …`).
|
|
26
|
+
*/
|
|
27
|
+
export const LOG_PRODUCT = "agentkit";
|
|
28
|
+
export const LOG_PREFIX = `[${LOG_PRODUCT}]`;
|
|
29
|
+
export const SLACK_LOG_PREFIX = `[${LOG_PRODUCT}/slack]`;
|
|
23
30
|
/**
|
|
24
31
|
* Command name this CLI was invoked as. Both bins point at the same entry;
|
|
25
32
|
* keep help text and hints copy-pasteable for whichever the user typed.
|
|
@@ -100,10 +100,10 @@ export function ensureDocsSiteBundle() {
|
|
|
100
100
|
}
|
|
101
101
|
const toolchain = resolveDocsToolchain();
|
|
102
102
|
if (toolchain === undefined) {
|
|
103
|
-
logger("[
|
|
103
|
+
logger("[agentkit] docs site missing and vitepress toolchain unavailable; /docs will show a build hint");
|
|
104
104
|
return;
|
|
105
105
|
}
|
|
106
|
-
logger("[
|
|
106
|
+
logger("[agentkit] building docs site (vitepress)...");
|
|
107
107
|
const code = yield new Promise((resolve, reject) => {
|
|
108
108
|
const child = spawn(process.execPath, [toolchain.vitepressCli, "build", "docs"], { cwd: toolchain.packageRoot, env: process.env, stdio: "inherit" });
|
|
109
109
|
child.on("error", reject);
|
|
@@ -115,7 +115,7 @@ export function ensureDocsSiteBundle() {
|
|
|
115
115
|
if (!docsSiteExists()) {
|
|
116
116
|
throw new Error("docs vitepress build finished but dist/docs/index.html is missing");
|
|
117
117
|
}
|
|
118
|
-
logger("[
|
|
118
|
+
logger("[agentkit] docs site build complete");
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
/** True when docs sources + a resolvable `vitepress` CLI are present. */
|
|
@@ -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,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;
|
|
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;YAeb,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"}
|
|
@@ -120,7 +120,7 @@ export class EvalRunStore {
|
|
|
120
120
|
this.activeRunId = runId;
|
|
121
121
|
yield this.pruneOldRuns(config);
|
|
122
122
|
yield this.enqueuePersist(snapshot, this.resolvePersist(config));
|
|
123
|
-
this.logger(`[
|
|
123
|
+
this.logger(`[agentkit] eval run ${runId}: starting ${cases.length} case(s)`);
|
|
124
124
|
void this.execute(runId, Object.assign(Object.assign({ baseUrl: loopbackUrl, evals: selected, config }, (input.bearerToken === undefined
|
|
125
125
|
? {}
|
|
126
126
|
: { bearerToken: input.bearerToken })), (input.verbose === undefined ? {} : { verbose: input.verbose })));
|
|
@@ -159,7 +159,7 @@ export class EvalRunStore {
|
|
|
159
159
|
}
|
|
160
160
|
const loaded = yield persist.load({ projectRoot: this.projectRoot });
|
|
161
161
|
if (!Array.isArray(loaded)) {
|
|
162
|
-
this.logger("[
|
|
162
|
+
this.logger("[agentkit] eval persistRuns.load() did not return an array; ignoring");
|
|
163
163
|
this.hydrated = true;
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
@@ -182,11 +182,11 @@ export class EvalRunStore {
|
|
|
182
182
|
yield this.enqueuePersist(run, persist);
|
|
183
183
|
}
|
|
184
184
|
yield this.pruneOldRuns(config);
|
|
185
|
-
this.logger(`[
|
|
185
|
+
this.logger(`[agentkit] hydrated ${this.runs.size} playground eval run(s) from persistRuns`);
|
|
186
186
|
}
|
|
187
187
|
catch (error) {
|
|
188
188
|
const message = error instanceof Error ? error.message : String(error);
|
|
189
|
-
this.logger(`[
|
|
189
|
+
this.logger(`[agentkit] failed to hydrate playground eval runs: ${message}`);
|
|
190
190
|
}
|
|
191
191
|
finally {
|
|
192
192
|
this.hydrated = true;
|
|
@@ -234,7 +234,7 @@ export class EvalRunStore {
|
|
|
234
234
|
}
|
|
235
235
|
catch (error) {
|
|
236
236
|
const message = error instanceof Error ? error.message : String(error);
|
|
237
|
-
this.logger(`[
|
|
237
|
+
this.logger(`[agentkit] persistRuns.save(${run.runId}) failed: ${message}`);
|
|
238
238
|
}
|
|
239
239
|
});
|
|
240
240
|
}
|
|
@@ -248,7 +248,7 @@ export class EvalRunStore {
|
|
|
248
248
|
}
|
|
249
249
|
catch (error) {
|
|
250
250
|
const message = error instanceof Error ? error.message : String(error);
|
|
251
|
-
this.logger(`[
|
|
251
|
+
this.logger(`[agentkit] persistRuns.delete(${runId}) failed: ${message}`);
|
|
252
252
|
}
|
|
253
253
|
});
|
|
254
254
|
}
|
|
@@ -294,7 +294,8 @@ export class EvalRunStore {
|
|
|
294
294
|
c.inputs = [...((_c = c.inputs) !== null && _c !== void 0 ? _c : []), event.data.text];
|
|
295
295
|
}
|
|
296
296
|
if (event.type === "message.completed" &&
|
|
297
|
-
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) {
|
|
298
299
|
c.finalText = event.data.text;
|
|
299
300
|
}
|
|
300
301
|
}, onCaseDone: (result) => {
|
|
@@ -311,7 +312,7 @@ export class EvalRunStore {
|
|
|
311
312
|
run.status = "completed";
|
|
312
313
|
run.finishedAt = new Date().toISOString();
|
|
313
314
|
yield this.enqueuePersist(run, this.resolvePersist(opts.config));
|
|
314
|
-
this.logger(`[
|
|
315
|
+
this.logger(`[agentkit] eval run ${runId}: done — ${run.summary.passed} passed, ${run.summary.failed} failed`);
|
|
315
316
|
}
|
|
316
317
|
catch (error) {
|
|
317
318
|
const run = this.runs.get(runId);
|
|
@@ -322,7 +323,7 @@ export class EvalRunStore {
|
|
|
322
323
|
run.finishedAt = new Date().toISOString();
|
|
323
324
|
run.error = error instanceof Error ? error.message : String(error);
|
|
324
325
|
yield this.enqueuePersist(run, this.resolvePersist(opts.config));
|
|
325
|
-
this.logger(`[
|
|
326
|
+
this.logger(`[agentkit] eval run ${runId}: failed — ${run.error}`);
|
|
326
327
|
}
|
|
327
328
|
finally {
|
|
328
329
|
if (this.activeRunId === runId) {
|
|
@@ -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":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EAMf,MAAM,aAAa,CAAC;AAOrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wDAAwD;IACxD,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,kFAAkF;IAClF,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;QACjC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;KACjC,CAAC;CACH;AAuCD,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,CACZ,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAiB,GACpD,OAAO,CAAC;IACT,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CACjC,CAAC,CA4CD;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,OAAO,GAAE,oBAAyB,GACjC,cAAc,EAAE,CAalB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,EAAE,CAAC,CA2C1B"}
|
|
@@ -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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"}
|
|
@@ -4,11 +4,19 @@
|
|
|
4
4
|
* (`SessionEvent` payloads). One mapper instance covers one turn.
|
|
5
5
|
*/
|
|
6
6
|
const CUSTOM_TOOLS_PROVIDER = "custom-user-tools";
|
|
7
|
+
function asToolCallDelta(update) {
|
|
8
|
+
if (update.type !== "tool-call-delta") {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return update;
|
|
12
|
+
}
|
|
7
13
|
export class TurnEventMapper {
|
|
8
14
|
constructor(emit) {
|
|
9
15
|
this.emit = emit;
|
|
10
16
|
this.textAccumulator = "";
|
|
11
17
|
this.reasoningAccumulator = "";
|
|
18
|
+
/** Per-parent-call accumulators for nested subagent streams. */
|
|
19
|
+
this.nested = new Map();
|
|
12
20
|
}
|
|
13
21
|
/** Per-turn token usage summed across model steps. */
|
|
14
22
|
get usage() {
|
|
@@ -52,49 +60,11 @@ export class TurnEventMapper {
|
|
|
52
60
|
}
|
|
53
61
|
case "tool-call-started": {
|
|
54
62
|
this.flushAssistantText("tool_call");
|
|
55
|
-
|
|
56
|
-
this.emit({
|
|
57
|
-
type: "actions.requested",
|
|
58
|
-
data: {
|
|
59
|
-
calls: [
|
|
60
|
-
{
|
|
61
|
-
callId: update.callId,
|
|
62
|
-
toolName: description.toolName,
|
|
63
|
-
args: description.args,
|
|
64
|
-
},
|
|
65
|
-
],
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
if (description.subagent !== undefined) {
|
|
69
|
-
this.emit({
|
|
70
|
-
type: "subagent.called",
|
|
71
|
-
data: {
|
|
72
|
-
callId: update.callId,
|
|
73
|
-
name: description.subagent.name,
|
|
74
|
-
description: description.subagent.description,
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
}
|
|
63
|
+
this.emitToolStarted(update.callId, update.toolCall);
|
|
78
64
|
return;
|
|
79
65
|
}
|
|
80
66
|
case "tool-call-completed": {
|
|
81
|
-
|
|
82
|
-
const result = describeToolResult(update.toolCall);
|
|
83
|
-
this.emit({
|
|
84
|
-
type: "action.result",
|
|
85
|
-
data: {
|
|
86
|
-
callId: update.callId,
|
|
87
|
-
toolName: description.toolName,
|
|
88
|
-
output: result.output,
|
|
89
|
-
isError: result.isError,
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
if (description.subagent !== undefined) {
|
|
93
|
-
this.emit({
|
|
94
|
-
type: "subagent.completed",
|
|
95
|
-
data: { callId: update.callId, name: description.subagent.name },
|
|
96
|
-
});
|
|
97
|
-
}
|
|
67
|
+
this.emitToolCompleted(update.callId, update.toolCall);
|
|
98
68
|
return;
|
|
99
69
|
}
|
|
100
70
|
case "step-started": {
|
|
@@ -126,7 +96,13 @@ export class TurnEventMapper {
|
|
|
126
96
|
case "shell-output-delta":
|
|
127
97
|
return;
|
|
128
98
|
default: {
|
|
129
|
-
//
|
|
99
|
+
// Nested task/subagent progress (tool-call-delta) — accepted via
|
|
100
|
+
// structural check so we typecheck against older published SDKs.
|
|
101
|
+
const delta = asToolCallDelta(update);
|
|
102
|
+
if (delta !== undefined) {
|
|
103
|
+
this.handleNestedTaskUpdate(delta.callId, delta.taskUpdate);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
130
106
|
return;
|
|
131
107
|
}
|
|
132
108
|
}
|
|
@@ -134,6 +110,128 @@ export class TurnEventMapper {
|
|
|
134
110
|
/** Close out the turn: finalize any open assistant text block. */
|
|
135
111
|
finish() {
|
|
136
112
|
this.flushAssistantText("stop");
|
|
113
|
+
for (const parentCallId of this.nested.keys()) {
|
|
114
|
+
this.flushNestedAssistantText(parentCallId, "stop");
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
handleNestedTaskUpdate(parentCallId, update) {
|
|
118
|
+
switch (update.type) {
|
|
119
|
+
case "text-delta": {
|
|
120
|
+
const acc = this.ensureNested(parentCallId);
|
|
121
|
+
acc.text += update.text;
|
|
122
|
+
this.emit({
|
|
123
|
+
type: "message.appended",
|
|
124
|
+
data: {
|
|
125
|
+
delta: update.text,
|
|
126
|
+
text: acc.text,
|
|
127
|
+
parentCallId,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
case "thinking-delta": {
|
|
133
|
+
const acc = this.ensureNested(parentCallId);
|
|
134
|
+
acc.reasoning += update.text;
|
|
135
|
+
this.emit({
|
|
136
|
+
type: "reasoning.appended",
|
|
137
|
+
data: {
|
|
138
|
+
delta: update.text,
|
|
139
|
+
text: acc.reasoning,
|
|
140
|
+
parentCallId,
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
case "thinking-completed": {
|
|
146
|
+
const acc = this.nested.get(parentCallId);
|
|
147
|
+
if (acc !== undefined && acc.reasoning !== "") {
|
|
148
|
+
acc.reasoning = "";
|
|
149
|
+
}
|
|
150
|
+
this.emit({
|
|
151
|
+
type: "reasoning.completed",
|
|
152
|
+
data: {
|
|
153
|
+
durationMs: update.thinkingDurationMs,
|
|
154
|
+
parentCallId,
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
case "tool-call-started": {
|
|
160
|
+
this.flushNestedAssistantText(parentCallId, "tool_call");
|
|
161
|
+
this.emitToolStarted(update.callId, update.toolCall, parentCallId);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
case "tool-call-completed": {
|
|
165
|
+
this.emitToolCompleted(update.callId, update.toolCall, parentCallId);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
case "partial-tool-call":
|
|
169
|
+
case "step-started":
|
|
170
|
+
case "step-completed":
|
|
171
|
+
return;
|
|
172
|
+
default: {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
emitToolStarted(callId, toolCall, parentCallId) {
|
|
178
|
+
const description = describeToolCall(toolCall);
|
|
179
|
+
this.emit({
|
|
180
|
+
type: "actions.requested",
|
|
181
|
+
data: {
|
|
182
|
+
calls: [
|
|
183
|
+
{
|
|
184
|
+
callId,
|
|
185
|
+
toolName: description.toolName,
|
|
186
|
+
args: description.args,
|
|
187
|
+
parentCallId,
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
parentCallId,
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
// Subagent bookends only fire for the top-level task tool, not nested
|
|
194
|
+
// tools inside a subagent (nested subagents aren't supported).
|
|
195
|
+
if (description.subagent !== undefined && parentCallId === undefined) {
|
|
196
|
+
this.emit({
|
|
197
|
+
type: "subagent.called",
|
|
198
|
+
data: {
|
|
199
|
+
callId,
|
|
200
|
+
name: description.subagent.name,
|
|
201
|
+
description: description.subagent.description,
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
emitToolCompleted(callId, toolCall, parentCallId) {
|
|
207
|
+
const description = describeToolCall(toolCall);
|
|
208
|
+
const result = describeToolResult(toolCall);
|
|
209
|
+
this.emit({
|
|
210
|
+
type: "action.result",
|
|
211
|
+
data: {
|
|
212
|
+
callId,
|
|
213
|
+
toolName: description.toolName,
|
|
214
|
+
output: result.output,
|
|
215
|
+
isError: result.isError,
|
|
216
|
+
parentCallId,
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
if (description.subagent !== undefined && parentCallId === undefined) {
|
|
220
|
+
this.flushNestedAssistantText(callId, "stop");
|
|
221
|
+
this.nested.delete(callId);
|
|
222
|
+
this.emit({
|
|
223
|
+
type: "subagent.completed",
|
|
224
|
+
data: { callId, name: description.subagent.name },
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
ensureNested(parentCallId) {
|
|
229
|
+
let acc = this.nested.get(parentCallId);
|
|
230
|
+
if (acc === undefined) {
|
|
231
|
+
acc = { text: "", reasoning: "" };
|
|
232
|
+
this.nested.set(parentCallId, acc);
|
|
233
|
+
}
|
|
234
|
+
return acc;
|
|
137
235
|
}
|
|
138
236
|
flushAssistantText(finishReason) {
|
|
139
237
|
if (this.textAccumulator === "") {
|
|
@@ -147,6 +245,18 @@ export class TurnEventMapper {
|
|
|
147
245
|
data: { text, finishReason },
|
|
148
246
|
});
|
|
149
247
|
}
|
|
248
|
+
flushNestedAssistantText(parentCallId, finishReason) {
|
|
249
|
+
const acc = this.nested.get(parentCallId);
|
|
250
|
+
if (acc === undefined || acc.text === "") {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const text = acc.text;
|
|
254
|
+
acc.text = "";
|
|
255
|
+
this.emit({
|
|
256
|
+
type: "message.completed",
|
|
257
|
+
data: { text, finishReason, parentCallId },
|
|
258
|
+
});
|
|
259
|
+
}
|
|
150
260
|
}
|
|
151
261
|
/**
|
|
152
262
|
* Human-meaningful tool identity for stream events. In-process tools calls
|
|
@@ -105,13 +105,13 @@ export function fanoutDelivery(body_1, headers_1, targets_1) {
|
|
|
105
105
|
body: payload,
|
|
106
106
|
});
|
|
107
107
|
if (!response.ok) {
|
|
108
|
-
log(`[
|
|
108
|
+
log(`[agentkit] delivery to ${label} failed: HTTP ${response.status}\n`);
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
111
|
delivered.push(label);
|
|
112
112
|
}
|
|
113
113
|
catch (error) {
|
|
114
|
-
log(`[
|
|
114
|
+
log(`[agentkit] delivery to ${label} failed: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
115
115
|
}
|
|
116
116
|
})));
|
|
117
117
|
if (recipients.length > 0 && delivered.length === 0) {
|