@orka-js/devtools 1.1.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/index.cjs +857 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +300 -0
- package/dist/index.d.ts +300 -0
- package/dist/index.js +811 -0
- package/dist/index.js.map +1 -0
- package/package.json +62 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DevTools Types
|
|
3
|
+
*/
|
|
4
|
+
interface DevToolsConfig {
|
|
5
|
+
port?: number;
|
|
6
|
+
host?: string;
|
|
7
|
+
open?: boolean;
|
|
8
|
+
cors?: boolean;
|
|
9
|
+
maxTraces?: number;
|
|
10
|
+
retentionMs?: number;
|
|
11
|
+
}
|
|
12
|
+
interface TraceRun {
|
|
13
|
+
id: string;
|
|
14
|
+
parentId?: string;
|
|
15
|
+
type: TraceRunType;
|
|
16
|
+
name: string;
|
|
17
|
+
startTime: number;
|
|
18
|
+
endTime?: number;
|
|
19
|
+
latencyMs?: number;
|
|
20
|
+
status: 'running' | 'success' | 'error';
|
|
21
|
+
input?: unknown;
|
|
22
|
+
output?: unknown;
|
|
23
|
+
error?: string;
|
|
24
|
+
metadata?: TraceMetadata;
|
|
25
|
+
children: TraceRun[];
|
|
26
|
+
}
|
|
27
|
+
type TraceRunType = 'agent' | 'llm' | 'tool' | 'retrieval' | 'chain' | 'workflow' | 'graph' | 'node' | 'embedding' | 'custom';
|
|
28
|
+
interface TraceMetadata {
|
|
29
|
+
model?: string;
|
|
30
|
+
provider?: string;
|
|
31
|
+
promptTokens?: number;
|
|
32
|
+
completionTokens?: number;
|
|
33
|
+
totalTokens?: number;
|
|
34
|
+
cost?: number;
|
|
35
|
+
temperature?: number;
|
|
36
|
+
maxTokens?: number;
|
|
37
|
+
toolName?: string;
|
|
38
|
+
toolArgs?: Record<string, unknown>;
|
|
39
|
+
nodeId?: string;
|
|
40
|
+
threadId?: string;
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
}
|
|
43
|
+
interface TraceSession {
|
|
44
|
+
id: string;
|
|
45
|
+
name?: string;
|
|
46
|
+
startTime: number;
|
|
47
|
+
endTime?: number;
|
|
48
|
+
runs: TraceRun[];
|
|
49
|
+
metadata?: Record<string, unknown>;
|
|
50
|
+
}
|
|
51
|
+
interface TraceMetrics {
|
|
52
|
+
totalRuns: number;
|
|
53
|
+
totalLatencyMs: number;
|
|
54
|
+
avgLatencyMs: number;
|
|
55
|
+
totalTokens: number;
|
|
56
|
+
totalCost: number;
|
|
57
|
+
errorRate: number;
|
|
58
|
+
runsByType: Record<TraceRunType, number>;
|
|
59
|
+
tokensByModel: Record<string, number>;
|
|
60
|
+
costByModel: Record<string, number>;
|
|
61
|
+
}
|
|
62
|
+
interface DevToolsState {
|
|
63
|
+
sessions: TraceSession[];
|
|
64
|
+
activeSessionId?: string;
|
|
65
|
+
metrics: TraceMetrics;
|
|
66
|
+
isRecording: boolean;
|
|
67
|
+
}
|
|
68
|
+
interface TraceEvent {
|
|
69
|
+
type: 'run:start' | 'run:end' | 'run:error' | 'session:start' | 'session:end';
|
|
70
|
+
timestamp: number;
|
|
71
|
+
sessionId: string;
|
|
72
|
+
run?: TraceRun;
|
|
73
|
+
error?: string;
|
|
74
|
+
}
|
|
75
|
+
interface ReplayOptions {
|
|
76
|
+
runId: string;
|
|
77
|
+
sessionId: string;
|
|
78
|
+
modifyInput?: (input: unknown) => unknown;
|
|
79
|
+
}
|
|
80
|
+
interface ReplayResult {
|
|
81
|
+
originalRun: TraceRun;
|
|
82
|
+
replayedRun: TraceRun;
|
|
83
|
+
diff: {
|
|
84
|
+
inputChanged: boolean;
|
|
85
|
+
outputChanged: boolean;
|
|
86
|
+
latencyDiff: number;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* TraceCollector - Collects and manages trace data for DevTools
|
|
92
|
+
*/
|
|
93
|
+
declare class TraceCollector {
|
|
94
|
+
private sessions;
|
|
95
|
+
private activeSessionId?;
|
|
96
|
+
private runStack;
|
|
97
|
+
private maxTraces;
|
|
98
|
+
private retentionMs;
|
|
99
|
+
private listeners;
|
|
100
|
+
constructor(config?: DevToolsConfig);
|
|
101
|
+
/**
|
|
102
|
+
* Start a new trace session
|
|
103
|
+
*/
|
|
104
|
+
startSession(name?: string): string;
|
|
105
|
+
/**
|
|
106
|
+
* End the current session
|
|
107
|
+
*/
|
|
108
|
+
endSession(sessionId?: string): void;
|
|
109
|
+
/**
|
|
110
|
+
* Start a new trace run
|
|
111
|
+
*/
|
|
112
|
+
startRun(type: TraceRunType, name: string, input?: unknown, metadata?: TraceMetadata): string;
|
|
113
|
+
/**
|
|
114
|
+
* End a trace run
|
|
115
|
+
*/
|
|
116
|
+
endRun(runId: string, output?: unknown, metadata?: TraceMetadata): void;
|
|
117
|
+
/**
|
|
118
|
+
* Mark a run as errored
|
|
119
|
+
*/
|
|
120
|
+
errorRun(runId: string, error: Error | string): void;
|
|
121
|
+
/**
|
|
122
|
+
* Get all sessions
|
|
123
|
+
*/
|
|
124
|
+
getSessions(): TraceSession[];
|
|
125
|
+
/**
|
|
126
|
+
* Get a specific session
|
|
127
|
+
*/
|
|
128
|
+
getSession(sessionId: string): TraceSession | undefined;
|
|
129
|
+
/**
|
|
130
|
+
* Get metrics for a session or all sessions
|
|
131
|
+
*/
|
|
132
|
+
getMetrics(sessionId?: string): TraceMetrics;
|
|
133
|
+
/**
|
|
134
|
+
* Find a run by ID
|
|
135
|
+
*/
|
|
136
|
+
findRun(runId: string, sessionId?: string): TraceRun | undefined;
|
|
137
|
+
/**
|
|
138
|
+
* Subscribe to trace events
|
|
139
|
+
*/
|
|
140
|
+
subscribe(listener: (event: TraceEvent) => void): () => void;
|
|
141
|
+
/**
|
|
142
|
+
* Emit an event to all listeners
|
|
143
|
+
*/
|
|
144
|
+
private emit;
|
|
145
|
+
/**
|
|
146
|
+
* Cleanup old sessions
|
|
147
|
+
*/
|
|
148
|
+
private cleanup;
|
|
149
|
+
/**
|
|
150
|
+
* Clear all traces
|
|
151
|
+
*/
|
|
152
|
+
clear(): void;
|
|
153
|
+
/**
|
|
154
|
+
* Export traces as JSON
|
|
155
|
+
*/
|
|
156
|
+
export(): string;
|
|
157
|
+
/**
|
|
158
|
+
* Import traces from JSON
|
|
159
|
+
*/
|
|
160
|
+
import(json: string): void;
|
|
161
|
+
}
|
|
162
|
+
declare function getCollector(config?: DevToolsConfig): TraceCollector;
|
|
163
|
+
declare function resetCollector(): void;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* DevTools Server - Express server for the DevTools dashboard
|
|
167
|
+
*/
|
|
168
|
+
declare class DevToolsServer {
|
|
169
|
+
private collector;
|
|
170
|
+
private config;
|
|
171
|
+
private server?;
|
|
172
|
+
private clients;
|
|
173
|
+
constructor(collector: TraceCollector, config?: DevToolsConfig);
|
|
174
|
+
/**
|
|
175
|
+
* Start the DevTools server
|
|
176
|
+
*/
|
|
177
|
+
start(): Promise<void>;
|
|
178
|
+
/**
|
|
179
|
+
* Stop the server
|
|
180
|
+
*/
|
|
181
|
+
stop(): Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* Setup API routes
|
|
184
|
+
*/
|
|
185
|
+
private setupRoutes;
|
|
186
|
+
/**
|
|
187
|
+
* Broadcast event to all SSE clients
|
|
188
|
+
*/
|
|
189
|
+
private broadcastEvent;
|
|
190
|
+
/**
|
|
191
|
+
* Get embedded dashboard HTML
|
|
192
|
+
*/
|
|
193
|
+
private getDashboardHTML;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Hook interface matching @orka-js/observability
|
|
198
|
+
*/
|
|
199
|
+
interface ObservabilityHook {
|
|
200
|
+
onTraceStart?: (trace: TracerTrace) => void;
|
|
201
|
+
onTraceEnd?: (trace: TracerTrace) => void;
|
|
202
|
+
onEvent?: (event: TracerEvent) => void;
|
|
203
|
+
onError?: (error: Error, context?: Record<string, unknown>) => void;
|
|
204
|
+
}
|
|
205
|
+
interface TracerTrace {
|
|
206
|
+
id: string;
|
|
207
|
+
name: string;
|
|
208
|
+
startTime: number;
|
|
209
|
+
endTime?: number;
|
|
210
|
+
totalLatencyMs?: number;
|
|
211
|
+
totalTokens?: number;
|
|
212
|
+
events: TracerEvent[];
|
|
213
|
+
metadata?: Record<string, unknown>;
|
|
214
|
+
}
|
|
215
|
+
interface TracerEvent {
|
|
216
|
+
id: string;
|
|
217
|
+
traceId: string;
|
|
218
|
+
type: string;
|
|
219
|
+
name: string;
|
|
220
|
+
startTime?: number;
|
|
221
|
+
endTime?: number;
|
|
222
|
+
latencyMs?: number;
|
|
223
|
+
input?: unknown;
|
|
224
|
+
output?: unknown;
|
|
225
|
+
usage?: {
|
|
226
|
+
promptTokens?: number;
|
|
227
|
+
completionTokens?: number;
|
|
228
|
+
totalTokens?: number;
|
|
229
|
+
};
|
|
230
|
+
metadata?: Record<string, unknown>;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Create a DevTools hook for the Tracer
|
|
234
|
+
*
|
|
235
|
+
* Usage:
|
|
236
|
+
* ```ts
|
|
237
|
+
* import { Tracer } from '@orka-js/observability';
|
|
238
|
+
* import { createDevToolsHook, devtools } from '@orka-js/devtools';
|
|
239
|
+
*
|
|
240
|
+
* await devtools();
|
|
241
|
+
*
|
|
242
|
+
* const tracer = new Tracer({
|
|
243
|
+
* hooks: [createDevToolsHook()]
|
|
244
|
+
* });
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
declare function createDevToolsHook(): ObservabilityHook;
|
|
248
|
+
/**
|
|
249
|
+
* Convenience function to create a Tracer with DevTools integration
|
|
250
|
+
*/
|
|
251
|
+
declare function createTracerWithDevTools(options?: {
|
|
252
|
+
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
253
|
+
maxTraces?: number;
|
|
254
|
+
traceTtlMs?: number;
|
|
255
|
+
}): {
|
|
256
|
+
hook: ObservabilityHook;
|
|
257
|
+
config: typeof options & {
|
|
258
|
+
hooks: ObservabilityHook[];
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Start the DevTools dashboard
|
|
264
|
+
*/
|
|
265
|
+
declare function devtools(config?: DevToolsConfig): Promise<{
|
|
266
|
+
collector: TraceCollector;
|
|
267
|
+
server: DevToolsServer;
|
|
268
|
+
stop: () => Promise<void>;
|
|
269
|
+
}>;
|
|
270
|
+
/**
|
|
271
|
+
* Create a trace wrapper for any function
|
|
272
|
+
*/
|
|
273
|
+
declare function withTrace<T extends (...args: unknown[]) => unknown>(fn: T, options?: {
|
|
274
|
+
name?: string;
|
|
275
|
+
type?: TraceRunType;
|
|
276
|
+
collector?: TraceCollector;
|
|
277
|
+
}): T;
|
|
278
|
+
/**
|
|
279
|
+
* Decorator for tracing class methods
|
|
280
|
+
*/
|
|
281
|
+
declare function Trace(options?: {
|
|
282
|
+
name?: string;
|
|
283
|
+
type?: TraceRunType;
|
|
284
|
+
}): (_target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
285
|
+
/**
|
|
286
|
+
* Manual tracing helpers
|
|
287
|
+
*/
|
|
288
|
+
declare const trace: {
|
|
289
|
+
start(type: TraceRunType, name: string, input?: unknown, metadata?: TraceMetadata): string;
|
|
290
|
+
end(runId: string, output?: unknown, metadata?: TraceMetadata): void;
|
|
291
|
+
error(runId: string, error: Error | string): void;
|
|
292
|
+
session(name?: string): string;
|
|
293
|
+
endSession(sessionId?: string): void;
|
|
294
|
+
/**
|
|
295
|
+
* Wrap an async function with tracing
|
|
296
|
+
*/
|
|
297
|
+
wrap<T>(type: TraceRunType, name: string, fn: () => Promise<T>, metadata?: TraceMetadata): Promise<T>;
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
export { type DevToolsConfig, DevToolsServer, type DevToolsState, type ReplayOptions, type ReplayResult, Trace, TraceCollector, type TraceEvent, type TraceMetadata, type TraceMetrics, type TraceRun, type TraceRunType, type TraceSession, createDevToolsHook, createTracerWithDevTools, devtools, getCollector, resetCollector, trace, withTrace };
|