@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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017-present Alibaba Group Holding Limited and other contributors.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ export * from './index';
2
+ export { ClaudeAgentTracer, TraceSession } from './src/ClaudeAgentTracer';
package/dist/claude.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.TraceSession = exports.ClaudeAgentTracer = void 0;
18
+ __exportStar(require("./index"), exports);
19
+ var ClaudeAgentTracer_1 = require("./src/ClaudeAgentTracer");
20
+ Object.defineProperty(exports, "ClaudeAgentTracer", { enumerable: true, get: function () { return ClaudeAgentTracer_1.ClaudeAgentTracer; } });
21
+ Object.defineProperty(exports, "TraceSession", { enumerable: true, get: function () { return ClaudeAgentTracer_1.TraceSession; } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhdWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vY2xhdWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLDZEQUEwRTtBQUFqRSxzSEFBQSxpQkFBaUIsT0FBQTtBQUFFLGlIQUFBLFlBQVksT0FBQSJ9
@@ -0,0 +1,3 @@
1
+ export * from './src/types';
2
+ export { AbstractOssClient } from './src/AbstractOssClient';
3
+ export { AbstractLogServiceClient } from './src/AbstractLogServiceClient';
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.AbstractLogServiceClient = exports.AbstractOssClient = void 0;
18
+ __exportStar(require("./src/types"), exports);
19
+ var AbstractOssClient_1 = require("./src/AbstractOssClient");
20
+ Object.defineProperty(exports, "AbstractOssClient", { enumerable: true, get: function () { return AbstractOssClient_1.AbstractOssClient; } });
21
+ var AbstractLogServiceClient_1 = require("./src/AbstractLogServiceClient");
22
+ Object.defineProperty(exports, "AbstractLogServiceClient", { enumerable: true, get: function () { return AbstractLogServiceClient_1.AbstractLogServiceClient; } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QjtBQUM1Qiw2REFBNEQ7QUFBbkQsc0hBQUEsaUJBQWlCLE9BQUE7QUFDMUIsMkVBQTBFO0FBQWpFLG9JQUFBLHdCQUF3QixPQUFBIn0=
@@ -0,0 +1,2 @@
1
+ export * from './index';
2
+ export { LangGraphTracer } from './src/LangGraphTracer';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.LangGraphTracer = void 0;
18
+ __exportStar(require("./index"), exports);
19
+ var LangGraphTracer_1 = require("./src/LangGraphTracer");
20
+ Object.defineProperty(exports, "LangGraphTracer", { enumerable: true, get: function () { return LangGraphTracer_1.LangGraphTracer; } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ2dyYXBoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGFuZ2dyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLHlEQUF3RDtBQUEvQyxrSEFBQSxlQUFlLE9BQUEifQ==
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Abstract log service client for dependency injection.
3
+ *
4
+ * To enable log service syncing in TracingService, implement this class in your application
5
+ * and register it with Tegg IoC. The implementation class MUST be named `LogServiceClient`
6
+ * (or use `@SingletonProto({ name: 'logServiceClient' })`) so the container can resolve it.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { SingletonProto } from '@eggjs/core-decorator';
11
+ * import { AccessLevel } from '@eggjs/tegg-types';
12
+ * import { AbstractLogServiceClient } from '@eggjs/agent-tracing';
13
+ *
14
+ * // Class name must be LogServiceClient (registers as 'logServiceClient' in the IoC container)
15
+ * @SingletonProto({ accessLevel: AccessLevel.PUBLIC })
16
+ * export class LogServiceClient extends AbstractLogServiceClient {
17
+ * async send(log: string): Promise<void> {
18
+ * await fetch('https://log.example.com/api', {
19
+ * method: 'POST',
20
+ * headers: { 'content-type': 'application/json' },
21
+ * body: JSON.stringify({ log }),
22
+ * });
23
+ * }
24
+ * }
25
+ * ```
26
+ *
27
+ * If no implementation is registered, log service syncing is silently skipped.
28
+ */
29
+ export declare abstract class AbstractLogServiceClient {
30
+ abstract send(log: string): Promise<void>;
31
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractLogServiceClient = void 0;
4
+ /**
5
+ * Abstract log service client for dependency injection.
6
+ *
7
+ * To enable log service syncing in TracingService, implement this class in your application
8
+ * and register it with Tegg IoC. The implementation class MUST be named `LogServiceClient`
9
+ * (or use `@SingletonProto({ name: 'logServiceClient' })`) so the container can resolve it.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { SingletonProto } from '@eggjs/core-decorator';
14
+ * import { AccessLevel } from '@eggjs/tegg-types';
15
+ * import { AbstractLogServiceClient } from '@eggjs/agent-tracing';
16
+ *
17
+ * // Class name must be LogServiceClient (registers as 'logServiceClient' in the IoC container)
18
+ * @SingletonProto({ accessLevel: AccessLevel.PUBLIC })
19
+ * export class LogServiceClient extends AbstractLogServiceClient {
20
+ * async send(log: string): Promise<void> {
21
+ * await fetch('https://log.example.com/api', {
22
+ * method: 'POST',
23
+ * headers: { 'content-type': 'application/json' },
24
+ * body: JSON.stringify({ log }),
25
+ * });
26
+ * }
27
+ * }
28
+ * ```
29
+ *
30
+ * If no implementation is registered, log service syncing is silently skipped.
31
+ */
32
+ class AbstractLogServiceClient {
33
+ }
34
+ exports.AbstractLogServiceClient = AbstractLogServiceClient;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RMb2dTZXJ2aWNlQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Fic3RyYWN0TG9nU2VydmljZUNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsTUFBc0Isd0JBQXdCO0NBRTdDO0FBRkQsNERBRUMifQ==
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Abstract OSS client for dependency injection.
3
+ *
4
+ * To enable OSS uploads in TracingService, implement this class in your application
5
+ * and register it with Tegg IoC. The implementation class MUST be named `OssClient`
6
+ * (or use `@SingletonProto({ name: 'ossClient' })`) so the container can resolve it.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { SingletonProto } from '@eggjs/core-decorator';
11
+ * import { AccessLevel } from '@eggjs/tegg-types';
12
+ * import { AbstractOssClient } from '@eggjs/agent-tracing';
13
+ *
14
+ * // Class name must be OssClient (registers as 'ossClient' in the IoC container)
15
+ * @SingletonProto({ accessLevel: AccessLevel.PUBLIC })
16
+ * export class OssClient extends AbstractOssClient {
17
+ * async put(key: string, content: string | Buffer): Promise<void> {
18
+ * // your OSS implementation here
19
+ * }
20
+ * }
21
+ * ```
22
+ *
23
+ * If no implementation is registered, OSS uploads are silently skipped.
24
+ */
25
+ export declare abstract class AbstractOssClient {
26
+ abstract put(key: string, content: string | Buffer): Promise<void>;
27
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractOssClient = void 0;
4
+ /**
5
+ * Abstract OSS client for dependency injection.
6
+ *
7
+ * To enable OSS uploads in TracingService, implement this class in your application
8
+ * and register it with Tegg IoC. The implementation class MUST be named `OssClient`
9
+ * (or use `@SingletonProto({ name: 'ossClient' })`) so the container can resolve it.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { SingletonProto } from '@eggjs/core-decorator';
14
+ * import { AccessLevel } from '@eggjs/tegg-types';
15
+ * import { AbstractOssClient } from '@eggjs/agent-tracing';
16
+ *
17
+ * // Class name must be OssClient (registers as 'ossClient' in the IoC container)
18
+ * @SingletonProto({ accessLevel: AccessLevel.PUBLIC })
19
+ * export class OssClient extends AbstractOssClient {
20
+ * async put(key: string, content: string | Buffer): Promise<void> {
21
+ * // your OSS implementation here
22
+ * }
23
+ * }
24
+ * ```
25
+ *
26
+ * If no implementation is registered, OSS uploads are silently skipped.
27
+ */
28
+ class AbstractOssClient {
29
+ }
30
+ exports.AbstractOssClient = AbstractOssClient;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RPc3NDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQWJzdHJhY3RPc3NDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBc0IsaUJBQWlCO0NBRXRDO0FBRkQsOENBRUMifQ==
@@ -0,0 +1,107 @@
1
+ import type { SDKMessage } from '@anthropic-ai/claude-agent-sdk';
2
+ import type { Logger } from '@eggjs/tegg-types';
3
+ import type { Run } from '@langchain/core/tracers/base';
4
+ import { type ClaudeMessage, type ClaudeContentBlock, type IRunCost, RunStatus, type TracerConfig } from './types';
5
+ /**
6
+ * TraceSession - Manages state for a single agent execution with streaming support.
7
+ * Allows processing messages one-by-one and logging them immediately.
8
+ */
9
+ export declare class TraceSession {
10
+ private traceId;
11
+ private rootRun;
12
+ private rootRunId;
13
+ private startTime;
14
+ private executionOrder;
15
+ private pendingToolUses;
16
+ private tracer;
17
+ constructor(tracer: ClaudeAgentTracer, sessionId?: string);
18
+ /**
19
+ * Process a single SDK message and log it immediately.
20
+ * Non-tracing message types (tool_progress, stream_event, status, etc.) are automatically ignored.
21
+ */
22
+ processMessage(message: SDKMessage): Promise<void>;
23
+ private handleInit;
24
+ private handleAssistant;
25
+ private handleUser;
26
+ private handleResult;
27
+ /**
28
+ * Get current trace ID
29
+ */
30
+ getTraceId(): string;
31
+ }
32
+ /**
33
+ * ClaudeAgentTracer - Converts Claude SDK messages to LangChain Run format
34
+ * and logs them to the same remote logging system as LangGraphTracer.
35
+ *
36
+ * Supports both batch processing (processMessages) and streaming (createSession).
37
+ */
38
+ export declare class ClaudeAgentTracer {
39
+ /** @internal */
40
+ readonly logger: Logger;
41
+ private tracingService;
42
+ name: string;
43
+ agentName: string;
44
+ /**
45
+ * Configure the tracer with agent name and service credentials.
46
+ */
47
+ configure(config: TracerConfig): void;
48
+ /**
49
+ * Create a new trace session for streaming message processing.
50
+ * Use this for real-time tracing where messages arrive one-by-one.
51
+ *
52
+ * @example
53
+ * const session = claudeTracer.createSession();
54
+ * for await (const message of agent.run('task')) {
55
+ * await session.processMessage(message);
56
+ * }
57
+ */
58
+ createSession(sessionId?: string): TraceSession;
59
+ /**
60
+ * Main entry point - convert SDK messages to Run trees and log them.
61
+ * Use this when you have all messages collected (batch processing).
62
+ * For real-time streaming, use createSession() instead.
63
+ *
64
+ * Non-tracing message types (tool_progress, stream_event, status, etc.) are automatically filtered out.
65
+ */
66
+ processMessages(sdkMessages: SDKMessage[]): Promise<void>;
67
+ /**
68
+ * @internal
69
+ * Convert an SDKMessage to internal ClaudeMessage format.
70
+ * Returns null for message types that are not relevant to tracing.
71
+ */
72
+ convertSDKMessage(msg: SDKMessage): ClaudeMessage | null;
73
+ /**
74
+ * @internal
75
+ * Create root run from init message (used by TraceSession)
76
+ */
77
+ createRootRunInternal(initMsg: ClaudeMessage, startTime: number, traceId: string, rootRunId?: string): Run;
78
+ /**
79
+ * @internal
80
+ * Create LLM run from assistant message (used by TraceSession)
81
+ */
82
+ createLLMRunInternal(msg: ClaudeMessage, rootRunId: string, traceId: string, order: number, startTime: number, isToolCall: boolean): Run;
83
+ /**
84
+ * @internal
85
+ * Create tool run at start (before result, used by TraceSession)
86
+ */
87
+ createToolRunStartInternal(toolUseBlock: ClaudeContentBlock, rootRunId: string, traceId: string, order: number, startTime: number): Run;
88
+ /**
89
+ * @internal
90
+ * Complete tool run with result (used by TraceSession)
91
+ */
92
+ completeToolRunInternal(toolRun: Run, toolResultBlock: ClaudeContentBlock, startTime: number): void;
93
+ /**
94
+ * Extract token usage from Claude SDK usage object into IRunCost format.
95
+ */
96
+ private extractTokenUsage;
97
+ /**
98
+ * @internal
99
+ * Create run cost from result message (used by TraceSession)
100
+ */
101
+ createRunCostInternal(resultMsg: ClaudeMessage): IRunCost;
102
+ /**
103
+ * @internal
104
+ * Log trace - delegates to TracingService (used by TraceSession)
105
+ */
106
+ logTrace(run: Run, status: RunStatus): void;
107
+ }