agent-eval-opencode 0.10.0

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 (129) hide show
  1. package/dist/cli.d.ts +6 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +590 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/index.d.ts +30 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +29 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/lib/agents/claude-code.d.ts +12 -0
  10. package/dist/lib/agents/claude-code.d.ts.map +1 -0
  11. package/dist/lib/agents/claude-code.js +231 -0
  12. package/dist/lib/agents/claude-code.js.map +1 -0
  13. package/dist/lib/agents/codex.d.ts +12 -0
  14. package/dist/lib/agents/codex.d.ts.map +1 -0
  15. package/dist/lib/agents/codex.js +267 -0
  16. package/dist/lib/agents/codex.js.map +1 -0
  17. package/dist/lib/agents/cursor.d.ts +10 -0
  18. package/dist/lib/agents/cursor.d.ts.map +1 -0
  19. package/dist/lib/agents/cursor.js +204 -0
  20. package/dist/lib/agents/cursor.js.map +1 -0
  21. package/dist/lib/agents/gemini.d.ts +10 -0
  22. package/dist/lib/agents/gemini.d.ts.map +1 -0
  23. package/dist/lib/agents/gemini.js +207 -0
  24. package/dist/lib/agents/gemini.js.map +1 -0
  25. package/dist/lib/agents/index.d.ts +7 -0
  26. package/dist/lib/agents/index.d.ts.map +1 -0
  27. package/dist/lib/agents/index.js +20 -0
  28. package/dist/lib/agents/index.js.map +1 -0
  29. package/dist/lib/agents/opencode.d.ts +11 -0
  30. package/dist/lib/agents/opencode.d.ts.map +1 -0
  31. package/dist/lib/agents/opencode.js +245 -0
  32. package/dist/lib/agents/opencode.js.map +1 -0
  33. package/dist/lib/agents/registry.d.ts +23 -0
  34. package/dist/lib/agents/registry.d.ts.map +1 -0
  35. package/dist/lib/agents/registry.js +35 -0
  36. package/dist/lib/agents/registry.js.map +1 -0
  37. package/dist/lib/agents/shared.d.ts +83 -0
  38. package/dist/lib/agents/shared.d.ts.map +1 -0
  39. package/dist/lib/agents/shared.js +192 -0
  40. package/dist/lib/agents/shared.js.map +1 -0
  41. package/dist/lib/agents/types.d.ts +73 -0
  42. package/dist/lib/agents/types.d.ts.map +1 -0
  43. package/dist/lib/agents/types.js +5 -0
  44. package/dist/lib/agents/types.js.map +1 -0
  45. package/dist/lib/classifier.d.ts +89 -0
  46. package/dist/lib/classifier.d.ts.map +1 -0
  47. package/dist/lib/classifier.js +285 -0
  48. package/dist/lib/classifier.js.map +1 -0
  49. package/dist/lib/config.d.ts +37 -0
  50. package/dist/lib/config.d.ts.map +1 -0
  51. package/dist/lib/config.js +187 -0
  52. package/dist/lib/config.js.map +1 -0
  53. package/dist/lib/dashboard.d.ts +65 -0
  54. package/dist/lib/dashboard.d.ts.map +1 -0
  55. package/dist/lib/dashboard.js +237 -0
  56. package/dist/lib/dashboard.js.map +1 -0
  57. package/dist/lib/docker-sandbox.d.ts +92 -0
  58. package/dist/lib/docker-sandbox.d.ts.map +1 -0
  59. package/dist/lib/docker-sandbox.js +375 -0
  60. package/dist/lib/docker-sandbox.js.map +1 -0
  61. package/dist/lib/fingerprint.d.ts +15 -0
  62. package/dist/lib/fingerprint.d.ts.map +1 -0
  63. package/dist/lib/fingerprint.js +59 -0
  64. package/dist/lib/fingerprint.js.map +1 -0
  65. package/dist/lib/fixture.d.ts +55 -0
  66. package/dist/lib/fixture.d.ts.map +1 -0
  67. package/dist/lib/fixture.js +215 -0
  68. package/dist/lib/fixture.js.map +1 -0
  69. package/dist/lib/housekeeping.d.ts +26 -0
  70. package/dist/lib/housekeeping.d.ts.map +1 -0
  71. package/dist/lib/housekeeping.js +170 -0
  72. package/dist/lib/housekeeping.js.map +1 -0
  73. package/dist/lib/init.d.ts +21 -0
  74. package/dist/lib/init.d.ts.map +1 -0
  75. package/dist/lib/init.js +275 -0
  76. package/dist/lib/init.js.map +1 -0
  77. package/dist/lib/o11y/index.d.ts +13 -0
  78. package/dist/lib/o11y/index.d.ts.map +1 -0
  79. package/dist/lib/o11y/index.js +13 -0
  80. package/dist/lib/o11y/index.js.map +1 -0
  81. package/dist/lib/o11y/parsers/claude-code.d.ts +18 -0
  82. package/dist/lib/o11y/parsers/claude-code.d.ts.map +1 -0
  83. package/dist/lib/o11y/parsers/claude-code.js +343 -0
  84. package/dist/lib/o11y/parsers/claude-code.js.map +1 -0
  85. package/dist/lib/o11y/parsers/codex.d.ts +17 -0
  86. package/dist/lib/o11y/parsers/codex.d.ts.map +1 -0
  87. package/dist/lib/o11y/parsers/codex.js +364 -0
  88. package/dist/lib/o11y/parsers/codex.js.map +1 -0
  89. package/dist/lib/o11y/parsers/cursor.d.ts +21 -0
  90. package/dist/lib/o11y/parsers/cursor.d.ts.map +1 -0
  91. package/dist/lib/o11y/parsers/cursor.js +226 -0
  92. package/dist/lib/o11y/parsers/cursor.js.map +1 -0
  93. package/dist/lib/o11y/parsers/gemini.d.ts +21 -0
  94. package/dist/lib/o11y/parsers/gemini.d.ts.map +1 -0
  95. package/dist/lib/o11y/parsers/gemini.js +241 -0
  96. package/dist/lib/o11y/parsers/gemini.js.map +1 -0
  97. package/dist/lib/o11y/parsers/index.d.ts +55 -0
  98. package/dist/lib/o11y/parsers/index.d.ts.map +1 -0
  99. package/dist/lib/o11y/parsers/index.js +284 -0
  100. package/dist/lib/o11y/parsers/index.js.map +1 -0
  101. package/dist/lib/o11y/parsers/opencode.d.ts +17 -0
  102. package/dist/lib/o11y/parsers/opencode.d.ts.map +1 -0
  103. package/dist/lib/o11y/parsers/opencode.js +320 -0
  104. package/dist/lib/o11y/parsers/opencode.js.map +1 -0
  105. package/dist/lib/o11y/types.d.ts +113 -0
  106. package/dist/lib/o11y/types.d.ts.map +1 -0
  107. package/dist/lib/o11y/types.js +6 -0
  108. package/dist/lib/o11y/types.js.map +1 -0
  109. package/dist/lib/results.d.ts +91 -0
  110. package/dist/lib/results.d.ts.map +1 -0
  111. package/dist/lib/results.js +361 -0
  112. package/dist/lib/results.js.map +1 -0
  113. package/dist/lib/runner.d.ts +71 -0
  114. package/dist/lib/runner.d.ts.map +1 -0
  115. package/dist/lib/runner.js +267 -0
  116. package/dist/lib/runner.js.map +1 -0
  117. package/dist/lib/sandbox.d.ts +173 -0
  118. package/dist/lib/sandbox.d.ts.map +1 -0
  119. package/dist/lib/sandbox.js +337 -0
  120. package/dist/lib/sandbox.js.map +1 -0
  121. package/dist/lib/types.d.ts +258 -0
  122. package/dist/lib/types.d.ts.map +1 -0
  123. package/dist/lib/types.js +15 -0
  124. package/dist/lib/types.js.map +1 -0
  125. package/dist/test-setup.d.ts +2 -0
  126. package/dist/test-setup.d.ts.map +1 -0
  127. package/dist/test-setup.js +6 -0
  128. package/dist/test-setup.js.map +1 -0
  129. package/package.json +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/lib/o11y/parsers/cursor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Parser for Gemini CLI transcript format.
