@cursor/july 0.1.42 → 0.1.45
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 +1 -0
- package/dist/bin/agent-serve.js +3 -1
- package/dist/channels/github/api.d.ts +5 -0
- package/dist/channels/github/api.d.ts.map +1 -1
- package/dist/channels/github/api.js +18 -0
- package/dist/channels/github/defaults.d.ts +4 -5
- package/dist/channels/github/defaults.d.ts.map +1 -1
- package/dist/channels/github/defaults.js +27 -1
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +41 -10
- package/dist/channels/github/index.d.ts +1 -0
- package/dist/channels/github/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +1 -0
- package/dist/channels/github/progress.d.ts +54 -0
- package/dist/channels/github/progress.d.ts.map +1 -0
- package/dist/channels/github/progress.js +168 -0
- package/dist/channels/github/state.d.ts +2 -0
- package/dist/channels/github/state.d.ts.map +1 -1
- package/dist/channels/github/state.js +1 -1
- package/dist/channels/github/types.d.ts +16 -4
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.d.ts +4 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +4 -0
- package/dist/channels.d.ts +17 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +31 -0
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.C4-Gwi7g.js → app.fHnNXEJ6.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.BMT0xM4I.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.DDoLm843.js → VPLocalSearchBox.Cf6ghfFY.js} +1 -1
- package/dist/docs/assets/chunks/{theme.SbjGIiM0.js → theme.B_5-VLe8.js} +2 -2
- package/dist/docs/assets/{deployment.md.BHVjVqRa.js → deployment.md.Cdp4rTE4.js} +1 -1
- package/dist/docs/assets/{guides_github.md.R2QlpR75.js → guides_github.md.DSg0j9qj.js} +29 -3
- package/dist/docs/assets/{guides_github.md.R2QlpR75.lean.js → guides_github.md.DSg0j9qj.lean.js} +1 -1
- package/dist/docs/assets/guides_opentelemetry.md.Csn7ZI25.js +27 -0
- package/dist/docs/assets/guides_opentelemetry.md.Csn7ZI25.lean.js +1 -0
- package/dist/docs/assets/index.md.COeoSkcF.js +5 -0
- package/dist/docs/assets/index.md.COeoSkcF.lean.js +1 -0
- package/dist/docs/assets/{quickstart.md.rIbfahJM.js → quickstart.md.DZxBu44y.js} +18 -49
- package/dist/docs/assets/quickstart.md.DZxBu44y.lean.js +1 -0
- package/dist/docs/assets/{reference_agent-config.md.CRmkoxd6.js → reference_agent-config.md.XRpxctsA.js} +9 -4
- package/dist/docs/assets/{reference_agent-config.md.CRmkoxd6.lean.js → reference_agent-config.md.XRpxctsA.lean.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.BIabFUAI.js → reference_channels.md.MN8iDy8V.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.DqEqQpGn.js → reference_cli.md.BDmjPPAm.js} +2 -2
- package/dist/docs/assets/{reference_hooks.md.B40QAG6m.js → reference_hooks.md.4cbRRIIu.js} +2 -2
- package/dist/docs/assets/{reference_hooks.md.B40QAG6m.lean.js → reference_hooks.md.4cbRRIIu.lean.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md._XdeMahr.js → reference_project-layout.md.D3MdHM2z.js} +2 -1
- package/dist/docs/assets/{reference_tools.md.lSrsTxYJ.js → reference_tools.md.kJfJAP2m.js} +1 -1
- package/dist/docs/assets/templates_triage.md.CConZt1z.js +11 -0
- package/dist/docs/assets/templates_triage.md.CConZt1z.lean.js +1 -0
- package/dist/docs/building-with-agents.html +5 -5
- package/dist/docs/concepts.html +5 -5
- package/dist/docs/deployment.html +6 -6
- package/dist/docs/evals.html +4 -4
- package/dist/docs/example-agents/approval-buddy.html +4 -4
- package/dist/docs/example-agents/benny.html +4 -4
- package/dist/docs/example-agents/bugbot.html +4 -4
- package/dist/docs/example-agents/codebase-wiki.html +4 -4
- package/dist/docs/example-agents/codeowners-review.html +4 -4
- package/dist/docs/example-agents/concierge.html +4 -4
- package/dist/docs/example-agents/fsd.html +4 -4
- package/dist/docs/example-agents/index.html +5 -5
- package/dist/docs/example-agents/knowledge-base.html +4 -4
- package/dist/docs/example-agents/oncall.html +4 -4
- package/dist/docs/example-agents/security-reviewer.html +4 -4
- package/dist/docs/example-agents/slack-agent.html +4 -4
- package/dist/docs/example-agents/weather-agent.html +4 -4
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-runtime.html +5 -5
- package/dist/docs/guides/github.html +33 -7
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +4 -4
- package/dist/docs/guides/opentelemetry.html +51 -0
- package/dist/docs/guides/slack.html +4 -4
- package/dist/docs/guides/webhooks.html +4 -4
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +4 -4
- package/dist/docs/index.html +8 -27
- package/dist/docs/quickstart.html +24 -55
- package/dist/docs/reference/agent-config.html +12 -7
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +6 -6
- package/dist/docs/reference/cli.html +7 -7
- package/dist/docs/reference/connections.html +4 -4
- package/dist/docs/reference/hooks.html +6 -6
- package/dist/docs/reference/http-api.html +4 -4
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +7 -6
- package/dist/docs/reference/prompt.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +4 -4
- package/dist/docs/reference/skills.html +4 -4
- package/dist/docs/reference/subagents.html +4 -4
- package/dist/docs/reference/tools.html +6 -6
- package/dist/docs/scaffolding-agents.html +4 -4
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/triage.html +35 -0
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/internal/cli-ax.d.ts +1 -0
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +20 -5
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +38 -7
- package/dist/internal/deploy-client.d.ts +8 -0
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +5 -2
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +82 -13
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +1 -0
- package/dist/internal/host-otel.d.ts +25 -0
- package/dist/internal/host-otel.d.ts.map +1 -0
- package/dist/internal/host-otel.js +162 -0
- package/dist/internal/init-project.d.ts +24 -0
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +136 -17
- package/dist/internal/otel/attrs.d.ts +7 -0
- package/dist/internal/otel/attrs.d.ts.map +1 -0
- package/dist/internal/otel/attrs.js +13 -0
- package/dist/internal/otel/collector.d.ts +21 -0
- package/dist/internal/otel/collector.d.ts.map +1 -0
- package/dist/internal/otel/collector.js +605 -0
- package/dist/internal/otel/config.d.ts +42 -0
- package/dist/internal/otel/config.d.ts.map +1 -0
- package/dist/internal/otel/config.js +236 -0
- package/dist/internal/otel/http.d.ts +11 -0
- package/dist/internal/otel/http.d.ts.map +1 -0
- package/dist/internal/otel/http.js +97 -0
- package/dist/internal/otel/runtime.d.ts +21 -0
- package/dist/internal/otel/runtime.d.ts.map +1 -0
- package/dist/internal/otel/runtime.js +188 -0
- package/dist/internal/sdk-runner.d.ts +1 -1
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +1 -1
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +26 -1
- package/dist/internal/session-engine.d.ts +15 -2
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +58 -7
- package/dist/memory.d.ts +4 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +4 -0
- package/dist/otel.d.ts +88 -0
- package/dist/otel.d.ts.map +1 -0
- package/dist/otel.js +64 -0
- package/dist/playground/assets/index-CZH9EFvO.css +1 -0
- package/dist/playground/assets/{index-B3HBneZZ.js → index-Dces8BDp.js} +34 -34
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +103 -3
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +35 -105
- package/docs/deployment.md +2 -1
- package/docs/guides/github.md +79 -6
- package/docs/guides/opentelemetry.md +214 -0
- package/docs/quickstart.md +89 -227
- package/docs/reference/agent-config.md +52 -0
- package/docs/reference/channels.md +3 -1
- package/docs/reference/cli.md +2 -2
- package/docs/reference/hooks.md +21 -4
- package/docs/reference/project-layout.md +2 -0
- package/docs/reference/tools.md +5 -4
- package/docs/templates/triage.md +147 -0
- package/package.json +24 -2
- package/skills/create-agent/SKILL.md +2 -2
- package/skills/framework-map/SKILL.md +2 -0
- package/skills/otel/SKILL.md +98 -0
- package/src/bin/agent-serve.ts +3 -1
- package/src/channels/github/api.ts +22 -0
- package/src/channels/github/defaults.ts +27 -6
- package/src/channels/github/github-channel.ts +36 -1
- package/src/channels/github/index.ts +1 -0
- package/src/channels/github/progress.ts +243 -0
- package/src/channels/github/state.ts +3 -0
- package/src/channels/github/types.ts +12 -4
- package/src/channels/slack/slack-channel.ts +4 -0
- package/src/channels.ts +38 -0
- package/src/index.ts +7 -0
- package/src/internal/cli-ax.ts +21 -3
- package/src/internal/cli-deploy.ts +58 -3
- package/src/internal/deploy-client.ts +11 -0
- package/src/internal/discovery.ts +108 -4
- package/src/internal/distribution.ts +1 -0
- package/src/internal/host-otel.ts +252 -0
- package/src/internal/init-project.ts +160 -17
- package/src/internal/otel/attrs.ts +18 -0
- package/src/internal/otel/collector.ts +881 -0
- package/src/internal/otel/config.ts +307 -0
- package/src/internal/otel/http.ts +126 -0
- package/src/internal/otel/runtime.ts +271 -0
- package/src/internal/sdk-runner.ts +6 -0
- package/src/internal/server.ts +39 -1
- package/src/internal/session-engine.ts +83 -2
- package/src/memory.ts +4 -0
- package/src/otel.ts +155 -0
- package/src/types.ts +109 -3
- package/templates/triage/README.md +48 -0
- package/templates/triage/agent/agent.ts +14 -0
- package/templates/triage/agent/channels/intake.ts +20 -0
- package/templates/triage/agent/channels/slack.ts +3 -0
- package/templates/triage/agent/hooks/memory.ts +3 -0
- package/templates/triage/agent/instructions.md +27 -0
- package/templates/triage/agent/skills/triage-rubric.md +43 -0
- package/templates/triage/agent/tools/record_triage.ts +23 -0
- package/templates/triage/evals/evals.config.ts +5 -0
- package/templates/triage/evals/triage.eval.ts +43 -0
- package/templates/triage/package.json +18 -0
- package/templates/triage/tsconfig.json +12 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.BlU3A8EB.js +0 -1
- package/dist/docs/assets/index.md.BKpbkCa6.js +0 -24
- package/dist/docs/assets/index.md.BKpbkCa6.lean.js +0 -1
- package/dist/docs/assets/quickstart.md.rIbfahJM.lean.js +0 -1
- package/dist/playground/assets/index-Bqk9nplh.css +0 -1
- /package/dist/docs/assets/{deployment.md.BHVjVqRa.lean.js → deployment.md.Cdp4rTE4.lean.js} +0 -0
- /package/dist/docs/assets/{reference_channels.md.BIabFUAI.lean.js → reference_channels.md.MN8iDy8V.lean.js} +0 -0
- /package/dist/docs/assets/{reference_cli.md.DqEqQpGn.lean.js → reference_cli.md.BDmjPPAm.lean.js} +0 -0
- /package/dist/docs/assets/{reference_project-layout.md._XdeMahr.lean.js → reference_project-layout.md.D3MdHM2z.lean.js} +0 -0
- /package/dist/docs/assets/{reference_tools.md.lSrsTxYJ.lean.js → reference_tools.md.kJfJAP2m.lean.js} +0 -0
|
@@ -11,11 +11,91 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
});
|
|
12
12
|
};
|
|
13
13
|
import { spawn } from "node:child_process";
|
|
14
|
-
import { existsSync } from "node:fs";
|
|
15
|
-
import { mkdir, writeFile } from "node:fs/promises";
|
|
14
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
15
|
+
import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
|
|
16
16
|
import { basename, dirname, join, relative, resolve } from "node:path";
|
|
17
|
-
import { CLI_COMMAND_NAME, PACKAGE_NAME, packageVersion, } from "./distribution.js";
|
|
17
|
+
import { CLI_COMMAND_NAME, PACKAGE_NAME, packageRootDir, packageVersion, } from "./distribution.js";
|
|
18
18
|
import { makePalette, stdoutPalette, } from "./terminal-style.js";
|
|
19
|
+
export function availableTemplates() {
|
|
20
|
+
const templatesDir = join(packageRootDir(), "templates");
|
|
21
|
+
try {
|
|
22
|
+
return readdirSync(templatesDir, { withFileTypes: true })
|
|
23
|
+
.filter((entry) => entry.isDirectory())
|
|
24
|
+
.map((entry) => entry.name)
|
|
25
|
+
.sort();
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (hasErrorCode(error, "ENOENT")) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function resolveTemplate(name) {
|
|
35
|
+
if (!/^[a-z][a-z0-9-]*$/.test(name)) {
|
|
36
|
+
return {
|
|
37
|
+
ok: false,
|
|
38
|
+
message: "template name must match /^[a-z][a-z0-9-]*$/",
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const available = availableTemplates();
|
|
42
|
+
if (!available.includes(name)) {
|
|
43
|
+
const detail = available.length === 0
|
|
44
|
+
? "no templates ship with this build"
|
|
45
|
+
: `available: ${available.join(", ")}`;
|
|
46
|
+
return {
|
|
47
|
+
ok: false,
|
|
48
|
+
message: `unknown template "${name}" (${detail})`,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
ok: true,
|
|
53
|
+
name,
|
|
54
|
+
dir: join(packageRootDir(), "templates", name),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Re-init must keep the mode the project was scaffolded with: template
|
|
59
|
+
* scaffolds stamp `cursorAgentTemplate` into package.json, and a mismatch
|
|
60
|
+
* here would silently mix default-scaffold files into a template project
|
|
61
|
+
* (or the reverse).
|
|
62
|
+
*/
|
|
63
|
+
export function checkInitTarget(rootDir, template) {
|
|
64
|
+
const pkgPath = join(rootDir, "package.json");
|
|
65
|
+
if (!existsSync(pkgPath)) {
|
|
66
|
+
return { ok: true };
|
|
67
|
+
}
|
|
68
|
+
let marker;
|
|
69
|
+
try {
|
|
70
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
71
|
+
marker =
|
|
72
|
+
typeof pkg.cursorAgentTemplate === "string"
|
|
73
|
+
? pkg.cursorAgentTemplate
|
|
74
|
+
: undefined;
|
|
75
|
+
}
|
|
76
|
+
catch (_a) {
|
|
77
|
+
marker = undefined;
|
|
78
|
+
}
|
|
79
|
+
if (marker === template) {
|
|
80
|
+
return { ok: true };
|
|
81
|
+
}
|
|
82
|
+
if (template === undefined) {
|
|
83
|
+
return {
|
|
84
|
+
ok: false,
|
|
85
|
+
message: `${rootDir} was scaffolded from the "${marker}" template; re-run with --template ${marker}`,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (marker === undefined) {
|
|
89
|
+
return {
|
|
90
|
+
ok: false,
|
|
91
|
+
message: `${rootDir} already has a package.json without template provenance; re-run init without --template, or scaffold into a fresh directory`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
ok: false,
|
|
96
|
+
message: `${rootDir} was scaffolded from the "${marker}" template, not "${template}"`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
19
99
|
const DEFAULT_MODEL = {
|
|
20
100
|
id: "grok-4.5",
|
|
21
101
|
params: [
|
|
@@ -43,10 +123,9 @@ export function initProject(options) {
|
|
|
43
123
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
124
|
var _a, _b;
|
|
45
125
|
const rootDir = resolve(options.dir);
|
|
46
|
-
const
|
|
126
|
+
const projectName = basename(rootDir);
|
|
127
|
+
const name = (_a = options.name) !== null && _a !== void 0 ? _a : projectName;
|
|
47
128
|
const model = formatModelLiteral((_b = options.model) !== null && _b !== void 0 ? _b : DEFAULT_MODEL);
|
|
48
|
-
const agentDir = join(rootDir, "agent");
|
|
49
|
-
yield mkdir(agentDir, { recursive: true });
|
|
50
129
|
const files = [];
|
|
51
130
|
const write = (rel, contents) => __awaiter(this, void 0, void 0, function* () {
|
|
52
131
|
const abs = join(rootDir, rel);
|
|
@@ -64,6 +143,42 @@ export function initProject(options) {
|
|
|
64
143
|
throw error;
|
|
65
144
|
}
|
|
66
145
|
});
|
|
146
|
+
if (options.templateDir !== undefined) {
|
|
147
|
+
const templateDir = options.templateDir;
|
|
148
|
+
const entries = yield readdir(templateDir, {
|
|
149
|
+
recursive: true,
|
|
150
|
+
withFileTypes: true,
|
|
151
|
+
});
|
|
152
|
+
const relativePaths = entries
|
|
153
|
+
.filter((entry) => entry.isFile())
|
|
154
|
+
.map((entry) => relative(templateDir, join(entry.parentPath, entry.name)))
|
|
155
|
+
.sort();
|
|
156
|
+
for (const rel of relativePaths) {
|
|
157
|
+
const source = join(templateDir, rel);
|
|
158
|
+
if (rel === "package.json") {
|
|
159
|
+
const packageJson = JSON.parse(yield readFile(source, "utf8"));
|
|
160
|
+
packageJson.name = projectName;
|
|
161
|
+
packageJson.dependencies[PACKAGE_NAME] = `^${packageVersion()}`;
|
|
162
|
+
packageJson.cursorAgentTemplate = basename(templateDir);
|
|
163
|
+
yield write(rel, `${JSON.stringify(packageJson, null, 2)}\n`);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
yield write(rel, yield readFile(source));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
rootDir,
|
|
171
|
+
files,
|
|
172
|
+
created: files
|
|
173
|
+
.filter((entry) => entry.action === "create")
|
|
174
|
+
.map((entry) => entry.path),
|
|
175
|
+
skipped: files
|
|
176
|
+
.filter((entry) => entry.action === "exist")
|
|
177
|
+
.map((entry) => entry.path),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
const agentDir = join(rootDir, "agent");
|
|
181
|
+
yield mkdir(agentDir, { recursive: true });
|
|
67
182
|
yield write("package.json", `${JSON.stringify({
|
|
68
183
|
name,
|
|
69
184
|
private: true,
|
|
@@ -154,10 +269,13 @@ export default memoryHook();
|
|
|
154
269
|
});
|
|
155
270
|
}
|
|
156
271
|
export function isEexist(error) {
|
|
272
|
+
return hasErrorCode(error, "EEXIST");
|
|
273
|
+
}
|
|
274
|
+
function hasErrorCode(error, code) {
|
|
157
275
|
return (error !== null &&
|
|
158
276
|
typeof error === "object" &&
|
|
159
277
|
"code" in error &&
|
|
160
|
-
error.code ===
|
|
278
|
+
error.code === code);
|
|
161
279
|
}
|
|
162
280
|
/**
|
|
163
281
|
* Install the scaffold's npm dependencies so `dev` / `run` can resolve
|
|
@@ -399,20 +517,20 @@ function initNextStepEntries(options) {
|
|
|
399
517
|
if (cd !== undefined) {
|
|
400
518
|
steps.push({ command: cd });
|
|
401
519
|
}
|
|
402
|
-
if (!options.cliOnPath) {
|
|
403
|
-
steps.push({
|
|
404
|
-
command: 'export PATH="$PWD/node_modules/.bin:$PATH"',
|
|
405
|
-
note: "use the project-local agent-sdk bin",
|
|
406
|
-
});
|
|
407
|
-
}
|
|
408
520
|
if (!options.signedIn) {
|
|
521
|
+
const login = options.cliOnPath
|
|
522
|
+
? `${CLI_COMMAND_NAME} login`
|
|
523
|
+
: `npx ${PACKAGE_NAME} login`;
|
|
409
524
|
steps.push({
|
|
410
|
-
command:
|
|
525
|
+
command: login,
|
|
411
526
|
note: "connect your Cursor account (powers model turns)",
|
|
412
527
|
});
|
|
413
528
|
}
|
|
529
|
+
const dev = options.cliOnPath
|
|
530
|
+
? `${CLI_COMMAND_NAME} dev`
|
|
531
|
+
: `npx ${PACKAGE_NAME} dev`;
|
|
414
532
|
steps.push({
|
|
415
|
-
command:
|
|
533
|
+
command: dev,
|
|
416
534
|
note: "start the local playground",
|
|
417
535
|
});
|
|
418
536
|
return steps;
|
|
@@ -432,8 +550,9 @@ export function printInitGuide() {
|
|
|
432
550
|
process.stdout.write(`${CLI_COMMAND_NAME} — coding agent setup
|
|
433
551
|
|
|
434
552
|
Scaffold a project, then open the playground:
|
|
435
|
-
npx ${PACKAGE_NAME} init ./my-agent # installs deps +
|
|
436
|
-
|
|
553
|
+
npx ${PACKAGE_NAME} init ./my-agent # installs deps + links agent-sdk onto PATH
|
|
554
|
+
npx ${PACKAGE_NAME} init ./my-triage --template triage # start from a template (agent-sdk templates: triage)
|
|
555
|
+
cd ./my-agent && agent-sdk dev # or: npx ${PACKAGE_NAME} dev
|
|
437
556
|
|
|
438
557
|
Recommended loop once the project exists (from the project directory):
|
|
439
558
|
1. Edit agent/ + tools under agent/tools/
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build OTel attribute maps without conditional spreads. `undefined` values
|
|
3
|
+
* are dropped (the OTel API rejects them).
|
|
4
|
+
*/
|
|
5
|
+
export type AttrValue = string | number | boolean;
|
|
6
|
+
export declare function attrs(input: Record<string, AttrValue | undefined>): Record<string, AttrValue>;
|
|
7
|
+
//# sourceMappingURL=attrs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attrs.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/attrs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,GAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAQ3B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build OTel attribute maps without conditional spreads. `undefined` values
|
|
3
|
+
* are dropped (the OTel API rejects them).
|
|
4
|
+
*/
|
|
5
|
+
export function attrs(input) {
|
|
6
|
+
const out = {};
|
|
7
|
+
for (const [key, value] of Object.entries(input)) {
|
|
8
|
+
if (value !== undefined) {
|
|
9
|
+
out[key] = value;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return out;
|
|
13
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps the durable session event stream onto OTel traces / metrics / logs.
|
|
3
|
+
*
|
|
4
|
+
* Attribute names reuse Cursor enterprise wire keys where they overlap
|
|
5
|
+
* (`cursor.conversation.id`, `cursor.token.*`, `cursor.tool.*`,
|
|
6
|
+
* `cursor.cost.usage`, `cursor.model.name`) so Agent SDK traces join org
|
|
7
|
+
* metrics/logs in the same collector. Agent-SDK-only fields use `agent_sdk.*`.
|
|
8
|
+
*/
|
|
9
|
+
import type { SessionEvent, SessionInfo } from "../../types.js";
|
|
10
|
+
import { type AttrValue } from "./attrs.js";
|
|
11
|
+
import type { OtelRuntime } from "./runtime.js";
|
|
12
|
+
export interface OtelCollector {
|
|
13
|
+
onEvent(event: SessionEvent, session: SessionInfo): void;
|
|
14
|
+
close(): void;
|
|
15
|
+
/** Merge author tags onto the session; paints open spans immediately. */
|
|
16
|
+
setSessionAttributes(sessionId: string, attributes: Record<string, AttrValue>): void;
|
|
17
|
+
/** Session tags previously set by {@link setSessionAttributes}. */
|
|
18
|
+
getSessionAttributes(sessionId: string): Record<string, AttrValue> | undefined;
|
|
19
|
+
}
|
|
20
|
+
export declare function createOtelCollector(runtime: OtelRuntime, agentName: string, log: (line: string) => void): OtelCollector;
|
|
21
|
+
//# sourceMappingURL=collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACzD,KAAK,IAAI,IAAI,CAAC;IACd,yEAAyE;IACzE,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,IAAI,CAAC;IACR,mEAAmE;IACnE,oBAAoB,CAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;CAC1C;AAgBD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,aAAa,CAgwBf"}
|