@agenttrace-io/sdk 0.1.9

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 (57) hide show
  1. package/dist/benchmark.d.ts +79 -0
  2. package/dist/benchmark.d.ts.map +1 -0
  3. package/dist/benchmark.js +324 -0
  4. package/dist/benchmark.js.map +1 -0
  5. package/dist/index.d.ts +358 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +1169 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/migrations/001-initial.d.ts +5 -0
  10. package/dist/migrations/001-initial.d.ts.map +1 -0
  11. package/dist/migrations/001-initial.js +86 -0
  12. package/dist/migrations/001-initial.js.map +1 -0
  13. package/dist/migrations/002-scores.d.ts +5 -0
  14. package/dist/migrations/002-scores.d.ts.map +1 -0
  15. package/dist/migrations/002-scores.js +17 -0
  16. package/dist/migrations/002-scores.js.map +1 -0
  17. package/dist/migrations/003-alerts.d.ts +5 -0
  18. package/dist/migrations/003-alerts.d.ts.map +1 -0
  19. package/dist/migrations/003-alerts.js +27 -0
  20. package/dist/migrations/003-alerts.js.map +1 -0
  21. package/dist/migrations/004-trace-context.d.ts +5 -0
  22. package/dist/migrations/004-trace-context.d.ts.map +1 -0
  23. package/dist/migrations/004-trace-context.js +16 -0
  24. package/dist/migrations/004-trace-context.js.map +1 -0
  25. package/dist/migrations/005-agent-usage.d.ts +5 -0
  26. package/dist/migrations/005-agent-usage.d.ts.map +1 -0
  27. package/dist/migrations/005-agent-usage.js +27 -0
  28. package/dist/migrations/005-agent-usage.js.map +1 -0
  29. package/dist/migrations/005-webhooks.d.ts +5 -0
  30. package/dist/migrations/005-webhooks.d.ts.map +1 -0
  31. package/dist/migrations/005-webhooks.js +33 -0
  32. package/dist/migrations/005-webhooks.js.map +1 -0
  33. package/dist/migrations/006-api-keys.d.ts +5 -0
  34. package/dist/migrations/006-api-keys.d.ts.map +1 -0
  35. package/dist/migrations/006-api-keys.js +27 -0
  36. package/dist/migrations/006-api-keys.js.map +1 -0
  37. package/dist/migrations.d.ts +29 -0
  38. package/dist/migrations.d.ts.map +1 -0
  39. package/dist/migrations.js +107 -0
  40. package/dist/migrations.js.map +1 -0
  41. package/dist/rate-limiter.d.ts +34 -0
  42. package/dist/rate-limiter.d.ts.map +1 -0
  43. package/dist/rate-limiter.js +74 -0
  44. package/dist/rate-limiter.js.map +1 -0
  45. package/dist/self-track.d.ts +42 -0
  46. package/dist/self-track.d.ts.map +1 -0
  47. package/dist/self-track.js +288 -0
  48. package/dist/self-track.js.map +1 -0
  49. package/dist/storage.d.ts +149 -0
  50. package/dist/storage.d.ts.map +1 -0
  51. package/dist/storage.js +1479 -0
  52. package/dist/storage.js.map +1 -0
  53. package/dist/types.d.ts +323 -0
  54. package/dist/types.d.ts.map +1 -0
  55. package/dist/types.js +19 -0
  56. package/dist/types.js.map +1 -0
  57. package/package.json +53 -0
