@rudderjs/telescope 0.0.1 → 0.0.2

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 (150) hide show
  1. package/README.md +101 -27
  2. package/dist/api/routes.d.ts +10 -6
  3. package/dist/api/routes.d.ts.map +1 -1
  4. package/dist/api/routes.js +42 -54
  5. package/dist/api/routes.js.map +1 -1
  6. package/dist/batch-context.d.ts +19 -0
  7. package/dist/batch-context.d.ts.map +1 -0
  8. package/dist/batch-context.js +24 -0
  9. package/dist/batch-context.js.map +1 -0
  10. package/dist/collectors/ai.d.ts +13 -0
  11. package/dist/collectors/ai.d.ts.map +1 -0
  12. package/dist/collectors/ai.js +61 -0
  13. package/dist/collectors/ai.js.map +1 -0
  14. package/dist/collectors/broadcast.d.ts +10 -0
  15. package/dist/collectors/broadcast.d.ts.map +1 -0
  16. package/dist/collectors/broadcast.js +46 -0
  17. package/dist/collectors/broadcast.js.map +1 -0
  18. package/dist/collectors/cache.d.ts.map +1 -1
  19. package/dist/collectors/cache.js +5 -4
  20. package/dist/collectors/cache.js.map +1 -1
  21. package/dist/collectors/command.d.ts +21 -0
  22. package/dist/collectors/command.d.ts.map +1 -0
  23. package/dist/collectors/command.js +55 -0
  24. package/dist/collectors/command.js.map +1 -0
  25. package/dist/collectors/dump.d.ts +17 -0
  26. package/dist/collectors/dump.d.ts.map +1 -0
  27. package/dist/collectors/dump.js +37 -0
  28. package/dist/collectors/dump.js.map +1 -0
  29. package/dist/collectors/event.d.ts.map +1 -1
  30. package/dist/collectors/event.js +2 -1
  31. package/dist/collectors/event.js.map +1 -1
  32. package/dist/collectors/exception.d.ts +1 -0
  33. package/dist/collectors/exception.d.ts.map +1 -1
  34. package/dist/collectors/exception.js +23 -4
  35. package/dist/collectors/exception.js.map +1 -1
  36. package/dist/collectors/gate.d.ts +18 -0
  37. package/dist/collectors/gate.d.ts.map +1 -0
  38. package/dist/collectors/gate.js +49 -0
  39. package/dist/collectors/gate.js.map +1 -0
  40. package/dist/collectors/http.d.ts +21 -0
  41. package/dist/collectors/http.d.ts.map +1 -0
  42. package/dist/collectors/http.js +64 -0
  43. package/dist/collectors/http.js.map +1 -0
  44. package/dist/collectors/job.d.ts.map +1 -1
  45. package/dist/collectors/job.js +3 -2
  46. package/dist/collectors/job.js.map +1 -1
  47. package/dist/collectors/live.d.ts +13 -0
  48. package/dist/collectors/live.d.ts.map +1 -0
  49. package/dist/collectors/live.js +60 -0
  50. package/dist/collectors/live.js.map +1 -0
  51. package/dist/collectors/log.d.ts.map +1 -1
  52. package/dist/collectors/log.js +2 -1
  53. package/dist/collectors/log.js.map +1 -1
  54. package/dist/collectors/mail.d.ts.map +1 -1
  55. package/dist/collectors/mail.js +2 -1
  56. package/dist/collectors/mail.js.map +1 -1
  57. package/dist/collectors/mcp.d.ts +14 -0
  58. package/dist/collectors/mcp.d.ts.map +1 -0
  59. package/dist/collectors/mcp.js +49 -0
  60. package/dist/collectors/mcp.js.map +1 -0
  61. package/dist/collectors/model.d.ts +6 -0
  62. package/dist/collectors/model.d.ts.map +1 -1
  63. package/dist/collectors/model.js +44 -1
  64. package/dist/collectors/model.js.map +1 -1
  65. package/dist/collectors/notification.d.ts.map +1 -1
  66. package/dist/collectors/notification.js +2 -1
  67. package/dist/collectors/notification.js.map +1 -1
  68. package/dist/collectors/query.d.ts.map +1 -1
  69. package/dist/collectors/query.js +5 -3
  70. package/dist/collectors/query.js.map +1 -1
  71. package/dist/collectors/request.d.ts +2 -1
  72. package/dist/collectors/request.d.ts.map +1 -1
  73. package/dist/collectors/request.js +78 -4
  74. package/dist/collectors/request.js.map +1 -1
  75. package/dist/index.d.ts +17 -2
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +152 -95
  78. package/dist/index.js.map +1 -1
  79. package/dist/redact.d.ts +25 -0
  80. package/dist/redact.d.ts.map +1 -0
  81. package/dist/redact.js +55 -0
  82. package/dist/redact.js.map +1 -0
  83. package/dist/routes.d.ts +22 -0
  84. package/dist/routes.d.ts.map +1 -0
  85. package/dist/routes.js +105 -0
  86. package/dist/routes.js.map +1 -0
  87. package/dist/storage.d.ts.map +1 -1
  88. package/dist/storage.js +13 -0
  89. package/dist/storage.js.map +1 -1
  90. package/dist/types.d.ts +32 -1
  91. package/dist/types.d.ts.map +1 -1
  92. package/dist/types.js +13 -0
  93. package/dist/types.js.map +1 -1
  94. package/dist/views/vanilla/Dashboard.d.ts +10 -0
  95. package/dist/views/vanilla/Dashboard.d.ts.map +1 -0
  96. package/dist/views/vanilla/Dashboard.js +48 -0
  97. package/dist/views/vanilla/Dashboard.js.map +1 -0
  98. package/dist/views/vanilla/EntryList.d.ts +29 -0
  99. package/dist/views/vanilla/EntryList.d.ts.map +1 -0
  100. package/dist/views/vanilla/EntryList.js +172 -0
  101. package/dist/views/vanilla/EntryList.js.map +1 -0
  102. package/dist/views/vanilla/Layout.d.ts +25 -0
  103. package/dist/views/vanilla/Layout.d.ts.map +1 -0
  104. package/dist/views/vanilla/Layout.js +225 -0
  105. package/dist/views/vanilla/Layout.js.map +1 -0
  106. package/dist/views/vanilla/_html.d.ts +27 -0
  107. package/dist/views/vanilla/_html.d.ts.map +1 -0
  108. package/dist/views/vanilla/_html.js +55 -0
  109. package/dist/views/vanilla/_html.js.map +1 -0
  110. package/dist/views/vanilla/columns.d.ts +20 -0
  111. package/dist/views/vanilla/columns.d.ts.map +1 -0
  112. package/dist/views/vanilla/columns.js +181 -0
  113. package/dist/views/vanilla/columns.js.map +1 -0
  114. package/dist/views/vanilla/details/Batch.d.ts +14 -0
  115. package/dist/views/vanilla/details/Batch.d.ts.map +1 -0
  116. package/dist/views/vanilla/details/Batch.js +120 -0
  117. package/dist/views/vanilla/details/Batch.js.map +1 -0
  118. package/dist/views/vanilla/details/Layout.d.ts +21 -0
  119. package/dist/views/vanilla/details/Layout.d.ts.map +1 -0
  120. package/dist/views/vanilla/details/Layout.js +163 -0
  121. package/dist/views/vanilla/details/Layout.js.map +1 -0
  122. package/dist/views/vanilla/details/NotFound.d.ts +8 -0
  123. package/dist/views/vanilla/details/NotFound.d.ts.map +1 -0
  124. package/dist/views/vanilla/details/NotFound.js +20 -0
  125. package/dist/views/vanilla/details/NotFound.js.map +1 -0
  126. package/dist/views/vanilla/details/index.d.ts +5 -0
  127. package/dist/views/vanilla/details/index.d.ts.map +1 -0
  128. package/dist/views/vanilla/details/index.js +5 -0
  129. package/dist/views/vanilla/details/index.js.map +1 -0
  130. package/dist/views/vanilla/details/sections.d.ts +46 -0
  131. package/dist/views/vanilla/details/sections.d.ts.map +1 -0
  132. package/dist/views/vanilla/details/sections.js +145 -0
  133. package/dist/views/vanilla/details/sections.js.map +1 -0
  134. package/dist/views/vanilla/details/views.d.ts +15 -0
  135. package/dist/views/vanilla/details/views.d.ts.map +1 -0
  136. package/dist/views/vanilla/details/views.js +534 -0
  137. package/dist/views/vanilla/details/views.js.map +1 -0
  138. package/dist/views/vanilla/index.d.ts +5 -0
  139. package/dist/views/vanilla/index.d.ts.map +1 -0
  140. package/dist/views/vanilla/index.js +5 -0
  141. package/dist/views/vanilla/index.js.map +1 -0
  142. package/package.json +53 -13
  143. package/dist/ui/layout.d.ts +0 -11
  144. package/dist/ui/layout.d.ts.map +0 -1
  145. package/dist/ui/layout.js +0 -69
  146. package/dist/ui/layout.js.map +0 -1
  147. package/dist/ui/pages.d.ts +0 -21
  148. package/dist/ui/pages.d.ts.map +0 -1
  149. package/dist/ui/pages.js +0 -225
  150. package/dist/ui/pages.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ import type { Collector, TelescopeStorage, TelescopeConfig } from '../types.js';
