@uptimizr/collector-server 2.0.1 → 2.2.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 (139) hide show
  1. package/AGENTS.md +187 -11
  2. package/README.md +91 -7
  3. package/dist/__tests__/support/registryRequests.d.ts +2 -1
  4. package/dist/__tests__/support/registryRequests.d.ts.map +1 -1
  5. package/dist/__tests__/support/registryRequests.js +17 -1
  6. package/dist/__tests__/support/registryRequests.js.map +1 -1
  7. package/dist/__tests__/support/subscriptionFixtures.d.ts +63 -0
  8. package/dist/__tests__/support/subscriptionFixtures.d.ts.map +1 -0
  9. package/dist/__tests__/support/subscriptionFixtures.js +17 -0
  10. package/dist/__tests__/support/subscriptionFixtures.js.map +1 -0
  11. package/dist/agentReport.d.ts +256 -0
  12. package/dist/agentReport.d.ts.map +1 -0
  13. package/dist/agentReport.js +861 -0
  14. package/dist/agentReport.js.map +1 -0
  15. package/dist/app.d.ts +13 -0
  16. package/dist/app.d.ts.map +1 -1
  17. package/dist/app.js +112 -5
  18. package/dist/app.js.map +1 -1
  19. package/dist/audit.d.ts +5 -1
  20. package/dist/audit.d.ts.map +1 -1
  21. package/dist/audit.js +24 -4
  22. package/dist/audit.js.map +1 -1
  23. package/dist/auth.d.ts +41 -1
  24. package/dist/auth.d.ts.map +1 -1
  25. package/dist/auth.js +47 -0
  26. package/dist/auth.js.map +1 -1
  27. package/dist/cli.js +133 -13
  28. package/dist/cli.js.map +1 -1
  29. package/dist/cliStore.d.ts +31 -2
  30. package/dist/cliStore.d.ts.map +1 -1
  31. package/dist/cliStore.js +34 -0
  32. package/dist/cliStore.js.map +1 -1
  33. package/dist/clickhouseStore.d.ts.map +1 -1
  34. package/dist/clickhouseStore.js +44 -2
  35. package/dist/clickhouseStore.js.map +1 -1
  36. package/dist/config.d.ts +49 -0
  37. package/dist/config.d.ts.map +1 -1
  38. package/dist/config.js +21 -0
  39. package/dist/config.js.map +1 -1
  40. package/dist/connectionLimiter.d.ts +23 -0
  41. package/dist/connectionLimiter.d.ts.map +1 -0
  42. package/dist/connectionLimiter.js +24 -0
  43. package/dist/connectionLimiter.js.map +1 -0
  44. package/dist/duckdbStore.d.ts.map +1 -1
  45. package/dist/duckdbStore.js +44 -1
  46. package/dist/duckdbStore.js.map +1 -1
  47. package/dist/internalDispatch.d.ts +36 -0
  48. package/dist/internalDispatch.d.ts.map +1 -0
  49. package/dist/internalDispatch.js +50 -0
  50. package/dist/internalDispatch.js.map +1 -0
  51. package/dist/memoryStore.d.ts.map +1 -1
  52. package/dist/memoryStore.js +314 -1
  53. package/dist/memoryStore.js.map +1 -1
  54. package/dist/mssqlStore.d.ts.map +1 -1
  55. package/dist/mssqlStore.js +44 -2
  56. package/dist/mssqlStore.js.map +1 -1
  57. package/dist/postgresStore.d.ts.map +1 -1
  58. package/dist/postgresStore.js +44 -2
  59. package/dist/postgresStore.js.map +1 -1
  60. package/dist/projectMetadata.d.ts +82 -0
  61. package/dist/projectMetadata.d.ts.map +1 -0
  62. package/dist/projectMetadata.js +50 -0
  63. package/dist/projectMetadata.js.map +1 -0
  64. package/dist/routes/context.d.ts +135 -0
  65. package/dist/routes/context.d.ts.map +1 -0
  66. package/dist/routes/context.js +306 -0
  67. package/dist/routes/context.js.map +1 -0
  68. package/dist/routes/insights.d.ts +36 -0
  69. package/dist/routes/insights.d.ts.map +1 -0
  70. package/dist/routes/insights.js +810 -0
  71. package/dist/routes/insights.js.map +1 -0
  72. package/dist/routes/live.d.ts +8 -0
  73. package/dist/routes/live.d.ts.map +1 -1
  74. package/dist/routes/live.js +8 -7
  75. package/dist/routes/live.js.map +1 -1
  76. package/dist/routes/mcp.d.ts +36 -0
  77. package/dist/routes/mcp.d.ts.map +1 -0
  78. package/dist/routes/mcp.js +262 -0
  79. package/dist/routes/mcp.js.map +1 -0
  80. package/dist/routes/meta.d.ts +16 -2
  81. package/dist/routes/meta.d.ts.map +1 -1
  82. package/dist/routes/meta.js +699 -10
  83. package/dist/routes/meta.js.map +1 -1
  84. package/dist/routes/metadata.d.ts +31 -0
  85. package/dist/routes/metadata.d.ts.map +1 -0
  86. package/dist/routes/metadata.js +163 -0
  87. package/dist/routes/metadata.js.map +1 -0
  88. package/dist/routes/narrative.d.ts +36 -0
  89. package/dist/routes/narrative.d.ts.map +1 -0
  90. package/dist/routes/narrative.js +95 -0
  91. package/dist/routes/narrative.js.map +1 -0
  92. package/dist/routes/panels.d.ts +44 -0
  93. package/dist/routes/panels.d.ts.map +1 -0
  94. package/dist/routes/panels.js +108 -0
  95. package/dist/routes/panels.js.map +1 -0
  96. package/dist/routes/query-dsl.d.ts +50 -0
  97. package/dist/routes/query-dsl.d.ts.map +1 -0
  98. package/dist/routes/query-dsl.js +359 -0
  99. package/dist/routes/query-dsl.js.map +1 -0
  100. package/dist/routes/query.d.ts +36 -0
  101. package/dist/routes/query.d.ts.map +1 -1
  102. package/dist/routes/query.js +101 -13
  103. package/dist/routes/query.js.map +1 -1
  104. package/dist/routes/subscriptions.d.ts +52 -0
  105. package/dist/routes/subscriptions.d.ts.map +1 -0
  106. package/dist/routes/subscriptions.js +290 -0
  107. package/dist/routes/subscriptions.js.map +1 -0
  108. package/dist/store.d.ts +113 -2
  109. package/dist/store.d.ts.map +1 -1
  110. package/dist/subscriptions/cli.d.ts +36 -0
  111. package/dist/subscriptions/cli.d.ts.map +1 -0
  112. package/dist/subscriptions/cli.js +143 -0
  113. package/dist/subscriptions/cli.js.map +1 -0
  114. package/dist/subscriptions/delivery.d.ts +101 -0
  115. package/dist/subscriptions/delivery.d.ts.map +1 -0
  116. package/dist/subscriptions/delivery.js +165 -0
  117. package/dist/subscriptions/delivery.js.map +1 -0
  118. package/dist/subscriptions/evaluate.d.ts +119 -0
  119. package/dist/subscriptions/evaluate.d.ts.map +1 -0
  120. package/dist/subscriptions/evaluate.js +326 -0
  121. package/dist/subscriptions/evaluate.js.map +1 -0
  122. package/dist/subscriptions/scheduler.d.ts +97 -0
  123. package/dist/subscriptions/scheduler.d.ts.map +1 -0
  124. package/dist/subscriptions/scheduler.js +332 -0
  125. package/dist/subscriptions/scheduler.js.map +1 -0
  126. package/dist/subscriptions/stream.d.ts +40 -0
  127. package/dist/subscriptions/stream.d.ts.map +1 -0
  128. package/dist/subscriptions/stream.js +38 -0
  129. package/dist/subscriptions/stream.js.map +1 -0
  130. package/dist/version.d.ts +3 -0
  131. package/dist/version.d.ts.map +1 -0
  132. package/dist/version.js +25 -0
  133. package/dist/version.js.map +1 -0
  134. package/dist/webhookSignature.d.ts +64 -0
  135. package/dist/webhookSignature.d.ts.map +1 -0
  136. package/dist/webhookSignature.js +91 -0
  137. package/dist/webhookSignature.js.map +1 -0
  138. package/llms.txt +39 -2
  139. package/package.json +17 -14
