@iann29/rastro 0.1.0-alpha.5 → 0.1.0-alpha.6

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 (120) hide show
  1. package/README.md +75 -27
  2. package/agent/integration.md +17 -15
  3. package/agent/manifest.json +5 -3
  4. package/agent/manifest.schema.json +8 -5
  5. package/dist/client/federation.d.ts +34 -8
  6. package/dist/client/federation.d.ts.map +1 -1
  7. package/dist/client/federation.js +17 -3
  8. package/dist/client/federation.js.map +1 -1
  9. package/dist/client/index.d.ts +418 -21
  10. package/dist/client/index.d.ts.map +1 -1
  11. package/dist/client/index.js +191 -41
  12. package/dist/client/index.js.map +1 -1
  13. package/dist/component/_generated/api.d.ts +2 -0
  14. package/dist/component/_generated/api.d.ts.map +1 -1
  15. package/dist/component/_generated/api.js.map +1 -1
  16. package/dist/component/_generated/component.d.ts +63 -7
  17. package/dist/component/_generated/component.d.ts.map +1 -1
  18. package/dist/component/affiliates.d.ts.map +1 -1
  19. package/dist/component/affiliates.js +6 -2
  20. package/dist/component/affiliates.js.map +1 -1
  21. package/dist/component/cardinality.d.ts.map +1 -1
  22. package/dist/component/cardinality.js.map +1 -1
  23. package/dist/component/constants.d.ts +5 -0
  24. package/dist/component/constants.d.ts.map +1 -1
  25. package/dist/component/constants.js +11 -0
  26. package/dist/component/constants.js.map +1 -1
  27. package/dist/component/diagnostics.d.ts.map +1 -1
  28. package/dist/component/diagnostics.js.map +1 -1
  29. package/dist/component/eventStore.d.ts +2 -1
  30. package/dist/component/eventStore.d.ts.map +1 -1
  31. package/dist/component/eventStore.js +13 -10
  32. package/dist/component/eventStore.js.map +1 -1
  33. package/dist/component/funnels.d.ts.map +1 -1
  34. package/dist/component/funnels.js +5 -3
  35. package/dist/component/funnels.js.map +1 -1
  36. package/dist/component/geo.d.ts.map +1 -1
  37. package/dist/component/geo.js +3 -2
  38. package/dist/component/geo.js.map +1 -1
  39. package/dist/component/goals.d.ts.map +1 -1
  40. package/dist/component/goals.js +8 -5
  41. package/dist/component/goals.js.map +1 -1
  42. package/dist/component/guards.d.ts.map +1 -1
  43. package/dist/component/guards.js.map +1 -1
  44. package/dist/component/http.d.ts.map +1 -1
  45. package/dist/component/http.js +32 -9
  46. package/dist/component/http.js.map +1 -1
  47. package/dist/component/ingest.d.ts +2 -1
  48. package/dist/component/ingest.d.ts.map +1 -1
  49. package/dist/component/ingest.js +143 -23
  50. package/dist/component/ingest.js.map +1 -1
  51. package/dist/component/live.d.ts.map +1 -1
  52. package/dist/component/live.js +1 -3
  53. package/dist/component/live.js.map +1 -1
  54. package/dist/component/reports.d.ts +60 -3
  55. package/dist/component/reports.d.ts.map +1 -1
  56. package/dist/component/reports.js +215 -49
  57. package/dist/component/reports.js.map +1 -1
  58. package/dist/component/retention.d.ts +4 -4
  59. package/dist/component/retention.d.ts.map +1 -1
  60. package/dist/component/retention.js +54 -22
  61. package/dist/component/retention.js.map +1 -1
  62. package/dist/component/sanitize.d.ts.map +1 -1
  63. package/dist/component/sanitize.js +38 -10
  64. package/dist/component/sanitize.js.map +1 -1
  65. package/dist/component/schema.d.ts +47 -5
  66. package/dist/component/schema.js +21 -1
  67. package/dist/component/schema.js.map +1 -1
  68. package/dist/component/sites.d.ts.map +1 -1
  69. package/dist/component/sites.js +6 -6
  70. package/dist/component/sites.js.map +1 -1
  71. package/dist/component/validators.d.ts +14 -9
  72. package/dist/component/validators.d.ts.map +1 -1
  73. package/dist/component/validators.js +5 -1
  74. package/dist/component/validators.js.map +1 -1
  75. package/dist/component/visitors.d.ts.map +1 -1
  76. package/dist/component/visitors.js.map +1 -1
  77. package/dist/component/vitals.d.ts +41 -0
  78. package/dist/component/vitals.d.ts.map +1 -0
  79. package/dist/component/vitals.js +115 -0
  80. package/dist/component/vitals.js.map +1 -0
  81. package/dist/react/index.d.ts.map +1 -1
  82. package/dist/react/index.js.map +1 -1
  83. package/dist/tracker/generated.d.ts +4 -0
  84. package/dist/tracker/generated.d.ts.map +1 -1
  85. package/dist/tracker/generated.js +4 -0
  86. package/dist/tracker/generated.js.map +1 -1
  87. package/dist/tracker/tracker.d.ts.map +1 -1
  88. package/dist/tracker/tracker.js.map +1 -1
  89. package/dist/tracker/vitals.d.ts +10 -0
  90. package/dist/tracker/vitals.d.ts.map +1 -0
  91. package/dist/tracker/vitals.js +137 -0
  92. package/dist/tracker/vitals.js.map +1 -0
  93. package/dist/vitals.min.js +1 -0
  94. package/docs/benchmarks/2026-08-20-realistic.md +71 -71
  95. package/docs/benchmarks/2026-08-21-formal-certification.md +50 -30
  96. package/docs/benchmarks/2026-08-30-alpha6-recertification.md +206 -0
  97. package/package.json +17 -3
  98. package/scripts/benchmark-ingest.mjs +101 -48
  99. package/src/component/_generated/api.ts +2 -0
  100. package/src/component/_generated/component.ts +69 -4
  101. package/src/component/affiliates.ts +20 -5
  102. package/src/component/cardinality.ts +8 -7
  103. package/src/component/constants.ts +11 -0
  104. package/src/component/diagnostics.ts +3 -2
  105. package/src/component/eventStore.ts +53 -46
  106. package/src/component/funnels.ts +19 -16
  107. package/src/component/geo.ts +16 -14
  108. package/src/component/goals.ts +29 -21
  109. package/src/component/guards.ts +3 -1
  110. package/src/component/http.ts +73 -46
  111. package/src/component/ingest.ts +320 -127
  112. package/src/component/live.ts +5 -4
  113. package/src/component/reports.ts +563 -219
  114. package/src/component/retention.ts +221 -98
  115. package/src/component/sanitize.ts +76 -29
  116. package/src/component/schema.ts +31 -5
  117. package/src/component/sites.ts +22 -11
  118. package/src/component/validators.ts +16 -7
  119. package/src/component/visitors.ts +16 -5
  120. package/src/component/vitals.ts +146 -0
