@cursor/july 0.1.41 → 0.1.43
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 +10 -3
- 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 +28 -5
- 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 +8 -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/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.mIw24pb1.js → app.DsTLo2j1.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.BZx4pmZL.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.hOzpPwrG.js → VPLocalSearchBox.DoVfutcV.js} +1 -1
- package/dist/docs/assets/chunks/{theme.BtFhUYmh.js → theme.DtuVtKkc.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.DmyUwC5R.js +20 -0
- package/dist/docs/assets/guides_opentelemetry.md.DmyUwC5R.lean.js +1 -0
- package/dist/docs/assets/{index.md.BKpbkCa6.js → index.md.CMc5FP7E.js} +2 -1
- package/dist/docs/assets/{reference_channels.md.BIabFUAI.js → reference_channels.md.MN8iDy8V.js} +1 -1
- package/dist/docs/assets/reference_hooks.md.4cbRRIIu.js +14 -0
- package/dist/docs/assets/{reference_hooks.md.BHeG-vjK.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/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 +44 -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 +7 -6
- package/dist/docs/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +4 -4
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +6 -6
- package/dist/docs/reference/cli.html +4 -4
- package/dist/docs/reference/connections.html +4 -4
- package/dist/docs/reference/hooks.html +9 -7
- 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 +4 -4
- 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/hooks.d.ts +3 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +3 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- 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 +18 -3
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +36 -4
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +1 -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 +126 -7
- 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 +16 -0
- package/dist/internal/otel/collector.d.ts.map +1 -0
- package/dist/internal/otel/collector.js +564 -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/server.d.ts.map +1 -1
- package/dist/internal/server.js +25 -1
- package/dist/internal/session-engine.d.ts +10 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +36 -2
- 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-B3HBneZZ.js → index-D-DIYQzw.js} +31 -31
- package/dist/playground/assets/index-DQTH622f.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +31 -4
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +3 -0
- package/docs/deployment.md +2 -1
- package/docs/guides/github.md +79 -6
- package/docs/guides/opentelemetry.md +184 -0
- package/docs/reference/channels.md +3 -1
- package/docs/reference/hooks.md +25 -5
- package/docs/reference/project-layout.md +2 -0
- package/docs/templates/triage.md +147 -0
- package/package.json +23 -1
- package/skills/create-agent/SKILL.md +2 -2
- package/skills/debug/SKILL.md +4 -0
- package/skills/framework-map/SKILL.md +2 -0
- package/skills/otel/SKILL.md +80 -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 +27 -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 +8 -4
- package/src/channels/slack/slack-channel.ts +4 -0
- package/src/hooks.ts +3 -1
- package/src/index.ts +6 -0
- package/src/internal/cli-ax.ts +19 -1
- package/src/internal/discovery.ts +59 -4
- package/src/internal/distribution.ts +1 -0
- package/src/internal/init-project.ts +150 -7
- package/src/internal/otel/attrs.ts +18 -0
- package/src/internal/otel/collector.ts +796 -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/server.ts +38 -1
- package/src/internal/session-engine.ts +52 -0
- package/src/memory.ts +4 -0
- package/src/otel.ts +155 -0
- package/src/types.ts +29 -4
- 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.BA7V8dEJ.js +0 -1
- package/dist/docs/assets/reference_hooks.md.BHeG-vjK.js +0 -12
- 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/{index.md.BKpbkCa6.lean.js → index.md.CMc5FP7E.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_project-layout.md._XdeMahr.lean.js → reference_project-layout.md.D3MdHM2z.lean.js} +0 -0
|
@@ -8,6 +8,7 @@ export interface InitProjectOptions {
|
|
|
8
8
|
name?: string;
|
|
9
9
|
/** Model id override written into agent.ts. */
|
|
10
10
|
model?: string;
|
|
11
|
+
templateDir?: string;
|
|
11
12
|
}
|
|
12
13
|
export type InitFileAction = "create" | "exist";
|
|
13
14
|
export interface InitFileEntry {
|
|
@@ -23,6 +24,29 @@ export interface InitProjectResult {
|
|
|
23
24
|
/** Paths left alone because they already existed. */
|
|
24
25
|
skipped: string[];
|
|
25
26
|
}
|
|
27
|
+
export declare function availableTemplates(): string[];
|
|
28
|
+
export type TemplateResolution = {
|
|
29
|
+
ok: true;
|
|
30
|
+
name: string;
|
|
31
|
+
dir: string;
|
|
32
|
+
} | {
|
|
33
|
+
ok: false;
|
|
34
|
+
message: string;
|
|
35
|
+
};
|
|
36
|
+
export declare function resolveTemplate(name: string): TemplateResolution;
|
|
37
|
+
export type InitTargetCheck = {
|
|
38
|
+
ok: true;
|
|
39
|
+
} | {
|
|
40
|
+
ok: false;
|
|
41
|
+
message: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Re-init must keep the mode the project was scaffolded with: template
|
|
45
|
+
* scaffolds stamp `cursorAgentTemplate` into package.json, and a mismatch
|
|
46
|
+
* here would silently mix default-scaffold files into a template project
|
|
47
|
+
* (or the reverse).
|
|
48
|
+
*/
|
|
49
|
+
export declare function checkInitTarget(rootDir: string, template: string | undefined): InitTargetCheck;
|
|
26
50
|
export declare function initProject(options: InitProjectOptions): Promise<InitProjectResult>;
|
|
27
51
|
export declare function isEexist(error: unknown): boolean;
|
|
28
52
|
export interface InstallScaffoldDependenciesOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/internal/init-project.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/internal/init-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
@@ -433,6 +551,7 @@ export function printInitGuide() {
|
|
|
433
551
|
|
|
434
552
|
Scaffold a project, then open the playground:
|
|
435
553
|
npx ${PACKAGE_NAME} init ./my-agent # installs deps + puts agent-sdk on PATH
|
|
554
|
+
npx ${PACKAGE_NAME} init ./my-triage --template triage # start from a template (agent-sdk templates: triage)
|
|
436
555
|
cd ./my-agent && ${CLI_COMMAND_NAME} dev
|
|
437
556
|
|
|
438
557
|
Recommended loop once the project exists (from the project directory):
|
|
@@ -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,16 @@
|
|
|
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 { OtelRuntime } from "./runtime.js";
|
|
11
|
+
export interface OtelCollector {
|
|
12
|
+
onEvent(event: SessionEvent, session: SessionInfo): void;
|
|
13
|
+
close(): void;
|
|
14
|
+
}
|
|
15
|
+
export declare function createOtelCollector(runtime: OtelRuntime, agentName: string, log: (line: string) => void): OtelCollector;
|
|
16
|
+
//# 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;AAEhE,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;CACf;AAgBD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,aAAa,CAorBf"}
|