@eggjs/agent-tracing 3.73.0-beta.1
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/LICENSE +21 -0
- package/dist/claude.d.ts +2 -0
- package/dist/claude.js +22 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +23 -0
- package/dist/langgraph.d.ts +2 -0
- package/dist/langgraph.js +21 -0
- package/dist/src/AbstractLogServiceClient.d.ts +31 -0
- package/dist/src/AbstractLogServiceClient.js +35 -0
- package/dist/src/AbstractOssClient.d.ts +27 -0
- package/dist/src/AbstractOssClient.js +31 -0
- package/dist/src/ClaudeAgentTracer.d.ts +107 -0
- package/dist/src/ClaudeAgentTracer.js +448 -0
- package/dist/src/LangGraphTracer.d.ts +28 -0
- package/dist/src/LangGraphTracer.js +89 -0
- package/dist/src/TracingService.d.ts +39 -0
- package/dist/src/TracingService.js +164 -0
- package/dist/src/types.d.ts +121 -0
- package/dist/src/types.js +19 -0
- package/package.json +92 -0
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ClaudeAgentTracer = exports.TraceSession = void 0;
|
|
13
|
+
const node_crypto_1 = require("node:crypto");
|
|
14
|
+
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
15
|
+
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
16
|
+
const types_1 = require("./types");
|
|
17
|
+
/**
|
|
18
|
+
* TraceSession - Manages state for a single agent execution with streaming support.
|
|
19
|
+
* Allows processing messages one-by-one and logging them immediately.
|
|
20
|
+
*/
|
|
21
|
+
class TraceSession {
|
|
22
|
+
constructor(tracer, sessionId) {
|
|
23
|
+
this.rootRun = null;
|
|
24
|
+
this.executionOrder = 2; // Start at 2, root is 1
|
|
25
|
+
this.pendingToolUses = new Map();
|
|
26
|
+
this.tracer = tracer;
|
|
27
|
+
this.traceId = sessionId || (0, node_crypto_1.randomUUID)();
|
|
28
|
+
this.rootRunId = (0, node_crypto_1.randomUUID)();
|
|
29
|
+
this.startTime = Date.now();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Process a single SDK message and log it immediately.
|
|
33
|
+
* Non-tracing message types (tool_progress, stream_event, status, etc.) are automatically ignored.
|
|
34
|
+
*/
|
|
35
|
+
async processMessage(message) {
|
|
36
|
+
try {
|
|
37
|
+
const converted = this.tracer.convertSDKMessage(message);
|
|
38
|
+
if (!converted)
|
|
39
|
+
return;
|
|
40
|
+
if (converted.type === 'system' && converted.subtype === 'init') {
|
|
41
|
+
this.handleInit(converted);
|
|
42
|
+
}
|
|
43
|
+
else if (converted.type === 'assistant') {
|
|
44
|
+
this.handleAssistant(converted);
|
|
45
|
+
}
|
|
46
|
+
else if (converted.type === 'user') {
|
|
47
|
+
this.handleUser(converted);
|
|
48
|
+
}
|
|
49
|
+
else if (converted.type === 'result') {
|
|
50
|
+
this.handleResult(converted);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
this.tracer.logger.warn('[ClaudeAgentTracer] processMessage error:', e);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
handleInit(message) {
|
|
58
|
+
this.traceId = message.session_id || this.traceId;
|
|
59
|
+
this.rootRun = this.tracer.createRootRunInternal(message, this.startTime, this.traceId, this.rootRunId);
|
|
60
|
+
this.tracer.logTrace(this.rootRun, types_1.RunStatus.START);
|
|
61
|
+
}
|
|
62
|
+
handleAssistant(message) {
|
|
63
|
+
var _a;
|
|
64
|
+
if (!this.rootRun) {
|
|
65
|
+
this.tracer.logger.warn('[ClaudeAgentTracer] Received assistant message before init');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const content = ((_a = message.message) === null || _a === void 0 ? void 0 : _a.content) || [];
|
|
69
|
+
const hasToolUse = content.some(c => c.type === 'tool_use');
|
|
70
|
+
const hasText = content.some(c => c.type === 'text');
|
|
71
|
+
if (hasToolUse) {
|
|
72
|
+
const eventTime = Date.now();
|
|
73
|
+
// Create LLM run that initiated tool calls
|
|
74
|
+
const llmRun = this.tracer.createLLMRunInternal(message, this.rootRunId, this.traceId, this.executionOrder++, eventTime, true);
|
|
75
|
+
this.rootRun.child_runs.push(llmRun);
|
|
76
|
+
this.tracer.logTrace(llmRun, types_1.RunStatus.END);
|
|
77
|
+
// Create tool runs (will be completed when tool_result arrives)
|
|
78
|
+
for (const block of content) {
|
|
79
|
+
if (block.type === 'tool_use') {
|
|
80
|
+
const toolRun = this.tracer.createToolRunStartInternal(block, this.rootRunId, this.traceId, this.executionOrder++, eventTime);
|
|
81
|
+
this.rootRun.child_runs.push(toolRun);
|
|
82
|
+
this.pendingToolUses.set(block.id, toolRun);
|
|
83
|
+
this.tracer.logTrace(toolRun, types_1.RunStatus.START);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (hasText) {
|
|
88
|
+
// Text-only response
|
|
89
|
+
const llmRun = this.tracer.createLLMRunInternal(message, this.rootRunId, this.traceId, this.executionOrder++, Date.now(), false);
|
|
90
|
+
this.rootRun.child_runs.push(llmRun);
|
|
91
|
+
this.tracer.logTrace(llmRun, types_1.RunStatus.END);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
handleUser(message) {
|
|
95
|
+
var _a;
|
|
96
|
+
if (!((_a = message.message) === null || _a === void 0 ? void 0 : _a.content))
|
|
97
|
+
return;
|
|
98
|
+
for (const block of message.message.content) {
|
|
99
|
+
if (block.type === 'tool_result') {
|
|
100
|
+
const toolRun = this.pendingToolUses.get(block.tool_use_id);
|
|
101
|
+
if (toolRun) {
|
|
102
|
+
this.tracer.completeToolRunInternal(toolRun, block, Date.now());
|
|
103
|
+
const status = block.is_error ? types_1.RunStatus.ERROR : types_1.RunStatus.END;
|
|
104
|
+
this.tracer.logTrace(toolRun, status);
|
|
105
|
+
this.pendingToolUses.delete(block.tool_use_id);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
handleResult(message) {
|
|
111
|
+
if (!this.rootRun) {
|
|
112
|
+
this.tracer.logger.warn('[ClaudeAgentTracer] Received result message before init');
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Complete any pending tool runs
|
|
116
|
+
for (const [toolUseId, toolRun] of this.pendingToolUses) {
|
|
117
|
+
this.tracer.logger.warn(`[ClaudeAgentTracer] Tool run ${toolUseId} did not receive result`);
|
|
118
|
+
toolRun.end_time = Date.now();
|
|
119
|
+
this.tracer.logTrace(toolRun, types_1.RunStatus.ERROR);
|
|
120
|
+
}
|
|
121
|
+
this.pendingToolUses.clear();
|
|
122
|
+
// Update and log root run end
|
|
123
|
+
this.rootRun.end_time = this.startTime + (message.duration_ms || 0);
|
|
124
|
+
this.rootRun.outputs = {
|
|
125
|
+
result: message.result,
|
|
126
|
+
is_error: message.is_error,
|
|
127
|
+
num_turns: message.num_turns,
|
|
128
|
+
};
|
|
129
|
+
if (message.usage || message.modelUsage) {
|
|
130
|
+
const cost = this.tracer.createRunCostInternal(message);
|
|
131
|
+
if (this.rootRun.outputs) {
|
|
132
|
+
this.rootRun.outputs.llmOutput = cost;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (message.is_error) {
|
|
136
|
+
this.rootRun.error = message.result;
|
|
137
|
+
}
|
|
138
|
+
this.rootRun.child_execution_order = this.executionOrder - 1;
|
|
139
|
+
const status = message.is_error ? types_1.RunStatus.ERROR : types_1.RunStatus.END;
|
|
140
|
+
this.tracer.logTrace(this.rootRun, status);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get current trace ID
|
|
144
|
+
*/
|
|
145
|
+
getTraceId() {
|
|
146
|
+
return this.traceId;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.TraceSession = TraceSession;
|
|
150
|
+
/**
|
|
151
|
+
* ClaudeAgentTracer - Converts Claude SDK messages to LangChain Run format
|
|
152
|
+
* and logs them to the same remote logging system as LangGraphTracer.
|
|
153
|
+
*
|
|
154
|
+
* Supports both batch processing (processMessages) and streaming (createSession).
|
|
155
|
+
*/
|
|
156
|
+
let ClaudeAgentTracer = class ClaudeAgentTracer {
|
|
157
|
+
constructor() {
|
|
158
|
+
this.name = 'ClaudeAgentTracer';
|
|
159
|
+
this.agentName = '';
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Configure the tracer with agent name and service credentials.
|
|
163
|
+
*/
|
|
164
|
+
configure(config) {
|
|
165
|
+
(0, types_1.applyTracerConfig)(this, config);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Create a new trace session for streaming message processing.
|
|
169
|
+
* Use this for real-time tracing where messages arrive one-by-one.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* const session = claudeTracer.createSession();
|
|
173
|
+
* for await (const message of agent.run('task')) {
|
|
174
|
+
* await session.processMessage(message);
|
|
175
|
+
* }
|
|
176
|
+
*/
|
|
177
|
+
createSession(sessionId) {
|
|
178
|
+
return new TraceSession(this, sessionId);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Main entry point - convert SDK messages to Run trees and log them.
|
|
182
|
+
* Use this when you have all messages collected (batch processing).
|
|
183
|
+
* For real-time streaming, use createSession() instead.
|
|
184
|
+
*
|
|
185
|
+
* Non-tracing message types (tool_progress, stream_event, status, etc.) are automatically filtered out.
|
|
186
|
+
*/
|
|
187
|
+
async processMessages(sdkMessages) {
|
|
188
|
+
try {
|
|
189
|
+
if (!sdkMessages || sdkMessages.length === 0) {
|
|
190
|
+
this.logger.warn('[ClaudeAgentTracer] No messages to process');
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
// Pre-validate: ensure there is an init message before creating session
|
|
194
|
+
const hasInit = sdkMessages.some(m => m.type === 'system' && 'subtype' in m && m.subtype === 'init');
|
|
195
|
+
if (!hasInit) {
|
|
196
|
+
this.logger.warn('[ClaudeAgentTracer] No system/init message found');
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
// Delegate to TraceSession for message processing
|
|
200
|
+
const session = this.createSession();
|
|
201
|
+
for (const msg of sdkMessages) {
|
|
202
|
+
await session.processMessage(msg);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
this.logger.warn('[ClaudeAgentTracer] processMessages error:', e);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* @internal
|
|
211
|
+
* Convert an SDKMessage to internal ClaudeMessage format.
|
|
212
|
+
* Returns null for message types that are not relevant to tracing.
|
|
213
|
+
*/
|
|
214
|
+
convertSDKMessage(msg) {
|
|
215
|
+
var _a;
|
|
216
|
+
// SDKSystemMessage (init)
|
|
217
|
+
if (msg.type === 'system' && 'subtype' in msg && msg.subtype === 'init') {
|
|
218
|
+
return msg;
|
|
219
|
+
}
|
|
220
|
+
// SDKAssistantMessage
|
|
221
|
+
if (msg.type === 'assistant' && 'message' in msg && 'parent_tool_use_id' in msg) {
|
|
222
|
+
return {
|
|
223
|
+
type: 'assistant',
|
|
224
|
+
uuid: msg.uuid,
|
|
225
|
+
session_id: msg.session_id,
|
|
226
|
+
message: msg.message,
|
|
227
|
+
parent_tool_use_id: msg.parent_tool_use_id,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
// SDKUserMessage (tool results, not replay)
|
|
231
|
+
if (msg.type === 'user' && 'message' in msg && !('isReplay' in msg && msg.isReplay)) {
|
|
232
|
+
return {
|
|
233
|
+
type: 'user',
|
|
234
|
+
uuid: msg.uuid || (0, node_crypto_1.randomUUID)(),
|
|
235
|
+
session_id: msg.session_id,
|
|
236
|
+
message: msg.message,
|
|
237
|
+
parent_tool_use_id: msg.parent_tool_use_id,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
// SDKResultMessage (success or error)
|
|
241
|
+
if (msg.type === 'result') {
|
|
242
|
+
const resultMsg = msg;
|
|
243
|
+
const isSuccess = resultMsg.subtype === 'success';
|
|
244
|
+
return {
|
|
245
|
+
type: 'result',
|
|
246
|
+
subtype: isSuccess ? 'success' : 'error',
|
|
247
|
+
is_error: resultMsg.is_error,
|
|
248
|
+
duration_ms: resultMsg.duration_ms,
|
|
249
|
+
duration_api_ms: resultMsg.duration_api_ms,
|
|
250
|
+
num_turns: resultMsg.num_turns,
|
|
251
|
+
result: isSuccess ? resultMsg.result : ((_a = resultMsg.errors) === null || _a === void 0 ? void 0 : _a.join('; ')) || 'Unknown error',
|
|
252
|
+
session_id: resultMsg.session_id,
|
|
253
|
+
total_cost_usd: resultMsg.total_cost_usd,
|
|
254
|
+
usage: resultMsg.usage,
|
|
255
|
+
modelUsage: resultMsg.modelUsage,
|
|
256
|
+
uuid: resultMsg.uuid,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
// Ignore all other SDK message types (tool_progress, stream_event, status, hook, etc.)
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* @internal
|
|
264
|
+
* Create root run from init message (used by TraceSession)
|
|
265
|
+
*/
|
|
266
|
+
createRootRunInternal(initMsg, startTime, traceId, rootRunId) {
|
|
267
|
+
const runId = rootRunId || initMsg.uuid || (0, node_crypto_1.randomUUID)();
|
|
268
|
+
return {
|
|
269
|
+
id: runId,
|
|
270
|
+
name: this.name,
|
|
271
|
+
run_type: 'chain',
|
|
272
|
+
inputs: {
|
|
273
|
+
tools: initMsg.tools || [],
|
|
274
|
+
model: initMsg.model,
|
|
275
|
+
session_id: initMsg.session_id,
|
|
276
|
+
mcp_servers: initMsg.mcp_servers,
|
|
277
|
+
agents: initMsg.agents,
|
|
278
|
+
slash_commands: initMsg.slash_commands,
|
|
279
|
+
},
|
|
280
|
+
outputs: undefined,
|
|
281
|
+
start_time: startTime,
|
|
282
|
+
end_time: undefined,
|
|
283
|
+
execution_order: 1,
|
|
284
|
+
child_execution_order: 1,
|
|
285
|
+
child_runs: [],
|
|
286
|
+
events: [],
|
|
287
|
+
trace_id: traceId,
|
|
288
|
+
parent_run_id: undefined,
|
|
289
|
+
tags: [],
|
|
290
|
+
extra: {
|
|
291
|
+
metadata: {
|
|
292
|
+
thread_id: initMsg.session_id,
|
|
293
|
+
},
|
|
294
|
+
apiKeySource: initMsg.apiKeySource,
|
|
295
|
+
claude_code_version: initMsg.claude_code_version,
|
|
296
|
+
output_style: initMsg.output_style,
|
|
297
|
+
permissionMode: initMsg.permissionMode,
|
|
298
|
+
},
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* @internal
|
|
303
|
+
* Create LLM run from assistant message (used by TraceSession)
|
|
304
|
+
*/
|
|
305
|
+
createLLMRunInternal(msg, rootRunId, traceId, order, startTime, isToolCall) {
|
|
306
|
+
var _a, _b, _c;
|
|
307
|
+
const runId = msg.uuid || (0, node_crypto_1.randomUUID)();
|
|
308
|
+
const content = ((_a = msg.message) === null || _a === void 0 ? void 0 : _a.content) || [];
|
|
309
|
+
const textBlocks = content.filter(c => c.type === 'text');
|
|
310
|
+
const toolBlocks = content.filter(c => c.type === 'tool_use');
|
|
311
|
+
const inputs = {
|
|
312
|
+
messages: textBlocks.map(c => c.text).filter(Boolean),
|
|
313
|
+
};
|
|
314
|
+
const outputs = {};
|
|
315
|
+
if (isToolCall) {
|
|
316
|
+
outputs.tool_calls = toolBlocks.map(c => ({
|
|
317
|
+
id: c.id,
|
|
318
|
+
name: c.name,
|
|
319
|
+
input: c.input,
|
|
320
|
+
}));
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
outputs.content = textBlocks.map(c => c.text).join('');
|
|
324
|
+
}
|
|
325
|
+
if ((_b = msg.message) === null || _b === void 0 ? void 0 : _b.usage) {
|
|
326
|
+
outputs.llmOutput = this.extractTokenUsage(msg.message.usage);
|
|
327
|
+
}
|
|
328
|
+
return {
|
|
329
|
+
id: runId,
|
|
330
|
+
name: 'LLM',
|
|
331
|
+
run_type: 'llm',
|
|
332
|
+
inputs,
|
|
333
|
+
outputs,
|
|
334
|
+
start_time: startTime,
|
|
335
|
+
end_time: startTime,
|
|
336
|
+
execution_order: order,
|
|
337
|
+
child_execution_order: order,
|
|
338
|
+
child_runs: [],
|
|
339
|
+
events: [],
|
|
340
|
+
trace_id: traceId,
|
|
341
|
+
parent_run_id: rootRunId,
|
|
342
|
+
tags: [],
|
|
343
|
+
extra: {
|
|
344
|
+
model: (_c = msg.message) === null || _c === void 0 ? void 0 : _c.model,
|
|
345
|
+
},
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* @internal
|
|
350
|
+
* Create tool run at start (before result, used by TraceSession)
|
|
351
|
+
*/
|
|
352
|
+
createToolRunStartInternal(toolUseBlock, rootRunId, traceId, order, startTime) {
|
|
353
|
+
const toolUse = toolUseBlock;
|
|
354
|
+
const runId = (0, node_crypto_1.randomUUID)();
|
|
355
|
+
return {
|
|
356
|
+
id: runId,
|
|
357
|
+
name: toolUse.name || 'Tool',
|
|
358
|
+
run_type: 'tool',
|
|
359
|
+
inputs: {
|
|
360
|
+
tool_use_id: toolUse.id,
|
|
361
|
+
...toolUse.input,
|
|
362
|
+
},
|
|
363
|
+
outputs: undefined,
|
|
364
|
+
start_time: startTime,
|
|
365
|
+
end_time: undefined,
|
|
366
|
+
execution_order: order,
|
|
367
|
+
child_execution_order: order,
|
|
368
|
+
child_runs: [],
|
|
369
|
+
events: [],
|
|
370
|
+
trace_id: traceId,
|
|
371
|
+
parent_run_id: rootRunId,
|
|
372
|
+
tags: [],
|
|
373
|
+
extra: {
|
|
374
|
+
tool_use_id: toolUse.id,
|
|
375
|
+
},
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* @internal
|
|
380
|
+
* Complete tool run with result (used by TraceSession)
|
|
381
|
+
*/
|
|
382
|
+
completeToolRunInternal(toolRun, toolResultBlock, startTime) {
|
|
383
|
+
const result = toolResultBlock;
|
|
384
|
+
toolRun.end_time = startTime;
|
|
385
|
+
toolRun.outputs = {
|
|
386
|
+
content: result.content,
|
|
387
|
+
};
|
|
388
|
+
if (result.is_error) {
|
|
389
|
+
toolRun.error = typeof result.content === 'string' ? result.content : JSON.stringify(result.content);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Extract token usage from Claude SDK usage object into IRunCost format.
|
|
394
|
+
*/
|
|
395
|
+
extractTokenUsage(usage) {
|
|
396
|
+
const result = {};
|
|
397
|
+
if (usage.input_tokens !== undefined) {
|
|
398
|
+
result.promptTokens = usage.input_tokens;
|
|
399
|
+
}
|
|
400
|
+
if (usage.output_tokens !== undefined) {
|
|
401
|
+
result.completionTokens = usage.output_tokens;
|
|
402
|
+
}
|
|
403
|
+
if (usage.cache_creation_input_tokens !== undefined) {
|
|
404
|
+
result.cacheCreationInputTokens = usage.cache_creation_input_tokens;
|
|
405
|
+
}
|
|
406
|
+
if (usage.cache_read_input_tokens !== undefined) {
|
|
407
|
+
result.cacheReadInputTokens = usage.cache_read_input_tokens;
|
|
408
|
+
}
|
|
409
|
+
const totalTokens = (usage.input_tokens || 0) + (usage.output_tokens || 0);
|
|
410
|
+
if (totalTokens > 0) {
|
|
411
|
+
result.totalTokens = totalTokens;
|
|
412
|
+
}
|
|
413
|
+
return result;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* @internal
|
|
417
|
+
* Create run cost from result message (used by TraceSession)
|
|
418
|
+
*/
|
|
419
|
+
createRunCostInternal(resultMsg) {
|
|
420
|
+
const cost = resultMsg.usage ? this.extractTokenUsage(resultMsg.usage) : {};
|
|
421
|
+
if (resultMsg.total_cost_usd !== undefined) {
|
|
422
|
+
cost.totalCost = resultMsg.total_cost_usd;
|
|
423
|
+
}
|
|
424
|
+
return cost;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* @internal
|
|
428
|
+
* Log trace - delegates to TracingService (used by TraceSession)
|
|
429
|
+
*/
|
|
430
|
+
logTrace(run, status) {
|
|
431
|
+
this.tracingService.logTrace(run, status, this.name, this.agentName);
|
|
432
|
+
}
|
|
433
|
+
};
|
|
434
|
+
exports.ClaudeAgentTracer = ClaudeAgentTracer;
|
|
435
|
+
__decorate([
|
|
436
|
+
(0, core_decorator_1.Inject)(),
|
|
437
|
+
__metadata("design:type", Object)
|
|
438
|
+
], ClaudeAgentTracer.prototype, "logger", void 0);
|
|
439
|
+
__decorate([
|
|
440
|
+
(0, core_decorator_1.Inject)(),
|
|
441
|
+
__metadata("design:type", Function)
|
|
442
|
+
], ClaudeAgentTracer.prototype, "tracingService", void 0);
|
|
443
|
+
exports.ClaudeAgentTracer = ClaudeAgentTracer = __decorate([
|
|
444
|
+
(0, core_decorator_1.SingletonProto)({
|
|
445
|
+
accessLevel: tegg_types_1.AccessLevel.PUBLIC,
|
|
446
|
+
})
|
|
447
|
+
], ClaudeAgentTracer);
|
|
448
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhdWRlQWdlbnRUcmFjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQ2xhdWRlQWdlbnRUcmFjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXlDO0FBR3pDLDBEQUErRDtBQUMvRCxrREFBZ0Q7QUFLaEQsbUNBUWlCO0FBRWpCOzs7R0FHRztBQUNILE1BQWEsWUFBWTtJQVN2QixZQUFZLE1BQXlCLEVBQUUsU0FBa0I7UUFQakQsWUFBTyxHQUFlLElBQUksQ0FBQztRQUczQixtQkFBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtRQUM1QyxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFJL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLElBQUksSUFBQSx3QkFBVSxHQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFBLHdCQUFVLEdBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFtQjtRQUN0QyxJQUFJLENBQUM7WUFDSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxTQUFTO2dCQUFFLE9BQU87WUFFdkIsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsT0FBTyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUNoRSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7aUJBQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMs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
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { BaseTracer } from '@langchain/core/tracers/base';
|
|
2
|
+
import type { Run } from '@langchain/core/tracers/base';
|
|
3
|
+
import { type TracerConfig } from './types';
|
|
4
|
+
export declare class LangGraphTracer extends BaseTracer {
|
|
5
|
+
private tracingService;
|
|
6
|
+
name: string;
|
|
7
|
+
agentName: string;
|
|
8
|
+
/**
|
|
9
|
+
* Configure the tracer with agent name and service credentials.
|
|
10
|
+
*/
|
|
11
|
+
configure(config: TracerConfig): void;
|
|
12
|
+
protected persistRun(_: Run): Promise<void>;
|
|
13
|
+
private logTrace;
|
|
14
|
+
onChainStart(run: Run): void | Promise<void>;
|
|
15
|
+
onChainEnd(run: Run): void | Promise<void>;
|
|
16
|
+
onChainError(run: Run): void | Promise<void>;
|
|
17
|
+
onToolStart(run: Run): void | Promise<void>;
|
|
18
|
+
onToolEnd(run: Run): void | Promise<void>;
|
|
19
|
+
onToolError(run: Run): void | Promise<void>;
|
|
20
|
+
onLLMStart(run: Run): void | Promise<void>;
|
|
21
|
+
onLLMEnd(run: Run): void | Promise<void>;
|
|
22
|
+
onLLMError(run: Run): void | Promise<void>;
|
|
23
|
+
onRetrieverStart(run: Run): void | Promise<void>;
|
|
24
|
+
onRetrieverEnd(run: Run): void | Promise<void>;
|
|
25
|
+
onRetrieverError(run: Run): void | Promise<void>;
|
|
26
|
+
onAgentAction(run: Run): void | Promise<void>;
|
|
27
|
+
onAgentEnd(run: Run): void | Promise<void>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LangGraphTracer = void 0;
|
|
13
|
+
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
14
|
+
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
15
|
+
const base_1 = require("@langchain/core/tracers/base");
|
|
16
|
+
const types_1 = require("./types");
|
|
17
|
+
let LangGraphTracer = class LangGraphTracer extends base_1.BaseTracer {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.name = 'LangGraphTracer';
|
|
21
|
+
this.agentName = '';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Configure the tracer with agent name and service credentials.
|
|
25
|
+
*/
|
|
26
|
+
configure(config) {
|
|
27
|
+
(0, types_1.applyTracerConfig)(this, config);
|
|
28
|
+
}
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
30
|
+
persistRun(_) {
|
|
31
|
+
return Promise.resolve(undefined);
|
|
32
|
+
}
|
|
33
|
+
logTrace(run, status) {
|
|
34
|
+
this.tracingService.logTrace(run, status, this.name, this.agentName);
|
|
35
|
+
}
|
|
36
|
+
onChainStart(run) {
|
|
37
|
+
this.logTrace(run, types_1.RunStatus.START);
|
|
38
|
+
}
|
|
39
|
+
onChainEnd(run) {
|
|
40
|
+
this.logTrace(run, types_1.RunStatus.END);
|
|
41
|
+
}
|
|
42
|
+
onChainError(run) {
|
|
43
|
+
this.logTrace(run, types_1.RunStatus.ERROR);
|
|
44
|
+
}
|
|
45
|
+
onToolStart(run) {
|
|
46
|
+
this.logTrace(run, types_1.RunStatus.START);
|
|
47
|
+
}
|
|
48
|
+
onToolEnd(run) {
|
|
49
|
+
this.logTrace(run, types_1.RunStatus.END);
|
|
50
|
+
}
|
|
51
|
+
onToolError(run) {
|
|
52
|
+
this.logTrace(run, types_1.RunStatus.ERROR);
|
|
53
|
+
}
|
|
54
|
+
onLLMStart(run) {
|
|
55
|
+
this.logTrace(run, types_1.RunStatus.START);
|
|
56
|
+
}
|
|
57
|
+
onLLMEnd(run) {
|
|
58
|
+
this.logTrace(run, types_1.RunStatus.END);
|
|
59
|
+
}
|
|
60
|
+
onLLMError(run) {
|
|
61
|
+
this.logTrace(run, types_1.RunStatus.ERROR);
|
|
62
|
+
}
|
|
63
|
+
onRetrieverStart(run) {
|
|
64
|
+
this.logTrace(run, types_1.RunStatus.START);
|
|
65
|
+
}
|
|
66
|
+
onRetrieverEnd(run) {
|
|
67
|
+
this.logTrace(run, types_1.RunStatus.END);
|
|
68
|
+
}
|
|
69
|
+
onRetrieverError(run) {
|
|
70
|
+
this.logTrace(run, types_1.RunStatus.ERROR);
|
|
71
|
+
}
|
|
72
|
+
onAgentAction(run) {
|
|
73
|
+
this.logTrace(run, types_1.RunStatus.START);
|
|
74
|
+
}
|
|
75
|
+
onAgentEnd(run) {
|
|
76
|
+
this.logTrace(run, types_1.RunStatus.END);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
exports.LangGraphTracer = LangGraphTracer;
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, core_decorator_1.Inject)(),
|
|
82
|
+
__metadata("design:type", Function)
|
|
83
|
+
], LangGraphTracer.prototype, "tracingService", void 0);
|
|
84
|
+
exports.LangGraphTracer = LangGraphTracer = __decorate([
|
|
85
|
+
(0, core_decorator_1.SingletonProto)({
|
|
86
|
+
accessLevel: tegg_types_1.AccessLevel.PUBLIC,
|
|
87
|
+
})
|
|
88
|
+
], LangGraphTracer);
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFuZ0dyYXBoVHJhY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0xhbmdHcmFwaFRyYWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwwREFBK0Q7QUFDL0Qsa0RBQWdEO0FBQ2hELHVEQUEwRDtBQUkxRCxtQ0FBMEU7QUFLbkUsSUFBTSxlQUFlLEdBQXJCLE1BQU0sZUFBZ0IsU0FBUSxpQkFBVTtJQUF4Qzs7UUFJTCxTQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFFekIsY0FBUyxHQUFHLEVBQUUsQ0FBQztJQWlFakIsQ0FBQztJQS9EQzs7T0FFRztJQUNILFNBQVMsQ0FBQyxNQUFvQjtRQUM1QixJQUFBLHlCQUFpQixFQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsNkRBQTZEO0lBQ25ELFVBQVUsQ0FBQyxDQUFNO1FBQ3pCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sUUFBUSxDQUFDLEdBQVEsRUFBRSxNQUFpQjtRQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBUTtRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxZQUFZLENBQUMsR0FBUTtRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBUTtRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxTQUFTLENBQUMsR0FBUTtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBUTtRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxRQUFRLENBQUMsR0FBUTtRQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLGlCQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFRO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLGlCQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVE7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsaUJBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsY0FBYyxDQUFDLEdBQVE7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsaUJBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsR0FBUTtRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBUTtRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpQkFBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRixDQUFBO0FBdkVZLDBDQUFlO0FBRWxCO0lBRFAsSUFBQSx1QkFBTSxHQUFFOzt1REFDOEI7MEJBRjVCLGVBQWU7SUFIM0IsSUFBQSwrQkFBYyxFQUFDO1FBQ2QsV0FBVyxFQUFFLHdCQUFXLENBQUMsTUFBTTtLQUNoQyxDQUFDO0dBQ1csZUFBZSxDQXVFM0IifQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Logger } from '@eggjs/tegg-types';
|
|
2
|
+
import type { Run } from '@langchain/core/tracers/base';
|
|
3
|
+
import { RunStatus } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* TracingService - Shared service for common tracing operations.
|
|
6
|
+
* Used by both LangGraphTracer and ClaudeAgentTracer to avoid code duplication.
|
|
7
|
+
*/
|
|
8
|
+
export declare class TracingService {
|
|
9
|
+
readonly logger: Logger;
|
|
10
|
+
private backgroundTaskHelper;
|
|
11
|
+
private readonly ossClient;
|
|
12
|
+
private readonly logServiceClient;
|
|
13
|
+
/**
|
|
14
|
+
* Get the current environment (local, pre, prod, gray)
|
|
15
|
+
*/
|
|
16
|
+
getEnv(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Check if running in online environment (prod, pre, gray)
|
|
19
|
+
*/
|
|
20
|
+
isOnlineEnv(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Generate log info prefix for a run
|
|
23
|
+
*/
|
|
24
|
+
getLogInfoPrefix(run: Run, status: RunStatus, name: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Upload content to OSS using the injected AbstractOssClient implementation.
|
|
27
|
+
* Gracefully skips if no AbstractOssClient is provided.
|
|
28
|
+
*/
|
|
29
|
+
uploadToOss(key: string, fileContent: string): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Sync local tracing logs to the injected AbstractLogServiceClient implementation.
|
|
32
|
+
* Silently skips if no AbstractLogServiceClient is registered.
|
|
33
|
+
*/
|
|
34
|
+
syncLocalToLogService(log: string, agentName: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Log trace run data with OSS upload for large fields
|
|
37
|
+
*/
|
|
38
|
+
logTrace(run: Run, status: RunStatus, name: string, agentName: string): void;
|
|
39
|
+
}
|