@cicctencent/agent-core 0.1.93 → 0.1.94

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 (55) hide show
  1. package/dist/cjs/agent/engine.d.ts.map +1 -1
  2. package/dist/cjs/agent/engine.js +10 -0
  3. package/dist/cjs/agent/engine.js.map +1 -1
  4. package/dist/cjs/agent/llm-caller.d.ts.map +1 -1
  5. package/dist/cjs/agent/llm-caller.js +2 -0
  6. package/dist/cjs/agent/llm-caller.js.map +1 -1
  7. package/dist/cjs/agent/tool-executor.d.ts.map +1 -1
  8. package/dist/cjs/agent/tool-executor.js +2 -0
  9. package/dist/cjs/agent/tool-executor.js.map +1 -1
  10. package/dist/cjs/hooks/types.d.ts +2 -0
  11. package/dist/cjs/hooks/types.d.ts.map +1 -1
  12. package/dist/cjs/index.d.ts +4 -0
  13. package/dist/cjs/index.d.ts.map +1 -1
  14. package/dist/cjs/index.js +10 -3
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/observability/middleware.d.ts +28 -0
  17. package/dist/cjs/observability/middleware.d.ts.map +1 -0
  18. package/dist/cjs/observability/middleware.js +225 -0
  19. package/dist/cjs/observability/middleware.js.map +1 -0
  20. package/dist/cjs/observability/sink.d.ts +38 -0
  21. package/dist/cjs/observability/sink.d.ts.map +1 -0
  22. package/dist/cjs/observability/sink.js +171 -0
  23. package/dist/cjs/observability/sink.js.map +1 -0
  24. package/dist/cjs/observability/types.d.ts +208 -0
  25. package/dist/cjs/observability/types.d.ts.map +1 -0
  26. package/dist/cjs/observability/types.js +6 -0
  27. package/dist/cjs/observability/types.js.map +1 -0
  28. package/dist/esm/agent/engine.d.ts.map +1 -1
  29. package/dist/esm/agent/engine.js +10 -0
  30. package/dist/esm/agent/engine.js.map +1 -1
  31. package/dist/esm/agent/llm-caller.d.ts.map +1 -1
  32. package/dist/esm/agent/llm-caller.js +2 -0
  33. package/dist/esm/agent/llm-caller.js.map +1 -1
  34. package/dist/esm/agent/tool-executor.d.ts.map +1 -1
  35. package/dist/esm/agent/tool-executor.js +2 -0
  36. package/dist/esm/agent/tool-executor.js.map +1 -1
  37. package/dist/esm/hooks/types.d.ts +2 -0
  38. package/dist/esm/hooks/types.d.ts.map +1 -1
  39. package/dist/esm/index.d.ts +4 -0
  40. package/dist/esm/index.d.ts.map +1 -1
  41. package/dist/esm/index.js +2 -0
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/observability/middleware.d.ts +28 -0
  44. package/dist/esm/observability/middleware.d.ts.map +1 -0
  45. package/dist/esm/observability/middleware.js +220 -0
  46. package/dist/esm/observability/middleware.js.map +1 -0
  47. package/dist/esm/observability/sink.d.ts +38 -0
  48. package/dist/esm/observability/sink.d.ts.map +1 -0
  49. package/dist/esm/observability/sink.js +165 -0
  50. package/dist/esm/observability/sink.js.map +1 -0
  51. package/dist/esm/observability/types.d.ts +208 -0
  52. package/dist/esm/observability/types.d.ts.map +1 -0
  53. package/dist/esm/observability/types.js +5 -0
  54. package/dist/esm/observability/types.js.map +1 -0
  55. package/package.json +1 -1
