@cicctencent/agent-server 0.2.67 → 0.2.69

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 (59) hide show
  1. package/dist/cjs/agent/agent-server.d.ts.map +1 -1
  2. package/dist/cjs/agent/agent-server.js +101 -15
  3. package/dist/cjs/agent/agent-server.js.map +1 -1
  4. package/dist/cjs/index.d.ts +5 -0
  5. package/dist/cjs/index.d.ts.map +1 -1
  6. package/dist/cjs/index.js +11 -3
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/service/observability-exporter.d.ts +65 -0
  9. package/dist/cjs/service/observability-exporter.d.ts.map +1 -0
  10. package/dist/cjs/service/observability-exporter.js +438 -0
  11. package/dist/cjs/service/observability-exporter.js.map +1 -0
  12. package/dist/cjs/service/observability.service.d.ts +2 -0
  13. package/dist/cjs/service/observability.service.d.ts.map +1 -1
  14. package/dist/cjs/service/observability.service.js +4 -2
  15. package/dist/cjs/service/observability.service.js.map +1 -1
  16. package/dist/cjs/spi/index.d.ts +3 -0
  17. package/dist/cjs/spi/index.d.ts.map +1 -1
  18. package/dist/cjs/spi/index.js +6 -1
  19. package/dist/cjs/spi/index.js.map +1 -1
  20. package/dist/cjs/spi/observability-store.d.ts +67 -0
  21. package/dist/cjs/spi/observability-store.d.ts.map +1 -0
  22. package/dist/cjs/spi/observability-store.js +329 -0
  23. package/dist/cjs/spi/observability-store.js.map +1 -0
  24. package/dist/cjs/spi/store-sink-factory.d.ts +10 -0
  25. package/dist/cjs/spi/store-sink-factory.d.ts.map +1 -0
  26. package/dist/cjs/spi/store-sink-factory.js +134 -0
  27. package/dist/cjs/spi/store-sink-factory.js.map +1 -0
  28. package/dist/cjs/types.d.ts +8 -1
  29. package/dist/cjs/types.d.ts.map +1 -1
  30. package/dist/esm/agent/agent-server.d.ts.map +1 -1
  31. package/dist/esm/agent/agent-server.js +102 -16
  32. package/dist/esm/agent/agent-server.js.map +1 -1
  33. package/dist/esm/index.d.ts +5 -0
  34. package/dist/esm/index.d.ts.map +1 -1
  35. package/dist/esm/index.js +3 -0
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/service/observability-exporter.d.ts +65 -0
  38. package/dist/esm/service/observability-exporter.d.ts.map +1 -0
  39. package/dist/esm/service/observability-exporter.js +399 -0
  40. package/dist/esm/service/observability-exporter.js.map +1 -0
  41. package/dist/esm/service/observability.service.d.ts +2 -0
  42. package/dist/esm/service/observability.service.d.ts.map +1 -1
  43. package/dist/esm/service/observability.service.js +2 -1
  44. package/dist/esm/service/observability.service.js.map +1 -1
  45. package/dist/esm/spi/index.d.ts +3 -0
  46. package/dist/esm/spi/index.d.ts.map +1 -1
  47. package/dist/esm/spi/index.js +3 -0
  48. package/dist/esm/spi/index.js.map +1 -1
  49. package/dist/esm/spi/observability-store.d.ts +67 -0
  50. package/dist/esm/spi/observability-store.d.ts.map +1 -0
  51. package/dist/esm/spi/observability-store.js +325 -0
  52. package/dist/esm/spi/observability-store.js.map +1 -0
  53. package/dist/esm/spi/store-sink-factory.d.ts +10 -0
  54. package/dist/esm/spi/store-sink-factory.d.ts.map +1 -0
  55. package/dist/esm/spi/store-sink-factory.js +131 -0
  56. package/dist/esm/spi/store-sink-factory.js.map +1 -0
  57. package/dist/esm/types.d.ts +8 -1
  58. package/dist/esm/types.d.ts.map +1 -1
  59. package/package.json +2 -2
