@runtime-digital-twin/sdk 1.0.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.
Files changed (56) hide show
  1. package/README.md +214 -0
  2. package/dist/constants.d.ts +11 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +13 -0
  5. package/dist/db-wrapper.d.ts +258 -0
  6. package/dist/db-wrapper.d.ts.map +1 -0
  7. package/dist/db-wrapper.js +636 -0
  8. package/dist/event-envelope.d.ts +35 -0
  9. package/dist/event-envelope.d.ts.map +1 -0
  10. package/dist/event-envelope.js +101 -0
  11. package/dist/fastify-plugin.d.ts +29 -0
  12. package/dist/fastify-plugin.d.ts.map +1 -0
  13. package/dist/fastify-plugin.js +243 -0
  14. package/dist/http-sentinels.d.ts +39 -0
  15. package/dist/http-sentinels.d.ts.map +1 -0
  16. package/dist/http-sentinels.js +169 -0
  17. package/dist/http-wrapper.d.ts +25 -0
  18. package/dist/http-wrapper.d.ts.map +1 -0
  19. package/dist/http-wrapper.js +477 -0
  20. package/dist/index.d.ts +19 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +93 -0
  23. package/dist/invariants.d.ts +58 -0
  24. package/dist/invariants.d.ts.map +1 -0
  25. package/dist/invariants.js +192 -0
  26. package/dist/multi-service-edge-builder.d.ts +80 -0
  27. package/dist/multi-service-edge-builder.d.ts.map +1 -0
  28. package/dist/multi-service-edge-builder.js +107 -0
  29. package/dist/outbound-matcher.d.ts +192 -0
  30. package/dist/outbound-matcher.d.ts.map +1 -0
  31. package/dist/outbound-matcher.js +457 -0
  32. package/dist/peer-service-resolver.d.ts +22 -0
  33. package/dist/peer-service-resolver.d.ts.map +1 -0
  34. package/dist/peer-service-resolver.js +85 -0
  35. package/dist/redaction.d.ts +111 -0
  36. package/dist/redaction.d.ts.map +1 -0
  37. package/dist/redaction.js +487 -0
  38. package/dist/replay-logger.d.ts +438 -0
  39. package/dist/replay-logger.d.ts.map +1 -0
  40. package/dist/replay-logger.js +434 -0
  41. package/dist/root-cause-analyzer.d.ts +45 -0
  42. package/dist/root-cause-analyzer.d.ts.map +1 -0
  43. package/dist/root-cause-analyzer.js +606 -0
  44. package/dist/shape-digest-utils.d.ts +45 -0
  45. package/dist/shape-digest-utils.d.ts.map +1 -0
  46. package/dist/shape-digest-utils.js +154 -0
  47. package/dist/trace-bundle-writer.d.ts +52 -0
  48. package/dist/trace-bundle-writer.d.ts.map +1 -0
  49. package/dist/trace-bundle-writer.js +267 -0
  50. package/dist/trace-loader.d.ts +69 -0
  51. package/dist/trace-loader.d.ts.map +1 -0
  52. package/dist/trace-loader.js +146 -0
  53. package/dist/trace-uploader.d.ts +25 -0
  54. package/dist/trace-uploader.d.ts.map +1 -0
  55. package/dist/trace-uploader.js +132 -0
  56. package/package.json +63 -0