2
+ /**
3
+ * Records MCP tool calls, resource reads, and prompt renders by subscribing
4
+ * to `@rudderjs/mcp`'s observer registry.
5
+ */
6
+ export declare class McpCollector implements Collector {
7
+ private readonly storage;
8
+ private readonly config;
9
+ readonly name = "MCP Collector";
10
+ readonly type: "mcp";
11
+ constructor(storage: TelescopeStorage, config: TelescopeConfig);
12
+ register(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/collectors/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI/E;;;GAGG;AACH,qBAAa,YAAa,YAAW,SAAS;IAK1C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,QAAQ,CAAC,IAAI,mBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAS;gBAGX,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAG,eAAe;IAGrC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAkChC"}
@@ -0,0 +1,49 @@
1
+ import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
3
+ /**
4
+ * Records MCP tool calls, resource reads, and prompt renders by subscribing
5
+ * to `@rudderjs/mcp`'s observer registry.
6
+ */
7
+ export class McpCollector {
8
+ storage;
9
+ config;
10
+ name = 'MCP Collector';
11
+ type = 'mcp';
12
+ constructor(storage, config) {
13
+ this.storage = storage;
14
+ this.config = config;
15
+ }
16
+ async register() {
17
+ try {
18
+ const mod = await import('@rudderjs/mcp/observers');
19
+ const { mcpObservers } = mod;
20
+ const storage = this.storage;
21
+ const threshold = this.config.slowMcpThreshold ?? 1000;
22
+ mcpObservers.subscribe((event) => {
23
+ const subject = event.kind.split('.')[0];
24
+ const tags = [
25
+ `server:${event.serverName}`,
26
+ `type:${subject}`,
27
+ `name:${event.name}`,
28
+ ];
29
+ if (event.kind.endsWith('.failed'))
30
+ tags.push('error');
31
+ if (event.duration > threshold)
32
+ tags.push('slow');
33
+ storage.store(createEntry('mcp', {
34
+ kind: event.kind,
35
+ serverName: event.serverName,
36
+ name: event.name,
37
+ input: event.input,
38
+ output: event.output,
39
+ duration: event.duration,
40
+ error: event.error,
41
+ }, { tags, ...batchOpts() }));
42
+ });
43
+ }
44
+ catch {
45
+ // @rudderjs/mcp not installed — skip
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/collectors/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C;;;GAGG;AACH,MAAM,OAAO,YAAY;IAKJ;IACA;IALV,IAAI,GAAG,eAAe,CAAA;IACtB,IAAI,GAAG,KAAc,CAAA;IAE9B,YACmB,OAAyB,EACzB,MAAwB;QADxB,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAkB;IACxC,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAEjD,CAAA;YACD,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAA;YAE5B,MAAM,OAAO,GAAK,IAAI,CAAC,OAAO,CAAA;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAA;YAEtD,YAAY,CAAC,SAAS,CAAC,CAAC,KAAe,EAAE,EAAE;gBACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAmC,CAAA;gBAC1E,MAAM,IAAI,GAAa;oBACrB,UAAU,KAAK,CAAC,UAAU,EAAE;oBAC5B,QAAQ,OAAO,EAAE;oBACjB,QAAQ,KAAK,CAAC,IAAI,EAAE;iBACrB,CAAA;gBACD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACtD,IAAI,KAAK,CAAC,QAAQ,GAAG,SAAS;oBAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAErD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;oBAC/B,IAAI,EAAQ,KAAK,CAAC,IAAI;oBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,IAAI,EAAQ,KAAK,CAAC,IAAI;oBACtB,KAAK,EAAO,KAAK,CAAC,KAAK;oBACvB,MAAM,EAAM,KAAK,CAAC,MAAM;oBACxB,QAAQ,EAAI,KAAK,CAAC,QAAQ;oBAC1B,KAAK,EAAO,KAAK,CAAC,KAAK;iBACxB,EAAE,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;CACF"}
@@ -10,6 +10,12 @@ export declare class ModelCollector implements Collector {
10
10
  readonly type: "model";
11
11
  constructor(storage: TelescopeStorage);
12
12
  register(): Promise<void>;
13
+ /**
14
+ * Safely converts a model instance to a plain object. If the value has
15
+ * a `toJSON()` method (e.g. RudderJS Model), use it. Otherwise try
16
+ * JSON round-trip with a circular-reference guard. Falls back to
17
+ * `String(value)` if all else fails.
18
+ */
13
19
  private observeModel;
14
20
  }
15
21
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/collectors/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9D;;;;GAIG;AACH,qBAAa,cAAe,YAAW,SAAS;IAIlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,qBAAoB;IACjC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;gBAEH,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/B,OAAO,CAAC,YAAY;CAyBrB"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/collectors/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D;;;;GAIG;AACH,qBAAa,cAAe,YAAW,SAAS;IAIlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,qBAAoB;IACjC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;gBAEH,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CA4BrB"}
@@ -1,4 +1,5 @@
1
1
  import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
2
3
  /**
3
4
  * Records model lifecycle events (created, updated, deleted) via Model.on().
4
5
  *
@@ -25,6 +26,12 @@ export class ModelCollector {
25
26
  // @rudderjs/orm not installed — skip
26
27
  }
27
28
  }
29
+ /**
30
+ * Safely converts a model instance to a plain object. If the value has
31
+ * a `toJSON()` method (e.g. RudderJS Model), use it. Otherwise try
32
+ * JSON round-trip with a circular-reference guard. Falls back to
33
+ * `String(value)` if all else fails.
34
+ */
28
35
  observeModel(modelName, ModelClass) {
29
36
  const storage = this.storage;
30
37
  for (const event of ['created', 'updated', 'deleted']) {
@@ -34,16 +41,52 @@ export class ModelCollector {
34
41
  action: event,
35
42
  };
36
43
  if (event === 'created' || event === 'updated') {
37
- content['attributes'] = args[0];
44
+ // Safely extract plain attributes model instances may have
45
+ // circular references (e.g. Prisma relations) that blow the stack.
46
+ content['attributes'] = safeSerialize(args[0]);
38
47
  }
39
48
  else if (event === 'deleted') {
40
49
  content['id'] = args[0];
41
50
  }
42
51
  storage.store(createEntry('model', content, {
43
52
  tags: [`model:${modelName}`, `action:${event}`],
53
+ ...batchOpts(),
44
54
  }));
45
55
  });
46
56
  }
47
57
  }
48
58
  }
59
+ /**
60
+ * Safely extract plain attributes from a model instance. Model objects
61
+ * may contain circular references (Prisma relations, back-references)
62
+ * that cause `JSON.stringify` / `createEntry` to blow the stack.
63
+ */
64
+ function safeSerialize(value) {
65
+ if (value === null || value === undefined)
66
+ return value;
67
+ if (typeof value !== 'object')
68
+ return value;
69
+ // If the model has toJSON(), trust it — RudderJS Models strip hidden fields
70
+ if (typeof value['toJSON'] === 'function') {
71
+ try {
72
+ return value.toJSON();
73
+ }
74
+ catch { /* fall through */ }
75
+ }
76
+ // JSON round-trip with circular reference guard
77
+ try {
78
+ const seen = new WeakSet();
79
+ return JSON.parse(JSON.stringify(value, (_key, val) => {
80
+ if (typeof val === 'object' && val !== null) {
81
+ if (seen.has(val))
82
+ return '[Circular]';
83
+ seen.add(val);
84
+ }
85
+ return val;
86
+ }));
87
+ }
88
+ catch {
89
+ return String(value);
90
+ }
91
+ }
49
92
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/collectors/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAII;IAHpB,IAAI,GAAG,iBAAiB,CAAA;IACxB,IAAI,GAAG,OAAgB,CAAA;IAEhC,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,aAEpB,CAAA;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG;gBAAE,OAAM;YAEzB,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;IAEO,YAAY,CAClB,SAAiB,EACjB,UAA8E;QAE9E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAU,EAAE,CAAC;YAC/D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC1C,MAAM,OAAO,GAA4B;oBACvC,KAAK,EAAG,SAAS;oBACjB,MAAM,EAAE,KAAK;iBACd,CAAA;gBAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/C,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjC,CAAC;qBAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACzB,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;oBAC1C,IAAI,EAAE,CAAC,SAAS,SAAS,EAAE,EAAE,UAAU,KAAK,EAAE,CAAC;iBAChD,CAAC,CAAC,CAAA;YACL,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/collectors/model.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/collectors/notification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9D;;GAEG;AACH,qBAAa,qBAAsB,YAAW,SAAS;IAIzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,4BAA2B;IACxC,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAS;gBAEV,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA+BhC"}
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/collectors/notification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D;;GAEG;AACH,qBAAa,qBAAsB,YAAW,SAAS;IAIzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,4BAA2B;IACxC,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAS;gBAEV,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA+BhC"}
@@ -1,4 +1,5 @@
1
1
  import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
2
3
  /**
3
4
  * Records notification dispatches by wrapping the ChannelRegistry's get method.
4
5
  */
@@ -28,7 +29,7 @@ export class NotificationCollector {
28
29
  class: notif.constructor.name,
29
30
  channel: name,
30
31
  notifiable: n['id'] ?? notifiable.constructor.name,
31
- }, { tags: [`notification:${notif.constructor.name}`, `channel:${name}`] }));
32
+ }, { tags: [`notification:${notif.constructor.name}`, `channel:${name}`], ...batchOpts() }));
32
33
  },
