proofscan 0.2.0 → 0.3.1
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/README.md +205 -281
- package/dist/analyzers/IAnalyzer.d.ts +87 -0
- package/dist/analyzers/IAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/IAnalyzer.js +48 -0
- package/dist/analyzers/IAnalyzer.js.map +1 -0
- package/dist/analyzers/NoopAnalyzer.d.ts +24 -0
- package/dist/analyzers/NoopAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/NoopAnalyzer.js +50 -0
- package/dist/analyzers/NoopAnalyzer.js.map +1 -0
- package/dist/analyzers/index.d.ts +13 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +23 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/cli.d.ts +15 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +131 -9
- package/dist/cli.js.map +1 -1
- package/dist/commands/events.d.ts +7 -0
- package/dist/commands/events.d.ts.map +1 -0
- package/dist/commands/events.js +185 -0
- package/dist/commands/events.js.map +1 -0
- package/dist/commands/explore.d.ts +9 -0
- package/dist/commands/explore.d.ts.map +1 -0
- package/dist/commands/explore.js +345 -0
- package/dist/commands/explore.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/monitor.d.ts +1 -0
- package/dist/commands/monitor.d.ts.map +1 -1
- package/dist/commands/monitor.js +70 -12
- package/dist/commands/monitor.js.map +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +12 -7
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +108 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tree.d.ts +7 -0
- package/dist/commands/tree.d.ts.map +1 -0
- package/dist/commands/tree.js +184 -0
- package/dist/commands/tree.js.map +1 -0
- package/dist/commands/view.d.ts +9 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +210 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +45 -4
- package/dist/db/connection.js.map +1 -1
- package/dist/db/events-store.d.ts +3 -0
- package/dist/db/events-store.d.ts.map +1 -1
- package/dist/db/events-store.js +6 -3
- package/dist/db/events-store.js.map +1 -1
- package/dist/db/schema.d.ts +8 -2
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +29 -3
- package/dist/db/schema.js.map +1 -1
- package/dist/db/types.d.ts +3 -0
- package/dist/db/types.d.ts.map +1 -1
- package/dist/eventline/index.d.ts +8 -0
- package/dist/eventline/index.d.ts.map +1 -0
- package/dist/eventline/index.js +8 -0
- package/dist/eventline/index.js.map +1 -0
- package/dist/eventline/normalizer.d.ts +79 -0
- package/dist/eventline/normalizer.d.ts.map +1 -0
- package/dist/eventline/normalizer.js +418 -0
- package/dist/eventline/normalizer.js.map +1 -0
- package/dist/eventline/schema-discovery.d.ts +79 -0
- package/dist/eventline/schema-discovery.d.ts.map +1 -0
- package/dist/eventline/schema-discovery.js +154 -0
- package/dist/eventline/schema-discovery.js.map +1 -0
- package/dist/eventline/store.d.ts +88 -0
- package/dist/eventline/store.d.ts.map +1 -0
- package/dist/eventline/store.js +358 -0
- package/dist/eventline/store.js.map +1 -0
- package/dist/eventline/types.d.ts +112 -0
- package/dist/eventline/types.d.ts.map +1 -0
- package/dist/eventline/types.js +67 -0
- package/dist/eventline/types.js.map +1 -0
- package/dist/protocols/A2aAdapter.d.ts +39 -0
- package/dist/protocols/A2aAdapter.d.ts.map +1 -0
- package/dist/protocols/A2aAdapter.js +48 -0
- package/dist/protocols/A2aAdapter.js.map +1 -0
- package/dist/protocols/IProtocolAdapter.d.ts +106 -0
- package/dist/protocols/IProtocolAdapter.d.ts.map +1 -0
- package/dist/protocols/IProtocolAdapter.js +57 -0
- package/dist/protocols/IProtocolAdapter.js.map +1 -0
- package/dist/protocols/McpAdapter.d.ts +23 -0
- package/dist/protocols/McpAdapter.d.ts.map +1 -0
- package/dist/protocols/McpAdapter.js +162 -0
- package/dist/protocols/McpAdapter.js.map +1 -0
- package/dist/protocols/index.d.ts +14 -0
- package/dist/protocols/index.d.ts.map +1 -0
- package/dist/protocols/index.js +24 -0
- package/dist/protocols/index.js.map +1 -0
- package/dist/scanner/index.d.ts +1 -0
- package/dist/scanner/index.d.ts.map +1 -1
- package/dist/scanner/index.js +97 -60
- package/dist/scanner/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-discovery.js","sourceRoot":"","sources":["../../src/eventline/schema-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventLine Store - unified data access layer
|
|
3
|
+
*
|
|
4
|
+
* This provides a higher-level API for fetching EventLine data,
|
|
5
|
+
* abstracting away the underlying database structure.
|
|
6
|
+
*/
|
|
7
|
+
import type { EventLine, TreeNode } from './types.js';
|
|
8
|
+
import type { Event, SessionWithStats, RpcCall, Proof } from '../db/types.js';
|
|
9
|
+
import { type SchemaInfo } from './schema-discovery.js';
|
|
10
|
+
export interface ViewOptions {
|
|
11
|
+
limit?: number;
|
|
12
|
+
since?: string | number;
|
|
13
|
+
errors?: boolean;
|
|
14
|
+
method?: string;
|
|
15
|
+
connector?: string;
|
|
16
|
+
session?: string;
|
|
17
|
+
includeSessionEvents?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface TreeOptions {
|
|
20
|
+
sessions?: number;
|
|
21
|
+
rpc?: number;
|
|
22
|
+
session?: string;
|
|
23
|
+
rpcAll?: boolean;
|
|
24
|
+
method?: string;
|
|
25
|
+
status?: 'ok' | 'err' | 'all';
|
|
26
|
+
compact?: boolean;
|
|
27
|
+
idsOnly?: boolean;
|
|
28
|
+
since?: string | number;
|
|
29
|
+
}
|
|
30
|
+
export declare class EventLineStore {
|
|
31
|
+
private eventsStore;
|
|
32
|
+
private proofsStore;
|
|
33
|
+
private configDir;
|
|
34
|
+
private schemaInfo?;
|
|
35
|
+
constructor(configDir: string);
|
|
36
|
+
/**
|
|
37
|
+
* Discover and cache schema info
|
|
38
|
+
*/
|
|
39
|
+
getSchema(): SchemaInfo;
|
|
40
|
+
/**
|
|
41
|
+
* Parse "since" parameter to epoch ms
|
|
42
|
+
*/
|
|
43
|
+
private parseSince;
|
|
44
|
+
/**
|
|
45
|
+
* Get recent events as EventLines (for view command)
|
|
46
|
+
*/
|
|
47
|
+
getRecentEvents(options?: ViewOptions): EventLine[];
|
|
48
|
+
/**
|
|
49
|
+
* Build tree structure for connector → session → rpc
|
|
50
|
+
*/
|
|
51
|
+
buildTree(options?: TreeOptions): TreeNode[];
|
|
52
|
+
/**
|
|
53
|
+
* Get all connectors
|
|
54
|
+
*/
|
|
55
|
+
getConnectors(): Array<{
|
|
56
|
+
id: string;
|
|
57
|
+
session_count: number;
|
|
58
|
+
latest_session?: string;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Get sessions for a connector
|
|
62
|
+
*/
|
|
63
|
+
getSessions(connectorId?: string, limit?: number): SessionWithStats[];
|
|
64
|
+
/**
|
|
65
|
+
* Get RPC calls for a session
|
|
66
|
+
*/
|
|
67
|
+
getRpcCalls(sessionId: string): RpcCall[];
|
|
68
|
+
/**
|
|
69
|
+
* Get events for a session
|
|
70
|
+
*/
|
|
71
|
+
getSessionEvents(sessionId: string, limit?: number): EventLine[];
|
|
72
|
+
/**
|
|
73
|
+
* Get raw event details
|
|
74
|
+
*/
|
|
75
|
+
getRawEvent(sessionId: string, rpcId: string): {
|
|
76
|
+
request?: Event;
|
|
77
|
+
response?: Event;
|
|
78
|
+
} | null;
|
|
79
|
+
/**
|
|
80
|
+
* Get proofs for a session
|
|
81
|
+
*/
|
|
82
|
+
getProofs(sessionId: string): Proof[];
|
|
83
|
+
/**
|
|
84
|
+
* Get session by ID (supports partial match)
|
|
85
|
+
*/
|
|
86
|
+
findSession(partialId: string): SessionWithStats | null;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/eventline/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAW,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAa;gBAEpB,SAAS,EAAE,MAAM;IAM7B;;OAEG;IACH,SAAS,IAAI,UAAU;IAQvB;;OAEG;IACH,OAAO,CAAC,UAAU;IAwBlB;;OAEG;IACH,eAAe,CAAC,OAAO,GAAE,WAAgB,GAAG,SAAS,EAAE;IA2GvD;;OAEG;IACH,SAAS,CAAC,OAAO,GAAE,WAAgB,GAAG,QAAQ,EAAE;IA2JhD;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAetF;;OAEG;IACH,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAOrE;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAIzC;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE;IAkBhE;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI;IAW3F;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE;IAIrC;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;CAMxD"}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventLine Store - unified data access layer
|
|
3
|
+
*
|
|
4
|
+
* This provides a higher-level API for fetching EventLine data,
|
|
5
|
+
* abstracting away the underlying database structure.
|
|
6
|
+
*/
|
|
7
|
+
import { EventsStore } from '../db/events-store.js';
|
|
8
|
+
import { ProofsStore } from '../db/proofs-store.js';
|
|
9
|
+
import { getEventsDb } from '../db/connection.js';
|
|
10
|
+
import { normalizeEvent, createSessionStartEvent, createSessionEndEvent, parseTimestamp, } from './normalizer.js';
|
|
11
|
+
import { discoverSchema } from './schema-discovery.js';
|
|
12
|
+
export class EventLineStore {
|
|
13
|
+
eventsStore;
|
|
14
|
+
proofsStore;
|
|
15
|
+
configDir;
|
|
16
|
+
schemaInfo;
|
|
17
|
+
constructor(configDir) {
|
|
18
|
+
this.configDir = configDir;
|
|
19
|
+
this.eventsStore = new EventsStore(configDir);
|
|
20
|
+
this.proofsStore = new ProofsStore(configDir);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Discover and cache schema info
|
|
24
|
+
*/
|
|
25
|
+
getSchema() {
|
|
26
|
+
if (!this.schemaInfo) {
|
|
27
|
+
const db = getEventsDb(this.configDir);
|
|
28
|
+
this.schemaInfo = discoverSchema(db);
|
|
29
|
+
}
|
|
30
|
+
return this.schemaInfo;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse "since" parameter to epoch ms
|
|
34
|
+
*/
|
|
35
|
+
parseSince(since) {
|
|
36
|
+
if (!since)
|
|
37
|
+
return undefined;
|
|
38
|
+
if (typeof since === 'number')
|
|
39
|
+
return since;
|
|
40
|
+
// Relative time: 24h, 7d, 1w
|
|
41
|
+
const relMatch = since.match(/^(\d+)(h|d|w|m)$/);
|
|
42
|
+
if (relMatch) {
|
|
43
|
+
const [, num, unit] = relMatch;
|
|
44
|
+
const n = parseInt(num, 10);
|
|
45
|
+
const now = Date.now();
|
|
46
|
+
switch (unit) {
|
|
47
|
+
case 'h': return now - n * 60 * 60 * 1000;
|
|
48
|
+
case 'd': return now - n * 24 * 60 * 60 * 1000;
|
|
49
|
+
case 'w': return now - n * 7 * 24 * 60 * 60 * 1000;
|
|
50
|
+
case 'm': return now - n * 30 * 24 * 60 * 60 * 1000;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// ISO date
|
|
54
|
+
const date = new Date(since);
|
|
55
|
+
return isNaN(date.getTime()) ? undefined : date.getTime();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get recent events as EventLines (for view command)
|
|
59
|
+
*/
|
|
60
|
+
getRecentEvents(options = {}) {
|
|
61
|
+
const limit = options.limit || 20;
|
|
62
|
+
const sinceMs = this.parseSince(options.since);
|
|
63
|
+
// Get sessions and RPC calls for context
|
|
64
|
+
const sessionsMap = new Map();
|
|
65
|
+
const rpcCallsMap = new Map();
|
|
66
|
+
// Get sessions
|
|
67
|
+
let sessions;
|
|
68
|
+
if (options.connector) {
|
|
69
|
+
sessions = this.eventsStore.getSessionsByConnector(options.connector, 100);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
sessions = this.eventsStore.getAllSessions(100);
|
|
73
|
+
}
|
|
74
|
+
for (const s of sessions) {
|
|
75
|
+
sessionsMap.set(s.session_id, s);
|
|
76
|
+
}
|
|
77
|
+
// Get events
|
|
78
|
+
const db = getEventsDb(this.configDir);
|
|
79
|
+
let sql = `
|
|
80
|
+
SELECT e.*, s.connector_id
|
|
81
|
+
FROM events e
|
|
82
|
+
JOIN sessions s ON e.session_id = s.session_id
|
|
83
|
+
WHERE 1=1
|
|
84
|
+
`;
|
|
85
|
+
const params = [];
|
|
86
|
+
if (options.connector) {
|
|
87
|
+
sql += ` AND s.connector_id = ?`;
|
|
88
|
+
params.push(options.connector);
|
|
89
|
+
}
|
|
90
|
+
if (options.session) {
|
|
91
|
+
sql += ` AND e.session_id LIKE ?`;
|
|
92
|
+
params.push(options.session + '%');
|
|
93
|
+
}
|
|
94
|
+
if (sinceMs) {
|
|
95
|
+
const sinceIso = new Date(sinceMs).toISOString();
|
|
96
|
+
sql += ` AND e.ts >= ?`;
|
|
97
|
+
params.push(sinceIso);
|
|
98
|
+
}
|
|
99
|
+
sql += ` ORDER BY e.ts DESC LIMIT ?`;
|
|
100
|
+
params.push(limit * 2); // Get more to filter later
|
|
101
|
+
const events = db.prepare(sql).all(...params);
|
|
102
|
+
// Get RPC calls for these events
|
|
103
|
+
const sessionIds = new Set(events.map(e => e.session_id));
|
|
104
|
+
for (const sessionId of sessionIds) {
|
|
105
|
+
const rpcs = this.eventsStore.getRpcCallsBySession(sessionId);
|
|
106
|
+
for (const rpc of rpcs) {
|
|
107
|
+
rpcCallsMap.set(`${sessionId}:${rpc.rpc_id}`, rpc);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Normalize events
|
|
111
|
+
let eventLines = [];
|
|
112
|
+
for (const event of events) {
|
|
113
|
+
const session = sessionsMap.get(event.session_id);
|
|
114
|
+
const rpcCall = event.rpc_id ? rpcCallsMap.get(`${event.session_id}:${event.rpc_id}`) : undefined;
|
|
115
|
+
const line = normalizeEvent(event, session, rpcCall);
|
|
116
|
+
line.connector_id = event.connector_id; // Ensure connector_id is set
|
|
117
|
+
eventLines.push(line);
|
|
118
|
+
}
|
|
119
|
+
// Apply filters
|
|
120
|
+
if (options.errors) {
|
|
121
|
+
eventLines = eventLines.filter(e => e.status === 'ERR');
|
|
122
|
+
}
|
|
123
|
+
if (options.method) {
|
|
124
|
+
const pattern = options.method.toLowerCase();
|
|
125
|
+
eventLines = eventLines.filter(e => e.label.toLowerCase().includes(pattern));
|
|
126
|
+
}
|
|
127
|
+
// Add session start/end events if requested
|
|
128
|
+
if (options.includeSessionEvents) {
|
|
129
|
+
const sessionEvents = [];
|
|
130
|
+
for (const session of sessions) {
|
|
131
|
+
if (sinceMs) {
|
|
132
|
+
const startMs = parseTimestamp(session.started_at);
|
|
133
|
+
if (startMs < sinceMs)
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
sessionEvents.push(createSessionStartEvent(session));
|
|
137
|
+
if (session.ended_at) {
|
|
138
|
+
sessionEvents.push(createSessionEndEvent(session));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
eventLines = [...eventLines, ...sessionEvents];
|
|
142
|
+
}
|
|
143
|
+
// Sort by timestamp descending and limit
|
|
144
|
+
eventLines.sort((a, b) => b.ts_ms - a.ts_ms);
|
|
145
|
+
eventLines = eventLines.slice(0, limit);
|
|
146
|
+
// Reverse to chronological order for display
|
|
147
|
+
eventLines.reverse();
|
|
148
|
+
return eventLines;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Build tree structure for connector → session → rpc
|
|
152
|
+
*/
|
|
153
|
+
buildTree(options = {}) {
|
|
154
|
+
const sessionsLimit = options.sessions || 5;
|
|
155
|
+
const rpcLimit = options.rpc || 10;
|
|
156
|
+
const sinceMs = this.parseSince(options.since);
|
|
157
|
+
// Get connectors (from sessions)
|
|
158
|
+
const db = getEventsDb(this.configDir);
|
|
159
|
+
const connectors = db.prepare(`
|
|
160
|
+
SELECT DISTINCT connector_id FROM sessions ORDER BY connector_id
|
|
161
|
+
`).all();
|
|
162
|
+
const tree = [];
|
|
163
|
+
for (const { connector_id } of connectors) {
|
|
164
|
+
// Get sessions for this connector
|
|
165
|
+
let sessionSql = `
|
|
166
|
+
SELECT s.*,
|
|
167
|
+
(SELECT COUNT(*) FROM events WHERE session_id = s.session_id) as event_count,
|
|
168
|
+
(SELECT COUNT(*) FROM rpc_calls WHERE session_id = s.session_id) as rpc_count
|
|
169
|
+
FROM sessions s
|
|
170
|
+
WHERE s.connector_id = ?
|
|
171
|
+
`;
|
|
172
|
+
const sessionParams = [connector_id];
|
|
173
|
+
if (sinceMs) {
|
|
174
|
+
const sinceIso = new Date(sinceMs).toISOString();
|
|
175
|
+
sessionSql += ` AND s.started_at >= ?`;
|
|
176
|
+
sessionParams.push(sinceIso);
|
|
177
|
+
}
|
|
178
|
+
if (options.session) {
|
|
179
|
+
sessionSql += ` AND s.session_id LIKE ?`;
|
|
180
|
+
sessionParams.push(options.session + '%');
|
|
181
|
+
}
|
|
182
|
+
sessionSql += ` ORDER BY s.started_at DESC LIMIT ?`;
|
|
183
|
+
sessionParams.push(sessionsLimit);
|
|
184
|
+
const sessions = db.prepare(sessionSql).all(...sessionParams);
|
|
185
|
+
if (sessions.length === 0)
|
|
186
|
+
continue;
|
|
187
|
+
// Build connector node
|
|
188
|
+
const connectorNode = {
|
|
189
|
+
type: 'connector',
|
|
190
|
+
id: connector_id,
|
|
191
|
+
label: connector_id,
|
|
192
|
+
meta: {
|
|
193
|
+
session_count: sessions.length,
|
|
194
|
+
},
|
|
195
|
+
children: [],
|
|
196
|
+
};
|
|
197
|
+
for (const session of sessions) {
|
|
198
|
+
// Get RPC calls for this session
|
|
199
|
+
let rpcSql = `
|
|
200
|
+
SELECT * FROM rpc_calls WHERE session_id = ?
|
|
201
|
+
`;
|
|
202
|
+
const rpcParams = [session.session_id];
|
|
203
|
+
if (options.method) {
|
|
204
|
+
rpcSql += ` AND method LIKE ?`;
|
|
205
|
+
rpcParams.push('%' + options.method + '%');
|
|
206
|
+
}
|
|
207
|
+
if (options.status === 'ok') {
|
|
208
|
+
rpcSql += ` AND success = 1`;
|
|
209
|
+
}
|
|
210
|
+
else if (options.status === 'err') {
|
|
211
|
+
rpcSql += ` AND (success = 0 OR success IS NULL)`;
|
|
212
|
+
}
|
|
213
|
+
rpcSql += ` ORDER BY request_ts DESC`;
|
|
214
|
+
if (!options.rpcAll) {
|
|
215
|
+
rpcSql += ` LIMIT ?`;
|
|
216
|
+
rpcParams.push(rpcLimit);
|
|
217
|
+
}
|
|
218
|
+
const rpcs = db.prepare(rpcSql).all(...rpcParams);
|
|
219
|
+
// Calculate session duration
|
|
220
|
+
let durationMs;
|
|
221
|
+
if (session.ended_at) {
|
|
222
|
+
durationMs = parseTimestamp(session.ended_at) - parseTimestamp(session.started_at);
|
|
223
|
+
}
|
|
224
|
+
// Build session node
|
|
225
|
+
const sessionNode = {
|
|
226
|
+
type: 'session',
|
|
227
|
+
id: session.session_id,
|
|
228
|
+
label: options.idsOnly
|
|
229
|
+
? session.session_id.slice(0, 8)
|
|
230
|
+
: `${session.session_id.slice(0, 8)}... (${session.rpc_count || 0} rpcs, ${session.event_count || 0} events)`,
|
|
231
|
+
meta: {
|
|
232
|
+
connector_id: session.connector_id,
|
|
233
|
+
started_at: session.started_at,
|
|
234
|
+
ended_at: session.ended_at,
|
|
235
|
+
exit_reason: session.exit_reason,
|
|
236
|
+
duration_ms: durationMs,
|
|
237
|
+
rpc_count: session.rpc_count,
|
|
238
|
+
event_count: session.event_count,
|
|
239
|
+
},
|
|
240
|
+
children: [],
|
|
241
|
+
};
|
|
242
|
+
// Add RPC nodes
|
|
243
|
+
for (const rpc of rpcs) {
|
|
244
|
+
let latencyMs;
|
|
245
|
+
if (rpc.response_ts) {
|
|
246
|
+
latencyMs = parseTimestamp(rpc.response_ts) - parseTimestamp(rpc.request_ts);
|
|
247
|
+
}
|
|
248
|
+
const statusSymbol = rpc.success === 1 ? '✓' : rpc.success === 0 ? '✗' : '?';
|
|
249
|
+
const rpcNode = {
|
|
250
|
+
type: 'rpc',
|
|
251
|
+
id: rpc.rpc_id,
|
|
252
|
+
label: options.idsOnly
|
|
253
|
+
? `${rpc.method} (${rpc.rpc_id})`
|
|
254
|
+
: `${statusSymbol} ${rpc.method} (id=${rpc.rpc_id}${latencyMs ? `, ${latencyMs}ms` : ''})`,
|
|
255
|
+
meta: {
|
|
256
|
+
method: rpc.method,
|
|
257
|
+
success: rpc.success,
|
|
258
|
+
error_code: rpc.error_code,
|
|
259
|
+
latency_ms: latencyMs,
|
|
260
|
+
request_ts: rpc.request_ts,
|
|
261
|
+
response_ts: rpc.response_ts,
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
sessionNode.children.push(rpcNode);
|
|
265
|
+
}
|
|
266
|
+
// Add proof summary if available
|
|
267
|
+
const proofs = this.proofsStore.getProofsBySession(session.session_id);
|
|
268
|
+
if (proofs.length > 0) {
|
|
269
|
+
sessionNode.children.push({
|
|
270
|
+
type: 'proof',
|
|
271
|
+
id: 'proofs',
|
|
272
|
+
label: `[${proofs.length} proof(s)]`,
|
|
273
|
+
meta: {
|
|
274
|
+
count: proofs.length,
|
|
275
|
+
latest: proofs[0]?.created_at,
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
connectorNode.children.push(sessionNode);
|
|
280
|
+
}
|
|
281
|
+
tree.push(connectorNode);
|
|
282
|
+
}
|
|
283
|
+
return tree;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get all connectors
|
|
287
|
+
*/
|
|
288
|
+
getConnectors() {
|
|
289
|
+
const db = getEventsDb(this.configDir);
|
|
290
|
+
const result = db.prepare(`
|
|
291
|
+
SELECT
|
|
292
|
+
connector_id as id,
|
|
293
|
+
COUNT(*) as session_count,
|
|
294
|
+
MAX(started_at) as latest_session
|
|
295
|
+
FROM sessions
|
|
296
|
+
GROUP BY connector_id
|
|
297
|
+
ORDER BY latest_session DESC
|
|
298
|
+
`).all();
|
|
299
|
+
return result;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Get sessions for a connector
|
|
303
|
+
*/
|
|
304
|
+
getSessions(connectorId, limit) {
|
|
305
|
+
if (connectorId) {
|
|
306
|
+
return this.eventsStore.getSessionsByConnector(connectorId, limit);
|
|
307
|
+
}
|
|
308
|
+
return this.eventsStore.getAllSessions(limit);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Get RPC calls for a session
|
|
312
|
+
*/
|
|
313
|
+
getRpcCalls(sessionId) {
|
|
314
|
+
return this.eventsStore.getRpcCallsBySession(sessionId);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Get events for a session
|
|
318
|
+
*/
|
|
319
|
+
getSessionEvents(sessionId, limit) {
|
|
320
|
+
const events = this.eventsStore.getEventsBySession(sessionId, limit);
|
|
321
|
+
const session = this.eventsStore.getSession(sessionId);
|
|
322
|
+
const rpcs = this.eventsStore.getRpcCallsBySession(sessionId);
|
|
323
|
+
const rpcMap = new Map();
|
|
324
|
+
for (const rpc of rpcs) {
|
|
325
|
+
rpcMap.set(`${sessionId}:${rpc.rpc_id}`, rpc);
|
|
326
|
+
}
|
|
327
|
+
const eventLines = events.map(e => {
|
|
328
|
+
const rpcCall = e.rpc_id ? rpcMap.get(`${sessionId}:${e.rpc_id}`) : undefined;
|
|
329
|
+
return normalizeEvent(e, session || undefined, rpcCall);
|
|
330
|
+
});
|
|
331
|
+
return eventLines;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Get raw event details
|
|
335
|
+
*/
|
|
336
|
+
getRawEvent(sessionId, rpcId) {
|
|
337
|
+
const events = this.eventsStore.getEventsBySession(sessionId);
|
|
338
|
+
const request = events.find(e => e.rpc_id === rpcId && e.kind === 'request');
|
|
339
|
+
const response = events.find(e => e.rpc_id === rpcId && e.kind === 'response');
|
|
340
|
+
if (!request && !response)
|
|
341
|
+
return null;
|
|
342
|
+
return { request, response };
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Get proofs for a session
|
|
346
|
+
*/
|
|
347
|
+
getProofs(sessionId) {
|
|
348
|
+
return this.proofsStore.getProofsBySession(sessionId);
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Get session by ID (supports partial match)
|
|
352
|
+
*/
|
|
353
|
+
findSession(partialId) {
|
|
354
|
+
const sessions = this.eventsStore.getAllSessions();
|
|
355
|
+
return sessions.find(s => s.session_id === partialId || s.session_id.startsWith(partialId)) || null;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/eventline/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventLine - Normalized event model for Phase 2.1
|
|
3
|
+
*
|
|
4
|
+
* This is the canonical internal representation used by view/tree/explore.
|
|
5
|
+
* Direction uses → / ← (MCP Client → MCP Server / MCP Server → MCP Client).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Direction: always from perspective of MCP protocol flow
|
|
9
|
+
* "→" = MCP Client → MCP Server
|
|
10
|
+
* "←" = MCP Server → MCP Client
|
|
11
|
+
*/
|
|
12
|
+
export type EventLineDirection = '→' | '←';
|
|
13
|
+
/**
|
|
14
|
+
* Kind of event - fixed 6 types
|
|
15
|
+
*/
|
|
16
|
+
export type EventLineKind = 'session_start' | 'session_end' | 'req' | 'res' | 'notify' | 'error';
|
|
17
|
+
/**
|
|
18
|
+
* Status of the event
|
|
19
|
+
*/
|
|
20
|
+
export type EventLineStatus = 'OK' | 'ERR' | '-';
|
|
21
|
+
/**
|
|
22
|
+
* Normalized EventLine - the universal internal event format
|
|
23
|
+
* Phase 2.1: Added seq, summary, payload_hash for enhanced observation
|
|
24
|
+
*/
|
|
25
|
+
export interface EventLine {
|
|
26
|
+
/** Timestamp in epoch milliseconds */
|
|
27
|
+
ts_ms: number;
|
|
28
|
+
/** Sequence number within session (monotonic, 1-based) */
|
|
29
|
+
seq?: number;
|
|
30
|
+
/** Event kind */
|
|
31
|
+
kind: EventLineKind;
|
|
32
|
+
/** Direction: → (client→server) or ← (server→client) */
|
|
33
|
+
direction?: EventLineDirection;
|
|
34
|
+
/** Label (method name or "session start"/"session end") */
|
|
35
|
+
label: string;
|
|
36
|
+
/** Human-readable summary (e.g., "tools/list → 5 tools") */
|
|
37
|
+
summary?: string;
|
|
38
|
+
/** Connector ID */
|
|
39
|
+
connector_id?: string;
|
|
40
|
+
/** Connector label (human-readable name) */
|
|
41
|
+
connector_label?: string;
|
|
42
|
+
/** Session ID */
|
|
43
|
+
session_id?: string;
|
|
44
|
+
/** RPC ID (JSON-RPC id field) */
|
|
45
|
+
rpc_id?: string | number;
|
|
46
|
+
/** Status */
|
|
47
|
+
status: EventLineStatus;
|
|
48
|
+
/** Error code if status is ERR */
|
|
49
|
+
error_code?: number | string;
|
|
50
|
+
/** Latency in milliseconds (for responses) */
|
|
51
|
+
latency_ms?: number;
|
|
52
|
+
/** Size in bytes */
|
|
53
|
+
size_bytes?: number;
|
|
54
|
+
/** SHA-256 hash of payload (first 16 chars) for deduplication */
|
|
55
|
+
payload_hash?: string;
|
|
56
|
+
/** Raw JSON string */
|
|
57
|
+
raw_json?: string;
|
|
58
|
+
/** Additional metadata (for unknown columns, etc.) */
|
|
59
|
+
meta?: Record<string, unknown>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* EventLinePair - Request/Response correlation for --pairs option
|
|
63
|
+
*/
|
|
64
|
+
export interface EventLinePair {
|
|
65
|
+
/** RPC ID that links request and response */
|
|
66
|
+
rpc_id: string | number;
|
|
67
|
+
/** Method name */
|
|
68
|
+
method: string;
|
|
69
|
+
/** Request event */
|
|
70
|
+
request: EventLine;
|
|
71
|
+
/** Response event (may be missing if pending) */
|
|
72
|
+
response?: EventLine;
|
|
73
|
+
/** Total latency (response.ts_ms - request.ts_ms) */
|
|
74
|
+
latency_ms?: number;
|
|
75
|
+
/** Success status */
|
|
76
|
+
success: boolean;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* TreeNode for hierarchical display
|
|
80
|
+
*/
|
|
81
|
+
export interface TreeNode {
|
|
82
|
+
type: 'connector' | 'session' | 'rpc' | 'proof' | 'event';
|
|
83
|
+
id: string;
|
|
84
|
+
label: string;
|
|
85
|
+
meta?: Record<string, unknown>;
|
|
86
|
+
children?: TreeNode[];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Kind symbol mapping for display
|
|
90
|
+
*/
|
|
91
|
+
export declare const KIND_SYMBOLS: Record<EventLineKind, string>;
|
|
92
|
+
/**
|
|
93
|
+
* Get display symbol for kind
|
|
94
|
+
*/
|
|
95
|
+
export declare function getKindSymbol(kind: EventLineKind): string;
|
|
96
|
+
/**
|
|
97
|
+
* Format timestamp for display
|
|
98
|
+
*/
|
|
99
|
+
export declare function formatTimestamp(ts_ms: number, fulltime?: boolean): string;
|
|
100
|
+
/**
|
|
101
|
+
* Format duration in human-readable format
|
|
102
|
+
*/
|
|
103
|
+
export declare function formatDuration(ms: number): string;
|
|
104
|
+
/**
|
|
105
|
+
* Format bytes in human-readable format
|
|
106
|
+
*/
|
|
107
|
+
export declare function formatBytes(bytes: number): string;
|
|
108
|
+
/**
|
|
109
|
+
* Shorten UUID for display (first 8 chars + ...)
|
|
110
|
+
*/
|
|
111
|
+
export declare function shortenId(id: string, length?: number): string;
|
|
112
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/eventline/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventLine - Normalized event model for Phase 2.1
|
|
3
|
+
*
|
|
4
|
+
* This is the canonical internal representation used by view/tree/explore.
|
|
5
|
+
* Direction uses → / ← (MCP Client → MCP Server / MCP Server → MCP Client).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Kind symbol mapping for display
|
|
9
|
+
*/
|
|
10
|
+
export const KIND_SYMBOLS = {
|
|
11
|
+
session_start: '▶',
|
|
12
|
+
session_end: '■',
|
|
13
|
+
req: '→',
|
|
14
|
+
res: '←',
|
|
15
|
+
notify: '•',
|
|
16
|
+
error: '✖',
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Get display symbol for kind
|
|
20
|
+
*/
|
|
21
|
+
export function getKindSymbol(kind) {
|
|
22
|
+
return KIND_SYMBOLS[kind] || '?';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Format timestamp for display
|
|
26
|
+
*/
|
|
27
|
+
export function formatTimestamp(ts_ms, fulltime = false) {
|
|
28
|
+
const date = new Date(ts_ms);
|
|
29
|
+
const time = date.toTimeString().slice(0, 8); // HH:MM:SS
|
|
30
|
+
const ms = String(date.getMilliseconds()).padStart(3, '0');
|
|
31
|
+
if (fulltime) {
|
|
32
|
+
const dateStr = date.toISOString().slice(0, 10); // YYYY-MM-DD
|
|
33
|
+
return `${dateStr} ${time}.${ms}`;
|
|
34
|
+
}
|
|
35
|
+
return `${time}.${ms}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Format duration in human-readable format
|
|
39
|
+
*/
|
|
40
|
+
export function formatDuration(ms) {
|
|
41
|
+
if (ms < 1000)
|
|
42
|
+
return `${ms}ms`;
|
|
43
|
+
if (ms < 60000)
|
|
44
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
45
|
+
if (ms < 3600000)
|
|
46
|
+
return `${(ms / 60000).toFixed(1)}m`;
|
|
47
|
+
return `${(ms / 3600000).toFixed(1)}h`;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Format bytes in human-readable format
|
|
51
|
+
*/
|
|
52
|
+
export function formatBytes(bytes) {
|
|
53
|
+
if (bytes < 1024)
|
|
54
|
+
return `${bytes}B`;
|
|
55
|
+
if (bytes < 1024 * 1024)
|
|
56
|
+
return `${(bytes / 1024).toFixed(1)}KB`;
|
|
57
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Shorten UUID for display (first 8 chars + ...)
|
|
61
|
+
*/
|
|
62
|
+
export function shortenId(id, length = 8) {
|
|
63
|
+
if (id.length <= length)
|
|
64
|
+
return id;
|
|
65
|
+
return id.slice(0, length) + '...';
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.js.map
|