@sowonai/crewx-cli 0.8.0-rc.1 → 0.8.0-rc.3
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/dist/slack/formatters/message.formatter.js +8 -43
- package/dist/slack/formatters/message.formatter.js.map +1 -1
- package/package.json +1 -1
- package/dist/services/memory.service.d.ts +0 -102
- package/dist/services/memory.service.js +0 -707
- package/dist/services/memory.service.js.map +0 -1
- package/dist/services/tracing.service.d.ts +0 -91
- package/dist/services/tracing.service.js +0 -510
- package/dist/services/tracing.service.js.map +0 -1
- package/scripts/migrate-tracing-db.mjs +0 -295
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../src/services/memory.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { OnModuleDestroy } from '@nestjs/common';
|
|
2
|
-
export declare enum TraceStatus {
|
|
3
|
-
PENDING = "pending",
|
|
4
|
-
RUNNING = "running",
|
|
5
|
-
COMPLETED = "completed",
|
|
6
|
-
FAILED = "failed",
|
|
7
|
-
CANCELLED = "cancelled"
|
|
8
|
-
}
|
|
9
|
-
export interface TraceSpan {
|
|
10
|
-
id: string;
|
|
11
|
-
traceId: string;
|
|
12
|
-
name: string;
|
|
13
|
-
parentSpanId?: string;
|
|
14
|
-
startTime: number;
|
|
15
|
-
endTime?: number;
|
|
16
|
-
status: TraceStatus;
|
|
17
|
-
attributes?: Record<string, unknown>;
|
|
18
|
-
events?: TraceEvent[];
|
|
19
|
-
}
|
|
20
|
-
export interface TraceEvent {
|
|
21
|
-
name: string;
|
|
22
|
-
timestamp: number;
|
|
23
|
-
attributes?: Record<string, unknown>;
|
|
24
|
-
}
|
|
25
|
-
export interface Trace {
|
|
26
|
-
id: string;
|
|
27
|
-
name: string;
|
|
28
|
-
agentId?: string;
|
|
29
|
-
sessionId?: string;
|
|
30
|
-
startTime: number;
|
|
31
|
-
endTime?: number;
|
|
32
|
-
status: TraceStatus;
|
|
33
|
-
attributes?: Record<string, unknown>;
|
|
34
|
-
spans?: TraceSpan[];
|
|
35
|
-
metadata?: Record<string, unknown>;
|
|
36
|
-
}
|
|
37
|
-
export interface TraceQueryOptions {
|
|
38
|
-
agentId?: string;
|
|
39
|
-
sessionId?: string;
|
|
40
|
-
status?: TraceStatus;
|
|
41
|
-
startTimeFrom?: number;
|
|
42
|
-
startTimeTo?: number;
|
|
43
|
-
limit?: number;
|
|
44
|
-
offset?: number;
|
|
45
|
-
}
|
|
46
|
-
export declare class TracingService implements OnModuleDestroy {
|
|
47
|
-
private readonly logger;
|
|
48
|
-
private db;
|
|
49
|
-
private initialized;
|
|
50
|
-
private readonly dbPath;
|
|
51
|
-
constructor();
|
|
52
|
-
private ensureInitialized;
|
|
53
|
-
private loadBetterSqlite3;
|
|
54
|
-
private createTables;
|
|
55
|
-
private generateId;
|
|
56
|
-
startTrace(name: string, options?: {
|
|
57
|
-
agentId?: string;
|
|
58
|
-
sessionId?: string;
|
|
59
|
-
attributes?: Record<string, unknown>;
|
|
60
|
-
metadata?: Record<string, unknown>;
|
|
61
|
-
}): Promise<string | null>;
|
|
62
|
-
completeTrace(traceId: string, result?: Record<string, unknown>): Promise<boolean>;
|
|
63
|
-
failTrace(traceId: string, error: Error | string): Promise<boolean>;
|
|
64
|
-
startSpan(traceId: string, name: string, options?: {
|
|
65
|
-
parentSpanId?: string;
|
|
66
|
-
attributes?: Record<string, unknown>;
|
|
67
|
-
}): Promise<string | null>;
|
|
68
|
-
endSpan(spanId: string, status?: TraceStatus, attributes?: Record<string, unknown>): Promise<boolean>;
|
|
69
|
-
addEvent(traceId: string, name: string, options?: {
|
|
70
|
-
spanId?: string;
|
|
71
|
-
attributes?: Record<string, unknown>;
|
|
72
|
-
}): Promise<boolean>;
|
|
73
|
-
getTrace(traceId: string): Promise<Trace | null>;
|
|
74
|
-
queryTraces(options?: TraceQueryOptions): Promise<Trace[]>;
|
|
75
|
-
queryTracesByThreadTs(threadTs: string, options?: {
|
|
76
|
-
agentId?: string;
|
|
77
|
-
limit?: number;
|
|
78
|
-
}): Promise<Trace[]>;
|
|
79
|
-
getStats(options?: {
|
|
80
|
-
agentId?: string;
|
|
81
|
-
since?: number;
|
|
82
|
-
}): Promise<{
|
|
83
|
-
total: number;
|
|
84
|
-
byStatus: Record<TraceStatus, number>;
|
|
85
|
-
avgDuration: number;
|
|
86
|
-
}>;
|
|
87
|
-
deleteOldTraces(olderThanMs: number): Promise<number>;
|
|
88
|
-
private rowToTrace;
|
|
89
|
-
isAvailable(): Promise<boolean>;
|
|
90
|
-
onModuleDestroy(): void;
|
|
91
|
-
}
|
|
@@ -1,510 +0,0 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
-
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;
|
|
22
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
-
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
-
};
|
|
44
|
-
var TracingService_1;
|
|
45
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
-
exports.TracingService = exports.TraceStatus = void 0;
|
|
47
|
-
const common_1 = require("@nestjs/common");
|
|
48
|
-
const path = __importStar(require("path"));
|
|
49
|
-
const fs = __importStar(require("fs"));
|
|
50
|
-
var TraceStatus;
|
|
51
|
-
(function (TraceStatus) {
|
|
52
|
-
TraceStatus["PENDING"] = "pending";
|
|
53
|
-
TraceStatus["RUNNING"] = "running";
|
|
54
|
-
TraceStatus["COMPLETED"] = "completed";
|
|
55
|
-
TraceStatus["FAILED"] = "failed";
|
|
56
|
-
TraceStatus["CANCELLED"] = "cancelled";
|
|
57
|
-
})(TraceStatus || (exports.TraceStatus = TraceStatus = {}));
|
|
58
|
-
let TracingService = TracingService_1 = class TracingService {
|
|
59
|
-
constructor() {
|
|
60
|
-
this.logger = new common_1.Logger(TracingService_1.name);
|
|
61
|
-
this.db = null;
|
|
62
|
-
this.initialized = false;
|
|
63
|
-
const homeDir = process.env.HOME || process.env.USERPROFILE || '.';
|
|
64
|
-
const crewxDir = path.join(homeDir, '.crewx');
|
|
65
|
-
this.dbPath = path.join(crewxDir, 'tracing.db');
|
|
66
|
-
}
|
|
67
|
-
async ensureInitialized() {
|
|
68
|
-
if (this.initialized) {
|
|
69
|
-
return true;
|
|
70
|
-
}
|
|
71
|
-
try {
|
|
72
|
-
const Database = await this.loadBetterSqlite3();
|
|
73
|
-
if (!Database) {
|
|
74
|
-
this.logger.warn('better-sqlite3 not available, tracing disabled');
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
const dir = path.dirname(this.dbPath);
|
|
78
|
-
if (!fs.existsSync(dir)) {
|
|
79
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
80
|
-
}
|
|
81
|
-
this.db = new Database(this.dbPath);
|
|
82
|
-
this.db.pragma('journal_mode = WAL');
|
|
83
|
-
this.db.pragma('synchronous = NORMAL');
|
|
84
|
-
this.db.pragma('cache_size = -64000');
|
|
85
|
-
this.db.pragma('temp_store = MEMORY');
|
|
86
|
-
this.createTables();
|
|
87
|
-
this.initialized = true;
|
|
88
|
-
this.logger.log(`Tracing database initialized at ${this.dbPath}`);
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
this.logger.warn(`Failed to initialize tracing database: ${error instanceof Error ? error.message : String(error)}`);
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
async loadBetterSqlite3() {
|
|
97
|
-
try {
|
|
98
|
-
return require('better-sqlite3');
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
createTables() {
|
|
105
|
-
this.db.exec(`
|
|
106
|
-
CREATE TABLE IF NOT EXISTS traces (
|
|
107
|
-
id TEXT PRIMARY KEY,
|
|
108
|
-
name TEXT NOT NULL,
|
|
109
|
-
agent_id TEXT,
|
|
110
|
-
session_id TEXT,
|
|
111
|
-
start_time INTEGER NOT NULL,
|
|
112
|
-
end_time INTEGER,
|
|
113
|
-
status TEXT NOT NULL DEFAULT 'pending',
|
|
114
|
-
attributes TEXT,
|
|
115
|
-
metadata TEXT,
|
|
116
|
-
created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
|
|
117
|
-
updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
CREATE INDEX IF NOT EXISTS idx_traces_agent_id ON traces(agent_id);
|
|
121
|
-
CREATE INDEX IF NOT EXISTS idx_traces_session_id ON traces(session_id);
|
|
122
|
-
CREATE INDEX IF NOT EXISTS idx_traces_status ON traces(status);
|
|
123
|
-
CREATE INDEX IF NOT EXISTS idx_traces_start_time ON traces(start_time);
|
|
124
|
-
`);
|
|
125
|
-
this.db.exec(`
|
|
126
|
-
CREATE TABLE IF NOT EXISTS trace_spans (
|
|
127
|
-
id TEXT PRIMARY KEY,
|
|
128
|
-
trace_id TEXT NOT NULL,
|
|
129
|
-
name TEXT NOT NULL,
|
|
130
|
-
parent_span_id TEXT,
|
|
131
|
-
start_time INTEGER NOT NULL,
|
|
132
|
-
end_time INTEGER,
|
|
133
|
-
status TEXT NOT NULL DEFAULT 'pending',
|
|
134
|
-
attributes TEXT,
|
|
135
|
-
events TEXT,
|
|
136
|
-
created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
|
|
137
|
-
FOREIGN KEY (trace_id) REFERENCES traces(id) ON DELETE CASCADE
|
|
138
|
-
);
|
|
139
|
-
|
|
140
|
-
CREATE INDEX IF NOT EXISTS idx_spans_trace_id ON trace_spans(trace_id);
|
|
141
|
-
CREATE INDEX IF NOT EXISTS idx_spans_parent ON trace_spans(parent_span_id);
|
|
142
|
-
`);
|
|
143
|
-
this.db.exec(`
|
|
144
|
-
CREATE TABLE IF NOT EXISTS trace_events (
|
|
145
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
146
|
-
trace_id TEXT NOT NULL,
|
|
147
|
-
span_id TEXT,
|
|
148
|
-
name TEXT NOT NULL,
|
|
149
|
-
timestamp INTEGER NOT NULL,
|
|
150
|
-
attributes TEXT,
|
|
151
|
-
FOREIGN KEY (trace_id) REFERENCES traces(id) ON DELETE CASCADE
|
|
152
|
-
);
|
|
153
|
-
|
|
154
|
-
CREATE INDEX IF NOT EXISTS idx_events_trace_id ON trace_events(trace_id);
|
|
155
|
-
`);
|
|
156
|
-
}
|
|
157
|
-
generateId() {
|
|
158
|
-
const timestamp = Date.now().toString(36);
|
|
159
|
-
const randomPart = Math.random().toString(36).substring(2, 10);
|
|
160
|
-
return `${timestamp}-${randomPart}`;
|
|
161
|
-
}
|
|
162
|
-
async startTrace(name, options = {}) {
|
|
163
|
-
if (!(await this.ensureInitialized())) {
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
const id = this.generateId();
|
|
167
|
-
const now = Date.now();
|
|
168
|
-
try {
|
|
169
|
-
const stmt = this.db.prepare(`
|
|
170
|
-
INSERT INTO traces (id, name, agent_id, session_id, start_time, status, attributes, metadata)
|
|
171
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
172
|
-
`);
|
|
173
|
-
stmt.run(id, name, options.agentId || null, options.sessionId || null, now, TraceStatus.RUNNING, options.attributes ? JSON.stringify(options.attributes) : null, options.metadata ? JSON.stringify(options.metadata) : null);
|
|
174
|
-
this.logger.debug(`Started trace: ${id} (${name})`);
|
|
175
|
-
return id;
|
|
176
|
-
}
|
|
177
|
-
catch (error) {
|
|
178
|
-
this.logger.error(`Failed to start trace: ${error instanceof Error ? error.message : String(error)}`);
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
async completeTrace(traceId, result) {
|
|
183
|
-
if (!(await this.ensureInitialized())) {
|
|
184
|
-
return false;
|
|
185
|
-
}
|
|
186
|
-
try {
|
|
187
|
-
const now = Date.now();
|
|
188
|
-
const stmt = this.db.prepare(`
|
|
189
|
-
UPDATE traces
|
|
190
|
-
SET status = ?, end_time = ?, metadata = json_patch(COALESCE(metadata, '{}'), ?), updated_at = ?
|
|
191
|
-
WHERE id = ?
|
|
192
|
-
`);
|
|
193
|
-
const resultMetadata = result ? JSON.stringify({ result }) : '{}';
|
|
194
|
-
const changes = stmt.run(TraceStatus.COMPLETED, now, resultMetadata, now, traceId);
|
|
195
|
-
if (changes.changes > 0) {
|
|
196
|
-
this.logger.debug(`Completed trace: ${traceId}`);
|
|
197
|
-
return true;
|
|
198
|
-
}
|
|
199
|
-
return false;
|
|
200
|
-
}
|
|
201
|
-
catch (error) {
|
|
202
|
-
this.logger.error(`Failed to complete trace: ${error instanceof Error ? error.message : String(error)}`);
|
|
203
|
-
return false;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
async failTrace(traceId, error) {
|
|
207
|
-
if (!(await this.ensureInitialized())) {
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
try {
|
|
211
|
-
const now = Date.now();
|
|
212
|
-
const errorInfo = {
|
|
213
|
-
error: {
|
|
214
|
-
message: error instanceof Error ? error.message : String(error),
|
|
215
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
216
|
-
}
|
|
217
|
-
};
|
|
218
|
-
const stmt = this.db.prepare(`
|
|
219
|
-
UPDATE traces
|
|
220
|
-
SET status = ?, end_time = ?, metadata = json_patch(COALESCE(metadata, '{}'), ?), updated_at = ?
|
|
221
|
-
WHERE id = ?
|
|
222
|
-
`);
|
|
223
|
-
const changes = stmt.run(TraceStatus.FAILED, now, JSON.stringify(errorInfo), now, traceId);
|
|
224
|
-
if (changes.changes > 0) {
|
|
225
|
-
this.logger.debug(`Failed trace: ${traceId}`);
|
|
226
|
-
return true;
|
|
227
|
-
}
|
|
228
|
-
return false;
|
|
229
|
-
}
|
|
230
|
-
catch (err) {
|
|
231
|
-
this.logger.error(`Failed to update trace status: ${err instanceof Error ? err.message : String(err)}`);
|
|
232
|
-
return false;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
async startSpan(traceId, name, options = {}) {
|
|
236
|
-
if (!(await this.ensureInitialized())) {
|
|
237
|
-
return null;
|
|
238
|
-
}
|
|
239
|
-
const id = this.generateId();
|
|
240
|
-
const now = Date.now();
|
|
241
|
-
try {
|
|
242
|
-
const stmt = this.db.prepare(`
|
|
243
|
-
INSERT INTO trace_spans (id, trace_id, name, parent_span_id, start_time, status, attributes)
|
|
244
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
245
|
-
`);
|
|
246
|
-
stmt.run(id, traceId, name, options.parentSpanId || null, now, TraceStatus.RUNNING, options.attributes ? JSON.stringify(options.attributes) : null);
|
|
247
|
-
return id;
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
this.logger.error(`Failed to start span: ${error instanceof Error ? error.message : String(error)}`);
|
|
251
|
-
return null;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
async endSpan(spanId, status = TraceStatus.COMPLETED, attributes) {
|
|
255
|
-
if (!(await this.ensureInitialized())) {
|
|
256
|
-
return false;
|
|
257
|
-
}
|
|
258
|
-
try {
|
|
259
|
-
const now = Date.now();
|
|
260
|
-
let stmt;
|
|
261
|
-
let changes;
|
|
262
|
-
if (attributes) {
|
|
263
|
-
stmt = this.db.prepare(`
|
|
264
|
-
UPDATE trace_spans
|
|
265
|
-
SET status = ?, end_time = ?, attributes = json_patch(COALESCE(attributes, '{}'), ?)
|
|
266
|
-
WHERE id = ?
|
|
267
|
-
`);
|
|
268
|
-
changes = stmt.run(status, now, JSON.stringify(attributes), spanId);
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
stmt = this.db.prepare(`
|
|
272
|
-
UPDATE trace_spans
|
|
273
|
-
SET status = ?, end_time = ?
|
|
274
|
-
WHERE id = ?
|
|
275
|
-
`);
|
|
276
|
-
changes = stmt.run(status, now, spanId);
|
|
277
|
-
}
|
|
278
|
-
return changes.changes > 0;
|
|
279
|
-
}
|
|
280
|
-
catch (error) {
|
|
281
|
-
this.logger.error(`Failed to end span: ${error instanceof Error ? error.message : String(error)}`);
|
|
282
|
-
return false;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
async addEvent(traceId, name, options = {}) {
|
|
286
|
-
if (!(await this.ensureInitialized())) {
|
|
287
|
-
return false;
|
|
288
|
-
}
|
|
289
|
-
try {
|
|
290
|
-
const now = Date.now();
|
|
291
|
-
const stmt = this.db.prepare(`
|
|
292
|
-
INSERT INTO trace_events (trace_id, span_id, name, timestamp, attributes)
|
|
293
|
-
VALUES (?, ?, ?, ?, ?)
|
|
294
|
-
`);
|
|
295
|
-
stmt.run(traceId, options.spanId || null, name, now, options.attributes ? JSON.stringify(options.attributes) : null);
|
|
296
|
-
return true;
|
|
297
|
-
}
|
|
298
|
-
catch (error) {
|
|
299
|
-
this.logger.error(`Failed to add event: ${error instanceof Error ? error.message : String(error)}`);
|
|
300
|
-
return false;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
async getTrace(traceId) {
|
|
304
|
-
if (!(await this.ensureInitialized())) {
|
|
305
|
-
return null;
|
|
306
|
-
}
|
|
307
|
-
try {
|
|
308
|
-
const traceStmt = this.db.prepare(`
|
|
309
|
-
SELECT * FROM traces WHERE id = ?
|
|
310
|
-
`);
|
|
311
|
-
const row = traceStmt.get(traceId);
|
|
312
|
-
if (!row) {
|
|
313
|
-
return null;
|
|
314
|
-
}
|
|
315
|
-
const spansStmt = this.db.prepare(`
|
|
316
|
-
SELECT * FROM trace_spans WHERE trace_id = ? ORDER BY start_time
|
|
317
|
-
`);
|
|
318
|
-
const spanRows = spansStmt.all(traceId);
|
|
319
|
-
const eventsStmt = this.db.prepare(`
|
|
320
|
-
SELECT * FROM trace_events WHERE trace_id = ? ORDER BY timestamp
|
|
321
|
-
`);
|
|
322
|
-
const eventRows = eventsStmt.all(traceId);
|
|
323
|
-
return this.rowToTrace(row, spanRows, eventRows);
|
|
324
|
-
}
|
|
325
|
-
catch (error) {
|
|
326
|
-
this.logger.error(`Failed to get trace: ${error instanceof Error ? error.message : String(error)}`);
|
|
327
|
-
return null;
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
async queryTraces(options = {}) {
|
|
331
|
-
if (!(await this.ensureInitialized())) {
|
|
332
|
-
return [];
|
|
333
|
-
}
|
|
334
|
-
try {
|
|
335
|
-
const conditions = [];
|
|
336
|
-
const params = [];
|
|
337
|
-
if (options.agentId) {
|
|
338
|
-
conditions.push('agent_id = ?');
|
|
339
|
-
params.push(options.agentId);
|
|
340
|
-
}
|
|
341
|
-
if (options.sessionId) {
|
|
342
|
-
conditions.push('session_id = ?');
|
|
343
|
-
params.push(options.sessionId);
|
|
344
|
-
}
|
|
345
|
-
if (options.status) {
|
|
346
|
-
conditions.push('status = ?');
|
|
347
|
-
params.push(options.status);
|
|
348
|
-
}
|
|
349
|
-
if (options.startTimeFrom) {
|
|
350
|
-
conditions.push('start_time >= ?');
|
|
351
|
-
params.push(options.startTimeFrom);
|
|
352
|
-
}
|
|
353
|
-
if (options.startTimeTo) {
|
|
354
|
-
conditions.push('start_time <= ?');
|
|
355
|
-
params.push(options.startTimeTo);
|
|
356
|
-
}
|
|
357
|
-
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
358
|
-
const limit = options.limit || 100;
|
|
359
|
-
const offset = options.offset || 0;
|
|
360
|
-
const stmt = this.db.prepare(`
|
|
361
|
-
SELECT * FROM traces
|
|
362
|
-
${whereClause}
|
|
363
|
-
ORDER BY start_time DESC
|
|
364
|
-
LIMIT ? OFFSET ?
|
|
365
|
-
`);
|
|
366
|
-
params.push(limit, offset);
|
|
367
|
-
const rows = stmt.all(...params);
|
|
368
|
-
return rows.map((row) => this.rowToTrace(row));
|
|
369
|
-
}
|
|
370
|
-
catch (error) {
|
|
371
|
-
this.logger.error(`Failed to query traces: ${error instanceof Error ? error.message : String(error)}`);
|
|
372
|
-
return [];
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
async queryTracesByThreadTs(threadTs, options = {}) {
|
|
376
|
-
if (!(await this.ensureInitialized())) {
|
|
377
|
-
return [];
|
|
378
|
-
}
|
|
379
|
-
try {
|
|
380
|
-
const conditions = [`json_extract(metadata, '$.thread_ts') = ?`];
|
|
381
|
-
const params = [threadTs];
|
|
382
|
-
if (options.agentId) {
|
|
383
|
-
conditions.push('agent_id = ?');
|
|
384
|
-
params.push(options.agentId);
|
|
385
|
-
}
|
|
386
|
-
const whereClause = `WHERE ${conditions.join(' AND ')}`;
|
|
387
|
-
const limit = options.limit || 100;
|
|
388
|
-
const stmt = this.db.prepare(`
|
|
389
|
-
SELECT * FROM traces
|
|
390
|
-
${whereClause}
|
|
391
|
-
ORDER BY start_time DESC
|
|
392
|
-
LIMIT ?
|
|
393
|
-
`);
|
|
394
|
-
const rows = stmt.all(...params, limit);
|
|
395
|
-
return rows.map((row) => this.rowToTrace(row));
|
|
396
|
-
}
|
|
397
|
-
catch (error) {
|
|
398
|
-
this.logger.warn(`Failed to query traces by thread_ts (metadata.thread_ts): ${error instanceof Error ? error.message : String(error)}`);
|
|
399
|
-
return [];
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
async getStats(options = {}) {
|
|
403
|
-
if (!(await this.ensureInitialized())) {
|
|
404
|
-
return { total: 0, byStatus: {}, avgDuration: 0 };
|
|
405
|
-
}
|
|
406
|
-
try {
|
|
407
|
-
const conditions = [];
|
|
408
|
-
const params = [];
|
|
409
|
-
if (options.agentId) {
|
|
410
|
-
conditions.push('agent_id = ?');
|
|
411
|
-
params.push(options.agentId);
|
|
412
|
-
}
|
|
413
|
-
if (options.since) {
|
|
414
|
-
conditions.push('start_time >= ?');
|
|
415
|
-
params.push(options.since);
|
|
416
|
-
}
|
|
417
|
-
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
418
|
-
const totalStmt = this.db.prepare(`SELECT COUNT(*) as count FROM traces ${whereClause}`);
|
|
419
|
-
const total = totalStmt.get(...params).count;
|
|
420
|
-
const statusStmt = this.db.prepare(`
|
|
421
|
-
SELECT status, COUNT(*) as count
|
|
422
|
-
FROM traces ${whereClause}
|
|
423
|
-
GROUP BY status
|
|
424
|
-
`);
|
|
425
|
-
const statusRows = statusStmt.all(...params);
|
|
426
|
-
const byStatus = statusRows.reduce((acc, row) => {
|
|
427
|
-
acc[row.status] = row.count;
|
|
428
|
-
return acc;
|
|
429
|
-
}, {});
|
|
430
|
-
const durationWhereClause = conditions.length > 0
|
|
431
|
-
? `${whereClause} AND end_time IS NOT NULL`
|
|
432
|
-
: 'WHERE end_time IS NOT NULL';
|
|
433
|
-
const avgStmt = this.db.prepare(`
|
|
434
|
-
SELECT AVG(end_time - start_time) as avg_duration
|
|
435
|
-
FROM traces ${durationWhereClause}
|
|
436
|
-
`);
|
|
437
|
-
const avgDuration = avgStmt.get(...params)?.avg_duration || 0;
|
|
438
|
-
return { total, byStatus, avgDuration };
|
|
439
|
-
}
|
|
440
|
-
catch (error) {
|
|
441
|
-
this.logger.error(`Failed to get stats: ${error instanceof Error ? error.message : String(error)}`);
|
|
442
|
-
return { total: 0, byStatus: {}, avgDuration: 0 };
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
async deleteOldTraces(olderThanMs) {
|
|
446
|
-
if (!(await this.ensureInitialized())) {
|
|
447
|
-
return 0;
|
|
448
|
-
}
|
|
449
|
-
try {
|
|
450
|
-
const cutoff = Date.now() - olderThanMs;
|
|
451
|
-
const stmt = this.db.prepare('DELETE FROM traces WHERE start_time < ?');
|
|
452
|
-
const result = stmt.run(cutoff);
|
|
453
|
-
if (result.changes > 0) {
|
|
454
|
-
this.logger.log(`Deleted ${result.changes} old traces`);
|
|
455
|
-
}
|
|
456
|
-
return result.changes;
|
|
457
|
-
}
|
|
458
|
-
catch (error) {
|
|
459
|
-
this.logger.error(`Failed to delete old traces: ${error instanceof Error ? error.message : String(error)}`);
|
|
460
|
-
return 0;
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
rowToTrace(row, spanRows, eventRows) {
|
|
464
|
-
const trace = {
|
|
465
|
-
id: row.id,
|
|
466
|
-
name: row.name,
|
|
467
|
-
agentId: row.agent_id || undefined,
|
|
468
|
-
sessionId: row.session_id || undefined,
|
|
469
|
-
startTime: row.start_time,
|
|
470
|
-
endTime: row.end_time || undefined,
|
|
471
|
-
status: row.status,
|
|
472
|
-
attributes: row.attributes ? JSON.parse(row.attributes) : undefined,
|
|
473
|
-
metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
|
|
474
|
-
};
|
|
475
|
-
if (spanRows && spanRows.length > 0) {
|
|
476
|
-
trace.spans = spanRows.map((spanRow) => ({
|
|
477
|
-
id: spanRow.id,
|
|
478
|
-
traceId: spanRow.trace_id,
|
|
479
|
-
name: spanRow.name,
|
|
480
|
-
parentSpanId: spanRow.parent_span_id || undefined,
|
|
481
|
-
startTime: spanRow.start_time,
|
|
482
|
-
endTime: spanRow.end_time || undefined,
|
|
483
|
-
status: spanRow.status,
|
|
484
|
-
attributes: spanRow.attributes ? JSON.parse(spanRow.attributes) : undefined,
|
|
485
|
-
events: spanRow.events ? JSON.parse(spanRow.events) : undefined,
|
|
486
|
-
}));
|
|
487
|
-
}
|
|
488
|
-
return trace;
|
|
489
|
-
}
|
|
490
|
-
async isAvailable() {
|
|
491
|
-
return this.ensureInitialized();
|
|
492
|
-
}
|
|
493
|
-
onModuleDestroy() {
|
|
494
|
-
if (this.db) {
|
|
495
|
-
try {
|
|
496
|
-
this.db.close();
|
|
497
|
-
this.logger.log('Tracing database connection closed');
|
|
498
|
-
}
|
|
499
|
-
catch (error) {
|
|
500
|
-
this.logger.warn(`Error closing database: ${error instanceof Error ? error.message : String(error)}`);
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
};
|
|
505
|
-
exports.TracingService = TracingService;
|
|
506
|
-
exports.TracingService = TracingService = TracingService_1 = __decorate([
|
|
507
|
-
(0, common_1.Injectable)(),
|
|
508
|
-
__metadata("design:paramtypes", [])
|
|
509
|
-
], TracingService);
|
|
510
|
-
//# sourceMappingURL=tracing.service.js.map
|