@adonis-agora/telescope 0.5.2 → 0.7.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 (188) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/configure.d.ts.map +1 -1
  3. package/dist/configure.js +6 -0
  4. package/dist/configure.js.map +1 -1
  5. package/dist/providers/telescope_alerts_provider.d.ts.map +1 -1
  6. package/dist/providers/telescope_alerts_provider.js +1 -1
  7. package/dist/providers/telescope_alerts_provider.js.map +1 -1
  8. package/dist/providers/telescope_cpu_profiling_provider.d.ts +28 -0
  9. package/dist/providers/telescope_cpu_profiling_provider.d.ts.map +1 -0
  10. package/dist/providers/telescope_cpu_profiling_provider.js +45 -0
  11. package/dist/providers/telescope_cpu_profiling_provider.js.map +1 -0
  12. package/dist/providers/telescope_mcp_provider.d.ts.map +1 -1
  13. package/dist/providers/telescope_mcp_provider.js +1 -1
  14. package/dist/providers/telescope_mcp_provider.js.map +1 -1
  15. package/dist/providers/telescope_provider.d.ts.map +1 -1
  16. package/dist/providers/telescope_provider.js +9 -3
  17. package/dist/providers/telescope_provider.js.map +1 -1
  18. package/dist/providers/telescope_ui_provider.d.ts.map +1 -1
  19. package/dist/providers/telescope_ui_provider.js +163 -12
  20. package/dist/providers/telescope_ui_provider.js.map +1 -1
  21. package/dist/providers/telescope_watchers_provider.d.ts +10 -0
  22. package/dist/providers/telescope_watchers_provider.d.ts.map +1 -1
  23. package/dist/providers/telescope_watchers_provider.js +32 -0
  24. package/dist/providers/telescope_watchers_provider.js.map +1 -1
  25. package/dist/src/ai/index.d.ts +1 -1
  26. package/dist/src/ai/index.js +1 -1
  27. package/dist/src/alerts/alert_rule.d.ts +84 -3
  28. package/dist/src/alerts/alert_rule.d.ts.map +1 -1
  29. package/dist/src/alerts/alerter.d.ts +24 -2
  30. package/dist/src/alerts/alerter.d.ts.map +1 -1
  31. package/dist/src/alerts/alerter.js +122 -11
  32. package/dist/src/alerts/alerter.js.map +1 -1
  33. package/dist/src/alerts/define_config.d.ts +9 -1
  34. package/dist/src/alerts/define_config.d.ts.map +1 -1
  35. package/dist/src/alerts/define_config.js +8 -0
  36. package/dist/src/alerts/define_config.js.map +1 -1
  37. package/dist/src/alerts/exception_source.d.ts +16 -7
  38. package/dist/src/alerts/exception_source.d.ts.map +1 -1
  39. package/dist/src/alerts/exception_source.js +29 -17
  40. package/dist/src/alerts/exception_source.js.map +1 -1
  41. package/dist/src/alerts/index.d.ts +2 -2
  42. package/dist/src/alerts/index.d.ts.map +1 -1
  43. package/dist/src/alerts/index.js +1 -1
  44. package/dist/src/alerts/index.js.map +1 -1
  45. package/dist/src/alerts/slack_format.d.ts +8 -0
  46. package/dist/src/alerts/slack_format.d.ts.map +1 -1
  47. package/dist/src/alerts/slack_format.js +128 -3
  48. package/dist/src/alerts/slack_format.js.map +1 -1
  49. package/dist/src/client_errors/ingestor.d.ts.map +1 -1
  50. package/dist/src/client_errors/ingestor.js +20 -1
  51. package/dist/src/client_errors/ingestor.js.map +1 -1
  52. package/dist/src/client_errors/validation.d.ts.map +1 -1
  53. package/dist/src/client_errors/validation.js +7 -2
  54. package/dist/src/client_errors/validation.js.map +1 -1
  55. package/dist/src/define_config.d.ts +51 -0
  56. package/dist/src/define_config.d.ts.map +1 -1
  57. package/dist/src/define_config.js +6 -0
  58. package/dist/src/define_config.js.map +1 -1
  59. package/dist/src/diagnostics_registry.d.ts +15 -0
  60. package/dist/src/diagnostics_registry.d.ts.map +1 -1
  61. package/dist/src/diagnostics_registry.js +19 -0
  62. package/dist/src/diagnostics_registry.js.map +1 -1
  63. package/dist/src/diagnostics_watcher.d.ts +28 -1
  64. package/dist/src/diagnostics_watcher.d.ts.map +1 -1
  65. package/dist/src/diagnostics_watcher.js +17 -2
  66. package/dist/src/diagnostics_watcher.js.map +1 -1
  67. package/dist/src/entry.d.ts +8 -0
  68. package/dist/src/entry.d.ts.map +1 -1
  69. package/dist/src/entry.js +8 -0
  70. package/dist/src/entry.js.map +1 -1
  71. package/dist/src/extension/types.d.ts +35 -2
  72. package/dist/src/extension/types.d.ts.map +1 -1
  73. package/dist/src/extension/types.js.map +1 -1
  74. package/dist/src/index.d.ts +7 -7
  75. package/dist/src/index.d.ts.map +1 -1
  76. package/dist/src/index.js +3 -3
  77. package/dist/src/index.js.map +1 -1
  78. package/dist/src/mcp/index.d.ts +1 -1
  79. package/dist/src/mcp/index.js +1 -1
  80. package/dist/src/mcp/server.d.ts.map +1 -1
  81. package/dist/src/mcp/server.js +7 -2
  82. package/dist/src/mcp/server.js.map +1 -1
  83. package/dist/src/metrics/waterfall.d.ts.map +1 -1
  84. package/dist/src/metrics/waterfall.js +6 -0
  85. package/dist/src/metrics/waterfall.js.map +1 -1
  86. package/dist/src/profiling/aggregate-profile.d.ts +21 -0
  87. package/dist/src/profiling/aggregate-profile.d.ts.map +1 -0
  88. package/dist/src/profiling/aggregate-profile.js +124 -0
  89. package/dist/src/profiling/aggregate-profile.js.map +1 -0
  90. package/dist/src/profiling/cpu-profiler.d.ts +59 -0
  91. package/dist/src/profiling/cpu-profiler.d.ts.map +1 -0
  92. package/dist/src/profiling/cpu-profiler.js +94 -0
  93. package/dist/src/profiling/cpu-profiler.js.map +1 -0
  94. package/dist/src/profiling/define_config.d.ts +38 -0
  95. package/dist/src/profiling/define_config.d.ts.map +1 -0
  96. package/dist/src/profiling/define_config.js +23 -0
  97. package/dist/src/profiling/define_config.js.map +1 -0
  98. package/dist/src/profiling/index.d.ts +11 -0
  99. package/dist/src/profiling/index.d.ts.map +1 -0
  100. package/dist/src/profiling/index.js +7 -0
  101. package/dist/src/profiling/index.js.map +1 -0
  102. package/dist/src/profiling/profiler_service.d.ts +100 -0
  103. package/dist/src/profiling/profiler_service.d.ts.map +1 -0
  104. package/dist/src/profiling/profiler_service.js +162 -0
  105. package/dist/src/profiling/profiler_service.js.map +1 -0
  106. package/dist/src/profiling/types.d.ts +86 -0
  107. package/dist/src/profiling/types.d.ts.map +1 -0
  108. package/dist/src/profiling/types.js +5 -0
  109. package/dist/src/profiling/types.js.map +1 -0
  110. package/dist/src/redaction/redact.d.ts +21 -0
  111. package/dist/src/redaction/redact.d.ts.map +1 -1
  112. package/dist/src/redaction/redact.js +18 -0
  113. package/dist/src/redaction/redact.js.map +1 -1
  114. package/dist/src/redaction/redacting_store.d.ts.map +1 -1
  115. package/dist/src/redaction/redacting_store.js +10 -1
  116. package/dist/src/redaction/redacting_store.js.map +1 -1
  117. package/dist/src/registry.d.ts +36 -1
  118. package/dist/src/registry.d.ts.map +1 -1
  119. package/dist/src/registry.js +24 -1
  120. package/dist/src/registry.js.map +1 -1
  121. package/dist/src/request_watcher.d.ts +68 -0
  122. package/dist/src/request_watcher.d.ts.map +1 -1
  123. package/dist/src/request_watcher.js +101 -0
  124. package/dist/src/request_watcher.js.map +1 -1
  125. package/dist/src/service.d.ts.map +1 -1
  126. package/dist/src/service.js.map +1 -1
  127. package/dist/src/telescope_middleware.d.ts.map +1 -1
  128. package/dist/src/telescope_middleware.js +30 -1
  129. package/dist/src/telescope_middleware.js.map +1 -1
  130. package/dist/src/ui/api.d.ts +41 -1
  131. package/dist/src/ui/api.d.ts.map +1 -1
  132. package/dist/src/ui/api.js +27 -1
  133. package/dist/src/ui/api.js.map +1 -1
  134. package/dist/src/ui/dashboard.html +58 -10
  135. package/dist/src/ui/define_config.d.ts +26 -0
  136. package/dist/src/ui/define_config.d.ts.map +1 -1
  137. package/dist/src/ui/define_config.js +8 -0
  138. package/dist/src/ui/define_config.js.map +1 -1
  139. package/dist/src/ui/diagnosis_api.d.ts +33 -0
  140. package/dist/src/ui/diagnosis_api.d.ts.map +1 -0
  141. package/dist/src/ui/diagnosis_api.js +60 -0
  142. package/dist/src/ui/diagnosis_api.js.map +1 -0
  143. package/dist/src/ui/ext_table.d.ts +50 -0
  144. package/dist/src/ui/ext_table.d.ts.map +1 -0
  145. package/dist/src/ui/ext_table.js +42 -0
  146. package/dist/src/ui/ext_table.js.map +1 -0
  147. package/dist/src/ui/extension_api.d.ts +6 -2
  148. package/dist/src/ui/extension_api.d.ts.map +1 -1
  149. package/dist/src/ui/extension_api.js +7 -2
  150. package/dist/src/ui/extension_api.js.map +1 -1
  151. package/dist/src/ui/index.d.ts +10 -2
  152. package/dist/src/ui/index.d.ts.map +1 -1
  153. package/dist/src/ui/index.js +9 -1
  154. package/dist/src/ui/index.js.map +1 -1
  155. package/dist/src/ui/profiles_api.d.ts +48 -0
  156. package/dist/src/ui/profiles_api.d.ts.map +1 -0
  157. package/dist/src/ui/profiles_api.js +94 -0
  158. package/dist/src/ui/profiles_api.js.map +1 -0
  159. package/dist/src/ui/queue_manager_api.d.ts +46 -0
  160. package/dist/src/ui/queue_manager_api.d.ts.map +1 -0
  161. package/dist/src/ui/queue_manager_api.js +118 -0
  162. package/dist/src/ui/queue_manager_api.js.map +1 -0
  163. package/dist/src/ui/schedules_api.d.ts +43 -0
  164. package/dist/src/ui/schedules_api.d.ts.map +1 -0
  165. package/dist/src/ui/schedules_api.js +46 -0
  166. package/dist/src/ui/schedules_api.js.map +1 -0
  167. package/dist/src/watchers/cron_next_run.d.ts +8 -0
  168. package/dist/src/watchers/cron_next_run.d.ts.map +1 -0
  169. package/dist/src/watchers/cron_next_run.js +67 -0
  170. package/dist/src/watchers/cron_next_run.js.map +1 -0
  171. package/dist/src/watchers/define_config.d.ts +28 -1
  172. package/dist/src/watchers/define_config.d.ts.map +1 -1
  173. package/dist/src/watchers/define_config.js +5 -0
  174. package/dist/src/watchers/define_config.js.map +1 -1
  175. package/dist/src/watchers/index.d.ts +7 -4
  176. package/dist/src/watchers/index.d.ts.map +1 -1
  177. package/dist/src/watchers/index.js +5 -2
  178. package/dist/src/watchers/index.js.map +1 -1
  179. package/dist/src/watchers/queue_manager.d.ts +229 -0
  180. package/dist/src/watchers/queue_manager.d.ts.map +1 -0
  181. package/dist/src/watchers/queue_manager.js +223 -0
  182. package/dist/src/watchers/queue_manager.js.map +1 -0
  183. package/dist/src/watchers/schedule_watcher.d.ts +94 -1
  184. package/dist/src/watchers/schedule_watcher.d.ts.map +1 -1
  185. package/dist/src/watchers/schedule_watcher.js +89 -2
  186. package/dist/src/watchers/schedule_watcher.js.map +1 -1
  187. package/dist/stubs/config/telescope_cpu_profiling.stub +0 -0
  188. package/package.json +29 -14