33
34
  };
34
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/collectors/notification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAIH;IAHpB,IAAI,GAAG,wBAAwB,CAAA;IAC/B,IAAI,GAAG,cAAuB,CAAA;IAEvC,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAA;YAClD,MAAM,QAAQ,GAAG,GAAG,CAAC,eAEpB,CAAA;YAED,MAAM,OAAO,GAAO,IAAI,CAAC,OAAO,CAAA;YAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAE/C,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAY,EAAmC,EAAE;gBAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,IAAI,CAAC,QAAQ;oBAAE,OAAO,QAAQ,CAAA;gBAE9B,OAAO;oBACL,KAAK,CAAC,IAAI,CAAC,UAAmB,EAAE,YAAqB;wBACnD,MAAO,QAAQ,CAAC,IAAsD,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;wBAChG,MAAM,KAAK,GAAG,YAA2E,CAAA;wBACzF,MAAM,CAAC,GAAO,UAAqC,CAAA;wBACnD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE;4BACxC,KAAK,EAAO,KAAK,CAAC,WAAW,CAAC,IAAI;4BAClC,OAAO,EAAK,IAAI;4BAChB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAK,UAAgD,CAAC,WAAW,CAAC,IAAI;yBAC1F,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC9E,CAAC;iBACqB,CAAA;YAC1B,CAAC,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/collectors/notification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAIH;IAHpB,IAAI,GAAG,wBAAwB,CAAA;IAC/B,IAAI,GAAG,cAAuB,CAAA;IAEvC,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAA;YAClD,MAAM,QAAQ,GAAG,GAAG,CAAC,eAEpB,CAAA;YAED,MAAM,OAAO,GAAO,IAAI,CAAC,OAAO,CAAA;YAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAE/C,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAY,EAAmC,EAAE;gBAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,IAAI,CAAC,QAAQ;oBAAE,OAAO,QAAQ,CAAA;gBAE9B,OAAO;oBACL,KAAK,CAAC,IAAI,CAAC,UAAmB,EAAE,YAAqB;wBACnD,MAAO,QAAQ,CAAC,IAAsD,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;wBAChG,MAAM,KAAK,GAAG,YAA2E,CAAA;wBACzF,MAAM,CAAC,GAAO,UAAqC,CAAA;wBACnD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE;4BACxC,KAAK,EAAO,KAAK,CAAC,WAAW,CAAC,IAAI;4BAClC,OAAO,EAAK,IAAI;4BAChB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAK,UAAgD,CAAC,WAAW,CAAC,IAAI;yBAC1F,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;oBAC9F,CAAC;iBACqB,CAAA;YAC1B,CAAC,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/collectors/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG/E;;GAEG;AACH,qBAAa,cAAe,YAAW,SAAS;IAK5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,QAAQ,CAAC,IAAI,qBAAoB;IACjC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;gBAGb,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAG,eAAe;IAGrC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA+BhC"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/collectors/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI/E;;GAEG;AACH,qBAAa,cAAe,YAAW,SAAS;IAK5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,QAAQ,CAAC,IAAI,qBAAoB;IACjC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;gBAGb,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAG,eAAe;IAGrC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAgChC"}
@@ -1,4 +1,5 @@
1
1
  import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
