@agentlensai/server 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/__tests__/agents-stats.test.d.ts +5 -0
- package/dist/__tests__/agents-stats.test.d.ts.map +1 -0
- package/dist/__tests__/agents-stats.test.js +134 -0
- package/dist/__tests__/agents-stats.test.js.map +1 -0
- package/dist/__tests__/api-keys.test.d.ts +5 -0
- package/dist/__tests__/api-keys.test.d.ts.map +1 -0
- package/dist/__tests__/api-keys.test.js +118 -0
- package/dist/__tests__/api-keys.test.js.map +1 -0
- package/dist/__tests__/auth-no-db.test.d.ts +2 -0
- package/dist/__tests__/auth-no-db.test.d.ts.map +1 -0
- package/dist/__tests__/auth-no-db.test.js +43 -0
- package/dist/__tests__/auth-no-db.test.js.map +1 -0
- package/dist/__tests__/auth.test.d.ts +5 -0
- package/dist/__tests__/auth.test.d.ts.map +1 -0
- package/dist/__tests__/auth.test.js +86 -0
- package/dist/__tests__/auth.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +37 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/events-ingest.test.d.ts +5 -0
- package/dist/__tests__/events-ingest.test.d.ts.map +1 -0
- package/dist/__tests__/events-ingest.test.js +248 -0
- package/dist/__tests__/events-ingest.test.js.map +1 -0
- package/dist/__tests__/events-query.test.d.ts +5 -0
- package/dist/__tests__/events-query.test.d.ts.map +1 -0
- package/dist/__tests__/events-query.test.js +205 -0
- package/dist/__tests__/events-query.test.js.map +1 -0
- package/dist/__tests__/health.test.d.ts +5 -0
- package/dist/__tests__/health.test.d.ts.map +1 -0
- package/dist/__tests__/health.test.js +40 -0
- package/dist/__tests__/health.test.js.map +1 -0
- package/dist/__tests__/sessions.test.d.ts +5 -0
- package/dist/__tests__/sessions.test.d.ts.map +1 -0
- package/dist/__tests__/sessions.test.js +176 -0
- package/dist/__tests__/sessions.test.js.map +1 -0
- package/dist/__tests__/test-helpers.d.ts +24 -0
- package/dist/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/__tests__/test-helpers.js +45 -0
- package/dist/__tests__/test-helpers.js.map +1 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +20 -0
- package/dist/config.js.map +1 -0
- package/dist/db/__tests__/init.test.d.ts +2 -0
- package/dist/db/__tests__/init.test.d.ts.map +1 -0
- package/dist/db/__tests__/init.test.js +73 -0
- package/dist/db/__tests__/init.test.js.map +1 -0
- package/dist/db/__tests__/sqlite-store-read.test.d.ts +2 -0
- package/dist/db/__tests__/sqlite-store-read.test.d.ts.map +1 -0
- package/dist/db/__tests__/sqlite-store-read.test.js +749 -0
- package/dist/db/__tests__/sqlite-store-read.test.js.map +1 -0
- package/dist/db/__tests__/sqlite-store-write.test.d.ts +2 -0
- package/dist/db/__tests__/sqlite-store-write.test.d.ts.map +1 -0
- package/dist/db/__tests__/sqlite-store-write.test.js +418 -0
- package/dist/db/__tests__/sqlite-store-write.test.js.map +1 -0
- package/dist/db/errors.d.ts +16 -0
- package/dist/db/errors.d.ts.map +1 -0
- package/dist/db/errors.js +22 -0
- package/dist/db/errors.js.map +1 -0
- package/dist/db/index.d.ts +33 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +44 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate.d.ts +26 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +128 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/schema.sqlite.d.ts +1009 -0
- package/dist/db/schema.sqlite.d.ts.map +1 -0
- package/dist/db/schema.sqlite.js +96 -0
- package/dist/db/schema.sqlite.js.map +1 -0
- package/dist/db/sqlite-store.d.ts +68 -0
- package/dist/db/sqlite-store.d.ts.map +1 -0
- package/dist/db/sqlite-store.js +753 -0
- package/dist/db/sqlite-store.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/__tests__/retention.test.d.ts +2 -0
- package/dist/lib/__tests__/retention.test.d.ts.map +1 -0
- package/dist/lib/__tests__/retention.test.js +238 -0
- package/dist/lib/__tests__/retention.test.js.map +1 -0
- package/dist/lib/retention.d.ts +31 -0
- package/dist/lib/retention.d.ts.map +1 -0
- package/dist/lib/retention.js +47 -0
- package/dist/lib/retention.js.map +1 -0
- package/dist/middleware/auth.d.ts +37 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +78 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/routes/agents.d.ts +13 -0
- package/dist/routes/agents.d.ts.map +1 -0
- package/dist/routes/agents.js +34 -0
- package/dist/routes/agents.js.map +1 -0
- package/dist/routes/api-keys.d.ts +14 -0
- package/dist/routes/api-keys.d.ts.map +1 -0
- package/dist/routes/api-keys.js +81 -0
- package/dist/routes/api-keys.js.map +1 -0
- package/dist/routes/config.d.ts +39 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +97 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/events.d.ts +14 -0
- package/dist/routes/events.d.ts.map +1 -0
- package/dist/routes/events.js +164 -0
- package/dist/routes/events.js.map +1 -0
- package/dist/routes/sessions.d.ts +14 -0
- package/dist/routes/sessions.d.ts.map +1 -0
- package/dist/routes/sessions.js +72 -0
- package/dist/routes/sessions.js.map +1 -0
- package/dist/routes/stats.d.ts +12 -0
- package/dist/routes/stats.d.ts.map +1 -0
- package/dist/routes/stats.js +16 -0
- package/dist/routes/stats.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.sqlite.d.ts","sourceRoot":"","sources":["../../src/db/schema.sqlite.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBlB,CAAC;AAGF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBpB,CAAC;AAGF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOjB,CAAC;AAGH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWrB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AAGF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAanB,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite schema for AgentLens — defined with Drizzle ORM.
|
|
3
|
+
*
|
|
4
|
+
* Tables: events, sessions, agents, alertRules, alertHistory, apiKeys
|
|
5
|
+
* All indexes per Architecture §6.2.
|
|
6
|
+
*/
|
|
7
|
+
import { sqliteTable, text, integer, real, index } from 'drizzle-orm/sqlite-core';
|
|
8
|
+
// ─── Events Table ──────────────────────────────────────────
|
|
9
|
+
export const events = sqliteTable('events', {
|
|
10
|
+
id: text('id').primaryKey(), // ULID
|
|
11
|
+
timestamp: text('timestamp').notNull(), // ISO 8601
|
|
12
|
+
sessionId: text('session_id').notNull(),
|
|
13
|
+
agentId: text('agent_id').notNull(),
|
|
14
|
+
eventType: text('event_type').notNull(),
|
|
15
|
+
severity: text('severity').notNull().default('info'),
|
|
16
|
+
payload: text('payload').notNull(), // JSON
|
|
17
|
+
metadata: text('metadata').notNull().default('{}'), // JSON
|
|
18
|
+
prevHash: text('prev_hash'),
|
|
19
|
+
hash: text('hash').notNull(),
|
|
20
|
+
}, (table) => [
|
|
21
|
+
index('idx_events_timestamp').on(table.timestamp),
|
|
22
|
+
index('idx_events_session_id').on(table.sessionId),
|
|
23
|
+
index('idx_events_agent_id').on(table.agentId),
|
|
24
|
+
index('idx_events_type').on(table.eventType),
|
|
25
|
+
index('idx_events_session_ts').on(table.sessionId, table.timestamp),
|
|
26
|
+
// Composite index for dashboard query: "recent events for agent X of type Y"
|
|
27
|
+
index('idx_events_agent_type_ts').on(table.agentId, table.eventType, table.timestamp),
|
|
28
|
+
]);
|
|
29
|
+
// ─── Sessions Table (materialized) ────────────────────────
|
|
30
|
+
export const sessions = sqliteTable('sessions', {
|
|
31
|
+
id: text('id').primaryKey(),
|
|
32
|
+
agentId: text('agent_id').notNull(),
|
|
33
|
+
agentName: text('agent_name'),
|
|
34
|
+
startedAt: text('started_at').notNull(), // ISO 8601
|
|
35
|
+
endedAt: text('ended_at'),
|
|
36
|
+
status: text('status', {
|
|
37
|
+
enum: ['active', 'completed', 'error'],
|
|
38
|
+
})
|
|
39
|
+
.notNull()
|
|
40
|
+
.default('active'),
|
|
41
|
+
eventCount: integer('event_count').notNull().default(0),
|
|
42
|
+
toolCallCount: integer('tool_call_count').notNull().default(0),
|
|
43
|
+
errorCount: integer('error_count').notNull().default(0),
|
|
44
|
+
totalCostUsd: real('total_cost_usd').notNull().default(0),
|
|
45
|
+
tags: text('tags').notNull().default('[]'), // JSON array
|
|
46
|
+
}, (table) => [
|
|
47
|
+
index('idx_sessions_agent_id').on(table.agentId),
|
|
48
|
+
index('idx_sessions_started_at').on(table.startedAt),
|
|
49
|
+
index('idx_sessions_status').on(table.status),
|
|
50
|
+
]);
|
|
51
|
+
// ─── Agents Table (materialized) ──────────────────────────
|
|
52
|
+
export const agents = sqliteTable('agents', {
|
|
53
|
+
id: text('id').primaryKey(),
|
|
54
|
+
name: text('name').notNull(),
|
|
55
|
+
description: text('description'),
|
|
56
|
+
firstSeenAt: text('first_seen_at').notNull(),
|
|
57
|
+
lastSeenAt: text('last_seen_at').notNull(),
|
|
58
|
+
sessionCount: integer('session_count').notNull().default(0),
|
|
59
|
+
});
|
|
60
|
+
// ─── Alert Rules Table ────────────────────────────────────
|
|
61
|
+
export const alertRules = sqliteTable('alert_rules', {
|
|
62
|
+
id: text('id').primaryKey(),
|
|
63
|
+
name: text('name').notNull(),
|
|
64
|
+
enabled: integer('enabled', { mode: 'boolean' }).notNull().default(true),
|
|
65
|
+
condition: text('condition').notNull(),
|
|
66
|
+
threshold: real('threshold').notNull(),
|
|
67
|
+
windowMinutes: integer('window_minutes').notNull(),
|
|
68
|
+
scope: text('scope').notNull().default('{}'), // JSON
|
|
69
|
+
notifyChannels: text('notify_channels').notNull().default('[]'), // JSON
|
|
70
|
+
createdAt: text('created_at').notNull(),
|
|
71
|
+
updatedAt: text('updated_at').notNull(),
|
|
72
|
+
});
|
|
73
|
+
// ─── Alert History ────────────────────────────────────────
|
|
74
|
+
export const alertHistory = sqliteTable('alert_history', {
|
|
75
|
+
id: text('id').primaryKey(),
|
|
76
|
+
ruleId: text('rule_id')
|
|
77
|
+
.notNull()
|
|
78
|
+
.references(() => alertRules.id),
|
|
79
|
+
triggeredAt: text('triggered_at').notNull(),
|
|
80
|
+
resolvedAt: text('resolved_at'),
|
|
81
|
+
currentValue: real('current_value').notNull(),
|
|
82
|
+
threshold: real('threshold').notNull(),
|
|
83
|
+
message: text('message').notNull(),
|
|
84
|
+
}, (table) => [index('idx_alert_history_rule_id').on(table.ruleId)]);
|
|
85
|
+
// ─── API Keys ─────────────────────────────────────────────
|
|
86
|
+
export const apiKeys = sqliteTable('api_keys', {
|
|
87
|
+
id: text('id').primaryKey(),
|
|
88
|
+
keyHash: text('key_hash').notNull(),
|
|
89
|
+
name: text('name').notNull(),
|
|
90
|
+
scopes: text('scopes').notNull(), // JSON array
|
|
91
|
+
createdAt: integer('created_at').notNull(), // unix timestamp
|
|
92
|
+
lastUsedAt: integer('last_used_at'),
|
|
93
|
+
revokedAt: integer('revoked_at'),
|
|
94
|
+
rateLimit: integer('rate_limit'),
|
|
95
|
+
}, (table) => [index('idx_api_keys_hash').on(table.keyHash)]);
|
|
96
|
+
//# sourceMappingURL=schema.sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.sqlite.js","sourceRoot":"","sources":["../../src/db/schema.sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite implementation of IEventStore.
|
|
3
|
+
*
|
|
4
|
+
* Write operations (Story 3.4):
|
|
5
|
+
* - insertEvents() — batch insert in single transaction
|
|
6
|
+
* - Auto-create/update session records on event insert
|
|
7
|
+
* - Auto-create agent records on first event
|
|
8
|
+
* - Session status management
|
|
9
|
+
*
|
|
10
|
+
* Read operations (Story 3.5):
|
|
11
|
+
* - queryEvents(), getEvent(), getSessionTimeline(), countEvents()
|
|
12
|
+
* - querySessions(), getSession()
|
|
13
|
+
* - listAgents(), getAgent()
|
|
14
|
+
* - getAnalytics(), getStats()
|
|
15
|
+
*/
|
|
16
|
+
import type { AgentLensEvent, EventQuery, EventQueryResult, Session, SessionQuery, Agent, AlertRule } from '@agentlens/core';
|
|
17
|
+
import type { IEventStore, AnalyticsResult, StorageStats } from '@agentlens/core';
|
|
18
|
+
import type { SqliteDb } from './index.js';
|
|
19
|
+
/**
|
|
20
|
+
* Safe JSON.parse that returns a fallback on any error instead of throwing.
|
|
21
|
+
*/
|
|
22
|
+
export declare function safeJsonParse<T>(raw: string, fallback: T): T;
|
|
23
|
+
export declare class SqliteEventStore implements IEventStore {
|
|
24
|
+
private db;
|
|
25
|
+
constructor(db: SqliteDb);
|
|
26
|
+
insertEvents(eventList: AgentLensEvent[]): Promise<void>;
|
|
27
|
+
private _handleSessionUpdate;
|
|
28
|
+
private _handleAgentUpsert;
|
|
29
|
+
upsertSession(session: Partial<Session> & {
|
|
30
|
+
id: string;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
upsertAgent(agent: Partial<Agent> & {
|
|
33
|
+
id: string;
|
|
34
|
+
}): Promise<void>;
|
|
35
|
+
queryEvents(query: EventQuery): Promise<EventQueryResult>;
|
|
36
|
+
getEvent(id: string): Promise<AgentLensEvent | null>;
|
|
37
|
+
getSessionTimeline(sessionId: string): Promise<AgentLensEvent[]>;
|
|
38
|
+
countEvents(query: Omit<EventQuery, 'limit' | 'offset'>): Promise<number>;
|
|
39
|
+
querySessions(query: SessionQuery): Promise<{
|
|
40
|
+
sessions: Session[];
|
|
41
|
+
total: number;
|
|
42
|
+
}>;
|
|
43
|
+
getSession(id: string): Promise<Session | null>;
|
|
44
|
+
listAgents(): Promise<Agent[]>;
|
|
45
|
+
getAgent(id: string): Promise<Agent | null>;
|
|
46
|
+
getAnalytics(params: {
|
|
47
|
+
from: string;
|
|
48
|
+
to: string;
|
|
49
|
+
agentId?: string;
|
|
50
|
+
granularity: 'hour' | 'day' | 'week';
|
|
51
|
+
}): Promise<AnalyticsResult>;
|
|
52
|
+
createAlertRule(rule: AlertRule): Promise<void>;
|
|
53
|
+
updateAlertRule(id: string, updates: Partial<AlertRule>): Promise<void>;
|
|
54
|
+
deleteAlertRule(id: string): Promise<void>;
|
|
55
|
+
listAlertRules(): Promise<AlertRule[]>;
|
|
56
|
+
getAlertRule(id: string): Promise<AlertRule | null>;
|
|
57
|
+
applyRetention(olderThan: string): Promise<{
|
|
58
|
+
deletedCount: number;
|
|
59
|
+
}>;
|
|
60
|
+
getStats(): Promise<StorageStats>;
|
|
61
|
+
private _buildEventConditions;
|
|
62
|
+
private _buildSessionConditions;
|
|
63
|
+
private _mapEventRow;
|
|
64
|
+
private _mapSessionRow;
|
|
65
|
+
private _mapAgentRow;
|
|
66
|
+
private _mapAlertRuleRow;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=sqlite-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-store.d.ts","sourceRoot":"","sources":["../../src/db/sqlite-store.ts"],"names":[],"mappings":"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"}
|