@@ -0,0 +1,67 @@
1
+ import type { ObservationRecord, ObservabilityStats, ScoreRecord, SessionRecord, StatsQueryOptions, TraceQueryOptions, TraceRecord, ObservationQueryOptions } from '@cicctencent/agent-core';
2
+ export interface ObservabilityStoreProvider {
3
+ saveTrace(trace: TraceRecord): Promise<TraceRecord>;
4
+ updateTrace(traceId: string, data: Partial<TraceRecord>): Promise<void>;
5
+ getTraces(query: TraceQueryOptions): Promise<{
6
+ items: TraceRecord[];
7
+ total: number;
8
+ }>;
9
+ getTraceById(traceId: string): Promise<TraceRecord | null>;
10
+ saveObservation(observation: ObservationRecord): Promise<ObservationRecord>;
11
+ updateObservation(observationId: string, data: Partial<ObservationRecord>): Promise<void>;
12
+ getObservations(query: ObservationQueryOptions): Promise<{
13
+ items: ObservationRecord[];
14
+ total: number;
15
+ }>;
16
+ getObservationsByTrace(traceId: string): Promise<ObservationRecord[]>;
17
+ upsertSession(session: Partial<SessionRecord> & {
18
+ sessionId: string;
19
+ }): Promise<SessionRecord>;
20
+ getSessions(query: Partial<SessionRecord>): Promise<SessionRecord[]>;
21
+ saveScore(score: ScoreRecord): Promise<ScoreRecord>;
22
+ getScores(traceId: string): Promise<ScoreRecord[]>;
23
+ getStats(query: StatsQueryOptions): Promise<ObservabilityStats>;
24
+ cleanup(olderThanDays: number): Promise<number>;
25
+ setEnabled(enabled: boolean): void;
26
+ isEnabled(): boolean;
27
+ }
28
+ export declare class InMemoryObservabilityStore implements ObservabilityStoreProvider {
29
+ private traces;
30
+ private observations;
31
+ private scores;
32
+ private sessions;
33
+ private traceIndex;
34
+ private observationIndex;
35
+ private enabled;
36
+ private readonly maxTraces;
37
+ private readonly maxObservations;
38
+ constructor(maxTraces?: number, maxObservations?: number);
39
+ saveTrace(trace: TraceRecord): Promise<TraceRecord>;
40
+ updateTrace(traceId: string, data: Partial<TraceRecord>): Promise<void>;
41
+ getTraces(query: TraceQueryOptions): Promise<{
42
+ items: TraceRecord[];
43
+ total: number;
44
+ }>;
45
+ getTraceById(traceId: string): Promise<TraceRecord | null>;
46
+ saveObservation(observation: ObservationRecord): Promise<ObservationRecord>;
47
+ updateObservation(observationId: string, data: Partial<ObservationRecord>): Promise<void>;
48
+ getObservations(query: ObservationQueryOptions): Promise<{
49
+ items: ObservationRecord[];
50
+ total: number;
51
+ }>;
52
+ getObservationsByTrace(traceId: string): Promise<ObservationRecord[]>;
53
+ upsertSession(session: Partial<SessionRecord> & {
54
+ sessionId: string;
55
+ }): Promise<SessionRecord>;
56
+ getSessions(query: Partial<SessionRecord>): Promise<SessionRecord[]>;
57
+ saveScore(score: ScoreRecord): Promise<ScoreRecord>;
58
+ getScores(traceId: string): Promise<ScoreRecord[]>;
59
+ getStats(query: StatsQueryOptions): Promise<ObservabilityStats>;
60
+ cleanup(olderThanDays: number): Promise<number>;
61
+ setEnabled(enabled: boolean): void;
62
+ isEnabled(): boolean;
63
+ private filterTraces;
64
+ private computeGroups;
65
+ }
66
+ export type { ObservationRecord, ObservabilityStats, ScoreRecord, SessionRecord, StatsQueryOptions, TraceQueryOptions, TraceRecord, ObservationQueryOptions, ObservabilityUsage, ObservationType, ObservabilityStatus, } from '@cicctencent/agent-core';
67
+ //# sourceMappingURL=observability-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability-store.d.ts","sourceRoot":"","sources":["../../../src/spi/observability-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Observability SPI - ObservabilityStoreProvider interface
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InMemoryObservabilityStore = void 0;
7
+ // ============================================================
8
+ // InMemoryObservabilityStore - 默认内存环形缓冲实现
9
+ // ============================================================
10
+ class InMemoryObservabilityStore {
11
+ traces = [];
12
+ observations = [];
13
+ scores = [];
14
+ sessions = new Map();
15
+ // Map 索引:将 updateTrace/updateObservation 从 O(n) 降为 O(1)
16
+ traceIndex = new Map(); // traceId -> traces 数组下标
17
+ observationIndex = new Map(); // observationId -> observations 数组下标
18
+ enabled = true;
19
+ maxTraces;
20
+ maxObservations;
21
+ constructor(maxTraces = 10000, maxObservations = 50000) {
22
+ this.maxTraces = maxTraces;
23
+ this.maxObservations = maxObservations;
24
+ }
25
+ async saveTrace(trace) {
26
+ if (!this.enabled)
27
+ return trace;
28
+ this.traces.push(trace);
29
+ this.traceIndex.set(trace.traceId, this.traces.length - 1);
30
+ if (this.traces.length > this.maxTraces) {
31
+ // 重建索引(仅在超限时触发,不频繁)
32
+ const removed = this.traces.splice(0, this.traces.length - this.maxTraces);
33
+ for (const r of removed)
34
+ this.traceIndex.delete(r.traceId);
35
+ // 重建剩余索引
36
+ this.traceIndex.clear();
37
+ for (let i = 0; i < this.traces.length; i++) {
38
+ this.traceIndex.set(this.traces[i].traceId, i);
39
+ }
40
+ }
41
+ return trace;
42
+ }
43
+ async updateTrace(traceId, data) {
44
+ if (!this.enabled)
45
+ return;
46
+ const idx = this.traceIndex.get(traceId);
47
+ if (idx != null && idx < this.traces.length && this.traces[idx]?.traceId === traceId) {
48
+ this.traces[idx] = { ...this.traces[idx], ...data };
49
+ }
50
+ }
51
+ async getTraces(query) {
52
+ const filtered = this.filterTraces(query);
53
+ const total = filtered.length;
54
+ const page = query.page ?? 1;
55
+ const pageSize = query.pageSize ?? 50;
56
+ const offset = query.offset ?? (page - 1) * pageSize;
57
+ const limit = query.limit ?? pageSize;
58
+ const items = filtered
59
+ .sort((a, b) => b.startTime - a.startTime)
60
+ .slice(offset, offset + limit);
61
+ return { items, total };
62
+ }
63
+ async getTraceById(traceId) {
64
+ const idx = this.traceIndex.get(traceId);
65
+ if (idx != null && idx < this.traces.length && this.traces[idx]?.traceId === traceId) {
66
+ return this.traces[idx];
67
+ }
68
+ return null;
69
+ }
70
+ async saveObservation(observation) {
71
+ if (!this.enabled)
72
+ return observation;
73
+ this.observations.push(observation);
74
+ this.observationIndex.set(observation.id, this.observations.length - 1);
75
+ if (this.observations.length > this.maxObservations) {
76
+ const removed = this.observations.splice(0, this.observations.length - this.maxObservations);
77
+ for (const r of removed)
78
+ this.observationIndex.delete(r.id);
79
+ this.observationIndex.clear();
80
+ for (let i = 0; i < this.observations.length; i++) {
81
+ this.observationIndex.set(this.observations[i].id, i);
82
+ }
83
+ }
84
+ return observation;
85
+ }
86
+ async updateObservation(observationId, data) {
87
+ if (!this.enabled)
88
+ return;
89
+ const idx = this.observationIndex.get(observationId);
90
+ if (idx != null && idx < this.observations.length && this.observations[idx]?.id === observationId) {
91
+ this.observations[idx] = { ...this.observations[idx], ...data };
92
+ }
93
+ }
94
+ async getObservations(query) {
95
+ let filtered = this.observations;
96
+ if (query.traceId)
97
+ filtered = filtered.filter(o => o.traceId === query.traceId);
98
+ if (query.type)
99
+ filtered = filtered.filter(o => o.type === query.type);
100
+ if (query.name)
101
+ filtered = filtered.filter(o => o.name === query.name);
102
+ if (query.status)
103
+ filtered = filtered.filter(o => o.status === query.status);
104
+ if (query.startTime)
105
+ filtered = filtered.filter(o => o.startTime >= query.startTime);
106
+ if (query.endTime)
107
+ filtered = filtered.filter(o => (o.endTime ?? o.startTime) <= query.endTime);
108
+ const total = filtered.length;
109
+ const page = query.page ?? 1;
110
+ const pageSize = query.pageSize ?? 50;
111
+ const offset = query.offset ?? (page - 1) * pageSize;
112
+ const limit = query.limit ?? pageSize;
113
+ const items = filtered
114
+ .sort((a, b) => a.startTime - b.startTime)
115
+ .slice(offset, offset + limit);
116
+ return { items, total };
117
+ }
118
+ async getObservationsByTrace(traceId) {
119
+ return this.observations
120
+ .filter(o => o.traceId === traceId)
121
+ .sort((a, b) => a.startTime - b.startTime);
122
+ }
123
+ async upsertSession(session) {
124
+ const existing = this.sessions.get(session.sessionId);
125
+ const updated = {
126
+ sessionId: session.sessionId,
127
+ userId: session.userId ?? existing?.userId,
128
+ threadId: session.threadId ?? existing?.threadId,
129
+ applicationId: session.applicationId ?? existing?.applicationId,
130
+ agentProfileId: session.agentProfileId ?? existing?.agentProfileId,
131
+ traceCount: (existing?.traceCount ?? 0) + 1,
132
+ firstSeenAt: existing?.firstSeenAt ?? Date.now(),
133
+ lastSeenAt: Date.now(),
134
+ metadata: { ...existing?.metadata, ...session.metadata },
135
+ };
136
+ this.sessions.set(session.sessionId, updated);
137
+ return updated;
138
+ }
139
+ async getSessions(query) {
140
+ let result = Array.from(this.sessions.values());
141
+ if (query.userId)
142
+ result = result.filter(s => s.userId === query.userId);
143
+ if (query.threadId)
144
+ result = result.filter(s => s.threadId === query.threadId);
145
+ if (query.applicationId)
146
+ result = result.filter(s => s.applicationId === query.applicationId);
147
+ return result.sort((a, b) => (b.lastSeenAt ?? 0) - (a.lastSeenAt ?? 0));
148
+ }
149
+ async saveScore(score) {
150
+ if (!this.enabled)
151
+ return score;
152
+ this.scores.push(score);
153
+ return score;
154
+ }
155
+ async getScores(traceId) {
156
+ return this.scores.filter(s => s.traceId === traceId);
157
+ }
158
+ async getStats(query) {
159
+ let traces = this.traces;
160
+ if (query.applicationId)
161
+ traces = traces.filter(t => t.applicationId == query.applicationId);
162
+ if (query.agentProfileId)
163
+ traces = traces.filter(t => t.agentProfileId == query.agentProfileId);
164
+ if (query.sessionId)
165
+ traces = traces.filter(t => t.sessionId === query.sessionId);
166
+ if (query.threadId)
167
+ traces = traces.filter(t => t.threadId == query.threadId);
168
+ if (query.userId)
169
+ traces = traces.filter(t => t.userId === query.userId);
170
+ if (query.startTime)
171
+ traces = traces.filter(t => t.startTime >= query.startTime);
172
+ if (query.endTime)
173
+ traces = traces.filter(t => (t.endTime ?? t.startTime) <= query.endTime);
174
+ const totalTraces = traces.length;
175
+ const successCount = traces.filter(t => t.status === 'ok').length;
176
+ const errorCount = traces.filter(t => t.status === 'error').length;
177
+ const timeoutCount = traces.filter(t => t.status === 'timeout').length;
178
+ const durations = traces.filter(t => t.durationMs != null).map(t => t.durationMs);
179
+ const avgDurationMs = durations.length > 0 ? durations.reduce((a, b) => a + b, 0) / durations.length : 0;
180
+ const traceIds = new Set(traces.map(t => t.traceId));
181
+ const traceObservations = this.observations.filter(o => traceIds.has(o.traceId));
182
+ const generationCount = traceObservations.filter(o => o.type === 'generation').length;
183
+ const toolCallCount = traceObservations.filter(o => o.name !== 'agent.iteration' && o.type === 'span').length;
184
+ const totalTokens = traces.reduce((sum, t) => {
185
+ const u = t.usage;
186
+ return sum + (u?.totalTokens ?? 0);
187
+ }, 0);
188
+ const totalCost = traces.reduce((sum, t) => sum + (t.cost ?? t.usage?.cost ?? 0), 0);
189
+ const stats = {
190
+ totalTraces,
191
+ totalObservations: traceObservations.length,
192
+ successCount,
193
+ errorCount,
194
+ timeoutCount,
195
+ successRate: totalTraces > 0 ? successCount / totalTraces : 0,
196
+ avgDurationMs,
197
+ totalTokens,
198
+ totalCost,
199
+ generationCount,
200
+ toolCallCount,
201
+ };
202
+ if (query.groupBy) {
203
+ stats.groups = this.computeGroups(traces, traceObservations, query.groupBy);
204
+ }
205
+ return stats;
206
+ }
207
+ async cleanup(olderThanDays) {
208
+ const cutoff = Date.now() - olderThanDays * 24 * 60 * 60 * 1000;
209
+ const beforeTraces = this.traces.length;
210
+ const beforeObs = this.observations.length;
211
+ const removedTraceIds = new Set();
212
+ this.traces = this.traces.filter(t => {
213
+ if (t.startTime < cutoff) {
214
+ removedTraceIds.add(t.traceId);
215
+ return false;
216
+ }
217
+ return true;
218
+ });
219
+ this.observations = this.observations.filter(o => !removedTraceIds.has(o.traceId));
220
+ this.scores = this.scores.filter(s => !removedTraceIds.has(s.traceId) || s.timestamp >= cutoff);
221
+ // 重建索引
222
+ this.traceIndex.clear();
223
+ for (let i = 0; i < this.traces.length; i++)
224
+ this.traceIndex.set(this.traces[i].traceId, i);
225
+ this.observationIndex.clear();
226
+ for (let i = 0; i < this.observations.length; i++)
227
+ this.observationIndex.set(this.observations[i].id, i);
228
+ return (beforeTraces - this.traces.length) + (beforeObs - this.observations.length);
229
+ }
230
+ setEnabled(enabled) {
231
+ this.enabled = enabled;
232
+ }
233
+ isEnabled() {
234
+ return this.enabled;
235
+ }
236
+ // ---- helpers ----
237
+ filterTraces(query) {
238
+ let result = this.traces;
239
+ if (query.traceId)
240
+ result = result.filter(t => t.traceId === query.traceId);
241
+ if (query.sessionId)
242
+ result = result.filter(t => t.sessionId === query.sessionId);
243
+ if (query.threadId)
244
+ result = result.filter(t => t.threadId == query.threadId);
245
+ if (query.applicationId)
246
+ result = result.filter(t => t.applicationId == query.applicationId);
247
+ if (query.agentProfileId)
248
+ result = result.filter(t => t.agentProfileId == query.agentProfileId);
249
+ if (query.userId)
250
+ result = result.filter(t => t.userId === query.userId);
251
+ if (query.status)
252
+ result = result.filter(t => t.status === query.status);
253
+ if (query.startTime)
254
+ result = result.filter(t => t.startTime >= query.startTime);
255
+ if (query.endTime)
256
+ result = result.filter(t => (t.endTime ?? t.startTime) <= query.endTime);
257
+ return result;
258
+ }
259
+ computeGroups(traces, observations, groupBy) {
260
+ const groups = new Map();
261
+ for (const trace of traces) {
262
+ let key;
263
+ switch (groupBy) {
264
+ case 'application':
265
+ key = String(trace.applicationId ?? 'unknown');
266
+ break;
267
+ case 'agent':
268
+ key = String(trace.agentProfileId ?? 'unknown');
269
+ break;
270
+ case 'model': {
271
+ const genObs = observations.find(o => o.traceId === trace.traceId && o.type === 'generation' && o.model);
272
+ key = genObs?.model || 'unknown';
273
+ break;
274
+ }
275
+ case 'tool': {
276
+ // tool grouping is per-observation, handled below
277
+ continue;
278
+ }
279
+ case 'status':
280
+ key = trace.status;
281
+ break;
282
+ case 'day': {
283
+ const d = new Date(trace.startTime);
284
+ key = `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
285
+ break;
286
+ }
287
+ default:
288
+ key = 'unknown';
289
+ }
290
+ const g = groups.get(key) || { count: 0, successCount: 0, errorCount: 0, totalDuration: 0, totalTokens: 0, totalCost: 0 };
291
+ g.count++;
292
+ if (trace.status === 'ok')
293
+ g.successCount++;
294
+ if (trace.status === 'error')
295
+ g.errorCount++;
296
+ g.totalDuration += trace.durationMs ?? 0;
297
+ g.totalTokens += trace.usage?.totalTokens ?? 0;
298
+ g.totalCost += trace.cost ?? trace.usage?.cost ?? 0;
299
+ groups.set(key, g);
300
+ }
301
+ // tool grouping: iterate observations instead
302
+ if (groupBy === 'tool') {
303
+ for (const obs of observations) {
304
+ if (obs.type !== 'span' || obs.name === 'agent.iteration')
305
+ continue;
306
+ const key = obs.name;
307
+ const g = groups.get(key) || { count: 0, successCount: 0, errorCount: 0, totalDuration: 0, totalTokens: 0, totalCost: 0 };
308
+ g.count++;
309
+ if (obs.status === 'ok')
310
+ g.successCount++;
311
+ if (obs.status === 'error')
312
+ g.errorCount++;
313
+ g.totalDuration += obs.durationMs ?? 0;
314
+ groups.set(key, g);
315
+ }
316
+ }
317
+ return Array.from(groups.entries()).map(([key, g]) => ({
318
+ key,
319
+ count: g.count,
320
+ successCount: g.successCount,
321
+ errorCount: g.errorCount,
322
+ avgDurationMs: g.count > 0 ? g.totalDuration / g.count : 0,
323
+ totalTokens: g.totalTokens,
324
+ totalCost: g.totalCost,
325
+ }));
326
+ }
327
+ }
328
+ exports.InMemoryObservabilityStore = InMemoryObservabilityStore;
329
+ //# sourceMappingURL=observability-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability-store.js","sourceRoot":"","sources":["../../../src/spi/observability-store.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,2DAA2D;AAC3D,+DAA+D;;;AA8C/D,+DAA+D;AAC/D,0CAA0C;AAC1C,+DAA+D;AAE/D,MAAa,0BAA0B;IAC7B,MAAM,GAAkB,EAAE,CAAC;IAC3B,YAAY,GAAwB,EAAE,CAAC;IACvC,MAAM,GAAkB,EAAE,CAAC;IAC3B,QAAQ,GAA+B,IAAI,GAAG,EAAE,CAAC;IACzD,wDAAwD;IAChD,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAE,yBAAyB;IAClE,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAE,qCAAqC;IACpF,OAAO,GAAG,IAAI,CAAC;IACN,SAAS,CAAS;IAClB,eAAe,CAAS;IAEzC,YAAY,SAAS,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK;QACpD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAkB;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACxC,oBAAoB;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3E,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC3D,SAAS;YACT,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAA0B;QAC3D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;YACrF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAwB;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;aACzC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QACjC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;YACrF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAA8B;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7F,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,aAAqB,EAAE,IAAgC;QAC7E,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,aAAa,EAAE,CAAC;YAClG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAA8B;QAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO;YAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,KAAK,CAAC,IAAI;YAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,KAAK,CAAC,IAAI;YAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,KAAK,CAAC,MAAM;YAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAI,KAAK,CAAC,SAAS;YAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,SAAU,CAAC,CAAC;QACtF,IAAI,KAAK,CAAC,OAAO;YAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAQ,CAAC,CAAC;QAEjG,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;aACzC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QACjC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,OAAe;QAC1C,OAAO,IAAI,CAAC,YAAY;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;aAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAuD;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,OAAO,GAAkB;YAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM;YAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ;YAChD,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,QAAQ,EAAE,aAAa;YAC/D,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,QAAQ,EAAE,cAAc;YAClE,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC;YAC3C,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;YAChD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE;SACzD,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAA6B;QAC7C,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,KAAK,CAAC,QAAQ;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/E,IAAI,KAAK,CAAC,aAAa;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC;QAC9F,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAkB;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAwB;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,KAAK,CAAC,aAAa;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7F,IAAI,KAAK,CAAC,cAAc;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAChG,IAAI,KAAK,CAAC,SAAS;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,QAAQ;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9E,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,KAAK,CAAC,SAAS;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,SAAU,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,OAAO;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAQ,CAAC,CAAC;QAE7F,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QAClC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;QAClE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;QACnE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACvE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAW,CAAC,CAAC;QACnF,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACjF,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;QACtF,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QAE9G,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAErF,MAAM,KAAK,GAAuB;YAChC,WAAW;YACX,iBAAiB,EAAE,iBAAiB,CAAC,MAAM;YAC3C,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7D,aAAa;YACb,WAAW;YACX,SAAS;YACT,eAAe;YACf,aAAa;SACd,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,aAAqB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAE3C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACnC,IAAI,CAAC,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;gBAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAAC,OAAO,KAAK,CAAC;YAAC,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;QAEhG,OAAO;QACP,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAEzG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACtF,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,oBAAoB;IAEZ,YAAY,CAAC,KAAwB;QAC3C,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,KAAK,CAAC,OAAO;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5E,IAAI,KAAK,CAAC,SAAS;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,QAAQ;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9E,IAAI,KAAK,CAAC,aAAa;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7F,IAAI,KAAK,CAAC,cAAc;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAChG,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,KAAK,CAAC,SAAS;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,SAAU,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,OAAO;YAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAQ,CAAC,CAAC;QAC7F,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa,CACnB,MAAqB,EACrB,YAAiC,EACjC,OAAkD;QAElD,MAAM,MAAM,GAAG,IAAI,GAAG,EAOlB,CAAC;QAEL,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,GAAW,CAAC;YAChB,QAAQ,OAAO,EAAE,CAAC;gBAChB,KAAK,aAAa;oBAChB,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;oBAC/C,MAAM;gBACR,KAAK,OAAO;oBACV,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,SAAS,CAAC,CAAC;oBAChD,MAAM;gBACR,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;oBACzG,GAAG,GAAG,MAAM,EAAE,KAAK,IAAI,SAAS,CAAC;oBACjC,MAAM;gBACR,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,kDAAkD;oBAClD,SAAS;gBACX,CAAC;gBACD,KAAK,QAAQ;oBACX,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;oBACnB,MAAM;gBACR,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACpC,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;oBAChH,MAAM;gBACR,CAAC;gBACD;oBACE,GAAG,GAAG,SAAS,CAAC;YACpB,CAAC;YAED,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAC1H,CAAC,CAAC,KAAK,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;gBAAE,CAAC,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;gBAAE,CAAC,CAAC,UAAU,EAAE,CAAC;YAC7C,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,8CAA8C;QAC9C,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB;oBAAE,SAAS;gBACpE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;gBACrB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBAC1H,CAAC,CAAC,KAAK,EAAE,CAAC;gBACV,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI;oBAAE,CAAC,CAAC,YAAY,EAAE,CAAC;gBAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;oBAAE,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC3C,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,GAAG;YACH,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,aAAa,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1D,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAhUD,gEAgUC"}
@@ -0,0 +1,10 @@
1
+ import type { ObservabilitySink } from '@cicctencent/agent-core';
2
+ import type { ObservabilityStoreProvider } from './observability-store.js';
3
+ /**
4
+ * 创建一个将数据转发到 ObservabilityStoreProvider 的 Sink 实现。
5
+ * 所有方法吞掉错误,不影响主业务流程。
6
+ *
7
+ * 共享实现,供 agent-server 和 work-client 复用,避免代码重复。
8
+ */
9
+ export declare function createStoreSink(provider: ObservabilityStoreProvider): ObservabilitySink;
10
+ //# sourceMappingURL=store-sink-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-sink-factory.d.ts","sourceRoot":"","sources":["../../../src/spi/store-sink-factory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,0BAA0B,GAAG,iBAAiB,CAuHvF"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // storeSink factory - 创建转发到 ObservabilityStoreProvider 的 Sink
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createStoreSink = createStoreSink;
7
+ /**
8
+ * 创建一个将数据转发到 ObservabilityStoreProvider 的 Sink 实现。
9
+ * 所有方法吞掉错误,不影响主业务流程。
10
+ *
11
+ * 共享实现,供 agent-server 和 work-client 复用,避免代码重复。
12
+ */
13
+ function createStoreSink(provider) {
14
+ return {
15
+ async startTrace(ctx) {
16
+ const traceId = ctx.traceId || `trace_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
17
+ const startTime = Date.now();
18
+ try {
19
+ await provider.saveTrace({
20
+ traceId,
21
+ sessionId: ctx.sessionId,
22
+ threadId: ctx.threadId,
23
+ applicationId: ctx.applicationId,
24
+ agentProfileId: ctx.agentProfileId,
25
+ userId: ctx.userId,
26
+ name: ctx.name,
27
+ input: ctx.input,
28
+ status: 'active',
29
+ startTime,
30
+ metadata: ctx.metadata,
31
+ });
32
+ if (ctx.sessionId) {
33
+ await provider.upsertSession({
34
+ sessionId: ctx.sessionId,
35
+ userId: ctx.userId,
36
+ threadId: ctx.threadId,
37
+ applicationId: ctx.applicationId,
38
+ agentProfileId: ctx.agentProfileId,
39
+ }).catch(() => { });
40
+ }
41
+ }
42
+ catch (e) {
43
+ console.warn('[Observability] startTrace failed:', e instanceof Error ? e.message : e);
44
+ }
45
+ return { traceId, startTime, sampled: true };
46
+ },
47
+ async endTrace(traceId, data) {
48
+ try {
49
+ const endTime = Date.now();
50
+ await provider.updateTrace(traceId, {
51
+ output: data?.output,
52
+ status: data?.status ?? 'ok',
53
+ endTime,
54
+ durationMs: data?.startTime != null ? endTime - data.startTime : undefined,
55
+ usage: data?.usage,
56
+ cost: data?.cost,
57
+ error: data?.error,
58
+ });
59
+ }
60
+ catch (e) {
61
+ console.warn('[Observability] endTrace failed:', e instanceof Error ? e.message : e);
62
+ }
63
+ },
64
+ async startObservation(ctx) {
65
+ const observationId = `obs_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
66
+ const startTime = Date.now();
67
+ try {
68
+ await provider.saveObservation({
69
+ id: observationId,
70
+ traceId: ctx.traceId || '',
71
+ parentObservationId: ctx.parentObservationId,
72
+ type: ctx.type,
73
+ name: ctx.name,
74
+ model: ctx.model,
75
+ provider: ctx.provider,
76
+ input: ctx.input,
77
+ status: 'active',
78
+ startTime,
79
+ metadata: ctx.metadata,
80
+ });
81
+ }
82
+ catch (e) {
83
+ console.warn('[Observability] startObservation failed:', e instanceof Error ? e.message : e);
84
+ }
85
+ return { observationId, traceId: ctx.traceId || '', startTime, sampled: true };
86
+ },
87
+ async endObservation(observationId, data) {
88
+ try {
89
+ await provider.updateObservation(observationId, {
90
+ output: data?.output,
91
+ status: data?.status ?? 'ok',
92
+ endTime: Date.now(),
93
+ durationMs: data?.durationMs,
94
+ usage: data?.usage,
95
+ model: data?.model,
96
+ provider: data?.provider,
97
+ error: data?.error,
98
+ metadata: data?.metadata,
99
+ });
100
+ }
101
+ catch (e) {
102
+ console.warn('[Observability] endObservation failed:', e instanceof Error ? e.message : e);
103
+ }
104
+ },
105
+ async recordEvent(ctx) {
106
+ try {
107
+ const observationId = `evt_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
108
+ await provider.saveObservation({
109
+ id: observationId,
110
+ traceId: ctx.traceId || '',
111
+ type: 'event',
112
+ name: ctx.name,
113
+ input: ctx.input,
114
+ output: ctx.output,
115
+ status: 'ok',
116
+ startTime: Date.now(),
117
+ metadata: ctx.metadata,
118
+ });
119
+ }
120
+ catch (e) {
121
+ console.warn('[Observability] recordEvent failed:', e instanceof Error ? e.message : e);
122
+ }
123
+ },
124
+ async recordScore(score) {
125
+ try {
126
+ await provider.saveScore(score);
127
+ }
128
+ catch (e) {
129
+ console.warn('[Observability] recordScore failed:', e instanceof Error ? e.message : e);
130
+ }
131
+ },
132
+ };
133
+ }
134
+ //# sourceMappingURL=store-sink-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-sink-factory.js","sourceRoot":"","sources":["../../../src/spi/store-sink-factory.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { AgentEngine, LLMProvider, Middleware, RegisteredTool, ToolRegistry, SkillManager, ContextManager, ContentPart, Message, ProxySettings, AgentEventPreset, A2AClient } from '@cicctencent/agent-core';
1
+ import type { AgentEngine, LLMProvider, Middleware, RegisteredTool, ToolRegistry, SkillManager, ContextManager, ContentPart, Message, ProxySettings, AgentEventPreset, A2AClient, ObservabilityConfig, ObservabilityManager } from '@cicctencent/agent-core';
2
+ import type { ObservabilityStoreProvider } from './spi/observability-store.js';
2
3
  export interface ThreadEntity {
3
4
  id: number;
4
5
  workspaceId?: number;
@@ -613,6 +614,10 @@ export interface AgentServerOptions {
613
614
  /** 自定义数据源适配器 */
614
615
  connectors?: DataSourceAdapter[];
615
616
  middleware?: Middleware[];
617
+ /** 可观测性存储 SPI(未提供时使用 InMemoryObservabilityStore) */
618
+ observabilityProvider?: ObservabilityStoreProvider;
619
+ /** 可观测性配置(采样率、输入/输出捕获开关等) */
620
+ observabilityConfig?: ObservabilityConfig;
616
621
  dataDir?: string;
617
622
  skillsDir?: string;
618
623
  connectorsDir?: string;
@@ -842,6 +847,8 @@ export interface AgentServer {
842
847
  automation?: AutomationProvider;
843
848
  email?: EmailProvider;
844
849
  calendar?: CalendarProvider;
850
+ observability?: ObservabilityStoreProvider;
851
+ observabilityManager?: ObservabilityManager;
845
852
  };
846
853
  }
847
854
  export interface AgentSystem {