2
3
  /**
3
4
  * Records database queries by hooking into the ORM's query logging.
4
5
  */
@@ -23,18 +24,19 @@ export class QueryCollector {
23
24
  const storage = this.storage;
24
25
  const threshold = this.config.slowQueryThreshold ?? 100;
25
26
  adapter.onQuery((info) => {
27
+ const duration = Math.round(info.duration * 100) / 100;
26
28
  const tags = [];
27
- if (info.duration > threshold)
29
+ if (duration > threshold)
28
30
  tags.push('slow');
29
31
  if (info.model)
30
32
  tags.push(`model:${info.model}`);
31
33
  storage.store(createEntry('query', {
32
34
  sql: info.sql,
33
35
  bindings: info.bindings,
34
- duration: info.duration,
36
+ duration,
35
37
  connection: info.connection,
36
38
  model: info.model,
37
- }, { tags }));
39
+ }, { tags, ...batchOpts() }));
38
40
  });
39
41
  }
40
42
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/collectors/query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,cAAc;IAKN;IACA;IALV,IAAI,GAAG,iBAAiB,CAAA;IACxB,IAAI,GAAG,OAAgB,CAAA;IAEhC,YACmB,OAAyB,EACzB,MAAwB;QADxB,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAkB;IACxC,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,aAEpB,CAAA;YACD,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAAE,OAAM;YAEhC,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;YACrC,IAAI,CAAC,OAAO,EAAE,OAAO;gBAAE,OAAM;YAE7B,MAAM,OAAO,GAAK,IAAI,CAAC,OAAO,CAAA;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAA;YAEvD,OAAO,CAAC,OAAO,CAAC,CAAC,IAAe,EAAE,EAAE;gBAClC,MAAM,IAAI,GAAa,EAAE,CAAA;gBACzB,IAAI,IAAI,CAAC,QAAQ,GAAG,SAAS;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAChD,IAAI,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAEhD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE;oBACjC,GAAG,EAAS,IAAI,CAAC,GAAG;oBACpB,QAAQ,EAAI,IAAI,CAAC,QAAQ;oBACzB,QAAQ,EAAI,IAAI,CAAC,QAAQ;oBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK,EAAO,IAAI,CAAC,KAAK;iBACvB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/collectors/query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C;;GAEG;AACH,MAAM,OAAO,cAAc;IAKN;IACA;IALV,IAAI,GAAG,iBAAiB,CAAA;IACxB,IAAI,GAAG,OAAgB,CAAA;IAEhC,YACmB,OAAyB,EACzB,MAAwB;QADxB,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAkB;IACxC,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,aAEpB,CAAA;YACD,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAAE,OAAM;YAEhC,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;YACrC,IAAI,CAAC,OAAO,EAAE,OAAO;gBAAE,OAAM;YAE7B,MAAM,OAAO,GAAK,IAAI,CAAC,OAAO,CAAA;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAA;YAEvD,OAAO,CAAC,OAAO,CAAC,CAAC,IAAe,EAAE,EAAE;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;gBACtD,MAAM,IAAI,GAAa,EAAE,CAAA;gBACzB,IAAI,QAAQ,GAAG,SAAS;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC3C,IAAI,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAEhD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE;oBACjC,GAAG,EAAS,IAAI,CAAC,GAAG;oBACpB,QAAQ,EAAI,IAAI,CAAC,QAAQ;oBACzB,QAAQ;oBACR,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK,EAAO,IAAI,CAAC,KAAK;iBACvB,EAAE,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC;CACF"}
@@ -1,7 +1,8 @@
1
1
  import type { AppRequest, AppResponse } from '@rudderjs/contracts';
