@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.
Files changed (223) hide show
  1. package/AGENTS.md +1 -0
  2. package/dist/bin/agent-serve.js +3 -1
  3. package/dist/channels/github/api.d.ts +5 -0
  4. package/dist/channels/github/api.d.ts.map +1 -1
  5. package/dist/channels/github/api.js +18 -0
  6. package/dist/channels/github/defaults.d.ts +4 -5
  7. package/dist/channels/github/defaults.d.ts.map +1 -1
  8. package/dist/channels/github/defaults.js +27 -1
  9. package/dist/channels/github/github-channel.d.ts.map +1 -1
  10. package/dist/channels/github/github-channel.js +41 -10
  11. package/dist/channels/github/index.d.ts +1 -0
  12. package/dist/channels/github/index.d.ts.map +1 -1
  13. package/dist/channels/github/index.js +1 -0
  14. package/dist/channels/github/progress.d.ts +54 -0
  15. package/dist/channels/github/progress.d.ts.map +1 -0
  16. package/dist/channels/github/progress.js +168 -0
  17. package/dist/channels/github/state.d.ts +2 -0
  18. package/dist/channels/github/state.d.ts.map +1 -1
  19. package/dist/channels/github/state.js +1 -1
  20. package/dist/channels/github/types.d.ts +16 -4
  21. package/dist/channels/github/types.d.ts.map +1 -1
  22. package/dist/channels/slack/slack-channel.d.ts +4 -0
  23. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  24. package/dist/channels/slack/slack-channel.js +4 -0
  25. package/dist/channels.d.ts +17 -0
  26. package/dist/channels.d.ts.map +1 -1
  27. package/dist/channels.js +31 -0
  28. package/dist/docs/404.html +2 -2
  29. package/dist/docs/ab.html +4 -4
  30. package/dist/docs/assets/{app.C4-Gwi7g.js → app.fHnNXEJ6.js} +1 -1
  31. package/dist/docs/assets/chunks/@localSearchIndexroot.BMT0xM4I.js +1 -0
  32. package/dist/docs/assets/chunks/{VPLocalSearchBox.DDoLm843.js → VPLocalSearchBox.Cf6ghfFY.js} +1 -1
  33. package/dist/docs/assets/chunks/{theme.SbjGIiM0.js → theme.B_5-VLe8.js} +2 -2
  34. package/dist/docs/assets/{deployment.md.BHVjVqRa.js → deployment.md.Cdp4rTE4.js} +1 -1
  35. package/dist/docs/assets/{guides_github.md.R2QlpR75.js → guides_github.md.DSg0j9qj.js} +29 -3
  36. package/dist/docs/assets/{guides_github.md.R2QlpR75.lean.js → guides_github.md.DSg0j9qj.lean.js} +1 -1
  37. package/dist/docs/assets/guides_opentelemetry.md.Csn7ZI25.js +27 -0
  38. package/dist/docs/assets/guides_opentelemetry.md.Csn7ZI25.lean.js +1 -0
  39. package/dist/docs/assets/index.md.COeoSkcF.js +5 -0
  40. package/dist/docs/assets/index.md.COeoSkcF.lean.js +1 -0
  41. package/dist/docs/assets/{quickstart.md.rIbfahJM.js → quickstart.md.DZxBu44y.js} +18 -49
  42. package/dist/docs/assets/quickstart.md.DZxBu44y.lean.js +1 -0
  43. package/dist/docs/assets/{reference_agent-config.md.CRmkoxd6.js → reference_agent-config.md.XRpxctsA.js} +9 -4
  44. package/dist/docs/assets/{reference_agent-config.md.CRmkoxd6.lean.js → reference_agent-config.md.XRpxctsA.lean.js} +1 -1
  45. package/dist/docs/assets/{reference_channels.md.BIabFUAI.js → reference_channels.md.MN8iDy8V.js} +1 -1
  46. package/dist/docs/assets/{reference_cli.md.DqEqQpGn.js → reference_cli.md.BDmjPPAm.js} +2 -2
  47. package/dist/docs/assets/{reference_hooks.md.B40QAG6m.js → reference_hooks.md.4cbRRIIu.js} +2 -2
  48. package/dist/docs/assets/{reference_hooks.md.B40QAG6m.lean.js → reference_hooks.md.4cbRRIIu.lean.js} +1 -1
  49. package/dist/docs/assets/{reference_project-layout.md._XdeMahr.js → reference_project-layout.md.D3MdHM2z.js} +2 -1
  50. package/dist/docs/assets/{reference_tools.md.lSrsTxYJ.js → reference_tools.md.kJfJAP2m.js} +1 -1
  51. package/dist/docs/assets/templates_triage.md.CConZt1z.js +11 -0
  52. package/dist/docs/assets/templates_triage.md.CConZt1z.lean.js +1 -0
  53. package/dist/docs/building-with-agents.html +5 -5
  54. package/dist/docs/concepts.html +5 -5
  55. package/dist/docs/deployment.html +6 -6
  56. package/dist/docs/evals.html +4 -4
  57. package/dist/docs/example-agents/approval-buddy.html +4 -4
  58. package/dist/docs/example-agents/benny.html +4 -4
  59. package/dist/docs/example-agents/bugbot.html +4 -4
  60. package/dist/docs/example-agents/codebase-wiki.html +4 -4
  61. package/dist/docs/example-agents/codeowners-review.html +4 -4
  62. package/dist/docs/example-agents/concierge.html +4 -4
  63. package/dist/docs/example-agents/fsd.html +4 -4
  64. package/dist/docs/example-agents/index.html +5 -5
  65. package/dist/docs/example-agents/knowledge-base.html +4 -4
  66. package/dist/docs/example-agents/oncall.html +4 -4
  67. package/dist/docs/example-agents/security-reviewer.html +4 -4
  68. package/dist/docs/example-agents/slack-agent.html +4 -4
  69. package/dist/docs/example-agents/weather-agent.html +4 -4
  70. package/dist/docs/guides/agent-to-agent.html +4 -4
  71. package/dist/docs/guides/cloud-runtime.html +5 -5
  72. package/dist/docs/guides/github.html +33 -7
  73. package/dist/docs/guides/human-in-the-loop.html +4 -4
  74. package/dist/docs/guides/mcp-oauth.html +4 -4
  75. package/dist/docs/guides/opentelemetry.html +51 -0
  76. package/dist/docs/guides/slack.html +4 -4
  77. package/dist/docs/guides/webhooks.html +4 -4
  78. package/dist/docs/hashmap.json +1 -1
  79. package/dist/docs/hillclimbing.html +4 -4
  80. package/dist/docs/index.html +8 -27
  81. package/dist/docs/quickstart.html +24 -55
  82. package/dist/docs/reference/agent-config.html +12 -7
  83. package/dist/docs/reference/artifacts.html +4 -4
  84. package/dist/docs/reference/channels.html +6 -6
  85. package/dist/docs/reference/cli.html +7 -7
  86. package/dist/docs/reference/connections.html +4 -4
  87. package/dist/docs/reference/hooks.html +6 -6
  88. package/dist/docs/reference/http-api.html +4 -4
  89. package/dist/docs/reference/instructions.html +4 -4
  90. package/dist/docs/reference/playground.html +4 -4
  91. package/dist/docs/reference/project-layout.html +7 -6
  92. package/dist/docs/reference/prompt.html +4 -4
  93. package/dist/docs/reference/schedules.html +4 -4
  94. package/dist/docs/reference/sessions.html +4 -4
  95. package/dist/docs/reference/skills.html +4 -4
  96. package/dist/docs/reference/subagents.html +4 -4
  97. package/dist/docs/reference/tools.html +6 -6
  98. package/dist/docs/scaffolding-agents.html +4 -4
  99. package/dist/docs/storage.html +4 -4
  100. package/dist/docs/templates/triage.html +35 -0
  101. package/dist/docs/troubleshooting.html +4 -4
  102. package/dist/index.d.ts +3 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +2 -1
  105. package/dist/internal/cli-ax.d.ts +1 -0
  106. package/dist/internal/cli-ax.d.ts.map +1 -1
  107. package/dist/internal/cli-ax.js +20 -5
  108. package/dist/internal/cli-deploy.d.ts.map +1 -1
  109. package/dist/internal/cli-deploy.js +38 -7
  110. package/dist/internal/deploy-client.d.ts +8 -0
  111. package/dist/internal/deploy-client.d.ts.map +1 -1
  112. package/dist/internal/deploy-client.js +5 -2
  113. package/dist/internal/discovery.d.ts.map +1 -1
  114. package/dist/internal/discovery.js +82 -13
  115. package/dist/internal/distribution.d.ts.map +1 -1
  116. package/dist/internal/distribution.js +1 -0
  117. package/dist/internal/host-otel.d.ts +25 -0
  118. package/dist/internal/host-otel.d.ts.map +1 -0
  119. package/dist/internal/host-otel.js +162 -0
  120. package/dist/internal/init-project.d.ts +24 -0
  121. package/dist/internal/init-project.d.ts.map +1 -1
  122. package/dist/internal/init-project.js +136 -17
  123. package/dist/internal/otel/attrs.d.ts +7 -0
  124. package/dist/internal/otel/attrs.d.ts.map +1 -0
  125. package/dist/internal/otel/attrs.js +13 -0
  126. package/dist/internal/otel/collector.d.ts +21 -0
  127. package/dist/internal/otel/collector.d.ts.map +1 -0
  128. package/dist/internal/otel/collector.js +605 -0
  129. package/dist/internal/otel/config.d.ts +42 -0
  130. package/dist/internal/otel/config.d.ts.map +1 -0
  131. package/dist/internal/otel/config.js +236 -0
  132. package/dist/internal/otel/http.d.ts +11 -0
  133. package/dist/internal/otel/http.d.ts.map +1 -0
  134. package/dist/internal/otel/http.js +97 -0
  135. package/dist/internal/otel/runtime.d.ts +21 -0
  136. package/dist/internal/otel/runtime.d.ts.map +1 -0
  137. package/dist/internal/otel/runtime.js +188 -0
  138. package/dist/internal/sdk-runner.d.ts +1 -1
  139. package/dist/internal/sdk-runner.d.ts.map +1 -1
  140. package/dist/internal/sdk-runner.js +1 -1
  141. package/dist/internal/server.d.ts.map +1 -1
  142. package/dist/internal/server.js +26 -1
  143. package/dist/internal/session-engine.d.ts +15 -2
  144. package/dist/internal/session-engine.d.ts.map +1 -1
  145. package/dist/internal/session-engine.js +58 -7
  146. package/dist/memory.d.ts +4 -0
  147. package/dist/memory.d.ts.map +1 -1
  148. package/dist/memory.js +4 -0
  149. package/dist/otel.d.ts +88 -0
  150. package/dist/otel.d.ts.map +1 -0
  151. package/dist/otel.js +64 -0
  152. package/dist/playground/assets/index-CZH9EFvO.css +1 -0
  153. package/dist/playground/assets/{index-B3HBneZZ.js → index-Dces8BDp.js} +34 -34
  154. package/dist/playground/index.html +2 -2
  155. package/dist/types.d.ts +103 -3
  156. package/dist/types.d.ts.map +1 -1
  157. package/docs/README.md +35 -105
  158. package/docs/deployment.md +2 -1
  159. package/docs/guides/github.md +79 -6
  160. package/docs/guides/opentelemetry.md +214 -0
  161. package/docs/quickstart.md +89 -227
  162. package/docs/reference/agent-config.md +52 -0
  163. package/docs/reference/channels.md +3 -1
  164. package/docs/reference/cli.md +2 -2
  165. package/docs/reference/hooks.md +21 -4
  166. package/docs/reference/project-layout.md +2 -0
  167. package/docs/reference/tools.md +5 -4
  168. package/docs/templates/triage.md +147 -0
  169. package/package.json +24 -2
  170. package/skills/create-agent/SKILL.md +2 -2
  171. package/skills/framework-map/SKILL.md +2 -0
  172. package/skills/otel/SKILL.md +98 -0
  173. package/src/bin/agent-serve.ts +3 -1
  174. package/src/channels/github/api.ts +22 -0
  175. package/src/channels/github/defaults.ts +27 -6
  176. package/src/channels/github/github-channel.ts +36 -1
  177. package/src/channels/github/index.ts +1 -0
  178. package/src/channels/github/progress.ts +243 -0
  179. package/src/channels/github/state.ts +3 -0
  180. package/src/channels/github/types.ts +12 -4
  181. package/src/channels/slack/slack-channel.ts +4 -0
  182. package/src/channels.ts +38 -0
  183. package/src/index.ts +7 -0
  184. package/src/internal/cli-ax.ts +21 -3
  185. package/src/internal/cli-deploy.ts +58 -3
  186. package/src/internal/deploy-client.ts +11 -0
  187. package/src/internal/discovery.ts +108 -4
  188. package/src/internal/distribution.ts +1 -0
  189. package/src/internal/host-otel.ts +252 -0
  190. package/src/internal/init-project.ts +160 -17
  191. package/src/internal/otel/attrs.ts +18 -0
  192. package/src/internal/otel/collector.ts +881 -0
  193. package/src/internal/otel/config.ts +307 -0
  194. package/src/internal/otel/http.ts +126 -0
  195. package/src/internal/otel/runtime.ts +271 -0
  196. package/src/internal/sdk-runner.ts +6 -0
  197. package/src/internal/server.ts +39 -1
  198. package/src/internal/session-engine.ts +83 -2
  199. package/src/memory.ts +4 -0
  200. package/src/otel.ts +155 -0
  201. package/src/types.ts +109 -3
  202. package/templates/triage/README.md +48 -0
  203. package/templates/triage/agent/agent.ts +14 -0
  204. package/templates/triage/agent/channels/intake.ts +20 -0
  205. package/templates/triage/agent/channels/slack.ts +3 -0
  206. package/templates/triage/agent/hooks/memory.ts +3 -0
  207. package/templates/triage/agent/instructions.md +27 -0
  208. package/templates/triage/agent/skills/triage-rubric.md +43 -0
  209. package/templates/triage/agent/tools/record_triage.ts +23 -0
  210. package/templates/triage/evals/evals.config.ts +5 -0
  211. package/templates/triage/evals/triage.eval.ts +43 -0
  212. package/templates/triage/package.json +18 -0
  213. package/templates/triage/tsconfig.json +12 -0
  214. package/dist/docs/assets/chunks/@localSearchIndexroot.BlU3A8EB.js +0 -1
  215. package/dist/docs/assets/index.md.BKpbkCa6.js +0 -24
  216. package/dist/docs/assets/index.md.BKpbkCa6.lean.js +0 -1
  217. package/dist/docs/assets/quickstart.md.rIbfahJM.lean.js +0 -1
  218. package/dist/playground/assets/index-Bqk9nplh.css +0 -1
  219. /package/dist/docs/assets/{deployment.md.BHVjVqRa.lean.js → deployment.md.Cdp4rTE4.lean.js} +0 -0
  220. /package/dist/docs/assets/{reference_channels.md.BIabFUAI.lean.js → reference_channels.md.MN8iDy8V.lean.js} +0 -0
  221. /package/dist/docs/assets/{reference_cli.md.DqEqQpGn.lean.js → reference_cli.md.BDmjPPAm.lean.js} +0 -0
  222. /package/dist/docs/assets/{reference_project-layout.md._XdeMahr.lean.js → reference_project-layout.md.D3MdHM2z.lean.js} +0 -0
  223. /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 name = (_a = options.name) !== null && _a !== void 0 ? _a : basename(rootDir);
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 === "EEXIST");
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: `${CLI_COMMAND_NAME} login`,
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: `${CLI_COMMAND_NAME} dev`,
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 + puts agent-sdk on PATH
436
- cd ./my-agent && ${CLI_COMMAND_NAME} dev
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"}