@@ -0,0 +1,438 @@
1
+ /**
2
+ * Structured Replay Logger
3
+ *
4
+ * Provides structured logging for replay execution with stable keys.
5
+ * Supports JSON and human-readable output modes.
6
+ */
7
+ /**
8
+ * Output format for replay logs
9
+ */
10
+ export type ReplayLogFormat = "json" | "human";
11
+ /**
12
+ * Severity levels for replay events
13
+ */
14
+ export type ReplayLogLevel = "debug" | "info" | "warn" | "error";
15
+ /**
16
+ * Category of replay event
17
+ */
18
+ export type ReplayEventCategory = "http" | "db" | "trace" | "lifecycle" | "system";
19
+ /**
20
+ * Base interface for all replay events
21
+ */
22
+ export interface ReplayEventBase {
23
+ /** Stable event type identifier */
24
+ event: string;
25
+ /** Unix timestamp in milliseconds */
26
+ timestamp: number;
27
+ /** Event category */
28
+ category: ReplayEventCategory;
29
+ /** Severity level */
30
+ level: ReplayLogLevel;
31
+ /** Trace context */
32
+ trace?: {
33
+ traceId: string;
34
+ spanId?: string;
35
+ parentSpanId?: string;
36
+ };
37
+ }
38
+ export interface HttpOutboundMatchEvent extends ReplayEventBase {
39
+ event: "http.outbound.match";
40
+ category: "http";
41
+ level: "info";
42
+ data: {
43
+ callIndex: number;
44
+ method: string;
45
+ url: string;
46
+ normalizedUrl: string;
47
+ bodyHash: string | null;
48
+ matchedSpanId: string;
49
+ durationMs?: number;
50
+ };
51
+ }
52
+ export interface HttpOutboundReturnEvent extends ReplayEventBase {
53
+ event: "http.outbound.return";
54
+ category: "http";
55
+ level: "debug";
56
+ data: {
57
+ callIndex: number;
58
+ method: string;
59
+ url: string;
60
+ statusCode: number;
61
+ bodyHash: string | null;
62
+ bodySize?: number;
63
+ };
64
+ }
65
+ export interface HttpOutboundMismatchEvent extends ReplayEventBase {
66
+ event: "http.outbound.mismatch";
67
+ category: "http";
68
+ level: "error";
69
+ data: {
70
+ callIndex: number;
71
+ expected: {
72
+ method: string;
73
+ url: string;
74
+ bodyHash: string | null;
75
+ };
76
+ actual: {
77
+ method: string;
78
+ url: string;
79
+ bodyHash: string | null;
80
+ };
81
+ differences: Array<{
82
+ field: string;
83
+ expected: string | null;
84
+ actual: string | null;
85
+ }>;
86
+ recoverable: boolean;
87
+ };
88
+ }
89
+ export interface HttpOutboundUnexpectedEvent extends ReplayEventBase {
90
+ event: "http.outbound.unexpected";
91
+ category: "http";
92
+ level: "error";
93
+ data: {
94
+ callIndex: number;
95
+ method: string;
96
+ url: string;
97
+ bodyHash: string | null;
98
+ expectedCallCount: number;
99
+ };
100
+ }
101
+ export interface HttpOutboundMissingEvent extends ReplayEventBase {
102
+ event: "http.outbound.missing";
103
+ category: "http";
104
+ level: "error";
105
+ data: {
106
+ callIndex: number;
107
+ method: string;
108
+ url: string;
109
+ spanId: string;
110
+ bodyHash: string | null;
111
+ };
112
+ }
113
+ export interface HttpOutboundBlockedEvent extends ReplayEventBase {
114
+ event: "http.outbound.blocked";
115
+ category: "http";
116
+ level: "error";
117
+ data: {
118
+ method: string;
119
+ url: string;
120
+ reason: string;
121
+ };
122
+ }
123
+ export interface DbQueryMatchEvent extends ReplayEventBase {
124
+ event: "db.query.match";
125
+ category: "db";
126
+ level: "info";
127
+ data: {
128
+ queryIndex: number;
129
+ operation: string;
130
+ sql: string;
131
+ normalizedSql: string;
132
+ paramsHash: string;
133
+ matchedSpanId: string;
134
+ rowCount: number;
135
+ };
136
+ }
137
+ export interface DbQueryReturnEvent extends ReplayEventBase {
138
+ event: "db.query.return";
139
+ category: "db";
140
+ level: "debug";
141
+ data: {
142
+ queryIndex: number;
143
+ operation: string;
144
+ rowCount: number;
145
+ resultHash: string | null;
146
+ };
147
+ }
148
+ export interface DbQueryMismatchEvent extends ReplayEventBase {
149
+ event: "db.query.mismatch";
150
+ category: "db";
151
+ level: "error";
152
+ data: {
153
+ queryIndex: number;
154
+ expected: {
155
+ operation: string;
156
+ sql: string;
157
+ paramsHash: string;
158
+ };
159
+ actual: {
160
+ operation: string;
161
+ sql: string;
162
+ paramsHash: string;
163
+ };
164
+ differences: Array<{
165
+ field: string;
166
+ expected: string | null;
167
+ actual: string | null;
168
+ }>;
169
+ recoverable: boolean;
170
+ };
171
+ }
172
+ export interface DbQueryUnexpectedEvent extends ReplayEventBase {
173
+ event: "db.query.unexpected";
174
+ category: "db";
175
+ level: "error";
176
+ data: {
177
+ queryIndex: number;
178
+ operation: string;
179
+ sql: string;
180
+ paramsHash: string;
181
+ expectedQueryCount: number;
182
+ };
183
+ }
184
+ export interface DbQueryMissingEvent extends ReplayEventBase {
185
+ event: "db.query.missing";
186
+ category: "db";
187
+ level: "error";
188
+ data: {
189
+ queryIndex: number;
190
+ operation: string;
191
+ sql: string;
192
+ spanId: string;
193
+ };
194
+ }
195
+ export interface DbQueryBlockedEvent extends ReplayEventBase {
196
+ event: "db.query.blocked";
197
+ category: "db";
198
+ level: "error";
199
+ data: {
200
+ operation: string;
201
+ sql: string;
202
+ reason: string;
203
+ };
204
+ }
205
+ export interface TraceLoadEvent extends ReplayEventBase {
206
+ event: "trace.load";
207
+ category: "trace";
208
+ level: "info";
209
+ data: {
210
+ traceDir: string;
211
+ traceId: string;
212
+ formatVersion: number;
213
+ serviceName: string;
214
+ environment: string;
215
+ startedAt: string;
216
+ eventCount?: number;
217
+ httpCallCount?: number;
218
+ dbQueryCount?: number;
219
+ };
220
+ }
221
+ export interface TraceLoadWarningEvent extends ReplayEventBase {
222
+ event: "trace.load.warning";
223
+ category: "trace";
224
+ level: "warn";
225
+ data: {
226
+ traceDir: string;
227
+ warning: string;
228
+ field?: string;
229
+ defaultValue?: unknown;
230
+ };
231
+ }
232
+ export interface TraceLoadErrorEvent extends ReplayEventBase {
233
+ event: "trace.load.error";
234
+ category: "trace";
235
+ level: "error";
236
+ data: {
237
+ traceDir: string;
238
+ errorType: string;
239
+ message: string;
240
+ expected?: string;
241
+ actual?: string;
242
+ };
243
+ }
244
+ export interface ReplayStartEvent extends ReplayEventBase {
245
+ event: "replay.start";
246
+ category: "lifecycle";
247
+ level: "info";
248
+ data: {
249
+ traceId: string;
250
+ traceDir: string;
251
+ mode: "strict" | "explain";
252
+ serviceName: string;
253
+ mockServerPort?: number;
254
+ };
255
+ }
256
+ export interface ReplayCompleteEvent extends ReplayEventBase {
257
+ event: "replay.complete";
258
+ category: "lifecycle";
259
+ level: "info";
260
+ data: {
261
+ traceId: string;
262
+ success: boolean;
263
+ durationMs: number;
264
+ httpCallsMatched: number;
265
+ httpCallsTotal: number;
266
+ dbQueriesMatched: number;
267
+ dbQueriesTotal: number;
268
+ divergenceCount: number;
269
+ errorCount: number;
270
+ };
271
+ }
272
+ export interface ReplayErrorEvent extends ReplayEventBase {
273
+ event: "replay.error";
274
+ category: "lifecycle";
275
+ level: "error";
276
+ data: {
277
+ traceId: string;
278
+ errorType: string;
279
+ message: string;
280
+ location?: string;
281
+ hint?: string;
282
+ };
283
+ }
284
+ export interface ReplayDivergenceEvent extends ReplayEventBase {
285
+ event: "replay.divergence";
286
+ category: "lifecycle";
287
+ level: "warn";
288
+ data: {
289
+ index: number;
290
+ source: "http" | "db";
291
+ message: string;
292
+ severity: "warning" | "error";
293
+ recoverable: boolean;
294
+ };
295
+ }
296
+ export type ReplayEvent = HttpOutboundMatchEvent | HttpOutboundReturnEvent | HttpOutboundMismatchEvent | HttpOutboundUnexpectedEvent | HttpOutboundMissingEvent | HttpOutboundBlockedEvent | DbQueryMatchEvent | DbQueryReturnEvent | DbQueryMismatchEvent | DbQueryUnexpectedEvent | DbQueryMissingEvent | DbQueryBlockedEvent | TraceLoadEvent | TraceLoadWarningEvent | TraceLoadErrorEvent | ReplayStartEvent | ReplayCompleteEvent | ReplayErrorEvent | ReplayDivergenceEvent;
297
+ export interface ReplayLoggerConfig {
298
+ /** Output format */
299
+ format: ReplayLogFormat;
300
+ /** Minimum log level to emit */
301
+ minLevel: ReplayLogLevel;
302
+ /** Output stream (defaults to stderr for errors/warnings, stdout otherwise) */
303
+ output?: {
304
+ write: (message: string) => void;
305
+ };
306
+ /** Include timestamps in human-readable output */
307
+ timestamps?: boolean;
308
+ /** Include trace context in human-readable output */
309
+ includeTrace?: boolean;
310
+ /** Colorize human-readable output */
311
+ colors?: boolean;
312
+ }
313
+ /**
314
+ * Replay Logger instance
315
+ */
316
+ export declare class ReplayLogger {
317
+ private config;
318
+ private events;
319
+ private startTime;
320
+ constructor(config?: Partial<ReplayLoggerConfig>);
321
+ /**
322
+ * Get all logged events
323
+ */
324
+ getEvents(): ReplayEvent[];
325
+ /**
326
+ * Clear all logged events
327
+ */
328
+ clear(): void;
329
+ /**
330
+ * Check if a log level should be emitted
331
+ */
332
+ private shouldLog;
333
+ /**
334
+ * Log an event
335
+ */
336
+ log(event: Omit<ReplayEvent, "timestamp">): void;
337
+ /**
338
+ * Format event as JSON
339
+ */
340
+ private formatJson;
341
+ /**
342
+ * Format event as human-readable
343
+ */
344
+ private formatHuman;
345
+ /**
346
+ * Format event-specific message
347
+ */
348
+ private formatEventMessage;
349
+ /**
350
+ * Log HTTP outbound match
351
+ */
352
+ httpMatch(data: HttpOutboundMatchEvent["data"], trace?: ReplayEventBase["trace"]): void;
353
+ /**
354
+ * Log HTTP outbound return
355
+ */
356
+ httpReturn(data: HttpOutboundReturnEvent["data"], trace?: ReplayEventBase["trace"]): void;
357
+ /**
358
+ * Log HTTP outbound mismatch
359
+ */
360
+ httpMismatch(data: HttpOutboundMismatchEvent["data"], trace?: ReplayEventBase["trace"]): void;
361
+ /**
362
+ * Log HTTP outbound unexpected
363
+ */
364
+ httpUnexpected(data: HttpOutboundUnexpectedEvent["data"], trace?: ReplayEventBase["trace"]): void;
365
+ /**
366
+ * Log HTTP outbound missing
367
+ */
368
+ httpMissing(data: HttpOutboundMissingEvent["data"], trace?: ReplayEventBase["trace"]): void;
369
+ /**
370
+ * Log HTTP outbound blocked
371
+ */
372
+ httpBlocked(data: HttpOutboundBlockedEvent["data"], trace?: ReplayEventBase["trace"]): void;
373
+ /**
374
+ * Log DB query match
375
+ */
376
+ dbMatch(data: DbQueryMatchEvent["data"], trace?: ReplayEventBase["trace"]): void;
377
+ /**
378
+ * Log DB query return
379
+ */
380
+ dbReturn(data: DbQueryReturnEvent["data"], trace?: ReplayEventBase["trace"]): void;
381
+ /**
382
+ * Log DB query mismatch
383
+ */
384
+ dbMismatch(data: DbQueryMismatchEvent["data"], trace?: ReplayEventBase["trace"]): void;
385
+ /**
386
+ * Log DB query unexpected
387
+ */
388
+ dbUnexpected(data: DbQueryUnexpectedEvent["data"], trace?: ReplayEventBase["trace"]): void;
389
+ /**
390
+ * Log DB query missing
391
+ */
392
+ dbMissing(data: DbQueryMissingEvent["data"], trace?: ReplayEventBase["trace"]): void;
393
+ /**
394
+ * Log DB query blocked
395
+ */
396
+ dbBlocked(data: DbQueryBlockedEvent["data"], trace?: ReplayEventBase["trace"]): void;
397
+ /**
398
+ * Log trace load
399
+ */
400
+ traceLoad(data: TraceLoadEvent["data"]): void;
401
+ /**
402
+ * Log trace load warning
403
+ */
404
+ traceLoadWarning(data: TraceLoadWarningEvent["data"]): void;
405
+ /**
406
+ * Log trace load error
407
+ */
408
+ traceLoadError(data: TraceLoadErrorEvent["data"]): void;
409
+ /**
410
+ * Log replay start
411
+ */
412
+ replayStart(data: ReplayStartEvent["data"]): void;
413
+ /**
414
+ * Log replay complete
415
+ */
416
+ replayComplete(data: ReplayCompleteEvent["data"]): void;
417
+ /**
418
+ * Log replay error
419
+ */
420
+ replayError(data: ReplayErrorEvent["data"]): void;
421
+ /**
422
+ * Log replay divergence
423
+ */
424
+ replayDivergence(data: ReplayDivergenceEvent["data"], trace?: ReplayEventBase["trace"]): void;
425
+ }
426
+ /**
427
+ * Get or create the global replay logger
428
+ */
429
+ export declare function getReplayLogger(config?: Partial<ReplayLoggerConfig>): ReplayLogger;
430
+ /**
431
+ * Reset the global replay logger
432
+ */
433
+ export declare function resetReplayLogger(): void;
434
+ /**
435
+ * Create a new replay logger instance
436
+ */
437
+ export declare function createReplayLogger(config?: Partial<ReplayLoggerConfig>): ReplayLogger;
438
+ //# sourceMappingURL=replay-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-logger.d.ts","sourceRoot":"","sources":["../src/replay-logger.ts"],"names":[],"mappings":"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"}