2
2
  import type { Collector, TelescopeStorage, TelescopeConfig } from '../types.js';
3
3
  /**
4
- * Records HTTP requests — method, URL, status, duration, headers, payload.
4
+ * Records HTTP requests — method, URL, status, duration, headers, payload,
5
+ * response status, IP, user-agent.
5
6
  * Installs as global middleware via the router.
6
7
  */
7
8
  export declare class RequestCollector implements Collector {
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/collectors/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG/E;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAK9C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,QAAQ,CAAC,IAAI,uBAAsB;IACnC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAS;gBAGf,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAG,eAAe;IAG3C,QAAQ,IAAI,IAAI;IAIhB,yDAAyD;IACzD,UAAU,KAIM,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC;IAkC5E,OAAO,CAAC,YAAY;IAOpB,+DAA+D;IAC/D,OAAO,CAAC,OAAO;CAShB"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/collectors/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAQ/E;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAK9C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,QAAQ,CAAC,IAAI,uBAAsB;IACnC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAS;gBAGf,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAG,eAAe;IAG3C,QAAQ,IAAI,IAAI;IAIhB,yDAAyD;IACzD,UAAU,KAMM,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC;IA2G5E,OAAO,CAAC,YAAY;IAOpB,+DAA+D;IAC/D,OAAO,CAAC,OAAO;CAShB"}
@@ -1,6 +1,11 @@
1
1
  import { createEntry } from '../storage.js';