@@ -0,0 +1,74 @@
1
+ /**
2
+ * AgentTrace -- Token Bucket Rate Limiter
3
+ *
4
+ * Prevents trace flooding by enforcing per-second and per-minute
5
+ * rate limits using a token bucket algorithm.
6
+ */
7
+ export class TokenBucketRateLimiter {
8
+ secondBucket;
9
+ minuteBucket;
10
+ _droppedTraces = 0;
11
+ constructor(config) {
12
+ // Per-second bucket
13
+ this.secondBucket = {
14
+ tokens: config.burstAllowance,
15
+ lastRefill: Date.now(),
16
+ maxTokens: config.maxTracesPerSecond + config.burstAllowance,
17
+ refillRatePerMs: config.maxTracesPerSecond / 1000,
18
+ };
19
+ // Per-minute bucket
20
+ this.minuteBucket = {
21
+ tokens: config.burstAllowance,
22
+ lastRefill: Date.now(),
23
+ maxTokens: config.maxTracesPerMinute + config.burstAllowance,
24
+ refillRatePerMs: config.maxTracesPerMinute / 60000,
25
+ };
26
+ }
27
+ /**
28
+ * Try to consume one token. Returns true if allowed, false if rate-limited.
29
+ */
30
+ tryConsume() {
31
+ this.refill();
32
+ const secondOk = this.secondBucket.refillRatePerMs === 0 || this.secondBucket.tokens >= 1;
33
+ const minuteOk = this.minuteBucket.refillRatePerMs === 0 || this.minuteBucket.tokens >= 1;
34
+ if (secondOk && minuteOk) {
35
+ if (this.secondBucket.refillRatePerMs > 0)
36
+ this.secondBucket.tokens -= 1;
37
+ if (this.minuteBucket.refillRatePerMs > 0)
38
+ this.minuteBucket.tokens -= 1;
39
+ return true;
40
+ }
41
+ this._droppedTraces++;
42
+ return false;
43
+ }
44
+ /**
45
+ * Get the total number of traces dropped due to rate limiting.
46
+ */
47
+ getDroppedTraces() {
48
+ return this._droppedTraces;
49
+ }
50
+ /**
51
+ * Reset the dropped traces counter.
52
+ */
53
+ resetDroppedTraces() {
54
+ this._droppedTraces = 0;
55
+ }
56
+ refill() {
57
+ const now = Date.now();
58
+ // Refill second bucket
59
+ if (this.secondBucket.refillRatePerMs > 0) {
60
+ const elapsed = now - this.secondBucket.lastRefill;
61
+ const tokensToAdd = elapsed * this.secondBucket.refillRatePerMs;
62
+ this.secondBucket.tokens = Math.min(this.secondBucket.maxTokens, this.secondBucket.tokens + tokensToAdd);
63
+ this.secondBucket.lastRefill = now;
64
+ }
65
+ // Refill minute bucket
66
+ if (this.minuteBucket.refillRatePerMs > 0) {
67
+ const elapsed = now - this.minuteBucket.lastRefill;
68
+ const tokensToAdd = elapsed * this.minuteBucket.refillRatePerMs;
69
+ this.minuteBucket.tokens = Math.min(this.minuteBucket.maxTokens, this.minuteBucket.tokens + tokensToAdd);
70
+ this.minuteBucket.lastRefill = now;
71
+ }
72
+ }
73
+ }
74
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * AgentTrace Self-Tracker
3
+ * Thin wrapper for AI agents to automatically track their own operations
4
+ * via AgentTrace storage + JSONL log for external consumption.
5
+ */
6
+ export interface SelfTrackerConfig {
7
+ agentName: string;
8
+ agentType: string;
9
+ dbPath?: string;
10
+ }
11
+ export declare class SelfTracker {
12
+ private agentName;
13
+ private agentType;
14
+ private storage;
15
+ private dbPath;
16
+ private logPath;
17
+ private currentSessionId;
18
+ private sessionStartTime;
19
+ constructor(config: SelfTrackerConfig);
20
+ private ensureLogDir;
21
+ private appendLog;
22
+ private ensureSession;
23
+ startSession(): string;
24
+ trackAction(action: string, target: string, metadata?: Record<string, unknown>): void;
25
+ trackDelegation(targetAgent: string, task: string): void;
26
+ trackResearch(query: string, results: number): void;
27
+ trackImplementation(files: string[], linesOfCode: number): void;
28
+ trackReview(prNumber: string, status: string): void;
29
+ endSession(): void;
30
+ getSessionStats(): {
31
+ sessionId: string;
32
+ actions: number;
33
+ duration: number;
34
+ tokens: number;
35
+ cost: number;
36
+ };
37
+ /**
38
+ * Close underlying storage (for cleanup in tests / long running)
39
+ */
40
+ close(): void;
41
+ }
42
+ //# sourceMappingURL=self-track.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-track.d.ts","sourceRoot":"","sources":["../src/self-track.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,gBAAgB,CAAa;gBAEzB,MAAM,EAAE,iBAAiB;IAUrC,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,aAAa;IAOrB,YAAY,IAAI,MAAM;IA0BtB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI;IAuCzF,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAqCxD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAqCnD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAqC/D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAqCnD,UAAU,IAAI,IAAI;IAgBlB,eAAe,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd;IAgBD;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,288 @@
1
+ /**
2
+ * AgentTrace Self-Tracker
3
+ * Thin wrapper for AI agents to automatically track their own operations
4
+ * via AgentTrace storage + JSONL log for external consumption.
5
+ */
6
+ import { randomUUID } from 'node:crypto';
7
+ import * as path from 'node:path';
8
+ import * as os from 'node:os';
9
+ import { appendFileSync, existsSync, mkdirSync } from 'node:fs';
10
+ import { TraceStorage } from './storage.js';
11
+ export class SelfTracker {
12
+ agentName;
13
+ agentType;
14
+ storage;
15
+ dbPath;
16
+ logPath;
17
+ currentSessionId = null;
18
+ sessionStartTime = 0;
19
+ constructor(config) {
20
+ this.agentName = config.agentName;
21
+ this.agentType = config.agentType;
22
+ this.dbPath = config.dbPath || process.env.AGENTTRACE_DB_PATH || './agenttrace.db';
23
+ this.storage = new TraceStorage(this.dbPath);
24
+ // Allow override via env for deployment flexibility
25
+ const envLog = process.env.AGENTTRACE_USAGE_LOG;
26
+ this.logPath = envLog || path.join(os.homedir(), '.config', 'agenttrace', 'usage.jsonl');
27
+ }
28
+ ensureLogDir() {
29
+ const dir = path.dirname(this.logPath);
30
+ if (!existsSync(dir)) {
31
+ mkdirSync(dir, { recursive: true });
32
+ }
33
+ }
34
+ appendLog(entry) {
35
+ this.ensureLogDir();
36
+ appendFileSync(this.logPath, JSON.stringify({ ...entry, timestamp: entry.timestamp || Date.now() }) + '\n', 'utf8');
37
+ }
38
+ ensureSession() {
39
+ if (!this.currentSessionId) {
40
+ this.startSession();
41
+ }
42
+ return this.currentSessionId;
43
+ }
44
+ startSession() {
45
+ const sessionId = randomUUID();
46
+ const startedAt = Date.now();
47
+ this.storage.createRun({
48
+ id: sessionId,
49
+ name: `${this.agentName}-self-session`,
50
+ startedAt,
51
+ metadata: {
52
+ agentName: this.agentName,
53
+ agentType: this.agentType,
54
+ selfTracked: true,
55
+ kind: 'self-session',
56
+ },
57
+ });
58
+ this.currentSessionId = sessionId;
59
+ this.sessionStartTime = startedAt;
60
+ this.appendLog({
61
+ timestamp: startedAt,
62
+ agentName: this.agentName,
63
+ agentType: this.agentType,
64
+ sessionId,
65
+ type: 'session_start',
66
+ });
67
+ return sessionId;
68
+ }
69
+ trackAction(action, target, metadata = {}) {
70
+ const sessionId = this.ensureSession();
71
+ const now = Date.now();
72
+ const trace = {
73
+ id: randomUUID(),
74
+ runId: sessionId,
75
+ name: `self:action:${action}`,
76
+ status: 'success',
77
+ input: { target },
78
+ output: null,
79
+ tokens: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
80
+ toolCalls: [],
81
+ latencyMs: 0,
82
+ costUsd: 0,
83
+ error: undefined,
84
+ metadata: {
85
+ selfTracked: true,
86
+ agentName: this.agentName,
87
+ agentType: this.agentType,
88
+ actionType: 'action',
89
+ action,
90
+ target,
91
+ ...metadata,
92
+ },
93
+ parentId: undefined,
94
+ };
95
+ this.storage.createTrace(trace);
96
+ this.appendLog({
97
+ timestamp: now,
98
+ agentName: this.agentName,
99
+ agentType: this.agentType,
100
+ sessionId,
101
+ type: 'action',
102
+ action,
103
+ target,
104
+ metadata,
105
+ });
106
+ }
107
+ trackDelegation(targetAgent, task) {
108
+ const sessionId = this.ensureSession();
109
+ const now = Date.now();
110
+ const trace = {
111
+ id: randomUUID(),
112
+ runId: sessionId,
113
+ name: 'self:delegation',
114
+ status: 'success',
115
+ input: { task },
116
+ output: null,
117
+ tokens: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
118
+ toolCalls: [],
119
+ latencyMs: 0,
120
+ costUsd: 0,
121
+ error: undefined,
122
+ metadata: {
123
+ selfTracked: true,
124
+ agentName: this.agentName,
125
+ agentType: this.agentType,
126
+ actionType: 'delegation',
127
+ targetAgent,
128
+ task,
129
+ },
130
+ parentId: undefined,
131
+ };
132
+ this.storage.createTrace(trace);
133
+ this.appendLog({
134
+ timestamp: now,
135
+ agentName: this.agentName,
136
+ agentType: this.agentType,
137
+ sessionId,
138
+ type: 'delegation',
139
+ target: targetAgent,
140
+ task,
141
+ });
142
+ }
143
+ trackResearch(query, results) {
144
+ const sessionId = this.ensureSession();
145
+ const now = Date.now();
146
+ const trace = {
147
+ id: randomUUID(),
148
+ runId: sessionId,
149
+ name: 'self:research',
150
+ status: 'success',
151
+ input: { query },
152
+ output: { results },
153
+ tokens: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
154
+ toolCalls: [],
155
+ latencyMs: 0,
156
+ costUsd: 0,
157
+ error: undefined,
158
+ metadata: {
159
+ selfTracked: true,
160
+ agentName: this.agentName,
161
+ agentType: this.agentType,
162
+ actionType: 'research',
163
+ query,
164
+ results,
165
+ },
166
+ parentId: undefined,
167
+ };
168
+ this.storage.createTrace(trace);
169
+ this.appendLog({
170
+ timestamp: now,
171
+ agentName: this.agentName,
172
+ agentType: this.agentType,
173
+ sessionId,
174
+ type: 'research',
175
+ query,
176
+ results,
177
+ });
178
+ }
179
+ trackImplementation(files, linesOfCode) {
180
+ const sessionId = this.ensureSession();
181
+ const now = Date.now();
182
+ const trace = {
183
+ id: randomUUID(),
184
+ runId: sessionId,
185
+ name: 'self:implementation',
186
+ status: 'success',
187
+ input: { files },
188
+ output: { linesOfCode },
189
+ tokens: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
190
+ toolCalls: [],
191
+ latencyMs: 0,
192
+ costUsd: 0,
193
+ error: undefined,
194
+ metadata: {
195
+ selfTracked: true,
196
+ agentName: this.agentName,
197
+ agentType: this.agentType,
198
+ actionType: 'implementation',
199
+ files,
200
+ linesOfCode,
201
+ },
202
+ parentId: undefined,
203
+ };
204
+ this.storage.createTrace(trace);
205
+ this.appendLog({
206
+ timestamp: now,
207
+ agentName: this.agentName,
208
+ agentType: this.agentType,
209
+ sessionId,
210
+ type: 'implementation',
211
+ files,
212
+ linesOfCode,
213
+ });
214
+ }
215
+ trackReview(prNumber, status) {
216
+ const sessionId = this.ensureSession();
217
+ const now = Date.now();
218
+ const trace = {
219
+ id: randomUUID(),
220
+ runId: sessionId,
221
+ name: 'self:review',
222
+ status: 'success',
223
+ input: { prNumber },
224
+ output: { status },
225
+ tokens: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
226
+ toolCalls: [],
227
+ latencyMs: 0,
228
+ costUsd: 0,
229
+ error: undefined,
230
+ metadata: {
231
+ selfTracked: true,
232
+ agentName: this.agentName,
233
+ agentType: this.agentType,
234
+ actionType: 'review',
235
+ prNumber,
236
+ status,
237
+ },
238
+ parentId: undefined,
239
+ };
240
+ this.storage.createTrace(trace);
241
+ this.appendLog({
242
+ timestamp: now,
243
+ agentName: this.agentName,
244
+ agentType: this.agentType,
245
+ sessionId,
246
+ type: 'review',
247
+ prNumber,
248
+ status,
249
+ });
250
+ }
251
+ endSession() {
252
+ if (this.currentSessionId) {
253
+ const now = Date.now();
254
+ this.storage.completeRun(this.currentSessionId, 'success');
255
+ this.appendLog({
256
+ timestamp: now,
257
+ agentName: this.agentName,
258
+ agentType: this.agentType,
259
+ sessionId: this.currentSessionId,
260
+ type: 'session_end',
261
+ });
262
+ this.currentSessionId = null;
263
+ this.sessionStartTime = 0;
264
+ }
265
+ }
266
+ getSessionStats() {
267
+ if (!this.currentSessionId) {
268
+ return { sessionId: '', actions: 0, duration: 0, tokens: 0, cost: 0 };
269
+ }
270
+ const run = this.storage.getRun(this.currentSessionId);
271
+ const traces = this.storage.getTraces({ runId: this.currentSessionId });
272
+ const duration = Date.now() - (this.sessionStartTime || (run?.startedAt ?? Date.now()));
273
+ return {
274
+ sessionId: this.currentSessionId,
275
+ actions: traces.length,
276
+ duration: Math.max(0, Math.floor(duration / 1000)), // seconds
277
+ tokens: run?.totalTokens?.totalTokens ?? 0,
278
+ cost: run?.totalCostUsd ?? 0,
279
+ };
280
+ }
281
+ /**
282
+ * Close underlying storage (for cleanup in tests / long running)
283
+ */
284
+ close() {
285
+ this.storage.close();
286
+ }
287
+ }
288
+ //# sourceMappingURL=self-track.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-track.js","sourceRoot":"","sources":["../src/self-track.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * AgentTrace -- SQLite Storage Layer
3
+ * Local storage for agent traces with zero cloud dependency
4
+ */
5
+ import { Trace, Run, TraceFilter, TraceStats, TokenUsage, CostBreakdown, AlertHistory, TraceTreeNode, AgentUsageRecord, AgentUsageFilter, UsageStats, AgentWho, AgentSession, WebhookConfig, Project } from './types.js';
6
+ export declare class TraceStorage {
7
+ private db;
8
+ private dbPath;
9
+ private _droppedTraces;
10
+ private tenantId;
11
+ private static _connections;
12
+ constructor(dbPath?: string, tenantId?: string);
13
+ private initSchema;
14
+ createRun(run: Partial<Run> & {
15
+ id: string;
16
+ name: string;
17
+ startedAt: number;
18
+ }): Run;
19
+ getRun(id: string): Run | null;
20
+ getRuns(limit?: number): Run[];
21
+ completeRun(id: string, status: Run['status']): void;
22
+ updateRunStats(runId: string, tokens: TokenUsage, toolCalls: number, latencyMs: number, costUsd: number): void;
23
+ createTrace(trace: Omit<Trace, 'createdAt' | 'updatedAt'>): Trace;
24
+ getTrace(id: string): Trace | null;
25
+ getTraces(filter?: TraceFilter): Trace[];
26
+ createScore(id: string, traceId: string, name: string, value: number): void;
27
+ getScores(traceId?: string): Array<{
28
+ id: string;
29
+ traceId: string;
30
+ name: string;
31
+ value: number;
32
+ createdAt: number;
33
+ }>;
34
+ saveAlert(name: string, config: Record<string, unknown>): void;
35
+ getStoredAlerts(): Array<{
36
+ name: string;
37
+ config: {
38
+ webhook?: string;
39
+ email?: string;
40
+ cooldown: number;
41
+ lastTriggered?: number;
42
+ };
43
+ createdAt: number;
44
+ }>;
45
+ insertAlertHistory(entry: AlertHistory): void;
46
+ getAlertHistory(): AlertHistory[];
47
+ setTraceParent(traceId: string, parentId: string): void;
48
+ getTraceParentId(traceId: string): string | null;
49
+ getChildTraceIds(parentId: string): string[];
50
+ getLinkedTraceIds(traceId: string): string[];
51
+ linkTraces(traceIds: string[]): void;
52
+ getTraceTree(traceId: string): TraceTreeNode;
53
+ recordAgentUsage(params: AgentUsageRecord): void;
54
+ getAgentUsage(filter?: AgentUsageFilter, tenantId?: string): AgentUsageRecord[];
55
+ getUsageStats(agentName?: string, fromDate?: number, toDate?: number, tenantId?: string): UsageStats;
56
+ getActiveAgents(): {
57
+ agentName: string;
58
+ lastActive: string;
59
+ totalActions: number;
60
+ }[];
61
+ getAgentWho(filter?: {
62
+ activeOnly?: boolean;
63
+ agentType?: string;
64
+ limit?: number;
65
+ }): AgentWho[];
66
+ getAgentSessions(filter?: {
67
+ agentName?: string;
68
+ activeOnly?: boolean;
69
+ limit?: number;
70
+ }): AgentSession[];
71
+ getAgentCostSummary(filter?: {
72
+ agentName?: string;
73
+ fromDate?: number;
74
+ toDate?: number;
75
+ }): {
76
+ totalCostUsd: number;
77
+ costByAgent: Record<string, number>;
78
+ costByModel: Record<string, number>;
79
+ };
80
+ getStats(tenantId?: string): TraceStats;
81
+ getCostBreakdown(runId?: string, tenantId?: string): CostBreakdown;
82
+ cleanup(maxTraces?: number): number;
83
+ cleanupOldTraces(before: number): number;
84
+ cleanupOldRuns(before: number): number;
85
+ cleanupOldAgentUsage(before: number): number;
86
+ getSetting(key: string): string | null;
87
+ setSetting(key: string, value: string): void;
88
+ getRetentionPolicy(): {
89
+ retentionDays: number;
90
+ cleanupIntervalHours: number;
91
+ };
92
+ setRetentionPolicy(retentionDays: number, cleanupIntervalHours?: number): void;
93
+ getHealthInfo(): {
94
+ dbPath: string;
95
+ traceCount: number;
96
+ dbSize: number;
97
+ integrity: {
98
+ tablesExist: boolean;
99
+ noOrphans: boolean;
100
+ details?: string;
101
+ };
102
+ };
103
+ private getDbSize;
104
+ private checkIntegrity;
105
+ private rowToRun;
106
+ private safeJsonParse;
107
+ private rowToTrace;
108
+ private rowToAgentUsage;
109
+ registerWebhook(url: string, events: string[], secret?: string): string;
110
+ getWebhooks(): WebhookConfig[];
111
+ deleteWebhook(id: string): void;
112
+ updateWebhookLastTriggered(id: string): void;
113
+ incrementWebhookFailures(id: string): void;
114
+ resetWebhookFailures(id: string): void;
115
+ getEnabledWebhooksForEvent(event: string): WebhookConfig[];
116
+ createApiKey(name: string, permissions?: string[], key?: string): {
117
+ id: string;
118
+ name: string;
119
+ key: string;
120
+ preview: string;
121
+ createdAt: number;
122
+ };
123
+ getApiKeys(): {
124
+ id: string;
125
+ name: string;
126
+ createdAt: number;
127
+ lastUsedAt: number | null;
128
+ enabled: boolean;
129
+ }[];
130
+ validateApiKey(key: string): {
131
+ valid: boolean;
132
+ permissions: string[];
133
+ };
134
+ revokeApiKey(id: string): void;
135
+ getStorageStats(): {
136
+ totalSizeBytes: number;
137
+ traceCount: number;
138
+ runCount: number;
139
+ oldestTrace: number | null;
140
+ newestTrace: number | null;
141
+ };
142
+ createProject(name: string): Project;
143
+ getProject(apiKey: string): Project | null;
144
+ getProjectById(id: string): Project | null;
145
+ listProjects(): Project[];
146
+ deleteProject(id: string): boolean;
147
+ close(): void;
148
+ }
149
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}