@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.
@@ -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 };