2
+ import { redactHeaders, redactFields } from '../redact.js';
3
+ import { setBatchId } from '../batch-context.js';
4
+ const DEFAULT_HIDE_HEADERS = ['authorization', 'cookie', 'set-cookie', 'x-csrf-token', 'x-api-key'];
5
+ const DEFAULT_HIDE_FIELDS = ['password', 'password_confirmation', 'token', 'secret'];
2
6
  /**
3
- * Records HTTP requests — method, URL, status, duration, headers, payload.
7
+ * Records HTTP requests — method, URL, status, duration, headers, payload,
8
+ * response status, IP, user-agent.
4
9
  * Installs as global middleware via the router.
5
10
  */
6
11
  export class RequestCollector {
@@ -19,6 +24,8 @@ export class RequestCollector {
19
24
  middleware() {
20
25
  const storage = this.storage;
21
26
  const ignore = this.config.ignoreRequests ?? [];
27
+ const hideHeaders = this.config.hideRequestHeaders ?? DEFAULT_HIDE_HEADERS;
28
+ const hideFields = this.config.hideRequestFields ?? DEFAULT_HIDE_FIELDS;
22
29
  return async (req, res, next) => {
23
30
  // Skip Vite internals, static assets, and source files
24
31
  if (this.isAsset(req.path))
@@ -29,20 +36,87 @@ export class RequestCollector {
29
36
  const start = Date.now();
30
37
  const batchId = crypto.randomUUID();
31
38
  req['__telescopeBatchId'] = batchId;
32
- await next();
39
+ // Set batch context so collectors (query, cache, model) can correlate
40
+ setBatchId(batchId);
41
+ try {
42
+ await next();
43
+ }
44
+ finally {
45
+ setBatchId(null);
46
+ }
33
47
  const duration = Date.now() - start;
34
48
  const tags = [];
35
49
  if (duration > (this.config.slowQueryThreshold ?? 100))
36
50
  tags.push('slow');
51
+ // Extract response status from the res object
52
+ const status = res['statusCode'];
53
+ if (status && status >= 400)
54
+ tags.push('error');
55
+ // Extract IP and user-agent from request headers
56
+ const headers = req.headers;
57
+ const rawIp = req['ip'];
58
+ const ip = rawIp === '::1' || rawIp === '::ffff:127.0.0.1' ? '127.0.0.1' : rawIp;
59
+ const userAgent = headers['user-agent'];
60
+ const hostname = headers['host'];
61
+ // Response headers — Hono stores the final Response on c.res after handler runs
62
+ let responseHeaders;
63
+ try {
64
+ const c = res.raw;
65
+ if (c?.res) {
66
+ responseHeaders = {};
67
+ c.res.headers.forEach((v, k) => { responseHeaders[k] = v; });
68
+ responseHeaders = redactHeaders(responseHeaders, hideHeaders);
69
+ }
70
+ }
71
+ catch { /* ignore — non-Hono adapters may not expose c.res */ }
72
+ // Session data — read from the SessionInstance if middleware attached one
73
+ let sessionData;
74
+ try {
75
+ const rawReq = req.raw;
76
+ const session = rawReq?.['__rjs_session'];
77
+ if (session)
78
+ sessionData = redactFields(session.all(), hideFields);
79
+ }
80
+ catch { /* session middleware may not be installed */ }
81
+ // Route metadata — stashed by server-hono's registerRoute()
82
+ const rawReqMeta = req.raw;
83
+ const routeMeta = rawReqMeta?.['__rjs_route'];
84
+ const viewMeta = rawReqMeta?.['__rjs_view'];
85
+ // Authenticated user — read from @rudderjs/auth's AsyncLocalStorage context
86
+ let user;
87
+ try {
88
+ const { auth } = await import('@rudderjs/auth');
89
+ const current = await auth().user();
90
+ if (current) {
91
+ user = {
92
+ id: current['id'],
93
+ name: current['name'],
94
+ email: current['email'],
95
+ };
96
+ tags.push(`user:${current['id']}`);
97
+ }
98
+ }
99
+ catch { /* @rudderjs/auth may not be installed */ }
37
100
  const entry = createEntry('request', {
38
101
  method: req.method,
39
102
  url: req.url,
40
103
  path: req.path,
41
104
  query: req.query,
42
- headers: req.headers,
43
- body: req.body,
105
+ headers: redactHeaders(headers, hideHeaders),
106
+ body: redactFields(req.body, hideFields),
44
107
  duration,
45
108
  params: req.params,
109
+ status,
110
+ ip,
111
+ userAgent,
112
+ hostname,
113
+ responseHeaders,
114
+ session: sessionData,
115
+ user,
116
+ controller: routeMeta?.handler,
117
+ middleware: routeMeta?.middleware,
118
+ routePath: routeMeta?.path,
119
+ view: viewMeta,
46
120
  }, { batchId, tags });
47
121
  storage.store(entry);
48
122
  };
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/collectors/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/collectors/request.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,oBAAoB,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC,CAAA;AACnG,MAAM,mBAAmB,GAAI,CAAC,UAAU,EAAE,uBAAuB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;AAErF;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAKR;IACA;IALV,IAAI,GAAG,mBAAmB,CAAA;IAC1B,IAAI,GAAG,SAAkB,CAAA;IAElC,YACmB,OAAyB,EACzB,MAAwB;QADxB,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAkB;IACxC,CAAC;IAEJ,QAAQ;QACN,yFAAyF;IAC3F,CAAC;IAED,yDAAyD;IACzD,UAAU;QACR,MAAM,OAAO,GAAO,IAAI,CAAC,OAAO,CAAA;QAChC,MAAM,MAAM,GAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAA;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,oBAAoB,CAAA;QAC1E,MAAM,UAAU,GAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAK,mBAAmB,CAAA;QAEzE,OAAO,KAAK,EAAE,GAAe,EAAE,GAAgB,EAAE,IAAyB,EAAE,EAAE;YAC5E,uDAAuD;YACvD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,EAAE,CAAA;YACzC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,EAAE,CAAA;YACf,CAAC;YAED,MAAM,KAAK,GAAK,IAAI,CAAC,GAAG,EAAE,CAAA;YAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAGlC;YAAC,GAA0C,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAA;YAE5E,sEAAsE;YACtE,UAAU,CAAC,OAAO,CAAC,CAAA;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,EAAE,CAAA;YACd,CAAC;oBAAS,CAAC;gBACT,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;YACnC,MAAM,IAAI,GAAa,EAAE,CAAA;YACzB,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAEzE,8CAA8C;YAC9C,MAAM,MAAM,GAAI,GAA0C,CAAC,YAAY,CAAuB,CAAA;YAC9F,IAAI,MAAM,IAAI,MAAM,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAE/C,iDAAiD;YACjD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAkC,CAAA;YACtD,MAAM,KAAK,GAAI,GAA0C,CAAC,IAAI,CAAuB,CAAA;YACrF,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAA;YAChF,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAuB,CAAA;YAC7D,MAAM,QAAQ,GAAI,OAAO,CAAC,MAAM,CAAuB,CAAA;YAEvD,gFAAgF;YAChF,IAAI,eAAmD,CAAA;YACvD,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,GAAG,CAAC,GAAqC,CAAA;gBACnD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;oBACX,eAAe,GAAG,EAAE,CAAA;oBACpB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,eAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;oBAC5D,eAAe,GAAG,aAAa,CAAC,eAAe,EAAE,WAAW,CAAuC,CAAA;gBACrG,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,qDAAqD,CAAC,CAAC;YAEjE,0EAA0E;YAC1E,IAAI,WAAgD,CAAA;YACpD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,GAAG,CAAC,GAA0C,CAAA;gBAC7D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,eAAe,CAAmD,CAAA;gBAC3F,IAAI,OAAO;oBAAE,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAA4B,CAAA;YAC/F,CAAC;YAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;YAEzD,4DAA4D;YAC5D,MAAM,UAAU,GAAG,GAAG,CAAC,GAA0C,CAAA;YACjE,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,aAAa,CAE/B,CAAA;YACb,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC,YAAY,CAE7B,CAAA;YAEb,4EAA4E;YAC5E,IAAI,IAAyC,CAAA;YAC7C,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAE7C,CAAA;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;gBACnC,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,GAAG;wBACL,EAAE,EAAK,OAAO,CAAC,IAAI,CAAC;wBACpB,IAAI,EAAG,OAAO,CAAC,MAAM,CAAC;wBACtB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;qBACxB,CAAA;oBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,yCAAyC,CAAC,CAAC;YAErD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE;gBACnC,MAAM,EAAK,GAAG,CAAC,MAAM;gBACrB,GAAG,EAAQ,GAAG,CAAC,GAAG;gBAClB,IAAI,EAAO,GAAG,CAAC,IAAI;gBACnB,KAAK,EAAM,GAAG,CAAC,KAAK;gBACpB,OAAO,EAAI,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC;gBAC9C,IAAI,EAAO,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;gBAC7C,QAAQ;gBACR,MAAM,EAAK,GAAG,CAAC,MAAM;gBACrB,MAAM;gBACN,EAAE;gBACF,SAAS;gBACT,QAAQ;gBACR,eAAe;gBACf,OAAO,EAAK,WAAW;gBACvB,IAAI;gBACJ,UAAU,EAAE,SAAS,EAAE,OAAO;gBAC9B,UAAU,EAAE,SAAS,EAAE,UAAU;gBACjC,SAAS,EAAG,SAAS,EAAE,IAAI;gBAC3B,IAAI,EAAQ,QAAQ;aACrB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAErB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC,CAAA;IACH,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,QAAkB;QACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3D,OAAO,IAAI,KAAK,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,+DAA+D;IACvD,OAAO,CAAC,IAAY;QAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAa,OAAO,IAAI,CAAA,CAAE,sDAAsD;QACzG,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;YAAE,OAAO,IAAI,CAAA;QACjD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAU,OAAO,IAAI,CAAA,CAAE,iCAAiC;QACpF,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAQ,OAAO,IAAI,CAAA,CAAE,+BAA+B;QAClF,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAQ,OAAO,IAAI,CAAA,CAAE,aAAa;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;QAC3C,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,CAAuB,oCAAoC;IACzF,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ServiceProvider, type Application } from '@rudderjs/core';
1
+ import { ServiceProvider } from '@rudderjs/core';
2
2
  import { type TelescopeConfig, type TelescopeStorage, type TelescopeEntry, type EntryType, type Collector, type ListOptions } from './types.js';
3
3
  export type { TelescopeConfig, TelescopeStorage, TelescopeEntry, EntryType, Collector, ListOptions };
4
4
  export { MemoryStorage, SqliteStorage, createEntry } from './storage.js';
@@ -13,12 +13,23 @@ export { EventCollector } from './collectors/event.js';
13
13
  export { CacheCollector } from './collectors/cache.js';
14
14
  export { ScheduleCollector } from './collectors/schedule.js';
15
15
  export { ModelCollector } from './collectors/model.js';
16
+ export { CommandCollector } from './collectors/command.js';
17
+ export { BroadcastCollector } from './collectors/broadcast.js';
18
+ export { LiveCollector } from './collectors/live.js';
19
+ export { HttpCollector } from './collectors/http.js';
20
+ export { GateCollector } from './collectors/gate.js';
21
+ export { DumpCollector } from './collectors/dump.js';
22
+ export { AiCollector } from './collectors/ai.js';
23
+ export { McpCollector } from './collectors/mcp.js';
16
24
  export declare class TelescopeRegistry {
17
25
  private static storage;
18
26
  static set(storage: TelescopeStorage): void;
19
27
  static get(): TelescopeStorage | null;
20
28
  /** @internal — clears the registered storage. Used for testing. */
21
29
  static reset(): void;
30
+ static get recording(): boolean;
31
+ static set recording(v: boolean);
32
+ static toggleRecording(): boolean;
22
33
  }
23
34
  export declare class Telescope {
24
35
  private static store;
@@ -38,5 +49,9 @@ export declare class Telescope {
38
49
  * import { telescope } from '@rudderjs/telescope'
39
50
  * export default [..., telescope(configs.telescope), ...]
40
51
  */
41
- export declare function telescope(config?: TelescopeConfig): new (app: Application) => ServiceProvider;
52
+ export declare class TelescopeProvider extends ServiceProvider {
53
+ register(): void;
54
+ boot(): Promise<void>;
55
+ }
56
+ export { registerTelescopeRoutes, type RegisterTelescopeRoutesOptions } from './routes.js';
42
57
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAclE,OAAO,EAAiB,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAI9J,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,CAAA;AACpG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAItD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAgC;IAEtD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAC3C,MAAM,CAAC,GAAG,IAAI,gBAAgB,GAAG,IAAI;IACrC,mEAAmE;IACnE,MAAM,CAAC,KAAK,IAAI,IAAI;CACrB;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK;IAMpB,MAAM,CAAC,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,cAAc,EAAE;IAIpF,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,cAAc,GAAG,IAAI;IAI/E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;IAIxD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIpD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAG3D;AAID;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,MAAM,GAAE,eAAoB,GAAG,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe,CAkGjG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}