3
+ * Supports two output formats:
4
+ *
5
+ * 1. CLI format (--output-format stream-json via OpenCode framework):
6
+ * - Events: step_start, tool_use (with part.tool/part.state), text, step_finish
7
+ * - Timestamps: epoch milliseconds
8
+ *
9
+ * 2. Direct-API format (custom agent runner):
10
+ * - Events: init, message (with delta), tool_use (with tool_name/parameters), tool_result
11
+ * - Timestamps: ISO strings
12
+ */
13
+ import type { TranscriptEvent } from '../types.js';
14
+ /**
15
+ * Parse Gemini JSONL transcript into normalized events.
16
+ */
17
+ export declare function parseGeminiTranscript(raw: string): {
18
+ events: TranscriptEvent[];
19
+ errors: string[];
20
+ };
21
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../src/lib/o11y/parsers/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,aAAa,CAAC;AAmM7D;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAClD,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAyDA"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Parser for Gemini CLI transcript format.
3
+ * Supports two output formats:
4
+ *
5
+ * 1. CLI format (--output-format stream-json via OpenCode framework):
6
+ * - Events: step_start, tool_use (with part.tool/part.state), text, step_finish
7
+ * - Timestamps: epoch milliseconds
8
+ *
9
+ * 2. Direct-API format (custom agent runner):
10
+ * - Events: init, message (with delta), tool_use (with tool_name/parameters), tool_result
11
+ * - Timestamps: ISO strings
12
+ */
13
+ /**
14
+ * Map Gemini tool names to canonical names.
15
+ */
16
+ function normalizeToolName(name) {
17
+ const toolMap = {
18
+ // CLI format tools
19
+ read: 'file_read',
20
+ write: 'file_write',
21
+ edit: 'file_edit',
22
+ bash: 'shell',
23
+ glob: 'glob',
24
+ // Direct-API format tools
25
+ read_file: 'file_read',
26
+ write_file: 'file_write',
27
+ list_directory: 'list_dir',
28
+ run_shell_command: 'shell',
29
+ // Common aliases
30
+ shell: 'shell',
31
+ grep: 'grep',
32
+ ls: 'list_dir',
33
+ search: 'web_search',
34
+ web_search: 'web_search',
35
+ fetch: 'web_fetch',
36
+ web_fetch: 'web_fetch',
37
+ };
38
+ return toolMap[name.toLowerCase()] || 'unknown';
39
+ }
40
+ /**
41
+ * Convert a timestamp value to ISO string.
42
+ * Handles epoch milliseconds (number) and ISO strings.
43
+ */
44
+ function toISO(ts) {
45
+ if (typeof ts === 'number')
46
+ return new Date(ts).toISOString();
47
+ if (typeof ts === 'string')
48
+ return ts;
49
+ return undefined;
50
+ }
51
+ /**
52
+ * Extract file path from tool arguments.
53
+ */
54
+ function extractFilePath(args) {
55
+ return (args.path || args.file_path || args.filePath || args.file || args.filename);
56
+ }
57
+ /**
58
+ * Extract command from tool arguments.
59
+ */
60
+ function extractCommand(args) {
61
+ if (typeof args.command === 'string')
62
+ return args.command;
63
+ if (typeof args.cmd === 'string')
64
+ return args.cmd;
65
+ return undefined;
66
+ }
67
+ /**
68
+ * Parse a single JSONL line from a Gemini transcript.
69
+ * Handles both CLI and direct-API formats.
70
+ */
71
+ function parseGeminiLine(line) {
72
+ const events = [];
73
+ try {
74
+ const data = JSON.parse(line);
75
+ const eventType = data.type;
76
+ // --- CLI format: tool_use with part.tool / part.state ---
77
+ if (eventType === 'tool_use' && data.part?.tool) {
78
+ const part = data.part;
79
+ const state = part.state;
80
+ const name = part.tool;
81
+ const args = state?.input || {};
82
+ const output = state?.output;
83
+ const status = state?.status;
84
+ events.push({
85
+ timestamp: toISO(data.timestamp),
86
+ type: 'tool_call',
87
+ tool: {
88
+ name: normalizeToolName(name),
89
+ originalName: name,
90
+ args,
91
+ },
92
+ raw: data,
93
+ });
94
+ if (status === 'completed' && output !== undefined) {
95
+ const metadata = state?.metadata;
96
+ const exitCode = metadata?.exit;
97
+ const isShell = normalizeToolName(name) === 'shell';
98
+ const success = isShell
99
+ ? exitCode === 0 || exitCode === undefined
100
+ : status === 'completed' && !state?.error;
101
+ events.push({
102
+ timestamp: toISO(data.timestamp),
103
+ type: 'tool_result',
104
+ tool: {
105
+ name: normalizeToolName(name),
106
+ originalName: name,
107
+ result: output,
108
+ success,
109
+ },
110
+ raw: state,
111
+ });
112
+ }
113
+ return events;
114
+ }
115
+ // --- Direct-API format: tool_use with tool_name / parameters ---
116
+ if (eventType === 'tool_use' && data.tool_name) {
117
+ const name = data.tool_name;
118
+ const args = data.parameters || {};
119
+ events.push({
120
+ timestamp: toISO(data.timestamp),
121
+ type: 'tool_call',
122
+ tool: {
123
+ name: normalizeToolName(name),
124
+ originalName: name,
125
+ args,
126
+ },
127
+ raw: data,
128
+ });
129
+ return events;
130
+ }
131
+ // --- Direct-API format: separate tool_result event ---
132
+ if (eventType === 'tool_result') {
133
+ const toolId = data.tool_id;
134
+ // Infer original tool name from tool_id prefix (e.g. "read_file-1770...")
135
+ const originalName = toolId?.split('-')[0] || 'unknown';
136
+ const status = data.status;
137
+ const hasError = status === 'error' || !!data.error;
138
+ events.push({
139
+ timestamp: toISO(data.timestamp),
140
+ type: 'tool_result',
141
+ tool: {
142
+ name: normalizeToolName(originalName),
143
+ originalName,
144
+ result: data.output,
145
+ success: !hasError,
146
+ },
147
+ raw: data,
148
+ });
149
+ return events;
150
+ }
151
+ // --- CLI format: text with part.text ---
152
+ if (eventType === 'text' && data.part?.text) {
153
+ const text = data.part.text;
154
+ if (text.trim()) {
155
+ events.push({
156
+ timestamp: toISO(data.timestamp),
157
+ type: 'message',
158
+ role: 'assistant',
159
+ content: text,
160
+ raw: data,
161
+ });
162
+ }
163
+ return events;
164
+ }
165
+ // --- Direct-API format: message with role/content ---
166
+ if (eventType === 'message') {
167
+ const role = data.role;
168
+ const content = data.content;
169
+ if (role && content) {
170
+ events.push({
171
+ timestamp: toISO(data.timestamp),
172
+ type: 'message',
173
+ role: role,
174
+ content,
175
+ raw: { ...data, _delta: !!data.delta },
176
+ });
177
+ }
178
+ return events;
179
+ }
180
+ // --- Metadata events — skip ---
181
+ // init, step_start, step_finish
182
+ }
183
+ catch {
184
+ // Skip unparseable lines
185
+ }
186
+ return events;
187
+ }
188
+ /**
189
+ * Parse Gemini JSONL transcript into normalized events.
190
+ */
191
+ export function parseGeminiTranscript(raw) {
192
+ const events = [];
193
+ const errors = [];
194
+ const lines = raw.split('\n').filter((line) => line.trim());
195
+ for (const line of lines) {
196
+ try {
197
+ const lineEvents = parseGeminiLine(line);
198
+ events.push(...lineEvents);
199
+ }
200
+ catch (e) {
201
+ errors.push(`Failed to parse line: ${e instanceof Error ? e.message : String(e)}`);
202
+ }
203
+ }
204
+ // Post-process: aggregate contiguous assistant delta messages into single events.
205
+ // This avoids inflating turn counts while still counting actual turns.
206
+ const aggregated = [];
207
+ for (const event of events) {
208
+ const isDelta = event.raw?._delta === true;
209
+ if (event.type === 'message' && event.role === 'assistant' && isDelta) {
210
+ const prev = aggregated[aggregated.length - 1];
211
+ if (prev?.type === 'message' &&
212
+ prev.role === 'assistant' &&
213
+ prev.raw?._delta === true) {
214
+ // Merge into previous delta message
215
+ prev.content = (prev.content || '') + (event.content || '');
216
+ continue;
217
+ }
218
+ }
219
+ aggregated.push(event);
220
+ }
221
+ // Post-process: extract metadata into tool args
222
+ for (const event of aggregated) {
223
+ if (event.type === 'tool_call' && event.tool) {
224
+ const args = event.tool.args || {};
225
+ if (['file_read', 'file_write', 'file_edit'].includes(event.tool.name)) {
226
+ const path = extractFilePath(args);
227
+ if (path) {
228
+ event.tool.args = { ...args, _extractedPath: path };
229
+ }
230
+ }
231
+ if (event.tool.name === 'shell') {
232
+ const command = extractCommand(args);
233
+ if (command) {
234
+ event.tool.args = { ...args, _extractedCommand: command };
235
+ }
236
+ }
237
+ }
238
+ }
239
+ return { events: aggregated, errors };
240
+ }
241
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/lib/o11y/parsers/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Main parser entry point.
3
+ * Routes to agent-specific parsers and generates summaries.
4
+ */
5
+ import type { Transcript, TranscriptSummary } from '../types.js';
6
+ import { parseClaudeCodeTranscript } from './claude-code.js';
7
+ import { parseCodexTranscript } from './codex.js';
8
+ import { parseOpenCodeTranscript } from './opencode.js';
9
+ import { parseGeminiTranscript } from './gemini.js';
10
+ import { parseCursorTranscript } from './cursor.js';
11
+ /**
12
+ * Supported agent types for parsing.
13
+ */
14
+ export type ParseableAgent = 'vercel-ai-gateway/claude-code' | 'claude-code' | 'vercel-ai-gateway/codex' | 'codex' | 'opencode' | 'gemini' | 'cursor';
15
+ /**
16
+ * Parser registry mapping agent key patterns to their parsers.
17
+ */
18
+ declare const AGENT_PARSERS: {
19
+ readonly 'claude-code': typeof parseClaudeCodeTranscript;
20
+ readonly codex: typeof parseCodexTranscript;
21
+ readonly opencode: typeof parseOpenCodeTranscript;
22
+ readonly gemini: typeof parseGeminiTranscript;
23
+ readonly cursor: typeof parseCursorTranscript;
24
+ };
25
+ /**
26
+ * List of supported agent keys for error messages.
27
+ */
28
+ export declare const SUPPORTED_AGENTS: Array<keyof typeof AGENT_PARSERS>;
29
+ /**
30
+ * Parse a raw transcript into a structured format.
31
+ *
32
+ * @param raw - The raw transcript string (JSONL format)
33
+ * @param agent - The agent type that produced this transcript
34
+ * @param model - Optional model name
35
+ * @returns Transcript with events and summary
36
+ */
37
+ export declare function parseTranscript(raw: string, agent: string, model?: string): Transcript;
38
+ /**
39
+ * Parse transcript and return only the summary (lighter weight).
40
+ */
41
+ export declare function parseTranscriptSummary(raw: string, agent: string): TranscriptSummary;
42
+ /**
43
+ * Load a transcript from a string, handling both raw and parsed formats.
44
+ *
45
+ * - If the input is already a parsed transcript (JSON), returns it directly
46
+ * - If the input is raw JSONL from an agent, parses it
47
+ *
48
+ * @param content - The transcript content (raw JSONL or parsed JSON)
49
+ * @param agent - The agent type (required for raw transcripts, optional for parsed)
50
+ * @param model - Optional model name
51
+ * @returns Transcript
52
+ */
53
+ export declare function loadTranscript(content: string, agent?: string, model?: string): Transcript;
54
+ export {};
55
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/o11y/parsers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEV,UAAU,EACV,iBAAiB,EAIlB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,+BAA+B,GAC/B,aAAa,GACb,yBAAyB,GACzB,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,CAAC;AAEb;;GAEG;AACH,QAAA,MAAM,aAAa;;;;;;CAMT,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAiC,KAAK,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AA2IhG;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,CAiFZ;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAGnB;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,CAyBZ"}
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Main parser entry point.
3
+ * Routes to agent-specific parsers and generates summaries.
4
+ */
5
+ import { parseClaudeCodeTranscript } from './claude-code.js';
6
+ import { parseCodexTranscript } from './codex.js';
7
+ import { parseOpenCodeTranscript } from './opencode.js';
8
+ import { parseGeminiTranscript } from './gemini.js';
9
+ import { parseCursorTranscript } from './cursor.js';
10
+ /**
11
+ * Parser registry mapping agent key patterns to their parsers.
12
+ */
13
+ const AGENT_PARSERS = {
14
+ 'claude-code': parseClaudeCodeTranscript,
15
+ 'codex': parseCodexTranscript,
16
+ 'opencode': parseOpenCodeTranscript,
17
+ 'gemini': parseGeminiTranscript,
18
+ 'cursor': parseCursorTranscript,
19
+ };
20
+ /**
21
+ * List of supported agent keys for error messages.
22
+ */
23
+ export const SUPPORTED_AGENTS = Object.keys(AGENT_PARSERS);
24
+ /**
25
+ * Get the parser function for an agent type.
26
+ * Returns null if no parser is available for the agent.
27
+ */
28
+ function getParserForAgent(agent) {
29
+ for (const key of SUPPORTED_AGENTS) {
30
+ if (agent.includes(key)) {
31
+ return AGENT_PARSERS[key];
32
+ }
33
+ }
34
+ return null;
35
+ }
36
+ /**
37
+ * Generate summary statistics from transcript events.
38
+ */
39
+ function generateSummary(events) {
40
+ const toolCalls = {
41
+ file_read: 0,
42
+ file_write: 0,
43
+ file_edit: 0,
44
+ shell: 0,
45
+ web_fetch: 0,
46
+ web_search: 0,
47
+ glob: 0,
48
+ grep: 0,
49
+ list_dir: 0,
50
+ agent_task: 0,
51
+ unknown: 0,
52
+ };
53
+ const webFetches = [];
54
+ const filesRead = new Set();
55
+ const filesModified = new Set();
56
+ const shellCommands = [];
57
+ const errors = [];
58
+ let thinkingBlocks = 0;
59
+ let totalTurns = 0;
60
+ for (const event of events) {
61
+ switch (event.type) {
62
+ case 'message':
63
+ if (event.role === 'assistant') {
64
+ totalTurns++;
65
+ }
66
+ break;
67
+ case 'tool_call':
68
+ if (event.tool) {
69
+ toolCalls[event.tool.name]++;
70
+ const args = event.tool.args || {};
71
+ // Track file operations
72
+ if (event.tool.name === 'file_read') {
73
+ const path = (args._extractedPath || args.path || args.file);
74
+ if (path)
75
+ filesRead.add(path);
76
+ }
77
+ if (event.tool.name === 'file_write' || event.tool.name === 'file_edit') {
78
+ const path = (args._extractedPath || args.path || args.file);
79
+ if (path)
80
+ filesModified.add(path);
81
+ }
82
+ // Track web fetches
83
+ if (event.tool.name === 'web_fetch') {
84
+ const url = (args._extractedUrl || args.url || args.uri);
85
+ if (url) {
86
+ webFetches.push({
87
+ url,
88
+ method: args.method,
89
+ });
90
+ }
91
+ }
92
+ // Track shell commands
93
+ if (event.tool.name === 'shell') {
94
+ const command = (args._extractedCommand || args.command || args.cmd);
95
+ if (command) {
96
+ shellCommands.push({ command });
97
+ }
98
+ }
99
+ }
100
+ break;
101
+ case 'tool_result':
102
+ if (event.tool) {
103
+ // Update web fetch with success status
104
+ if (event.tool.success !== undefined) {
105
+ const lastFetch = webFetches[webFetches.length - 1];
106
+ if (lastFetch && !lastFetch.success) {
107
+ lastFetch.success = event.tool.success;
108
+ }
109
+ }
110
+ // Update shell command with exit code
111
+ const lastCmd = shellCommands[shellCommands.length - 1];
112
+ if (lastCmd && lastCmd.exitCode === undefined) {
113
+ lastCmd.success = event.tool.success;
114
+ // Try to extract exit code from result
115
+ const result = event.tool.result;
116
+ if (typeof result === 'object' && result !== null && 'exitCode' in result) {
117
+ lastCmd.exitCode = result.exitCode;
118
+ }
119
+ }
120
+ }
121
+ break;
122
+ case 'thinking':
123
+ thinkingBlocks++;
124
+ break;
125
+ case 'error':
126
+ if (event.content) {
127
+ errors.push(event.content);
128
+ }
129
+ break;
130
+ }
131
+ }
132
+ const totalToolCalls = Object.values(toolCalls).reduce((a, b) => a + b, 0);
133
+ return {
134
+ totalTurns,
135
+ toolCalls,
136
+ totalToolCalls,
137
+ webFetches,
138
+ filesRead: Array.from(filesRead),
139
+ filesModified: Array.from(filesModified),
140
+ shellCommands,
141
+ errors,
142
+ thinkingBlocks,
143
+ };
144
+ }
145
+ /**
146
+ * Parse a raw transcript into a structured format.
147
+ *
148
+ * @param raw - The raw transcript string (JSONL format)
149
+ * @param agent - The agent type that produced this transcript
150
+ * @param model - Optional model name
151
+ * @returns Transcript with events and summary
152
+ */
153
+ export function parseTranscript(raw, agent, model) {
154
+ if (!raw || !raw.trim()) {
155
+ return {
156
+ agent,
157
+ model,
158
+ events: [],
159
+ summary: {
160
+ totalTurns: 0,
161
+ toolCalls: {
162
+ file_read: 0,
163
+ file_write: 0,
164
+ file_edit: 0,
165
+ shell: 0,
166
+ web_fetch: 0,
167
+ web_search: 0,
168
+ glob: 0,
169
+ grep: 0,
170
+ list_dir: 0,
171
+ agent_task: 0,
172
+ unknown: 0,
173
+ },
174
+ totalToolCalls: 0,
175
+ webFetches: [],
176
+ filesRead: [],
177
+ filesModified: [],
178
+ shellCommands: [],
179
+ errors: [],
180
+ thinkingBlocks: 0,
181
+ },
182
+ parseSuccess: true,
183
+ parseErrors: [],
184
+ };
185
+ }
186
+ const parser = getParserForAgent(agent);
187
+ // No parser available for this agent
188
+ if (!parser) {
189
+ return {
190
+ agent,
191
+ model,
192
+ events: [],
193
+ summary: {
194
+ totalTurns: 0,
195
+ toolCalls: {
196
+ file_read: 0,
197
+ file_write: 0,
198
+ file_edit: 0,
199
+ shell: 0,
200
+ web_fetch: 0,
201
+ web_search: 0,
202
+ glob: 0,
203
+ grep: 0,
204
+ list_dir: 0,
205
+ agent_task: 0,
206
+ unknown: 0,
207
+ },
208
+ totalToolCalls: 0,
209
+ webFetches: [],
210
+ filesRead: [],
211
+ filesModified: [],
212
+ shellCommands: [],
213
+ errors: [],
214
+ thinkingBlocks: 0,
215
+ },
216
+ parseSuccess: false,
217
+ parseErrors: [`No parser available for agent: ${agent}. Supported agents: ${SUPPORTED_AGENTS.join(', ')}`],
218
+ };
219
+ }
220
+ const { events, errors } = parser(raw);
221
+ const summary = generateSummary(events);
222
+ return {
223
+ agent,
224
+ model,
225
+ events,
226
+ summary,
227
+ parseSuccess: errors.length === 0,
228
+ parseErrors: errors.length > 0 ? errors : undefined,
229
+ };
230
+ }
231
+ /**
232
+ * Parse transcript and return only the summary (lighter weight).
233
+ */
234
+ export function parseTranscriptSummary(raw, agent) {
235
+ const { summary } = parseTranscript(raw, agent);
236
+ return summary;
237
+ }
238
+ /**
239
+ * Check if a parsed object looks like a Transcript.
240
+ */
241
+ function isTranscript(obj) {
242
+ if (typeof obj !== 'object' || obj === null)
243
+ return false;
244
+ const t = obj;
245
+ return (typeof t.agent === 'string' &&
246
+ Array.isArray(t.events) &&
247
+ typeof t.summary === 'object' &&
248
+ t.summary !== null &&
249
+ typeof t.parseSuccess === 'boolean');
250
+ }
251
+ /**
252
+ * Load a transcript from a string, handling both raw and parsed formats.
253
+ *
254
+ * - If the input is already a parsed transcript (JSON), returns it directly
255
+ * - If the input is raw JSONL from an agent, parses it
256
+ *
257
+ * @param content - The transcript content (raw JSONL or parsed JSON)
258
+ * @param agent - The agent type (required for raw transcripts, optional for parsed)
259
+ * @param model - Optional model name
260
+ * @returns Transcript
261
+ */
262
+ export function loadTranscript(content, agent, model) {
263
+ const trimmed = content.trim();
264
+ // Try to detect if it's already a parsed transcript (single JSON object)
265
+ // Parsed transcripts start with { and are valid JSON with our structure
266
+ if (trimmed.startsWith('{') && !trimmed.includes('\n{')) {
267
+ try {
268
+ const parsed = JSON.parse(trimmed);
269
+ if (isTranscript(parsed)) {
270
+ return parsed;
271
+ }
272
+ }
273
+ catch {
274
+ // Not valid JSON, treat as raw transcript
275
+ }
276
+ }
277
+ // It's a raw transcript - agent is required
278
+ if (!agent) {
279
+ throw new Error('Agent type is required when parsing raw transcripts. ' +
280
+ 'Provide the agent parameter or use an already-parsed transcript.');
281
+ }
282
+ return parseTranscript(content, agent, model);
283
+ }
284
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/o11y/parsers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Parser for OpenCode CLI transcript format.
3
+ * OpenCode outputs JSON events to stdout when run with --format json.
4
+ *
5
+ * Format reference (based on OpenCode CLI output):
6
+ * - Events have a "kind" field indicating the event type
7
+ * - Messages, tool calls, and results are separate events
8
+ */
9
+ import type { TranscriptEvent } from '../types.js';
10
+ /**
11
+ * Parse OpenCode JSONL transcript into normalized events.
12
+ */
13
+ export declare function parseOpenCodeTranscript(raw: string): {
14
+ events: TranscriptEvent[];
15
+ errors: string[];
16
+ };
17
+ //# sourceMappingURL=opencode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../../src/lib/o11y/parsers/opencode.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,aAAa,CAAC;AAqS7D;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG;IACpD,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA+CA"}