package/README.md CHANGED
@@ -27,10 +27,14 @@ Public integration documentation is available at
27
27
  should start with [`llms.txt`](https://www.amagerastro.com/llms.txt) and verify
28
28
  the [machine manifest](https://www.amagerastro.com/agent/manifest.json).
29
29
 
30
- Current evidence supports more than 120 million stored events/day for realistic
31
- traffic. Near-limit heavy payloads are certified at 76.62 million/day, and the
32
- feature-saturated profile at 33.22 million/day. Workload-specific results and
33
- caveats are reported separately rather than collapsed into one capacity claim.
30
+ Current evidence supports more than 140 million stored events/day for realistic
31
+ traffic and more than 178 million for lean traffic. Near-limit heavy payloads
32
+ are certified at 55.26 million/day on a data-heavy store (76.62 million/day on a
33
+ fresh store, 2026-08-22). The feature-saturated profile currently fails
34
+ certification on a known rollup-contention defect
35
+ ([#52](https://github.com/amageweb/amage-rastro/issues/52)). Workload-specific
36
+ results and caveats are reported separately rather than collapsed into one
37
+ capacity claim.
34
38
 
35
39
  ## What ships
36
40
 
@@ -38,6 +42,7 @@ caveats are reported separately rather than collapsed into one capacity claim.
38
42
  | --------------------------- | -------------------------------------------------------------------------------------------------------- |
39
43
  | Live visitor map | Reactive live sessions with coarse city-level coordinates and TTL expiry |
40
44
  | Traffic analytics | Sharded hour/day rollups, time series, top pages, sources, countries, devices, browsers, and events |
45
+ | Field Web Vitals | Opt-in tracker module reporting LCP, CLS, INP, FCP, and TTFB into bounded per-page daily histograms |
41
46
  | Journey replay | Bounded pageview/click/custom-event timelines; no DOM, keystroke, or form-value recording |
42
47
  | Payment conversion tracking | Trusted server-side ledger with idempotent event IDs and canonical site currency |
43
48
  | Goals and funnels | Exact pageview/custom-event goals and ordered conversion funnels |
@@ -90,11 +95,12 @@ app.use(rastro, { httpPrefix: "/rastro/" });
90
95
  export default app;
91
96
  ```
92
97
 
93
- This creates isolated component tables and four HTTP routes:
98
+ This creates isolated component tables and five HTTP routes:
94
99
 
95
100
  - `POST /rastro/events` — browser event ingestion
96
101
  - `OPTIONS /rastro/events` — CORS preflight
97
102
  - `GET /rastro/tracker.js` — the pre-gzipped tracker
103
+ - `GET /rastro/vitals.js` — the pre-gzipped, opt-in Web Vitals module
98
104
  - `GET /rastro/health` — integration health
99
105
 
100
106
  Push the component and regenerate host bindings before importing
@@ -299,6 +305,29 @@ serves the script and ingestion from different origins:
299
305
  ></script>
300
306
  ```
301
307
 
308
+ ### Field Web Vitals (optional)
309
+
310
+ A second, separate module measures real-visitor LCP, CLS, INP, FCP, and TTFB
311
+ with `PerformanceObserver` and reports them once per page load, when the tab is
312
+ first hidden. It stays out of `tracker.js` so the base tracker keeps its byte
313
+ budget; add it only where you want performance data:
314
+
315
+ ```html
316
+ <script
317
+ defer
318
+ data-site="YOUR_SITE_ID"
319
+ src="https://YOUR_DEPLOYMENT.convex.site/rastro/vitals.js"
320
+ ></script>
321
+ ```
322
+
323
+ The module shares the tracker's session identity through `sessionStorage`,
324
+ accepts the same `data-endpoint` and `data-visitor` overrides, and works with or
325
+ without the base tracker on the page. Measurements are attributed to the landing
326
+ path of the page load, never to later SPA routes. Vitals feed only the
327
+ `vitalsReport` histograms — analytics event counts, sessions, and live presence
328
+ do not change. Browsers without an entry type simply skip that metric (Safari
329
+ reports no LCP, CLS, or INP).
330
+
302
331
  ### React
303
332
 
304
333
  React is an optional peer dependency. It is required only when importing the
@@ -590,6 +619,10 @@ boundaries use different bucket alignment.
590
619
  - Events per batch: 50
591
620
  - Session-minute groups per batch: 4
592
621
  - Active goals per exact matcher: 1
622
+ - Web Vitals pages per site and UTC day: 48 tracked page rows, then `(other)`;
623
+ device classes are fixed (desktop, mobile, tablet, unknown)
624
+ - Web Vitals report: complete reads bounded to 5,000 rollup rows across at most
625
+ 90 UTC days; wider saturated ranges fail with `REPORT_INCOMPLETE`
593
626
  - Primary aggregate shards: 256 hourly and 128 daily, derived from stable
594
627
  session identity
595
628
  - Funnel and affiliate aggregate shards: 16
@@ -619,31 +652,42 @@ separately. The browser `feature` profile exercises configured goals, funnels,
619
652
  and affiliate attribution; trusted conversions require a separate server-side
620
653
  driver and certification result.
621
654
 
622
- ### Historical ingest evidence requiring recertification
655
+ ### Certified ingest evidence (2026-08-30)
623
656
 
624
657
  | Profile | Workload | Certified stored/day | p95 latency | 100M/day target |
625
658
  | --------- | ------------------------------------------------- | -------------------: | ----------: | --------------- |
626
- | Lean | Minimal events, maximum batches | 136.65M | 4,543 ms | Pass |
627
- | Realistic | Reused sessions, browser mix, context, heartbeats | 120.81M | 4,247 ms | Pass |
628
- | Heavy | 62 KiB requests with bounded custom properties | 76.62M | 3,670 ms | Below target |
629
- | Feature | Goals, funnels, and affiliate attribution | 33.22M | 6,226 ms | Below target |
630
-
631
- Every listed run lasted at least ten minutes, completed with zero request
632
- failures, duplicates, or rejected events, and exactly reconciled the expected
633
- stored events. Results came from one client process against a non-production
634
- Synapse DEV deployment; they are engineering evidence, not a production SLA. The
635
- heavy row is the formal recertification after removing redundant payload
636
- serialization. GeoIP with a provider enabled and trusted server-side conversions
637
- remain separate pending certifications.
638
-
639
- These runs predate the current source-derived coverage and recurring-retention
640
- changes. They remain historical evidence for the named revisions and profiles,
641
- not certification of this uncommitted implementation. Recertify the final code
642
- before presenting any row as current capacity.
643
-
644
- The latest formal results are recorded in
645
- [`docs/benchmarks/2026-08-21-formal-certification.md`](docs/benchmarks/2026-08-21-formal-certification.md).
646
- Earlier development evidence remains available in
659
+ | Lean | Minimal events, maximum batches | 178.95M | 4,167 ms | Pass |
660
+ | Realistic | Reused sessions, browser mix, context, heartbeats | 142.04M | 4,953 ms | Pass |
661
+ | Heavy | 62 KiB requests with bounded custom properties | 55.26M | 7,702 ms | Below target |
662
+ | Feature | Goals, funnels, and affiliate attribution | **failed** | | Defect [#52] |
663
+
664
+ [#52]: https://github.com/amageweb/amage-rastro/issues/52
665
+
666
+ Lean, realistic, and heavy each ran at least ten minutes, completed with zero
667
+ request failures, duplicates, or rejected events, and exactly reconciled the
668
+ expected stored events (the realistic run's reconciliation was re-executed
669
+ exactly after a client-side DNS failure see the report). The realistic row's
670
+ driver session pool is 4,096: at current speed the historical 2,048-session pool
671
+ pushes single sessions past the documented 120 events/minute budget. Results
672
+ came from one client process against the same non-production Synapse DEV
673
+ deployment and site as the 2026-08-21 certification; they are engineering
674
+ evidence, not a production SLA.
675
+
676
+ Two caveats stand deliberately. The heavy row measured a store already holding
677
+ the battery's own multi-million-event history; the 2026-08-22 fresh-store result
678
+ (76.62M/day) remains valid for that state, and neither number overwrites the
679
+ other. The feature profile cannot currently be certified at all: affiliate
680
+ daily-rollup contention loses ~4–5% of batches under concurrent load
681
+ ([#52](https://github.com/amageweb/amage-rastro/issues/52)), so no
682
+ feature-profile capacity is claimed until the fix lands. GeoIP with a provider
683
+ enabled, trusted server-side conversions, and vitals-bearing traffic remain
684
+ separate pending certifications.
685
+
686
+ The full evidence is recorded in
687
+ [`docs/benchmarks/2026-08-30-alpha6-recertification.md`](docs/benchmarks/2026-08-30-alpha6-recertification.md).
688
+ Prior results remain in
689
+ [`docs/benchmarks/2026-08-21-formal-certification.md`](docs/benchmarks/2026-08-21-formal-certification.md)
690
+ and
647
691
  [`docs/benchmarks/2026-08-20-realistic.md`](docs/benchmarks/2026-08-20-realistic.md).
648
692
 
649
693
  From a repository checkout, run a duration-based profile against a confirmed
@@ -739,6 +783,10 @@ Amage Rastro's default tracker:
739
783
  when present), and outbound link origins and pathnames;
740
784
  - strips query strings and fragments from stored paths and links.
741
785
 
786
+ The optional Web Vitals module inherits this contract: it reports at most five
787
+ timing numbers per page load (milliseconds, or CLS scaled by 1000) against the
788
+ landing path, and nothing else.
789
+
742
790
  Cookieless does not automatically mean consent-exempt in every jurisdiction.
743
791
  Review your collection purpose, custom properties, identity strategy, retention
744
792
  policy, and local law.
@@ -470,6 +470,7 @@ export const {
470
470
  goalsReport,
471
471
  funnelsReport,
472
472
  affiliatesReport,
473
+ vitalsReport,
473
474
  dataCoverage,
474
475
  } = federated;
475
476
  ```
@@ -479,21 +480,22 @@ requires both a valid JWT and a matching, non-revoked local grant.
479
480
 
480
481
  ## Function contract
481
482
 
482
- | Function | Input summary | Important output/behavior |
483
- | ------------------ | ------------------------------------------------------- | --------------------------------------------------------------- |
484
- | `manifest` | `{}` | Static protocol, capabilities, names, and limits; no auth |
485
- | `connectionStatus` | `{}` | Redacted status, protocol version, capabilities, site count |
486
- | `listSites` | `{}` | Only `siteId`, `name`, `currency`, `timezone`, `cookieless` |
487
- | `overview` | `siteIds`, `from`, `to`, optional hour/day interval | Aggregate metrics and time series |
488
- | `liveVisitors` | `siteIds`, `now`, optional limit | At most 500 current visitors |
489
- | `listSessions` | one `siteId`, range, `{numItems,cursor}` keyset options | Paginated sessions |
490
- | `sessionJourney` | one site/session, range, `{numItems,cursor}` options | Paginated bounded events |
491
- | `listConversions` | one site, range, `{numItems,cursor}` options | Paginated trusted server-side conversion ledger |
492
- | `visitorJourney` | site IDs, visitor ID, range, optional limit | Cross-site journey inside the grant only |
493
- | `goalsReport` | one site and range | Read-only goal definitions plus aggregates |
494
- | `funnelsReport` | one site and complete UTC-day range | Read-only definitions/steps plus aggregates; max 90 days |
495
- | `affiliatesReport` | one site and complete UTC-day range | Read-only affiliate definitions plus aggregates |
496
- | `dataCoverage` | one site and inclusive integer range | Coverage metadata; echoes site ID, no event/visitor/session IDs |
483
+ | Function | Input summary | Important output/behavior |
484
+ | ------------------ | ------------------------------------------------------- | ---------------------------------------------------------------- |
485
+ | `manifest` | `{}` | Static protocol, capabilities, names, and limits; no auth |
486
+ | `connectionStatus` | `{}` | Redacted status, protocol version, capabilities, site count |
487
+ | `listSites` | `{}` | Only `siteId`, `name`, `currency`, `timezone`, `cookieless` |
488
+ | `overview` | `siteIds`, `from`, `to`, optional hour/day interval | Aggregate metrics and time series |
489
+ | `liveVisitors` | `siteIds`, `now`, optional limit | At most 500 current visitors |
490
+ | `listSessions` | one `siteId`, range, `{numItems,cursor}` keyset options | Paginated sessions |
491
+ | `sessionJourney` | one site/session, range, `{numItems,cursor}` options | Paginated bounded events |
492
+ | `listConversions` | one site, range, `{numItems,cursor}` options | Paginated trusted server-side conversion ledger |
493
+ | `visitorJourney` | site IDs, visitor ID, range, optional limit | Cross-site journey inside the grant only |
494
+ | `goalsReport` | one site and range | Read-only goal definitions plus aggregates |
495
+ | `funnelsReport` | one site and complete UTC-day range | Read-only definitions/steps plus aggregates; max 90 days |
496
+ | `affiliatesReport` | one site and complete UTC-day range | Read-only affiliate definitions plus aggregates |
497
+ | `vitalsReport` | one site and complete UTC-day range | Web Vitals p75/ratings per metric, page, and device; max 90 days |
498
+ | `dataCoverage` | one site and inclusive integer range | Coverage metadata; echoes site ID, no event/visitor/session IDs |
497
499
 
498
500
  The federated surface deliberately excludes ingestion, site mutation, retention
499
501
  writes, configuration writes, domains, owner IDs, network IDs, and arbitrary
@@ -15,7 +15,7 @@
15
15
  "upgrading": "https://www.amagerastro.com/docs/reference/upgrading.md",
16
16
  "integrity": {
17
17
  "algorithm": "sha256",
18
- "agent": "711faf2ca11ee22432cb8b51c7f64fb7e25045a6509391fc8532f08b2fdf3e11",
18
+ "agent": "e2faf12674afb40409c268048595856a248d4a4373af4c7a013089364fc9f28b",
19
19
  "llms": "8c1da1fea23f95a618c4d636840b793195fceedf05f81394df74e1ed5e3fc4da",
20
20
  "protocol": "3a5cba45befc3ff0b56828cb207d8ce67ddc0df6bf0280a977d4db8d7f50aaee",
21
21
  "setup": "04c61ecef029a99ba95e1002439dbd1e42ca1ce351e6deb0988fb556ffce649e",
@@ -67,7 +67,8 @@
67
67
  "goalsReport": "goalsReport",
68
68
  "funnelsReport": "funnelsReport",
69
69
  "affiliatesReport": "affiliatesReport",
70
- "dataCoverage": "dataCoverage"
70
+ "dataCoverage": "dataCoverage",
71
+ "vitalsReport": "vitalsReport"
71
72
  },
72
73
  "capabilities": [
73
74
  "siteSummaries",
@@ -80,7 +81,8 @@
80
81
  "goals",
81
82
  "funnels",
82
83
  "affiliates",
83
- "dataCoverage"
84
+ "dataCoverage",
85
+ "vitals"
84
86
  ],
85
87
  "limits": {
86
88
  "maxSitesPerRequest": 10,
@@ -167,7 +167,8 @@
167
167
  "goalsReport",
168
168
  "funnelsReport",
169
169
  "affiliatesReport",
170
- "dataCoverage"
170
+ "dataCoverage",
171
+ "vitalsReport"
171
172
  ],
172
173
  "properties": {
173
174
  "manifest": { "const": "manifest" },
@@ -182,14 +183,15 @@
182
183
  "goalsReport": { "const": "goalsReport" },
183
184
  "funnelsReport": { "const": "funnelsReport" },
184
185
  "affiliatesReport": { "const": "affiliatesReport" },
185
- "dataCoverage": { "const": "dataCoverage" }
186
+ "dataCoverage": { "const": "dataCoverage" },
187
+ "vitalsReport": { "const": "vitalsReport" }
186
188
  },
187
189
  "additionalProperties": false
188
190
  },
189
191
  "capabilities": {
190
192
  "type": "array",
191
- "minItems": 11,
192
- "maxItems": 11,
193
+ "minItems": 12,
194
+ "maxItems": 12,
193
195
  "uniqueItems": true,
194
196
  "items": {
195
197
  "enum": [
@@ -203,7 +205,8 @@
203
205
  "goals",
204
206
  "funnels",
205
207
  "affiliates",
206
- "dataCoverage"
208
+ "dataCoverage",
209
+ "vitals"
207
210
  ]
208
211
  }
209
212
  },
@@ -14,6 +14,27 @@ export declare const FEDERATED_ANALYTICS_ERROR_CODES: Readonly<{
14
14
  readonly INVALID_SCOPE: "FEDERATION_INVALID_SCOPE";
15
15
  readonly SITE_DENIED: "FEDERATION_SITE_DENIED";
16
16
  }>;
17
+ /**
18
+ * The protocol-v1 baseline every compatible host must serve. Newer hosts may
19
+ * advertise more functions and capabilities; a dashboard must require only
20
+ * this frozen set, or older hosts would fail verification on every addition.
21
+ */
22
+ export declare const FEDERATED_ANALYTICS_REQUIRED_FUNCTIONS: Readonly<{
23
+ readonly manifest: "manifest";
24
+ readonly connectionStatus: "connectionStatus";
25
+ readonly listSites: "listSites";
26
+ readonly overview: "overview";
27
+ readonly liveVisitors: "liveVisitors";
28
+ readonly listSessions: "listSessions";
29
+ readonly sessionJourney: "sessionJourney";
30
+ readonly listConversions: "listConversions";
31
+ readonly visitorJourney: "visitorJourney";
32
+ readonly goalsReport: "goalsReport";
33
+ readonly funnelsReport: "funnelsReport";
34
+ readonly affiliatesReport: "affiliatesReport";
35
+ readonly dataCoverage: "dataCoverage";
36
+ }>;
37
+ export declare const FEDERATED_ANALYTICS_REQUIRED_CAPABILITIES: readonly ["siteSummaries", "overview", "liveVisitors", "sessions", "sessionJourney", "conversions", "visitorJourney", "goals", "funnels", "affiliates", "dataCoverage"];
17
38
  export declare const FEDERATED_ANALYTICS_CONNECTOR_MANIFEST: Readonly<{
18
39
  readonly protocol: "amage-rastro-analytics";
19
40
  readonly protocolVersion: 1;
@@ -32,8 +53,9 @@ export declare const FEDERATED_ANALYTICS_CONNECTOR_MANIFEST: Readonly<{
32
53
  readonly funnelsReport: "funnelsReport";
33
54
  readonly affiliatesReport: "affiliatesReport";
34
55
  readonly dataCoverage: "dataCoverage";
56
+ readonly vitalsReport: "vitalsReport";
35
57
  }>;
36
- readonly capabilities: readonly ["siteSummaries", "overview", "liveVisitors", "sessions", "sessionJourney", "conversions", "visitorJourney", "goals", "funnels", "affiliates", "dataCoverage"];
58
+ readonly capabilities: readonly ["siteSummaries", "overview", "liveVisitors", "sessions", "sessionJourney", "conversions", "visitorJourney", "goals", "funnels", "affiliates", "dataCoverage", "vitals"];
37
59
  readonly limits: Readonly<{
38
60
  readonly maxSitesPerRequest: 10;
39
61
  readonly maxSitesPerConnection: 10;
@@ -75,7 +97,7 @@ export interface FederatedAnalyticsAuthorizerOptions {
75
97
  resolveConnection: ResolveFederatedAnalyticsConnection;
76
98
  }
77
99
  export declare const federatedAnalyticsManifestValidator: import("convex/values").VObject<{
78
- capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney")[];
100
+ capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[];
79
101
  functions: {
80
102
  affiliatesReport: "affiliatesReport";
81
103
  connectionStatus: "connectionStatus";
@@ -90,6 +112,7 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
90
112
  overview: "overview";
91
113
  sessionJourney: "sessionJourney";
92
114
  visitorJourney: "visitorJourney";
115
+ vitalsReport: "vitalsReport";
93
116
  };
94
117
  limits: {
95
118
  maxJourneyEvents: number;
@@ -119,6 +142,7 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
119
142
  overview: "overview";
120
143
  sessionJourney: "sessionJourney";
121
144
  visitorJourney: "visitorJourney";
145
+ vitalsReport: "vitalsReport";
122
146
  }, {
123
147
  manifest: import("convex/values").VLiteral<"manifest", "required">;
124
148
  connectionStatus: import("convex/values").VLiteral<"connectionStatus", "required">;
@@ -133,8 +157,9 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
133
157
  funnelsReport: import("convex/values").VLiteral<"funnelsReport", "required">;
134
158
  affiliatesReport: import("convex/values").VLiteral<"affiliatesReport", "required">;
135
159
  dataCoverage: import("convex/values").VLiteral<"dataCoverage", "required">;
136
- }, "required", "affiliatesReport" | "connectionStatus" | "dataCoverage" | "funnelsReport" | "goalsReport" | "listConversions" | "listSessions" | "listSites" | "liveVisitors" | "manifest" | "overview" | "sessionJourney" | "visitorJourney">;
137
- capabilities: import("convex/values").VArray<("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney")[], import("convex/values").VUnion<"affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney", [import("convex/values").VLiteral<"siteSummaries", "required">, import("convex/values").VLiteral<"overview", "required">, import("convex/values").VLiteral<"liveVisitors", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"sessionJourney", "required">, import("convex/values").VLiteral<"conversions", "required">, import("convex/values").VLiteral<"visitorJourney", "required">, import("convex/values").VLiteral<"goals", "required">, import("convex/values").VLiteral<"funnels", "required">, import("convex/values").VLiteral<"affiliates", "required">, import("convex/values").VLiteral<"dataCoverage", "required">], "required", never>, "required">;
160
+ vitalsReport: import("convex/values").VLiteral<"vitalsReport", "required">;
161
+ }, "required", "affiliatesReport" | "connectionStatus" | "dataCoverage" | "funnelsReport" | "goalsReport" | "listConversions" | "listSessions" | "listSites" | "liveVisitors" | "manifest" | "overview" | "sessionJourney" | "visitorJourney" | "vitalsReport">;
162
+ capabilities: import("convex/values").VArray<("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[], import("convex/values").VUnion<"affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals", [import("convex/values").VLiteral<"siteSummaries", "required">, import("convex/values").VLiteral<"overview", "required">, import("convex/values").VLiteral<"liveVisitors", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"sessionJourney", "required">, import("convex/values").VLiteral<"conversions", "required">, import("convex/values").VLiteral<"visitorJourney", "required">, import("convex/values").VLiteral<"goals", "required">, import("convex/values").VLiteral<"funnels", "required">, import("convex/values").VLiteral<"affiliates", "required">, import("convex/values").VLiteral<"dataCoverage", "required">, import("convex/values").VLiteral<"vitals", "required">], "required", never>, "required">;
138
163
  limits: import("convex/values").VObject<{
139
164
  maxJourneyEvents: number;
140
165
  maxLiveVisitors: number;
@@ -148,16 +173,16 @@ export declare const federatedAnalyticsManifestValidator: import("convex/values"
148
173
  maxLiveVisitors: import("convex/values").VFloat64<number, "required">;
149
174
  maxJourneyEvents: import("convex/values").VFloat64<number, "required">;
150
175
  }, "required", "maxJourneyEvents" | "maxLiveVisitors" | "maxReportRangeDays" | "maxSitesPerConnection" | "maxSitesPerRequest">;
151
- }, "required", "capabilities" | "functions" | "functions.affiliatesReport" | "functions.connectionStatus" | "functions.dataCoverage" | "functions.funnelsReport" | "functions.goalsReport" | "functions.listConversions" | "functions.listSessions" | "functions.listSites" | "functions.liveVisitors" | "functions.manifest" | "functions.overview" | "functions.sessionJourney" | "functions.visitorJourney" | "limits" | "limits.maxJourneyEvents" | "limits.maxLiveVisitors" | "limits.maxReportRangeDays" | "limits.maxSitesPerConnection" | "limits.maxSitesPerRequest" | "moduleName" | "protocol" | "protocolVersion">;
176
+ }, "required", "capabilities" | "functions" | "functions.affiliatesReport" | "functions.connectionStatus" | "functions.dataCoverage" | "functions.funnelsReport" | "functions.goalsReport" | "functions.listConversions" | "functions.listSessions" | "functions.listSites" | "functions.liveVisitors" | "functions.manifest" | "functions.overview" | "functions.sessionJourney" | "functions.visitorJourney" | "functions.vitalsReport" | "limits" | "limits.maxJourneyEvents" | "limits.maxLiveVisitors" | "limits.maxReportRangeDays" | "limits.maxSitesPerConnection" | "limits.maxSitesPerRequest" | "moduleName" | "protocol" | "protocolVersion">;
152
177
  export declare const federatedAnalyticsConnectionStatusValidator: import("convex/values").VObject<{
153
- capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney")[];
178
+ capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[];
154
179
  protocolVersion: 1;
155
180
  siteCount: number;
156
181
  status: "connected";
157
182
  }, {
158
183
  status: import("convex/values").VLiteral<"connected", "required">;
159
184
  protocolVersion: import("convex/values").VLiteral<1, "required">;
160
- capabilities: import("convex/values").VArray<("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney")[], import("convex/values").VUnion<"affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney", [import("convex/values").VLiteral<"siteSummaries", "required">, import("convex/values").VLiteral<"overview", "required">, import("convex/values").VLiteral<"liveVisitors", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"sessionJourney", "required">, import("convex/values").VLiteral<"conversions", "required">, import("convex/values").VLiteral<"visitorJourney", "required">, import("convex/values").VLiteral<"goals", "required">, import("convex/values").VLiteral<"funnels", "required">, import("convex/values").VLiteral<"affiliates", "required">, import("convex/values").VLiteral<"dataCoverage", "required">], "required", never>, "required">;
185
+ capabilities: import("convex/values").VArray<("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[], import("convex/values").VUnion<"affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals", [import("convex/values").VLiteral<"siteSummaries", "required">, import("convex/values").VLiteral<"overview", "required">, import("convex/values").VLiteral<"liveVisitors", "required">, import("convex/values").VLiteral<"sessions", "required">, import("convex/values").VLiteral<"sessionJourney", "required">, import("convex/values").VLiteral<"conversions", "required">, import("convex/values").VLiteral<"visitorJourney", "required">, import("convex/values").VLiteral<"goals", "required">, import("convex/values").VLiteral<"funnels", "required">, import("convex/values").VLiteral<"affiliates", "required">, import("convex/values").VLiteral<"dataCoverage", "required">, import("convex/values").VLiteral<"vitals", "required">], "required", never>, "required">;
161
186
  siteCount: import("convex/values").VFloat64<number, "required">;
162
187
  }, "required", "capabilities" | "protocolVersion" | "siteCount" | "status">;
163
188
  export declare const federatedSiteSummaryValidator: import("convex/values").VObject<{
@@ -191,8 +216,9 @@ export declare function createFederatedAnalyticsManifest(): {
191
216
  funnelsReport: "funnelsReport";
192
217
  affiliatesReport: "affiliatesReport";
193
218
  dataCoverage: "dataCoverage";
219
+ vitalsReport: "vitalsReport";
194
220
  };
195
- capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney")[];
221
+ capabilities: ("affiliates" | "conversions" | "dataCoverage" | "funnels" | "goals" | "liveVisitors" | "overview" | "sessionJourney" | "sessions" | "siteSummaries" | "visitorJourney" | "vitals")[];
196
222
  limits: {
197
223
  maxSitesPerRequest: 10;
198
224
  maxSitesPerConnection: 10;
@@ -1 +1 @@
1
- {"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,12 @@ export const FEDERATED_ANALYTICS_ERROR_CODES = Object.freeze({
15
15
  SITE_DENIED: "FEDERATION_SITE_DENIED",
16
16
  });
17
17
  const MAX_CONNECTION_SITE_IDS = MAX_REPORT_SITES;
18
- const FEDERATED_ANALYTICS_FUNCTION_NAMES = Object.freeze({
18
+ /**
19
+ * The protocol-v1 baseline every compatible host must serve. Newer hosts may
20
+ * advertise more functions and capabilities; a dashboard must require only
21
+ * this frozen set, or older hosts would fail verification on every addition.
22
+ */
23
+ export const FEDERATED_ANALYTICS_REQUIRED_FUNCTIONS = Object.freeze({
19
24
  manifest: "manifest",
20
25
  connectionStatus: "connectionStatus",
21
26
  listSites: "listSites",
@@ -30,7 +35,7 @@ const FEDERATED_ANALYTICS_FUNCTION_NAMES = Object.freeze({
30
35
  affiliatesReport: "affiliatesReport",
31
36
  dataCoverage: "dataCoverage",
32
37
  });
33
- const FEDERATED_ANALYTICS_CAPABILITIES = Object.freeze([
38
+ export const FEDERATED_ANALYTICS_REQUIRED_CAPABILITIES = Object.freeze([
34
39
  "siteSummaries",
35
40
  "overview",
36
41
  "liveVisitors",
@@ -43,6 +48,14 @@ const FEDERATED_ANALYTICS_CAPABILITIES = Object.freeze([
43
48
  "affiliates",
44
49
  "dataCoverage",
45
50
  ]);
51
+ const FEDERATED_ANALYTICS_FUNCTION_NAMES = Object.freeze({
52
+ ...FEDERATED_ANALYTICS_REQUIRED_FUNCTIONS,
53
+ vitalsReport: "vitalsReport",
54
+ });
55
+ const FEDERATED_ANALYTICS_CAPABILITIES = Object.freeze([
56
+ ...FEDERATED_ANALYTICS_REQUIRED_CAPABILITIES,
57
+ "vitals",
58
+ ]);
46
59
  const FEDERATED_ANALYTICS_LIMITS = Object.freeze({
47
60
  maxSitesPerRequest: MAX_REPORT_SITES,
48
61
  maxSitesPerConnection: MAX_CONNECTION_SITE_IDS,
@@ -60,7 +73,7 @@ export const FEDERATED_ANALYTICS_CONNECTOR_MANIFEST = Object.freeze({
60
73
  });
61
74
  const MAX_CLAIM_LENGTH = 128;
62
75
  const MAX_PERMISSIONS = 16;
63
- const federatedAnalyticsCapabilityValidator = v.union(v.literal("siteSummaries"), v.literal("overview"), v.literal("liveVisitors"), v.literal("sessions"), v.literal("sessionJourney"), v.literal("conversions"), v.literal("visitorJourney"), v.literal("goals"), v.literal("funnels"), v.literal("affiliates"), v.literal("dataCoverage"));
76
+ const federatedAnalyticsCapabilityValidator = v.union(v.literal("siteSummaries"), v.literal("overview"), v.literal("liveVisitors"), v.literal("sessions"), v.literal("sessionJourney"), v.literal("conversions"), v.literal("visitorJourney"), v.literal("goals"), v.literal("funnels"), v.literal("affiliates"), v.literal("dataCoverage"), v.literal("vitals"));
64
77
  export const federatedAnalyticsManifestValidator = v.object({
65
78
  protocol: v.literal(FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.protocol),
66
79
  protocolVersion: v.literal(FEDERATED_ANALYTICS_CONNECTOR_MANIFEST.protocolVersion),
@@ -79,6 +92,7 @@ export const federatedAnalyticsManifestValidator = v.object({
79
92
  funnelsReport: v.literal("funnelsReport"),
80
93
  affiliatesReport: v.literal("affiliatesReport"),
81
94
  dataCoverage: v.literal("dataCoverage"),
95
+ vitalsReport: v.literal("vitalsReport"),
82
96
  }),
83
97
  capabilities: v.array(federatedAnalyticsCapabilityValidator),
84
98
  limits: v.object({
@@ -1 +1 @@
1
- {"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/client/federation.ts"],"names":[],"mappings":"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"}