@@ -1,5 +1,6 @@
1
1
  import { currentTraceId } from '../context_accessor.js';
2
2
  import { EntryType } from '../entry.js';
3
+ import { nextCronRunMs } from './cron_next_run.js';
3
4
  import { safeRecord } from './record.js';
4
5
  /** The `type` of the entries this watcher records. */
5
6
  export const SCHEDULED_TASK_ENTRY_TYPE = EntryType.ScheduledTask;
@@ -48,6 +49,23 @@ function getDefaultScheduleWatcher() {
48
49
  * is fire-and-forget and fully guarded: a telescope failure can never break (or
49
50
  * delay) a scheduled task.
50
51
  *
52
+ * ## The "Live Schedules" registry — the same explicit-integration philosophy, one layer up
53
+ * `recordScheduledRun`/`scheduleTask` answer "what already ran?"; they say nothing about "what
54
+ * schedules EXIST and when will they next fire?" — because, per the section above, AdonisJS gives us
55
+ * no registry of that to read (no `@Cron()` scanning, no `SchedulerRegistry`). {@link register} /
56
+ * {@link registerSchedule} closes that gap the same way: an EXPLICIT, idempotent call the host makes
57
+ * once per scheduled task (typically right next to where it wires the task into whatever scheduler
58
+ * it uses — `adonisjs-scheduler`, `@adonis-agora/durable`'s `@Scheduled`, a hand-rolled interval,
59
+ * …), analogous to how `nestjs-telescope`'s schedule package reads `@nestjs/schedule`'s
60
+ * `SchedulerRegistry` — except here nothing can be read, only told.
61
+ *
62
+ * `nextRunAt` is computed from the registered cron expression via the OPTIONAL `cron-parser` peer
63
+ * (see `cron_next_run.ts`); it is `null` for non-cron kinds or when the peer is absent — an honest
64
+ * "unknown" rather than a guess. There is deliberately no `running`/active-state field (unlike the
65
+ * NestJS `ScheduledTask.running`, which reads a real `CronJob.running` flag off `@nestjs/schedule`'s
66
+ * internals): AdonisJS has no equivalent object to read a running/stopped flag off, so faking one
67
+ * would be strictly worse than omitting it.
68
+ *
51
69
  * Idiomatic Adonis: a plain class, no DI decorators. The provider constructs it
52
70
  * from `config/telescope_watchers.ts` and calls {@link start} to publish it as the
53
71
  * default backing the bare {@link scheduleTask} / {@link recordScheduledRun}
@@ -57,6 +75,7 @@ export class ScheduleWatcher {
57
75
  type = EntryType.ScheduledTask;
58
76
  slowMs;
59
77
  clock;
78
+ registrations = new Map();
60
79
  constructor(options = {}) {
61
80
  this.slowMs = options.slowMs ?? DEFAULT_SLOW_MS;
62
81
  this.clock = options.clock ?? { now: () => Date.now() };
@@ -67,11 +86,37 @@ export class ScheduleWatcher {
67
86
  start() {
68
87
  setDefaultScheduleWatcher(this);
69
88
  }
70
- /** Unpublish this instance as the default (if it is). Never touches globals. */
89
+ /** Unpublish this instance as the default (if it is). Never touches globals. Registrations are
90
+ * kept (a `stop`/`start` cycle — e.g. hot reload — shouldn't lose them), so a fresh `start()`
91
+ * sees the same registry; call {@link unregister} explicitly to drop one. */
71
92
  stop() {
72
93
  if (getDefaultScheduleWatcher() === this)
73
94
  setDefaultScheduleWatcher(null);
74
95
  }
96
+ /**
97
+ * Register (or re-register — idempotent by `name`) a schedule so it shows up in
98
+ * {@link list} with a computed `nextRunAt`, joined against its `scheduled_task` run history by the
99
+ * UI layer. Call this once per scheduled task, e.g. right after wiring it into your scheduler:
100
+ *
101
+ * @example
102
+ * import { registerSchedule, scheduleTask } from '@adonis-agora/telescope/watchers'
103
+ * registerSchedule({ name: 'prune-sessions', schedule: '0 * * * *', kind: 'cron' })
104
+ * scheduler.call(() => scheduleTask('prune-sessions', () => Session.pruneExpired(), {
105
+ * schedule: '0 * * * *',
106
+ * })).hourly()
107
+ */
108
+ register(registration) {
109
+ this.registrations.set(registration.name, registration);
110
+ }
111
+ /** Drop a registration (the task was removed / the app is shutting it down). No-op if unknown. */
112
+ unregister(name) {
113
+ this.registrations.delete(name);
114
+ }
115
+ /** Every registered schedule, with `nextRunAt` computed from `now`. Order is registration order. */
116
+ list() {
117
+ const now = this.clock.now();
118
+ return [...this.registrations.values()].map((reg) => toRegisteredSchedule(reg, now));
119
+ }
75
120
  /** Record one already-completed scheduled run. Fire-and-forget; never throws. */
76
121
  record(run) {
77
122
  safeRecord(buildScheduleEntry(run, this.slowMs), 'ScheduleWatcher');
@@ -145,7 +190,12 @@ export function buildScheduleEntry(run, slowMs = DEFAULT_SLOW_MS) {
145
190
  failureReason,
146
191
  traceId,
147
192
  };
148
- const tags = ['schedule', `schedule:${kind}`, `task:${run.name}`, `status:${run.status}`];
193
+ const tags = [
194
+ 'schedule',
195
+ `schedule:${kind}`,
196
+ `task:${run.name}`,
197
+ `status:${run.status}`,
198
+ ];
149
199
  if (failed)
150
200
  tags.push('failed');
151
201
  if (durationMs >= slowMs)
@@ -164,6 +214,43 @@ export function buildScheduleEntry(run, slowMs = DEFAULT_SLOW_MS) {
164
214
  function errorMessage(error) {
165
215
  return error instanceof Error ? error.message : String(error);
166
216
  }
217
+ /** Map a registration + "now" to its {@link RegisteredSchedule}, computing `nextRunAt` for
218
+ * `cron`-kind entries. Exported so it's unit-testable without a live watcher. */
219
+ export function toRegisteredSchedule(reg, nowMs) {
220
+ const kind = reg.kind ?? 'cron';
221
+ const schedule = typeof reg.schedule === 'string' ? reg.schedule : null;
222
+ const timezone = typeof reg.timezone === 'string' ? reg.timezone : null;
223
+ const nextRunMs = kind === 'cron' && schedule !== null ? nextCronRunMs(schedule, nowMs, timezone) : null;
224
+ return {
225
+ name: reg.name,
226
+ kind,
227
+ schedule,
228
+ timezone,
229
+ nextRunAt: nextRunMs !== null ? new Date(nextRunMs).toISOString() : null,
230
+ };
231
+ }
232
+ /**
233
+ * Register (or re-register) a schedule through the provider-published default watcher, so it shows
234
+ * up in the dashboard's Live Schedules view. A NO-OP when the schedule watcher is not enabled, so
235
+ * it's safe to call unconditionally (e.g. at the top of a boot file that wires up cron jobs).
236
+ *
237
+ * @example
238
+ * import { registerSchedule } from '@adonis-agora/telescope/watchers'
239
+ * registerSchedule({ name: 'prune-sessions', schedule: '0 * * * *', kind: 'cron' })
240
+ */
241
+ export function registerSchedule(registration) {
242
+ getDefaultScheduleWatcher()?.register(registration);
243
+ }
244
+ /** Drop a registration through the provider-published default watcher. A no-op when the schedule
245
+ * watcher is not enabled or the name was never registered. */
246
+ export function unregisterSchedule(name) {
247
+ getDefaultScheduleWatcher()?.unregister(name);
248
+ }
249
+ /** Every registered schedule (with computed `nextRunAt`) through the provider-published default
250
+ * watcher, or `[]` when the schedule watcher is not enabled. */
251
+ export function listRegisteredSchedules() {
252
+ return getDefaultScheduleWatcher()?.list() ?? [];
253
+ }
167
254
  /**
168
255
  * Record one scheduled-task run through the provider-published default watcher.
169
256
  * A NO-OP when the schedule watcher is not enabled, so it is safe to call from a
@@ -1 +1 @@
1
- {"version":3,"file":"schedule_watcher.js","sourceRoot":"","sources":["../../../src/watchers/schedule_watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule_watcher.js","sourceRoot":"","sources":["../../../src/watchers/schedule_watcher.ts"],"names":[],"mappings":"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"}
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonis-agora/telescope",
3
- "version": "0.5.2",
3
+ "version": "0.7.0",
4
4
  "description": "Laravel Telescope-style headless observability for AdonisJS — records HTTP requests and every Agora diagnostics event as queryable entries, plus opt-in subpaths for per-technology watchers, a web dashboard, AI exception diagnosis, and alerting.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -82,6 +82,16 @@
82
82
  "types": "./dist/providers/telescope_alerts_provider.d.ts",
83
83
  "import": "./dist/providers/telescope_alerts_provider.js",
84
84
  "default": "./dist/providers/telescope_alerts_provider.js"
85
+ },
86
+ "./cpu_profiling": {
87
+ "types": "./dist/src/profiling/index.d.ts",
88
+ "import": "./dist/src/profiling/index.js",
89
+ "default": "./dist/src/profiling/index.js"
90
+ },
91
+ "./cpu_profiling_provider": {
92
+ "types": "./dist/providers/telescope_cpu_profiling_provider.d.ts",
93
+ "import": "./dist/providers/telescope_cpu_profiling_provider.js",
94
+ "default": "./dist/providers/telescope_cpu_profiling_provider.js"
85
95
  }
86
96
  },
87
97
  "files": [
@@ -99,7 +109,8 @@
99
109
  "@adonisjs/lucid": "^22.4.0",
100
110
  "@adonisjs/mail": "^10.2.0",
101
111
  "@adonisjs/cache": "^2.1.0",
102
- "@anthropic-ai/sdk": "^0.32.0"
112
+ "@anthropic-ai/sdk": "^0.32.0",
113
+ "cron-parser": "^4.0.0 || ^5.0.0"
103
114
  },
104
115
  "peerDependenciesMeta": {
105
116
  "@adonisjs/lucid": {
@@ -113,19 +124,23 @@
113
124
  },
114
125
  "@anthropic-ai/sdk": {
115
126
  "optional": true
127
+ },
128
+ "cron-parser": {
129
+ "optional": true
116
130
  }
117
131
  },
118
132
  "devDependencies": {
119
- "@adonisjs/assembler": "^8.4.0",
120
- "@adonisjs/core": "^7.3.0",
121
- "@adonisjs/lucid": "^22.4.0",
122
- "@anthropic-ai/sdk": "^0.32.0",
123
- "@types/better-sqlite3": "^7.6.0",
124
- "@types/node": "^20.0.0",
125
- "better-sqlite3": "^12.0.0",
126
- "luxon": "^3.4.4",
127
- "typescript": "^5.4.0",
128
- "vitest": "^3.0.0"
133
+ "@adonisjs/assembler": "8.4.0",
134
+ "@adonisjs/core": "7.4.0",
135
+ "@adonisjs/lucid": "22.4.2",
136
+ "@anthropic-ai/sdk": "0.116.0",
137
+ "@types/better-sqlite3": "7.6.13",
138
+ "@types/node": "20.19.43",
139
+ "better-sqlite3": "12.11.1",
140
+ "cron-parser": "4.9.0",
141
+ "luxon": "3.7.2",
142
+ "typescript": "5.9.3",
143
+ "vitest": "3.2.7"
129
144
  },
130
145
  "engines": {
131
146
  "node": ">=20.6.0"
@@ -141,10 +156,10 @@
141
156
  ],
142
157
  "scripts": {
143
158
  "build": "tsc -p tsconfig.json && pnpm run copy:stubs && pnpm run copy:assets",
144
- "copy:stubs": "mkdir -p dist/stubs/config dist/stubs/database/migrations && cp stubs/config/telescope.stub dist/stubs/config/telescope.stub && cp stubs/config/telescope_watchers.stub dist/stubs/config/telescope_watchers.stub && cp stubs/config/telescope_ui.stub dist/stubs/config/telescope_ui.stub && cp stubs/config/telescope_ai.stub dist/stubs/config/telescope_ai.stub && cp stubs/config/telescope_alerts.stub dist/stubs/config/telescope_alerts.stub && cp stubs/config/telescope_mcp.stub dist/stubs/config/telescope_mcp.stub && cp stubs/database/migrations/create_telescope_entries_table.stub dist/stubs/database/migrations/create_telescope_entries_table.stub",
159
+ "copy:stubs": "mkdir -p dist/stubs/config dist/stubs/database/migrations && cp stubs/config/telescope.stub dist/stubs/config/telescope.stub && cp stubs/config/telescope_watchers.stub dist/stubs/config/telescope_watchers.stub && cp stubs/config/telescope_ui.stub dist/stubs/config/telescope_ui.stub && cp stubs/config/telescope_ai.stub dist/stubs/config/telescope_ai.stub && cp stubs/config/telescope_alerts.stub dist/stubs/config/telescope_alerts.stub && cp stubs/config/telescope_mcp.stub dist/stubs/config/telescope_mcp.stub && cp stubs/config/telescope_cpu_profiling.stub dist/stubs/config/telescope_cpu_profiling.stub && cp stubs/database/migrations/create_telescope_entries_table.stub dist/stubs/database/migrations/create_telescope_entries_table.stub",
145
160
  "copy:assets": "mkdir -p dist/src/ui && cp src/ui/dashboard.html dist/src/ui/dashboard.html",
146
161
  "test": "vitest run --passWithNoTests",
147
162
  "test:watch": "vitest",
148
- "typecheck": "tsc -p tsconfig.json --noEmit"
163
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.tests.json"
149
164
  }
150
165
  }