@@ -0,0 +1,165 @@
1
+ // ============================================================
2
+ // Observability — sink implementations and context manager
3
+ // ============================================================
4
+ import { AsyncLocalStorage } from 'node:async_hooks';
5
+ export class NoOpObservabilitySink {
6
+ startTrace(ctx) {
7
+ return {
8
+ traceId: ctx.traceId || generateObservabilityId('trace'),
9
+ startTime: Date.now(),
10
+ sampled: false,
11
+ };
12
+ }
13
+ endTrace(_traceId, _data) { }
14
+ startObservation(ctx) {
15
+ return {
16
+ observationId: generateObservabilityId(ctx.type),
17
+ traceId: ctx.traceId || generateObservabilityId('trace'),
18
+ startTime: Date.now(),
19
+ sampled: false,
20
+ };
21
+ }
22
+ endObservation(_observationId, _data) { }
23
+ recordEvent(_ctx) { }
24
+ recordScore(_score) { }
25
+ }
26
+ export class ObservabilityManager {
27
+ storage = new AsyncLocalStorage();
28
+ sink;
29
+ config;
30
+ constructor(sink = new NoOpObservabilitySink(), config = {}) {
31
+ this.sink = sink;
32
+ this.config = {
33
+ enabled: config.enabled ?? true,
34
+ samplingRate: normalizeSamplingRate(config.samplingRate ?? 1),
35
+ captureInput: config.captureInput ?? true,
36
+ captureOutput: config.captureOutput ?? true,
37
+ captureMessages: config.captureMessages ?? true,
38
+ redact: config.redact,
39
+ };
40
+ }
41
+ configure(config) {
42
+ this.config = {
43
+ ...this.config,
44
+ ...config,
45
+ samplingRate: normalizeSamplingRate(config.samplingRate ?? this.config.samplingRate),
46
+ };
47
+ }
48
+ setSink(sink) {
49
+ this.sink = sink;
50
+ }
51
+ getTraceContext() {
52
+ return this.storage.getStore();
53
+ }
54
+ runWithContext(context, fn) {
55
+ return this.storage.run(context, fn);
56
+ }
57
+ async runWithTrace(ctx, fn) {
58
+ const handle = await this.startTrace(ctx);
59
+ const context = {
60
+ traceId: handle.traceId,
61
+ sampled: handle.sampled,
62
+ startTime: handle.startTime,
63
+ metadata: ctx.metadata,
64
+ };
65
+ return this.storage.run(context, async () => {
66
+ try {
67
+ const result = await fn();
68
+ await this.endTrace(handle.traceId, { status: 'ok', startTime: handle.startTime });
69
+ return result;
70
+ }
71
+ catch (err) {
72
+ await this.endTrace(handle.traceId, {
73
+ status: 'error',
74
+ error: err instanceof Error ? err.message : String(err),
75
+ startTime: handle.startTime,
76
+ });
77
+ throw err;
78
+ }
79
+ });
80
+ }
81
+ async startTrace(ctx) {
82
+ const traceId = ctx.traceId || generateObservabilityId('trace');
83
+ const sampled = this.shouldSample();
84
+ const handle = { traceId, startTime: Date.now(), sampled };
85
+ if (!sampled)
86
+ return handle;
87
+ const safeCtx = this.sanitize(ctx);
88
+ const sinkHandle = await this.sink.startTrace({ ...safeCtx, traceId });
89
+ return { ...handle, ...sinkHandle, traceId };
90
+ }
91
+ async endTrace(traceId, data = {}) {
92
+ const current = this.storage.getStore();
93
+ if (!this.isSampled(current))
94
+ return;
95
+ await this.sink.endTrace(traceId, this.sanitize(data));
96
+ }
97
+ async startObservation(ctx) {
98
+ const current = this.storage.getStore();
99
+ const traceId = ctx.traceId || current?.traceId || generateObservabilityId('trace');
100
+ const sampled = this.isSampled(current);
101
+ const handle = {
102
+ observationId: generateObservabilityId(ctx.type),
103
+ traceId,
104
+ startTime: Date.now(),
105
+ sampled,
106
+ };
107
+ if (!sampled)
108
+ return handle;
109
+ const safeCtx = this.sanitize({
110
+ ...ctx,
111
+ traceId,
112
+ parentObservationId: ctx.parentObservationId || current?.currentObservationId,
113
+ });
114
+ const sinkHandle = await this.sink.startObservation(safeCtx);
115
+ return { ...handle, ...sinkHandle, traceId };
116
+ }
117
+ async endObservation(observationId, data = {}) {
118
+ const current = this.storage.getStore();
119
+ if (!this.isSampled(current))
120
+ return;
121
+ await this.sink.endObservation(observationId, this.sanitize(data));
122
+ }
123
+ async recordEvent(ctx) {
124
+ const current = this.storage.getStore();
125
+ if (!this.isSampled(current))
126
+ return;
127
+ await this.sink.recordEvent(this.sanitize({
128
+ ...ctx,
129
+ traceId: ctx.traceId || current?.traceId,
130
+ parentObservationId: ctx.parentObservationId || current?.currentObservationId,
131
+ }));
132
+ }
133
+ async recordScore(score) {
134
+ const current = this.storage.getStore();
135
+ if (!this.isSampled(current))
136
+ return;
137
+ await this.sink.recordScore(this.sanitize(score));
138
+ }
139
+ shouldSample() {
140
+ if (!this.config.enabled)
141
+ return false;
142
+ if (this.config.samplingRate >= 1)
143
+ return true;
144
+ if (this.config.samplingRate <= 0)
145
+ return false;
146
+ return Math.random() < this.config.samplingRate;
147
+ }
148
+ isSampled(current) {
149
+ return this.config.enabled && (current?.sampled ?? this.shouldSample());
150
+ }
151
+ sanitize(value) {
152
+ if (this.config.redact)
153
+ return this.config.redact(value);
154
+ return value;
155
+ }
156
+ }
157
+ export function generateObservabilityId(prefix = 'obs') {
158
+ return `${prefix}_${Math.random().toString(36).slice(2, 10)}${Date.now().toString(36)}`;
159
+ }
160
+ function normalizeSamplingRate(rate) {
161
+ if (!Number.isFinite(rate))
162
+ return 1;
163
+ return Math.max(0, Math.min(1, rate));
164
+ }
165
+ //# sourceMappingURL=sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sink.js","sourceRoot":"","sources":["../../../src/observability/sink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ import type { Message, TokenUsage } from '../types.js';
2
+ export type ObservationType = 'generation' | 'span' | 'event';
3
+ export type ObservabilityStatus = 'active' | 'ok' | 'error' | 'timeout' | 'cancelled';
4
+ export interface ObservabilityUsage extends TokenUsage {
5
+ cost?: number;
6
+ currency?: string;
7
+ }
8
+ export interface TraceRecord {
9
+ id?: string | number;
10
+ traceId: string;
11
+ sessionId?: string;
12
+ threadId?: string | number;
13
+ applicationId?: string | number;
14
+ agentProfileId?: string | number;
15
+ userId?: string | number;
16
+ name?: string;
17
+ input?: unknown;
18
+ output?: unknown;
19
+ status: ObservabilityStatus;
20
+ startTime: number;
21
+ endTime?: number;
22
+ durationMs?: number;
23
+ usage?: ObservabilityUsage;
24
+ cost?: number;
25
+ error?: string;
26
+ metadata?: Record<string, unknown>;
27
+ }
28
+ export interface ObservationRecord {
29
+ id: string;
30
+ traceId: string;
31
+ parentObservationId?: string;
32
+ type: ObservationType;
33
+ name: string;
34
+ model?: string;
35
+ provider?: string;
36
+ input?: unknown;
37
+ output?: unknown;
38
+ status: ObservabilityStatus;
39
+ startTime: number;
40
+ endTime?: number;
41
+ durationMs?: number;
42
+ usage?: ObservabilityUsage;
43
+ error?: string;
44
+ metadata?: Record<string, unknown>;
45
+ }
46
+ export interface SessionRecord {
47
+ sessionId: string;
48
+ userId?: string | number;
49
+ threadId?: string | number;
50
+ applicationId?: string | number;
51
+ agentProfileId?: string | number;
52
+ traceCount?: number;
53
+ firstSeenAt?: number;
54
+ lastSeenAt?: number;
55
+ metadata?: Record<string, unknown>;
56
+ }
57
+ export interface ScoreRecord {
58
+ id?: string | number;
59
+ traceId: string;
60
+ observationId?: string;
61
+ name: string;
62
+ value: number | string | boolean;
63
+ comment?: string;
64
+ userId?: string | number;
65
+ timestamp: number;
66
+ metadata?: Record<string, unknown>;
67
+ }
68
+ export interface TraceStartContext {
69
+ traceId?: string;
70
+ sessionId?: string;
71
+ threadId?: string | number;
72
+ applicationId?: string | number;
73
+ agentProfileId?: string | number;
74
+ userId?: string | number;
75
+ name?: string;
76
+ input?: unknown;
77
+ metadata?: Record<string, unknown>;
78
+ }
79
+ export interface TraceEndData {
80
+ output?: unknown;
81
+ status?: Exclude<ObservabilityStatus, 'active'>;
82
+ usage?: ObservabilityUsage;
83
+ cost?: number;
84
+ error?: string;
85
+ metadata?: Record<string, unknown>;
86
+ /** trace 开始时间(用于计算 durationMs,避免 endTrace 时额外查询) */
87
+ startTime?: number;
88
+ }
89
+ export interface ObservationStartContext {
90
+ traceId?: string;
91
+ parentObservationId?: string;
92
+ type: ObservationType;
93
+ name: string;
94
+ model?: string;
95
+ provider?: string;
96
+ input?: unknown;
97
+ metadata?: Record<string, unknown>;
98
+ }
99
+ export interface ObservationEndData {
100
+ output?: unknown;
101
+ status?: Exclude<ObservabilityStatus, 'active'>;
102
+ durationMs?: number;
103
+ usage?: ObservabilityUsage;
104
+ model?: string;
105
+ provider?: string;
106
+ error?: string;
107
+ metadata?: Record<string, unknown>;
108
+ }
109
+ export interface EventContext {
110
+ traceId?: string;
111
+ parentObservationId?: string;
112
+ name: string;
113
+ input?: unknown;
114
+ output?: unknown;
115
+ metadata?: Record<string, unknown>;
116
+ }
117
+ export interface TraceHandle {
118
+ traceId: string;
119
+ startTime: number;
120
+ sampled: boolean;
121
+ }
122
+ export interface ObservationHandle {
123
+ observationId: string;
124
+ traceId: string;
125
+ startTime: number;
126
+ sampled: boolean;
127
+ }
128
+ export interface TraceQueryOptions {
129
+ traceId?: string;
130
+ sessionId?: string;
131
+ threadId?: string | number;
132
+ applicationId?: string | number;
133
+ agentProfileId?: string | number;
134
+ userId?: string | number;
135
+ status?: ObservabilityStatus;
136
+ startTime?: number;
137
+ endTime?: number;
138
+ page?: number;
139
+ pageSize?: number;
140
+ limit?: number;
141
+ offset?: number;
142
+ }
143
+ export interface ObservationQueryOptions {
144
+ traceId?: string;
145
+ type?: ObservationType;
146
+ name?: string;
147
+ status?: ObservabilityStatus;
148
+ startTime?: number;
149
+ endTime?: number;
150
+ page?: number;
151
+ pageSize?: number;
152
+ limit?: number;
153
+ offset?: number;
154
+ }
155
+ export interface StatsQueryOptions {
156
+ traceId?: string;
157
+ sessionId?: string;
158
+ threadId?: string | number;
159
+ applicationId?: string | number;
160
+ agentProfileId?: string | number;
161
+ userId?: string | number;
162
+ startTime?: number;
163
+ endTime?: number;
164
+ groupBy?: 'application' | 'agent' | 'model' | 'tool' | 'status' | 'day';
165
+ }
166
+ export interface ObservabilityStats {
167
+ totalTraces: number;
168
+ totalObservations: number;
169
+ successCount: number;
170
+ errorCount: number;
171
+ timeoutCount: number;
172
+ successRate: number;
173
+ avgDurationMs: number;
174
+ totalTokens: number;
175
+ totalCost: number;
176
+ generationCount: number;
177
+ toolCallCount: number;
178
+ groups?: Array<{
179
+ key: string;
180
+ count: number;
181
+ successCount: number;
182
+ errorCount: number;
183
+ avgDurationMs: number;
184
+ totalTokens: number;
185
+ totalCost: number;
186
+ }>;
187
+ }
188
+ export interface ObservabilitySink {
189
+ startTrace(ctx: TraceStartContext): TraceHandle | Promise<TraceHandle>;
190
+ endTrace(traceId: string, data?: TraceEndData): void | Promise<void>;
191
+ startObservation(ctx: ObservationStartContext): ObservationHandle | Promise<ObservationHandle>;
192
+ endObservation(observationId: string, data?: ObservationEndData): void | Promise<void>;
193
+ recordEvent(ctx: EventContext): void | Promise<void>;
194
+ recordScore(score: ScoreRecord): void | Promise<void>;
195
+ }
196
+ export interface ObservabilityConfig {
197
+ enabled?: boolean;
198
+ samplingRate?: number;
199
+ captureInput?: boolean;
200
+ captureOutput?: boolean;
201
+ captureMessages?: boolean;
202
+ redact?: (value: unknown) => unknown;
203
+ }
204
+ export interface LLMObservationInput {
205
+ messages?: Message[];
206
+ tools?: unknown[];
207
+ }
208
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/observability/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ // ============================================================
2
+ // Observability — Langfuse-like data model and sink contracts
3
+ // ============================================================
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/observability/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,8DAA8D;AAC9D,+DAA+D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cicctencent/agent-core",
3
- "version": "0.1.93",
3
+ "version": "0.1.94",
4
4
  "description": "Core engine for AI agent — LLM orchestration, tool execution, MCP, skill routing, security, and memory pipeline.",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",