@@ -1,4 +1,5 @@
1
1
  import { randomUUID } from "node:crypto";
2
+ import { METADATA_LIMITS, MetadataLimitError, clampMetadataLimit, evaluateBucketMeasure, foldCustomEventVocabulary, toEventRow, MAX_ENABLED_SUBSCRIPTIONS, MAX_SUBSCRIPTIONS_PER_PROJECT, MAX_SUBSCRIPTION_EVENTS, SubscriptionLimitError, clampEventLimit, clampSubscriptionError, rowToSubscription, toSubscriptionColumns, } from "@uptimizr/db";
2
3
  function isSessionStart(event) {
3
4
  return event.type === "session_start";
4
5
  }
@@ -18,6 +19,28 @@ export function createMemoryStore({ projectId, apiKey, capabilities = ["query"],
18
19
  const audit = [];
19
20
  /** Scene regions keyed by scene id; each value is that scene's whole set. */
20
21
  const regions = new Map();
22
+ /** Project metadata (#310): annotations, glossary (keyed by term), analyses. */
23
+ const annotations = [];
24
+ const glossary = new Map();
25
+ const analyses = [];
26
+ /**
27
+ * Pinned panels (#315). An array rather than a `Map` because insertion order
28
+ * *is* the listing order here — the persistent stores order these oldest-first
29
+ * so a pinned panel keeps its place in the grid.
30
+ */
31
+ const panelSpecs = [];
32
+ /**
33
+ * Conditional subscriptions (#311). Kept in insertion order — the persistent
34
+ * stores order by `created_at, id`, and a `Map` preserves exactly that.
35
+ * `secrets` is separate from the records for the same reason the stores keep
36
+ * the secret in its own column: a record handed to a caller can then never
37
+ * carry it, whatever the caller does with it.
38
+ */
39
+ const subscriptions = new Map();
40
+ const secrets = new Map();
41
+ /** Firing log per subscription id, newest last; bounded on write. */
42
+ const firings = new Map();
43
+ let subscriptionSeq = 0;
21
44
  const forSession = (sid) => events
22
45
  .filter((e) => e.projectId === projectId && e.sessionId === sid)
23
46
  .sort((a, b) => a.ts - b.ts);
@@ -27,7 +50,37 @@ export function createMemoryStore({ projectId, apiKey, capabilities = ["query"],
27
50
  return typeof s === "string" && s.length > 0 ? s : "default";
28
51
  };
29
52
  const inRange = (e, opts) => (opts.since == null || e.ts >= opts.since) && (opts.until == null || e.ts < opts.until);
53
+ /**
54
+ * Project a captured event onto the promoted columns an insight bucket
55
+ * measure reads (ADR 0051 §4). `toEventRow` is the same mapping the
56
+ * persistent stores insert through, so the in-memory series is computed from
57
+ * the same columns the SQL series is — the one payload field a measure needs
58
+ * (`ar_placement.scale`) is lifted alongside it.
59
+ */
60
+ const toBucketEvent = (e) => {
61
+ const row = toEventRow(e);
62
+ const scale = e.scale;
63
+ return {
64
+ ts: e.ts,
65
+ event_type: row.event_type,
66
+ scene_id: row.scene_id,
67
+ session_id: row.session_id,
68
+ mesh: row.mesh,
69
+ name: row.name,
70
+ source: row.source,
71
+ fps: row.fps,
72
+ visible_ms: row.visible_ms,
73
+ js_heap_bytes: row.js_heap_bytes,
74
+ long_frames: row.long_frames,
75
+ position: row.position,
76
+ direction: row.direction,
77
+ hit_point: row.hit_point,
78
+ screen: row.screen,
79
+ ...(typeof scale === "number" ? { ar_placement_scale: scale } : {}),
80
+ };
81
+ };
30
82
  return {
83
+ engine: "memory",
31
84
  resolveApiKey: async (key) => key === apiKey
32
85
  ? { projectId, keyId, capabilities: [...capabilities], label: null, rateLimit: null }
33
86
  : null,
@@ -61,6 +114,16 @@ export function createMemoryStore({ projectId, apiKey, capabilities = ["query"],
61
114
  insertEvents: async (incoming) => {
62
115
  events.push(...incoming);
63
116
  },
117
+ // The query DSL (ADR 0051 §3) compiles to SQL, and this store has no SQL
118
+ // engine — it answers a handful of aggregates by walking the array above.
119
+ // Rather than grow a second, JavaScript re-implementation of seventy
120
+ // builders that could silently disagree with the real ones, it reports no
121
+ // rows, exactly as the spatial aggregates below already do. Use the DuckDB
122
+ // store (the OSS default) for the DSL.
123
+ runMetric: async () => [],
124
+ // No SQL is compiled here, so there is no plan to show; `explain` falls back
125
+ // to the registry-derived warnings (#304).
126
+ describeMetric: () => null,
64
127
  listSessions: async () => {
65
128
  const bySession = new Map();
66
129
  for (const e of events) {
@@ -143,6 +206,39 @@ export function createMemoryStore({ projectId, apiKey, capabilities = ["query"],
143
206
  trackingQuality: async () => [],
144
207
  interactionsBySource: async () => [],
145
208
  topInputActions: async () => [],
209
+ // Discovered custom-event vocabulary (ADR 0051 §5). Implemented here (unlike
210
+ // the heavier spatial aggregates) because the playground and the demo run on
211
+ // this store, and an empty vocabulary would make their project context
212
+ // document silently wrong about what the app emits.
213
+ customEventVocabulary: async (_projectId, opts = {}) => {
214
+ const limit = Math.min(opts.limit ?? 100, 200);
215
+ const sampleRows = Math.min(opts.sampleRows ?? 20, 100);
216
+ const byName = new Map();
217
+ for (const e of forProject()) {
218
+ if (e.type !== "custom" || !inRange(e, opts))
219
+ continue;
220
+ if (opts.scene != null && opts.scene.length > 0 && sceneOf(e) !== opts.scene)
221
+ continue;
222
+ const name = e.name;
223
+ if (typeof name !== "string" || name.length === 0)
224
+ continue;
225
+ const list = byName.get(name) ?? [];
226
+ list.push(e);
227
+ byName.set(name, list);
228
+ }
229
+ const samples = [];
230
+ const ranked = [...byName.entries()]
231
+ .sort((a, b) => b[1].length - a[1].length || (a[0] < b[0] ? -1 : 1))
232
+ .slice(0, limit);
233
+ for (const [name, list] of ranked) {
234
+ const sessions = new Set(list.map((e) => e.sessionId)).size;
235
+ const recent = [...list].sort((a, b) => b.ts - a.ts).slice(0, sampleRows);
236
+ for (const event of recent) {
237
+ samples.push({ name, count: list.length, sessions, sample_payload: event });
238
+ }
239
+ }
240
+ return foldCustomEventVocabulary(samples);
241
+ },
146
242
  scenes: async (_projectId, opts = {}) => {
147
243
  const map = new Map();
148
244
  for (const e of forProject()) {
@@ -189,7 +285,11 @@ export function createMemoryStore({ projectId, apiKey, capabilities = ["query"],
189
285
  .map(([bucket, v]) => ({
190
286
  bucket,
191
287
  events: v.events,
192
- avg_fps: v.fpsCount > 0 ? v.fpsSum / v.fpsCount : 0,
288
+ // `null`, not `0`: a bucket can carry traffic and no `frame_perf`
289
+ // sample at all, and an average over nothing is absent. The SQL
290
+ // stores report SQL-NULL here and the registry declares the column
291
+ // `numOrNull` — this store must not be the odd one out.
292
+ avg_fps: v.fpsCount > 0 ? v.fpsSum / v.fpsCount : null,
193
293
  }))
194
294
  .sort((a, b) => a.bucket - b.bucket);
195
295
  },
@@ -206,6 +306,12 @@ export function createMemoryStore({ projectId, apiKey, capabilities = ["query"],
206
306
  .map(([event_type, count]) => ({ event_type, count }))
207
307
  .sort((a, b) => b.count - a.count);
208
308
  },
309
+ // The bucket series behind `baseline` and `movers` (ADR 0051 §4). The
310
+ // persistent stores render the declarative measure to SQL; here the same
311
+ // measure is evaluated over the in-memory events, so the insight endpoints
312
+ // answer in the playground and the E2E harness rather than reporting an
313
+ // empty series — which would read as "no data", a different claim.
314
+ metricBuckets: async (_projectId, opts) => evaluateBucketMeasure(forProject().map(toBucketEvent), opts),
209
315
  funnel: async (_projectId, opts) => {
210
316
  const steps = opts.steps ?? [];
211
317
  if (steps.length === 0)
@@ -457,10 +563,217 @@ export function createMemoryStore({ projectId, apiKey, capabilities = ["query"],
457
563
  listSceneRegions: async () => [...regions.entries()]
458
564
  .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
459
565
  .flatMap(([sceneId, set]) => set.map((r) => ({ sceneId, regionId: r.regionId, label: r.label }))),
566
+ // --- Project metadata (#310, ADR 0051 §5) ------------------------------
567
+ // Same semantics as the persistent stores — per-project caps, newest-first
568
+ // ordering, overlap filtering, `MetadataLimitError` when a table is full —
569
+ // so an E2E run against this store exercises the real contract.
570
+ createAnnotation: async (_projectId, input) => {
571
+ if (annotations.length >= METADATA_LIMITS.annotations) {
572
+ throw new MetadataLimitError("annotations", METADATA_LIMITS.annotations);
573
+ }
574
+ const now = new Date();
575
+ const { annotation } = input;
576
+ const record = {
577
+ id: randomUUID(),
578
+ projectId,
579
+ targetKind: annotation.targetKind,
580
+ targetId: annotation.targetId ?? null,
581
+ since: annotation.since == null ? null : new Date(annotation.since),
582
+ until: annotation.until == null ? null : new Date(annotation.until),
583
+ text: annotation.text,
584
+ authorKind: input.authorKind,
585
+ authorKeyId: input.authorKeyId,
586
+ createdAt: now,
587
+ updatedAt: now,
588
+ };
589
+ annotations.push(record);
590
+ return record;
591
+ },
592
+ listAnnotations: async (_projectId, opts = {}) => annotations
593
+ .filter((row) => opts.targetKind == null || row.targetKind === opts.targetKind)
594
+ .filter((row) => opts.targetId == null || row.targetId === opts.targetId)
595
+ .filter((row) => opts.since == null || row.until == null || row.until.getTime() >= opts.since)
596
+ .filter((row) => opts.until == null || row.since == null || row.since.getTime() < opts.until)
597
+ .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())
598
+ .slice(0, clampMetadataLimit(opts.limit)),
599
+ deleteAnnotation: async (_projectId, id) => {
600
+ const index = annotations.findIndex((row) => row.id === id);
601
+ if (index < 0)
602
+ return false;
603
+ annotations.splice(index, 1);
604
+ return true;
605
+ },
606
+ putGlossaryEntry: async (_projectId, input) => {
607
+ const { term, meaning } = input.entry;
608
+ if (!glossary.has(term) && glossary.size >= METADATA_LIMITS.glossary) {
609
+ throw new MetadataLimitError("glossary", METADATA_LIMITS.glossary);
610
+ }
611
+ const record = { projectId, term, meaning, updatedAt: new Date() };
612
+ glossary.set(term, record);
613
+ return record;
614
+ },
615
+ listGlossary: async (_projectId, opts = {}) => [...glossary.values()]
616
+ .sort((a, b) => (a.term < b.term ? -1 : a.term > b.term ? 1 : 0))
617
+ .slice(0, clampMetadataLimit(opts.limit, METADATA_LIMITS.glossary, METADATA_LIMITS.glossary)),
618
+ deleteGlossaryEntry: async (_projectId, term) => glossary.delete(term),
619
+ createSavedAnalysis: async (_projectId, input) => {
620
+ if (analyses.length >= METADATA_LIMITS.savedAnalyses) {
621
+ throw new MetadataLimitError("savedAnalyses", METADATA_LIMITS.savedAnalyses);
622
+ }
623
+ const { analysis } = input;
624
+ const record = {
625
+ id: randomUUID(),
626
+ projectId,
627
+ title: analysis.title,
628
+ query: analysis.query,
629
+ conclusion: analysis.conclusion ?? null,
630
+ authorKind: input.authorKind,
631
+ authorKeyId: input.authorKeyId,
632
+ createdAt: new Date(),
633
+ };
634
+ analyses.push(record);
635
+ return record;
636
+ },
637
+ listSavedAnalyses: async (_projectId, opts = {}) => [...analyses]
638
+ .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())
639
+ .slice(0, clampMetadataLimit(opts.limit)),
640
+ deleteSavedAnalysis: async (_projectId, id) => {
641
+ const index = analyses.findIndex((row) => row.id === id);
642
+ if (index < 0)
643
+ return false;
644
+ analyses.splice(index, 1);
645
+ return true;
646
+ },
647
+ // --- Declarative panel specs (#315, ADR 0051 §7) ---------------------
648
+ createPanelSpec: async (_projectId, input) => {
649
+ if (panelSpecs.length >= METADATA_LIMITS.panelSpecs) {
650
+ throw new MetadataLimitError("panelSpecs", METADATA_LIMITS.panelSpecs);
651
+ }
652
+ const now = new Date();
653
+ const record = {
654
+ id: randomUUID(),
655
+ projectId,
656
+ spec: input.spec,
657
+ authorKind: input.authorKind,
658
+ authorKeyId: input.authorKeyId,
659
+ createdAt: now,
660
+ updatedAt: now,
661
+ };
662
+ panelSpecs.push(record);
663
+ return record;
664
+ },
665
+ // Oldest first, which is insertion order — a pinned panel keeps its place.
666
+ listPanelSpecs: async (_projectId, opts = {}) => panelSpecs.slice(0, clampMetadataLimit(opts.limit, METADATA_LIMITS.panelSpecs, METADATA_LIMITS.panelSpecs)),
667
+ updatePanelSpec: async (_projectId, id, input) => {
668
+ const index = panelSpecs.findIndex((row) => row.id === id);
669
+ if (index < 0)
670
+ return null;
671
+ // The row keeps its id, its position and its original authorship — an
672
+ // edit is not a new pin.
673
+ const updated = {
674
+ ...panelSpecs[index],
675
+ spec: input.spec,
676
+ updatedAt: new Date(),
677
+ };
678
+ panelSpecs[index] = updated;
679
+ return updated;
680
+ },
681
+ deletePanelSpec: async (_projectId, id) => {
682
+ const index = panelSpecs.findIndex((row) => row.id === id);
683
+ if (index < 0)
684
+ return false;
685
+ panelSpecs.splice(index, 1);
686
+ return true;
687
+ },
688
+ // --- Conditional subscriptions (#311, ADR 0051 §6) -------------------
689
+ listSubscriptions: async () => [...subscriptions.values()],
690
+ listEnabledSubscriptions: async (limit) => [...subscriptions.values()]
691
+ .filter((sub) => sub.enabled)
692
+ .slice(0, Math.max(1, Math.trunc(limit ?? MAX_ENABLED_SUBSCRIPTIONS))),
693
+ getSubscription: async (_projectId, id) => subscriptions.get(id) ?? null,
694
+ createSubscription: async (_projectId, sub) => {
695
+ if (subscriptions.size >= MAX_SUBSCRIPTIONS_PER_PROJECT)
696
+ throw new SubscriptionLimitError();
697
+ const id = `sub_mem_${++subscriptionSeq}`;
698
+ const cols = toSubscriptionColumns(sub);
699
+ const now = Date.now();
700
+ // Round-trip through the shared row mapper rather than hand-building the
701
+ // record, so the in-memory store cannot drift from the four SQL stores
702
+ // (masking included).
703
+ const record = rowToSubscription({
704
+ id,
705
+ project_id: projectId,
706
+ name: cols.name,
707
+ metric: cols.metric,
708
+ config: cols.config,
709
+ enabled: cols.enabled,
710
+ created_at_ms: now,
711
+ updated_at_ms: now,
712
+ last_fired_at_ms: null,
713
+ last_error: null,
714
+ failures: 0,
715
+ });
716
+ subscriptions.set(id, record);
717
+ if (cols.webhookSecret != null)
718
+ secrets.set(id, cols.webhookSecret);
719
+ return record;
720
+ },
721
+ setSubscriptionEnabled: async (_projectId, id, enabled) => {
722
+ const existing = subscriptions.get(id);
723
+ if (existing == null)
724
+ return null;
725
+ const updated = { ...existing, enabled, updatedAt: new Date() };
726
+ subscriptions.set(id, updated);
727
+ return updated;
728
+ },
729
+ deleteSubscription: async (_projectId, id) => {
730
+ secrets.delete(id);
731
+ firings.delete(id);
732
+ return subscriptions.delete(id);
733
+ },
734
+ recordSubscriptionOutcome: async (_projectId, id, outcome) => {
735
+ const existing = subscriptions.get(id);
736
+ if (existing == null)
737
+ return;
738
+ subscriptions.set(id, {
739
+ ...existing,
740
+ updatedAt: new Date(),
741
+ lastFiredAt: outcome.firedAt ?? existing.lastFiredAt,
742
+ lastError: outcome.lastError === undefined
743
+ ? existing.lastError
744
+ : outcome.lastError == null
745
+ ? null
746
+ : clampSubscriptionError(outcome.lastError),
747
+ failures: outcome.failures ?? existing.failures,
748
+ });
749
+ },
750
+ getWebhookSecret: async (_projectId, id) => secrets.get(id) ?? null,
751
+ recordSubscriptionEvent: async (entry) => {
752
+ const log = firings.get(entry.subscriptionId) ?? [];
753
+ log.push({
754
+ id: randomUUID(),
755
+ subscriptionId: entry.subscriptionId,
756
+ projectId: entry.projectId,
757
+ at: entry.at ?? new Date(),
758
+ payload: entry.payload,
759
+ });
760
+ // Same bound as every persistent store: the oldest fall off the front.
761
+ while (log.length > MAX_SUBSCRIPTION_EVENTS)
762
+ log.shift();
763
+ firings.set(entry.subscriptionId, log);
764
+ },
765
+ listSubscriptionEvents: async (_projectId, id, opts) => [...(firings.get(id) ?? [])].reverse().slice(0, clampEventLimit(opts?.limit)),
460
766
  close: async () => {
461
767
  events.length = 0;
462
768
  representations.clear();
463
769
  regions.clear();
770
+ annotations.length = 0;
771
+ glossary.clear();
772
+ analyses.length = 0;
773
+ panelSpecs.length = 0;
774
+ subscriptions.clear();
775
+ secrets.clear();
776
+ firings.clear();
464
777
  },
465
778
  };
466
779
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memoryStore.js","sourceRoot":"","sources":["../src/memoryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryStore.js","sourceRoot":"","sources":["../src/memoryStore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mssqlStore.d.ts","sourceRoot":"","sources":["../src/mssqlStore.ts"],"names":[],"mappings":"AA2JA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC,CA+LhE"}
1
+ {"version":3,"file":"mssqlStore.d.ts","sourceRoot":"","sources":["../src/mssqlStore.ts"],"names":[],"mappings":"AAwLA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC,CAsPhE"}
@@ -1,5 +1,5 @@
1
- import { buildCameraDirectionHeatmap, buildViewCoverageHistogram, buildCameraDistance, buildCameraPositionHeatmap, buildClickGazeRay, buildDeadClicks, buildRageClicks, buildHoverDwell, buildCompileStalls, buildArPlacementTimeToPlace, buildArPlacementAttempts, buildArPlacementSurfaces, buildResourceSummary, buildCapabilityChanges, buildCameraGestures, buildDistinctScenes, buildEventTypeCounts, buildFlowHeatmap, buildFunnel, buildSceneRetention, buildLoadBounceFunnel, buildVariantLeaderboard, buildListSessions, buildNavigationStats, buildBacktrackRatio, buildXrRotationRate, buildXrSourceUsage, buildXrAbandonment, buildXrLocomotionComfort, buildTrackingQuality, buildInteractionsBySource, buildMeshDwell, buildMeshBlindSpots, buildMeshInteractionKinds, buildReachability, buildPerfSummary, buildPerfDistribution, buildFpsHistogram, buildFrameTimePercentiles, buildJankRate, buildPerfChurn, buildPerfByDevice, buildPerfByScene, buildResourcePercentiles, buildStabilityCounts, buildGraphicsDiagnosticCounts, buildErrorHeatmap, buildBoundaryHeatmap, buildBoundaryHeatmapStats, buildBoundaryContacts, buildRenderingTechnology, buildPointerHeatmap, buildMeshUvHeatmap, buildSceneCoverage, buildPerfHeatmap, buildSessionTrajectory, buildAggregateTrajectories, buildRenderScaleTruth, buildTimeseries, buildTopMeshes, buildTopMeshesBySource, buildTopMeshesTrend, buildTopInputActions, buildWorldHeatmap, buildWorldHeatmapStats, buildGazeHeatmap, buildGazeHeatmapStats, mssqlDialect, readDbSettings, } from "@uptimizr/db";
2
- import { createMssqlClient, ensureMssqlDatabase, migrateMssql, resolveMssqlConfig, runMssqlQuery, insertEvents as msInsertEvents, getSessionEvents as msGetSessionEvents, streamSessionEvents as msStreamSessionEvents, getSessionMeta as msGetSessionMeta, getProject as msGetProject, resolveApiKey as msResolveApiKey, recordAudit as msRecordAudit, listAudit as msListAudit, pruneAudit as msPruneAudit, upsertSceneProxy as msUpsertSceneProxy, getSceneRepresentation as msGetSceneRepresentation, listSceneRepresentations as msListSceneRepresentations, putSceneRegions as msPutSceneRegions, getSceneRegions as msGetSceneRegions, listSceneRegions as msListSceneRegions, } from "@uptimizr/db-mssql";
1
+ import { buildCameraDirectionHeatmap, buildViewCoverageHistogram, buildCameraDistance, buildCameraPositionHeatmap, buildClickGazeRay, buildCustomEventVocabulary, buildDeadClicks, buildRageClicks, buildHoverDwell, buildCompileStalls, buildArPlacementTimeToPlace, buildArPlacementAttempts, buildArPlacementSurfaces, buildResourceSummary, buildCapabilityChanges, buildCameraGestures, buildDistinctScenes, buildEventTypeCounts, buildMetricBuckets, toMetricBucketRows, buildFlowHeatmap, buildFunnel, buildSceneRetention, buildLoadBounceFunnel, buildVariantLeaderboard, buildListSessions, buildNavigationStats, buildBacktrackRatio, buildXrRotationRate, buildXrSourceUsage, buildXrAbandonment, buildXrLocomotionComfort, buildTrackingQuality, buildInteractionsBySource, buildMeshDwell, buildMeshBlindSpots, buildMeshInteractionKinds, buildReachability, buildPerfSummary, buildPerfDistribution, buildFpsHistogram, buildFrameTimePercentiles, buildJankRate, buildPerfChurn, buildPerfByDevice, buildPerfByScene, buildResourcePercentiles, buildStabilityCounts, buildGraphicsDiagnosticCounts, buildErrorHeatmap, buildBoundaryHeatmap, buildBoundaryHeatmapStats, buildBoundaryContacts, buildRenderingTechnology, buildPointerHeatmap, buildMeshUvHeatmap, buildSceneCoverage, buildPerfHeatmap, buildSessionTrajectory, buildAggregateTrajectories, buildRenderScaleTruth, buildTimeseries, buildTopMeshes, buildTopMeshesBySource, buildTopMeshesTrend, buildTopInputActions, foldCustomEventVocabulary, buildWorldHeatmap, buildWorldHeatmapStats, buildGazeHeatmap, buildGazeHeatmapStats, mssqlDialect, compileMetric, readDbSettings, } from "@uptimizr/db";
2
+ import { createMssqlClient, ensureMssqlDatabase, migrateMssql, resolveMssqlConfig, runMssqlQuery, insertEvents as msInsertEvents, getSessionEvents as msGetSessionEvents, streamSessionEvents as msStreamSessionEvents, getSessionMeta as msGetSessionMeta, getProject as msGetProject, resolveApiKey as msResolveApiKey, recordAudit as msRecordAudit, listAudit as msListAudit, pruneAudit as msPruneAudit, upsertSceneProxy as msUpsertSceneProxy, getSceneRepresentation as msGetSceneRepresentation, listSceneRepresentations as msListSceneRepresentations, putSceneRegions as msPutSceneRegions, listSubscriptions as msListSubscriptions, listEnabledSubscriptions as msListEnabledSubscriptions, getSubscription as msGetSubscription, createSubscription as msCreateSubscription, setSubscriptionEnabled as msSetSubscriptionEnabled, deleteSubscription as msDeleteSubscription, recordSubscriptionOutcome as msRecordSubscriptionOutcome, getWebhookSecret as msGetWebhookSecret, recordSubscriptionEvent as msRecordSubscriptionEvent, listSubscriptionEvents as msListSubscriptionEvents, getSceneRegions as msGetSceneRegions, listSceneRegions as msListSceneRegions, createAnnotation as msCreateAnnotation, listAnnotations as msListAnnotations, deleteAnnotation as msDeleteAnnotation, putGlossaryEntry as msPutGlossaryEntry, listGlossary as msListGlossary, deleteGlossaryEntry as msDeleteGlossaryEntry, createSavedAnalysis as msCreateSavedAnalysis, listSavedAnalyses as msListSavedAnalyses, deleteSavedAnalysis as msDeleteSavedAnalysis, createPanelSpec as msCreatePanelSpec, listPanelSpecs as msListPanelSpecs, updatePanelSpec as msUpdatePanelSpec, deletePanelSpec as msDeletePanelSpec, } from "@uptimizr/db-mssql";
3
3
  /**
4
4
  * Optional single-tenant Microsoft SQL Server store (ADR 0020, #85): the
5
5
  * relational, multi-writer path for self-hosters standardized on SQL Server /
@@ -27,12 +27,22 @@ export async function createMssqlStore() {
27
27
  await migrateMssql(msc);
28
28
  const d = mssqlDialect;
29
29
  return {
30
+ engine: "mssql",
30
31
  resolveApiKey: (key) => msResolveApiKey(msc, key),
31
32
  recordAudit: (entry) => msRecordAudit(msc, entry),
32
33
  listAudit: (projectId, opts) => msListAudit(msc, projectId, opts),
33
34
  pruneAudit: (cutoffMs) => msPruneAudit(msc, cutoffMs),
34
35
  projectExists: async (projectId) => (await msGetProject(msc, projectId)) !== null,
35
36
  insertEvents: (events) => msInsertEvents(msc, [...events]),
37
+ // Query DSL v1 (ADR 0051 §3): any registry metric, compiled onto its own
38
+ // aggregation builder and run through the same SQL Server path — and therefore
39
+ // the same parity coverage and the same numeric coercion — as the canned
40
+ // aggregates below.
41
+ runMetric: (projectId, metric, options) => runMssqlQuery(msc, compileMetric(metric, projectId, options, d)),
42
+ describeMetric: (projectId, metric, options) => ({
43
+ dialect: d.name,
44
+ spec: compileMetric(metric, projectId, options, d),
45
+ }),
36
46
  listSessions: (projectId, opts = {}) => runMssqlQuery(msc, buildListSessions(projectId, opts, d)),
37
47
  pointerHeatmap: (projectId, opts = {}) => runMssqlQuery(msc, buildPointerHeatmap(projectId, opts, d)),
38
48
  meshUvHeatmap: (projectId, opts = {}) => runMssqlQuery(msc, buildMeshUvHeatmap(projectId, opts, d)),
@@ -102,9 +112,18 @@ export async function createMssqlStore() {
102
112
  trackingQuality: (projectId, opts = {}) => runMssqlQuery(msc, buildTrackingQuality(projectId, opts, d)),
103
113
  interactionsBySource: (projectId, opts = {}) => runMssqlQuery(msc, buildInteractionsBySource(projectId, opts, d)),
104
114
  topInputActions: (projectId, opts = {}) => runMssqlQuery(msc, buildTopInputActions(projectId, opts, d)),
115
+ // Discovered custom-event vocabulary (ADR 0051 §5): the SQL counts and
116
+ // samples, the pure fold turns the sampled payloads into prop types. The
117
+ // raw payload stops here and never reaches a route.
118
+ customEventVocabulary: async (projectId, opts = {}) => foldCustomEventVocabulary(await runMssqlQuery(msc, buildCustomEventVocabulary(projectId, opts, d))),
105
119
  scenes: (projectId, opts = {}) => runMssqlQuery(msc, buildDistinctScenes(projectId, opts, d)),
106
120
  timeseries: (projectId, opts = {}) => runMssqlQuery(msc, buildTimeseries(projectId, opts, d)),
107
121
  eventTypeCounts: (projectId, opts = {}) => runMssqlQuery(msc, buildEventTypeCounts(projectId, opts, d)),
122
+ // The one bucket series behind `baseline` and `movers` (ADR 0051 §4). The
123
+ // spec carries no registry metric of its own, so the store edge has no row
124
+ // schema to coerce it against — `toMetricBucketRows` parses the numbers,
125
+ // which is what keeps the engines that string-encode 64-bit counts honest.
126
+ metricBuckets: async (projectId, opts) => toMetricBucketRows(await runMssqlQuery(msc, buildMetricBuckets(projectId, opts, d))),
108
127
  funnel: (projectId, opts) => runMssqlQuery(msc, buildFunnel(projectId, opts, d)),
109
128
  sceneRetention: (projectId, opts) => runMssqlQuery(msc, buildSceneRetention(projectId, opts, d)),
110
129
  loadBounceFunnel: (projectId, opts = {}) => runMssqlQuery(msc, buildLoadBounceFunnel(projectId, opts, d)),
@@ -118,6 +137,29 @@ export async function createMssqlStore() {
118
137
  putSceneRegions: (projectId, sceneId, regions) => msPutSceneRegions(msc, projectId, sceneId, regions),
119
138
  getSceneRegions: (projectId, sceneId) => msGetSceneRegions(msc, projectId, sceneId),
120
139
  listSceneRegions: (projectId) => msListSceneRegions(msc, projectId),
140
+ createAnnotation: (projectId, input) => msCreateAnnotation(msc, projectId, input),
141
+ listAnnotations: (projectId, opts) => msListAnnotations(msc, projectId, opts),
142
+ deleteAnnotation: (projectId, id) => msDeleteAnnotation(msc, projectId, id),
143
+ putGlossaryEntry: (projectId, input) => msPutGlossaryEntry(msc, projectId, input),
144
+ listGlossary: (projectId, opts) => msListGlossary(msc, projectId, opts),
145
+ deleteGlossaryEntry: (projectId, term) => msDeleteGlossaryEntry(msc, projectId, term),
146
+ createSavedAnalysis: (projectId, input) => msCreateSavedAnalysis(msc, projectId, input),
147
+ listSavedAnalyses: (projectId, opts) => msListSavedAnalyses(msc, projectId, opts),
148
+ deleteSavedAnalysis: (projectId, id) => msDeleteSavedAnalysis(msc, projectId, id),
149
+ createPanelSpec: (projectId, input) => msCreatePanelSpec(msc, projectId, input),
150
+ listPanelSpecs: (projectId, opts) => msListPanelSpecs(msc, projectId, opts),
151
+ updatePanelSpec: (projectId, id, input) => msUpdatePanelSpec(msc, projectId, id, input),
152
+ deletePanelSpec: (projectId, id) => msDeletePanelSpec(msc, projectId, id),
153
+ listSubscriptions: (projectId) => msListSubscriptions(msc, projectId),
154
+ listEnabledSubscriptions: (limit) => msListEnabledSubscriptions(msc, limit),
155
+ getSubscription: (projectId, id) => msGetSubscription(msc, projectId, id),
156
+ createSubscription: (projectId, sub) => msCreateSubscription(msc, projectId, sub),
157
+ setSubscriptionEnabled: (projectId, id, enabled) => msSetSubscriptionEnabled(msc, projectId, id, enabled),
158
+ deleteSubscription: (projectId, id) => msDeleteSubscription(msc, projectId, id),
159
+ recordSubscriptionOutcome: (projectId, id, outcome) => msRecordSubscriptionOutcome(msc, projectId, id, outcome),
160
+ getWebhookSecret: (projectId, id) => msGetWebhookSecret(msc, projectId, id),
161
+ recordSubscriptionEvent: (entry) => msRecordSubscriptionEvent(msc, entry),
162
+ listSubscriptionEvents: (projectId, id, opts) => msListSubscriptionEvents(msc, projectId, id, opts),
121
163
  async close() {
122
164
  await msc.close();
123
165
  },