@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,164 @@
|
|
|
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.TracingService = void 0;
|
|
13
|
+
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
14
|
+
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
15
|
+
const onelogger_1 = require("onelogger");
|
|
16
|
+
const AbstractLogServiceClient_1 = require("./AbstractLogServiceClient");
|
|
17
|
+
const AbstractOssClient_1 = require("./AbstractOssClient");
|
|
18
|
+
const types_1 = require("./types");
|
|
19
|
+
/**
|
|
20
|
+
* TracingService - Shared service for common tracing operations.
|
|
21
|
+
* Used by both LangGraphTracer and ClaudeAgentTracer to avoid code duplication.
|
|
22
|
+
*/
|
|
23
|
+
let TracingService = class TracingService {
|
|
24
|
+
/**
|
|
25
|
+
* Get the current environment (local, pre, prod, gray)
|
|
26
|
+
*/
|
|
27
|
+
getEnv() {
|
|
28
|
+
const env = process.env.FAAS_ENV || process.env.SERVER_ENV || 'local';
|
|
29
|
+
if (env === 'prepub') {
|
|
30
|
+
return 'pre';
|
|
31
|
+
}
|
|
32
|
+
return env;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check if running in online environment (prod, pre, gray)
|
|
36
|
+
*/
|
|
37
|
+
isOnlineEnv() {
|
|
38
|
+
const env = this.getEnv();
|
|
39
|
+
return ['prod', 'pre', 'gray'].includes(env);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Generate log info prefix for a run
|
|
43
|
+
*/
|
|
44
|
+
getLogInfoPrefix(run, status, name) {
|
|
45
|
+
var _a, _b, _c, _d;
|
|
46
|
+
const env = this.getEnv();
|
|
47
|
+
const envSegment = process.env.FAAS_ENV || env === 'local' ? '' : `env=${env},`;
|
|
48
|
+
const threadId = (_c = (_b = (_a = run.extra) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.thread_id) !== null && _c !== void 0 ? _c : 'unknown';
|
|
49
|
+
return (`[agent_run][${name}]:` +
|
|
50
|
+
`traceId=${run.trace_id},` +
|
|
51
|
+
`threadId=${threadId},` +
|
|
52
|
+
`type=${run.parent_run_id ? 'child_run' : 'root_run'},` +
|
|
53
|
+
`status=${status},` +
|
|
54
|
+
`${envSegment}` +
|
|
55
|
+
`run_id=${run.id},` +
|
|
56
|
+
`parent_run_id=${(_d = run.parent_run_id) !== null && _d !== void 0 ? _d : ''}`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Upload content to OSS using the injected AbstractOssClient implementation.
|
|
60
|
+
* Gracefully skips if no AbstractOssClient is provided.
|
|
61
|
+
*/
|
|
62
|
+
async uploadToOss(key, fileContent) {
|
|
63
|
+
if (!this.ossClient) {
|
|
64
|
+
this.logger.warn('[TracingService] OSS client not configured. Provide an AbstractOssClient implementation.');
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
this.logger.info(`Uploading to OSS with key: ${key}`);
|
|
68
|
+
await this.ossClient.put(key, Buffer.from(fileContent));
|
|
69
|
+
this.logger.info(`Upload completed for key: ${key}`);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Sync local tracing logs to the injected AbstractLogServiceClient implementation.
|
|
73
|
+
* Silently skips if no AbstractLogServiceClient is registered.
|
|
74
|
+
*/
|
|
75
|
+
async syncLocalToLogService(log, agentName) {
|
|
76
|
+
if (!this.logServiceClient) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (!agentName) {
|
|
80
|
+
this.logger.warn('[TraceLogErr] syncLocalToLogService: agentName is empty');
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
await this.logServiceClient.send(`[${agentName}]${log}`);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
this.logger.warn('[TraceLogErr] syncLocalToLogService error:', e);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Log trace run data with OSS upload for large fields
|
|
92
|
+
*/
|
|
93
|
+
logTrace(run, status, name, agentName) {
|
|
94
|
+
var _a;
|
|
95
|
+
try {
|
|
96
|
+
const { child_runs: childs, ...runData } = run;
|
|
97
|
+
if ((_a = runData.tags) === null || _a === void 0 ? void 0 : _a.includes('langsmith:hidden')) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const env = this.getEnv();
|
|
101
|
+
types_1.FIELDS_TO_OSS.forEach(field => {
|
|
102
|
+
var _a;
|
|
103
|
+
if (!runData[field]) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const jsonstr = JSON.stringify(runData[field]);
|
|
107
|
+
if (field === 'outputs') {
|
|
108
|
+
runData.cost = (_a = runData === null || runData === void 0 ? void 0 : runData.outputs) === null || _a === void 0 ? void 0 : _a.llmOutput;
|
|
109
|
+
}
|
|
110
|
+
delete runData[field];
|
|
111
|
+
const key = `agents/${name}/${env}/traces/${run.trace_id}/runs/${run.id}/${field}`;
|
|
112
|
+
this.backgroundTaskHelper.run(async () => {
|
|
113
|
+
try {
|
|
114
|
+
await this.uploadToOss(key, jsonstr);
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
this.logger.warn(`[TraceLogErr] Failed to upload run data to OSS for run_id=${run.id}, field=${field}, error:`, e);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
runData[field] = { compress: 'none', key };
|
|
121
|
+
});
|
|
122
|
+
const runJSON = JSON.stringify({ ...runData, child_run_ids: childs === null || childs === void 0 ? void 0 : childs.map(child => child.id) });
|
|
123
|
+
const logInfo = this.getLogInfoPrefix(run, status, name) + `,run=${runJSON}`;
|
|
124
|
+
if (process.env.FAAS_ENV) {
|
|
125
|
+
this.logger.info(logInfo);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const logger = (0, onelogger_1.getCustomLogger)('agentTraceLogger') || this.logger;
|
|
129
|
+
logger.info(`[${agentName}]${logInfo}`);
|
|
130
|
+
}
|
|
131
|
+
if (env === 'local') {
|
|
132
|
+
this.backgroundTaskHelper.run(async () => {
|
|
133
|
+
await this.syncLocalToLogService(logInfo, agentName);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
this.logger.warn('[TraceLogErr] logTrace error:', e);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
exports.TracingService = TracingService;
|
|
143
|
+
__decorate([
|
|
144
|
+
(0, core_decorator_1.Inject)(),
|
|
145
|
+
__metadata("design:type", Object)
|
|
146
|
+
], TracingService.prototype, "logger", void 0);
|
|
147
|
+
__decorate([
|
|
148
|
+
(0, core_decorator_1.Inject)(),
|
|
149
|
+
__metadata("design:type", Function)
|
|
150
|
+
], TracingService.prototype, "backgroundTaskHelper", void 0);
|
|
151
|
+
__decorate([
|
|
152
|
+
(0, core_decorator_1.InjectOptional)(),
|
|
153
|
+
__metadata("design:type", AbstractOssClient_1.AbstractOssClient)
|
|
154
|
+
], TracingService.prototype, "ossClient", void 0);
|
|
155
|
+
__decorate([
|
|
156
|
+
(0, core_decorator_1.InjectOptional)(),
|
|
157
|
+
__metadata("design:type", AbstractLogServiceClient_1.AbstractLogServiceClient)
|
|
158
|
+
], TracingService.prototype, "logServiceClient", void 0);
|
|
159
|
+
exports.TracingService = TracingService = __decorate([
|
|
160
|
+
(0, core_decorator_1.SingletonProto)({
|
|
161
|
+
accessLevel: tegg_types_1.AccessLevel.PUBLIC,
|
|
162
|
+
})
|
|
163
|
+
], TracingService);
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhY2luZ1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVHJhY2luZ1NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EsMERBQStFO0FBQy9FLGtEQUFnRDtBQUdoRCx5Q0FBNEM7QUFFNUMseUVBQXNFO0FBQ3RFLDJEQUF3RDtBQUN4RCxtQ0FBbUU7QUFFbkU7OztHQUdHO0FBSUksSUFBTSxjQUFjLEdBQXBCLE1BQU0sY0FBYztJQWF6Qjs7T0FFRztJQUNILE1BQU07UUFDSixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUM7UUFDdEUsSUFBSSxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU8sQ0FBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxHQUFRLEVBQUUsTUFBaUIsRUFBRSxJQUFZOztRQUN4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ2hGLE1BQU0sUUFBUSxHQUFHLE1BQUEsTUFBQSxNQUFDLEdBQUcsQ0FBQyxLQUE2QiwwQ0FBRSxRQUFRLDBDQUFFLFNBQVMsbUNBQUksU0FBUyxDQUFDO1FBQ3RGLE9BQU8sQ0FDTCxlQUFlLElBQUksSUFBSTtZQUN2QixXQUFXLEdBQUcsQ0FBQyxRQUFRLEdBQUc7WUFDMUIsWUFBWSxRQUFRLEdBQUc7WUFDdkIsUUFBUSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRztZQUN2RCxVQUFVLE1BQU0sR0FBRztZQUNuQixHQUFHLFVBQVUsRUFBRTtZQUNmLFVBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRztZQUNuQixpQkFBaUIsTUFBQSxHQUFHLENBQUMsYUFBYSxtQ0FBSSxFQUFFLEVBQUUsQ0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQVcsRUFBRSxXQUFtQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBGQUEwRixDQUFDLENBQUM7WUFDN0csT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0RCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxHQUFXLEVBQUUsU0FBaUI7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztZQUM1RSxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNENBQTRDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxHQUFRLEVBQUUsTUFBaUIsRUFBRSxJQUFZLEVBQUUsU0FBaUI7O1FBQ25FLElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDO1lBQy9DLElBQUksTUFBQSxPQUFPLENBQUMsSUFBSSwwQ0FBRSxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixxQkFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTs7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDcEIsT0FBTztnQkFDVCxDQUFDO2dCQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN2QixPQUFlLENBQUMsSUFBSSxHQUFHLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE9BQU8sMENBQUUsU0FBUyxDQUFDO2dCQUN0RCxDQUFDO2dCQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixNQUFNLEdBQUcsR0FBRyxVQUFVLElBQUksSUFBSSxHQUFHLFdBQVcsR0FBRyxDQUFDLFFBQVEsU0FBUyxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNuRixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUN2QyxJQUFJLENBQUM7d0JBQ0gsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztvQkFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLDZEQUE2RCxHQUFHLENBQUMsRUFBRSxXQUFXLEtBQUssVUFBVSxFQUM3RixDQUFDLENBQ0YsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNGLE9BQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFlLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLFFBQVEsT0FBTyxFQUFFLENBQUM7WUFFN0UsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxNQUFNLEdBQUcsSUFBQSwyQkFBZSxFQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDbEUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFFRCxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDdkMsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN2RCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQXpJWSx3Q0FBYztBQUVUO0lBRGYsSUFBQSx1QkFBTSxHQUFFOzs4Q0FDc0I7QUFHdkI7SUFEUCxJQUFBLHVCQUFNLEdBQUU7OzREQUMwQztBQUdsQztJQURoQixJQUFBLCtCQUFjLEdBQUU7OEJBQ1cscUNBQWlCO2lEQUFDO0FBRzdCO0lBRGhCLElBQUEsK0JBQWMsR0FBRTs4QkFDa0IsbURBQXdCO3dEQUFDO3lCQVhqRCxjQUFjO0lBSDFCLElBQUEsK0JBQWMsRUFBQztRQUNkLFdBQVcsRUFBRSx3QkFBVyxDQUFDLE1BQU07S0FDaEMsQ0FBQztHQUNXLGNBQWMsQ0F5STFCIn0=
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
export interface ClaudeTextContent {
|
|
2
|
+
type: 'text';
|
|
3
|
+
text: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ClaudeToolUseContent {
|
|
6
|
+
type: 'tool_use';
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
input?: Record<string, any>;
|
|
10
|
+
}
|
|
11
|
+
export interface ClaudeToolResultContent {
|
|
12
|
+
type: 'tool_result';
|
|
13
|
+
content: string | ClaudeToolResultContent[];
|
|
14
|
+
tool_use_id: string;
|
|
15
|
+
is_error?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export type ClaudeContentBlock = ClaudeTextContent | ClaudeToolUseContent | ClaudeToolResultContent;
|
|
18
|
+
export interface ClaudeTokenUsage {
|
|
19
|
+
input_tokens: number;
|
|
20
|
+
output_tokens: number;
|
|
21
|
+
cache_creation_input_tokens?: number;
|
|
22
|
+
cache_read_input_tokens?: number;
|
|
23
|
+
server_tool_use?: {
|
|
24
|
+
web_search_requests?: number;
|
|
25
|
+
web_fetch_requests?: number;
|
|
26
|
+
};
|
|
27
|
+
service_tier?: string;
|
|
28
|
+
cache_creation?: {
|
|
29
|
+
ephemeral_1h_input_tokens?: number;
|
|
30
|
+
ephemeral_5m_input_tokens?: number;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface ClaudeMessageContent {
|
|
34
|
+
id?: string;
|
|
35
|
+
type?: string;
|
|
36
|
+
role?: string;
|
|
37
|
+
content?: ClaudeContentBlock[];
|
|
38
|
+
model?: string;
|
|
39
|
+
usage?: ClaudeTokenUsage;
|
|
40
|
+
context_management?: any;
|
|
41
|
+
stop_reason?: string;
|
|
42
|
+
stop_sequence?: string;
|
|
43
|
+
container?: any;
|
|
44
|
+
[key: string]: any;
|
|
45
|
+
}
|
|
46
|
+
export interface ClaudeModelUsage {
|
|
47
|
+
[modelName: string]: {
|
|
48
|
+
inputTokens: number;
|
|
49
|
+
outputTokens: number;
|
|
50
|
+
cacheReadInputTokens?: number;
|
|
51
|
+
cacheCreationInputTokens?: number;
|
|
52
|
+
webSearchRequests?: number;
|
|
53
|
+
costUSD?: number;
|
|
54
|
+
contextWindow?: number;
|
|
55
|
+
maxOutputTokens?: number;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export interface ClaudeMessage {
|
|
59
|
+
type: 'system' | 'assistant' | 'user' | 'result';
|
|
60
|
+
subtype?: 'init' | 'success' | 'error';
|
|
61
|
+
session_id?: string;
|
|
62
|
+
uuid: string;
|
|
63
|
+
message?: ClaudeMessageContent;
|
|
64
|
+
cwd?: string;
|
|
65
|
+
tools?: string[];
|
|
66
|
+
mcp_servers?: Array<{
|
|
67
|
+
name: string;
|
|
68
|
+
status: string;
|
|
69
|
+
}>;
|
|
70
|
+
model?: string;
|
|
71
|
+
permissionMode?: string;
|
|
72
|
+
slash_commands?: string[];
|
|
73
|
+
apiKeySource?: string;
|
|
74
|
+
claude_code_version?: string;
|
|
75
|
+
output_style?: string;
|
|
76
|
+
agents?: string[];
|
|
77
|
+
skills?: any[];
|
|
78
|
+
plugins?: any[];
|
|
79
|
+
is_error?: boolean;
|
|
80
|
+
duration_ms?: number;
|
|
81
|
+
duration_api_ms?: number;
|
|
82
|
+
num_turns?: number;
|
|
83
|
+
result?: string;
|
|
84
|
+
total_cost_usd?: number;
|
|
85
|
+
usage?: ClaudeTokenUsage;
|
|
86
|
+
modelUsage?: ClaudeModelUsage;
|
|
87
|
+
permission_denials?: any[];
|
|
88
|
+
parent_tool_use_id?: string | null;
|
|
89
|
+
tool_use_id?: string;
|
|
90
|
+
tool_use_result?: string;
|
|
91
|
+
error?: string;
|
|
92
|
+
[key: string]: any;
|
|
93
|
+
}
|
|
94
|
+
export interface IResource {
|
|
95
|
+
compress: 'none' | 'gzip';
|
|
96
|
+
key: string;
|
|
97
|
+
}
|
|
98
|
+
export interface IRunCost {
|
|
99
|
+
promptTokens?: number;
|
|
100
|
+
completionTokens?: number;
|
|
101
|
+
totalTokens?: number;
|
|
102
|
+
cacheCreationInputTokens?: number;
|
|
103
|
+
cacheReadInputTokens?: number;
|
|
104
|
+
totalCost?: number;
|
|
105
|
+
}
|
|
106
|
+
declare const FIELDS_TO_OSS: readonly ["inputs", "outputs", "attachments", "serialized", "events"];
|
|
107
|
+
export declare const RunStatus: {
|
|
108
|
+
readonly START: "start";
|
|
109
|
+
readonly END: "end";
|
|
110
|
+
readonly ERROR: "error";
|
|
111
|
+
};
|
|
112
|
+
export type RunStatus = (typeof RunStatus)[keyof typeof RunStatus];
|
|
113
|
+
/** User-facing config passed to tracer.configure() */
|
|
114
|
+
export interface TracerConfig {
|
|
115
|
+
agentName?: string;
|
|
116
|
+
}
|
|
117
|
+
/** Apply user-facing TracerConfig to a tracer instance. */
|
|
118
|
+
export declare function applyTracerConfig(tracer: {
|
|
119
|
+
agentName: string;
|
|
120
|
+
}, config: TracerConfig): void;
|
|
121
|
+
export { FIELDS_TO_OSS };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Claude SDK Message Types
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.FIELDS_TO_OSS = exports.RunStatus = void 0;
|
|
5
|
+
exports.applyTracerConfig = applyTracerConfig;
|
|
6
|
+
const FIELDS_TO_OSS = ['inputs', 'outputs', 'attachments', 'serialized', 'events'];
|
|
7
|
+
exports.FIELDS_TO_OSS = FIELDS_TO_OSS;
|
|
8
|
+
exports.RunStatus = {
|
|
9
|
+
START: 'start',
|
|
10
|
+
END: 'end',
|
|
11
|
+
ERROR: 'error',
|
|
12
|
+
};
|
|
13
|
+
/** Apply user-facing TracerConfig to a tracer instance. */
|
|
14
|
+
function applyTracerConfig(tracer, config) {
|
|
15
|
+
if (config.agentName !== undefined) {
|
|
16
|
+
tracer.agentName = config.agentName;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJCQUEyQjs7O0FBNEkzQiw4Q0FJQztBQW5CRCxNQUFNLGFBQWEsR0FBRyxDQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQVcsQ0FBQztBQXFCckYsc0NBQWE7QUFuQlQsUUFBQSxTQUFTLEdBQUc7SUFDdkIsS0FBSyxFQUFFLE9BQU87SUFDZCxHQUFHLEVBQUUsS0FBSztJQUNWLEtBQUssRUFBRSxPQUFPO0NBQ04sQ0FBQztBQVFYLDJEQUEyRDtBQUMzRCxTQUFnQixpQkFBaUIsQ0FBQyxNQUE2QixFQUFFLE1BQW9CO0lBQ25GLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUMifQ==
|
package/package.json
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@eggjs/agent-tracing",
|
|
3
|
+
"version": "3.73.0-beta.1",
|
|
4
|
+
"description": "Tracing support for AI agents (LangGraph, Claude Agent SDK)",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"agent",
|
|
7
|
+
"claude",
|
|
8
|
+
"egg",
|
|
9
|
+
"langchain",
|
|
10
|
+
"langgraph",
|
|
11
|
+
"tegg",
|
|
12
|
+
"tracing",
|
|
13
|
+
"typescript"
|
|
14
|
+
],
|
|
15
|
+
"main": "dist/index.js",
|
|
16
|
+
"files": [
|
|
17
|
+
"dist/**/*.js",
|
|
18
|
+
"dist/**/*.d.ts"
|
|
19
|
+
],
|
|
20
|
+
"typings": "dist/index.d.ts",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"default": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./claude": {
|
|
27
|
+
"types": "./dist/claude.d.ts",
|
|
28
|
+
"default": "./dist/claude.js"
|
|
29
|
+
},
|
|
30
|
+
"./langgraph": {
|
|
31
|
+
"types": "./dist/langgraph.d.ts",
|
|
32
|
+
"default": "./dist/langgraph.js"
|
|
33
|
+
},
|
|
34
|
+
"./package.json": "./package.json"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"test": "node --eval \"process.exit(parseInt(process.versions.node) < 18 ? 0 : 1)\" || cross-env NODE_ENV=test NODE_OPTIONS='--no-deprecation' mocha",
|
|
38
|
+
"clean": "tsc -b --clean",
|
|
39
|
+
"tsc": "ut run clean && tsc -p ./tsconfig.json",
|
|
40
|
+
"tsc:pub": "ut run clean && tsc -p ./tsconfig.pub.json",
|
|
41
|
+
"prepublishOnly": "ut tsc:pub"
|
|
42
|
+
},
|
|
43
|
+
"homepage": "https://github.com/eggjs/tegg",
|
|
44
|
+
"bugs": {
|
|
45
|
+
"url": "https://github.com/eggjs/tegg/issues"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git@github.com:eggjs/tegg.git",
|
|
50
|
+
"directory": "core/agent-tracing"
|
|
51
|
+
},
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=18.0.0"
|
|
54
|
+
},
|
|
55
|
+
"author": "killagu <killa123@126.com>",
|
|
56
|
+
"license": "MIT",
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@eggjs/core-decorator": "^3.72.0",
|
|
59
|
+
"@eggjs/tegg-background-task": "^3.72.0",
|
|
60
|
+
"@eggjs/tegg-types": "^3.72.0",
|
|
61
|
+
"onelogger": "^1.0.1"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"@anthropic-ai/claude-agent-sdk": ">=0.2.52",
|
|
65
|
+
"@langchain/core": ">=1.1.1"
|
|
66
|
+
},
|
|
67
|
+
"peerDependenciesMeta": {
|
|
68
|
+
"@anthropic-ai/claude-agent-sdk": {
|
|
69
|
+
"optional": true
|
|
70
|
+
},
|
|
71
|
+
"@langchain/core": {
|
|
72
|
+
"optional": true
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.52",
|
|
77
|
+
"@anthropic-ai/sdk": "^0.78.0",
|
|
78
|
+
"@eggjs/tegg-common-util": "^3.72.0",
|
|
79
|
+
"@langchain/core": "^1.1.29",
|
|
80
|
+
"@langchain/langgraph": "^0.2.74",
|
|
81
|
+
"@types/mocha": "^10.0.1",
|
|
82
|
+
"@types/node": "^20.2.4",
|
|
83
|
+
"cross-env": "^7.0.3",
|
|
84
|
+
"mocha": "^10.2.0",
|
|
85
|
+
"ts-node": "^10.9.1",
|
|
86
|
+
"typescript": "^5.0.4"
|
|
87
|
+
},
|
|
88
|
+
"publishConfig": {
|
|
89
|
+
"access": "public"
|
|
90
|
+
},
|
|
91
|
+
"gitHead": "b29319ee49b55f6e777d5581d70bfea224bf6e1f"
|
|
92
|
+
}
|