@mongrov/analytics 0.6.0 → 0.8.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 (227) hide show
  1. package/README.md +23 -10
  2. package/UPGRADING.md +456 -0
  3. package/dist/core/device-events.d.ts +14 -0
  4. package/dist/core/device-events.d.ts.map +1 -0
  5. package/dist/core/device-events.js +13 -0
  6. package/dist/core/device-events.js.map +1 -0
  7. package/dist/core/errors.d.ts +1 -1
  8. package/dist/core/errors.d.ts.map +1 -1
  9. package/dist/core/errors.js.map +1 -1
  10. package/dist/core/extensions.d.ts +21 -4
  11. package/dist/core/extensions.d.ts.map +1 -1
  12. package/dist/core/extensions.js +21 -4
  13. package/dist/core/extensions.js.map +1 -1
  14. package/dist/core/factory.d.ts.map +1 -1
  15. package/dist/core/factory.js +125 -23
  16. package/dist/core/factory.js.map +1 -1
  17. package/dist/core/hooks.js +1 -1
  18. package/dist/core/hooks.js.map +1 -1
  19. package/dist/core/index.d.ts +13 -1
  20. package/dist/core/index.d.ts.map +1 -1
  21. package/dist/core/index.js +18 -0
  22. package/dist/core/index.js.map +1 -1
  23. package/dist/core/insight.d.ts +44 -0
  24. package/dist/core/insight.d.ts.map +1 -0
  25. package/dist/core/insight.js +62 -0
  26. package/dist/core/insight.js.map +1 -0
  27. package/dist/core/metric_metadata.d.ts +55 -0
  28. package/dist/core/metric_metadata.d.ts.map +1 -1
  29. package/dist/core/metric_metadata.js +35 -7
  30. package/dist/core/metric_metadata.js.map +1 -1
  31. package/dist/core/migrations.d.ts.map +1 -1
  32. package/dist/core/migrations.js +103 -2
  33. package/dist/core/migrations.js.map +1 -1
  34. package/dist/core/retention.d.ts +44 -13
  35. package/dist/core/retention.d.ts.map +1 -1
  36. package/dist/core/retention.js +49 -22
  37. package/dist/core/retention.js.map +1 -1
  38. package/dist/core/sampling.d.ts +70 -0
  39. package/dist/core/sampling.d.ts.map +1 -0
  40. package/dist/core/sampling.js +107 -0
  41. package/dist/core/sampling.js.map +1 -0
  42. package/dist/core/schemas.d.ts +73 -2
  43. package/dist/core/schemas.d.ts.map +1 -1
  44. package/dist/core/schemas.js +160 -5
  45. package/dist/core/schemas.js.map +1 -1
  46. package/dist/core/table_metadata.d.ts.map +1 -1
  47. package/dist/core/table_metadata.js +3 -0
  48. package/dist/core/table_metadata.js.map +1 -1
  49. package/dist/core/types.d.ts +45 -10
  50. package/dist/core/types.d.ts.map +1 -1
  51. package/dist/core/warehouse.d.ts +28 -0
  52. package/dist/core/warehouse.d.ts.map +1 -1
  53. package/dist/core/warehouse.js +44 -0
  54. package/dist/core/warehouse.js.map +1 -1
  55. package/dist/core/watermark-cache.d.ts +75 -0
  56. package/dist/core/watermark-cache.d.ts.map +1 -0
  57. package/dist/core/watermark-cache.js +0 -0
  58. package/dist/core/watermark-cache.js.map +1 -0
  59. package/dist/rules/__fakes__/fakeEngine.d.ts +2 -0
  60. package/dist/rules/__fakes__/fakeEngine.d.ts.map +1 -1
  61. package/dist/rules/__fakes__/fakeEngine.js +4 -0
  62. package/dist/rules/__fakes__/fakeEngine.js.map +1 -1
  63. package/dist/rules/baseline-reader.d.ts +55 -0
  64. package/dist/rules/baseline-reader.d.ts.map +1 -0
  65. package/dist/rules/baseline-reader.js +111 -0
  66. package/dist/rules/baseline-reader.js.map +1 -0
  67. package/dist/rules/compiler.d.ts +36 -1
  68. package/dist/rules/compiler.d.ts.map +1 -1
  69. package/dist/rules/compiler.js +185 -39
  70. package/dist/rules/compiler.js.map +1 -1
  71. package/dist/rules/defaults/luminx.d.ts.map +1 -1
  72. package/dist/rules/defaults/luminx.js +8 -0
  73. package/dist/rules/defaults/luminx.js.map +1 -1
  74. package/dist/rules/defaults/viva.d.ts.map +1 -1
  75. package/dist/rules/defaults/viva.js +7 -0
  76. package/dist/rules/defaults/viva.js.map +1 -1
  77. package/dist/rules/defaults/yogaring.d.ts.map +1 -1
  78. package/dist/rules/defaults/yogaring.js +7 -0
  79. package/dist/rules/defaults/yogaring.js.map +1 -1
  80. package/dist/rules/defaults/ziva.d.ts.map +1 -1
  81. package/dist/rules/defaults/ziva.js +100 -24
  82. package/dist/rules/defaults/ziva.js.map +1 -1
  83. package/dist/rules/evaluator.d.ts +14 -3
  84. package/dist/rules/evaluator.d.ts.map +1 -1
  85. package/dist/rules/evaluator.js +157 -5
  86. package/dist/rules/evaluator.js.map +1 -1
  87. package/dist/rules/factory.d.ts.map +1 -1
  88. package/dist/rules/factory.js +5 -1
  89. package/dist/rules/factory.js.map +1 -1
  90. package/dist/rules/index.d.ts +2 -1
  91. package/dist/rules/index.d.ts.map +1 -1
  92. package/dist/rules/index.js +2 -1
  93. package/dist/rules/index.js.map +1 -1
  94. package/dist/rules/schema.d.ts +75 -4
  95. package/dist/rules/schema.d.ts.map +1 -1
  96. package/dist/rules/schema.js +44 -0
  97. package/dist/rules/schema.js.map +1 -1
  98. package/dist/rules/types.d.ts +16 -1
  99. package/dist/rules/types.d.ts.map +1 -1
  100. package/dist/rules/validator.d.ts.map +1 -1
  101. package/dist/rules/validator.js +89 -0
  102. package/dist/rules/validator.js.map +1 -1
  103. package/dist/sync/baseline-compute.d.ts +63 -0
  104. package/dist/sync/baseline-compute.d.ts.map +1 -0
  105. package/dist/sync/baseline-compute.js +211 -0
  106. package/dist/sync/baseline-compute.js.map +1 -0
  107. package/dist/sync/events.d.ts +19 -5
  108. package/dist/sync/events.d.ts.map +1 -1
  109. package/dist/sync/events.js +17 -0
  110. package/dist/sync/events.js.map +1 -1
  111. package/dist/sync/factory.d.ts +54 -8
  112. package/dist/sync/factory.d.ts.map +1 -1
  113. package/dist/sync/factory.js +145 -46
  114. package/dist/sync/factory.js.map +1 -1
  115. package/dist/sync/fetcher.d.ts +15 -2
  116. package/dist/sync/fetcher.d.ts.map +1 -1
  117. package/dist/sync/fetcher.js +43 -7
  118. package/dist/sync/fetcher.js.map +1 -1
  119. package/dist/sync/flusher.d.ts +52 -2
  120. package/dist/sync/flusher.d.ts.map +1 -1
  121. package/dist/sync/flusher.js +78 -9
  122. package/dist/sync/flusher.js.map +1 -1
  123. package/dist/sync/index.d.ts +3 -1
  124. package/dist/sync/index.d.ts.map +1 -1
  125. package/dist/sync/index.js +1 -0
  126. package/dist/sync/index.js.map +1 -1
  127. package/dist/sync/mapper/activity.d.ts.map +1 -1
  128. package/dist/sync/mapper/activity.js +2 -1
  129. package/dist/sync/mapper/activity.js.map +1 -1
  130. package/dist/sync/mapper/firmware.d.ts +3 -12
  131. package/dist/sync/mapper/firmware.d.ts.map +1 -1
  132. package/dist/sync/mapper/firmware.js +2 -8
  133. package/dist/sync/mapper/firmware.js.map +1 -1
  134. package/dist/sync/mapper/ring-config.d.ts +76 -28
  135. package/dist/sync/mapper/ring-config.d.ts.map +1 -1
  136. package/dist/sync/mapper/ring-config.js +118 -35
  137. package/dist/sync/mapper/ring-config.js.map +1 -1
  138. package/dist/sync/mapper/schema.d.ts +669 -0
  139. package/dist/sync/mapper/schema.d.ts.map +1 -0
  140. package/dist/sync/mapper/schema.js +160 -0
  141. package/dist/sync/mapper/schema.js.map +1 -0
  142. package/dist/sync/mapper/sleep.d.ts +58 -13
  143. package/dist/sync/mapper/sleep.d.ts.map +1 -1
  144. package/dist/sync/mapper/sleep.js +141 -44
  145. package/dist/sync/mapper/sleep.js.map +1 -1
  146. package/dist/sync/mapper/types.d.ts +118 -29
  147. package/dist/sync/mapper/types.d.ts.map +1 -1
  148. package/dist/sync/pending_closes.js +2 -2
  149. package/dist/sync/pending_closes.js.map +1 -1
  150. package/dist/sync/pusher.js +2 -2
  151. package/dist/sync/pusher.js.map +1 -1
  152. package/dist/sync/scheduler.d.ts +7 -0
  153. package/dist/sync/scheduler.d.ts.map +1 -1
  154. package/dist/sync/scheduler.js +14 -0
  155. package/dist/sync/scheduler.js.map +1 -1
  156. package/dist/tools/__fakes__/engine.d.ts +2 -0
  157. package/dist/tools/__fakes__/engine.d.ts.map +1 -1
  158. package/dist/tools/__fakes__/engine.js +10 -0
  159. package/dist/tools/__fakes__/engine.js.map +1 -1
  160. package/dist/tools/authorize.d.ts +19 -12
  161. package/dist/tools/authorize.d.ts.map +1 -1
  162. package/dist/tools/authorize.js +31 -40
  163. package/dist/tools/authorize.js.map +1 -1
  164. package/dist/tools/factory.d.ts +2 -0
  165. package/dist/tools/factory.d.ts.map +1 -1
  166. package/dist/tools/factory.js +12 -1
  167. package/dist/tools/factory.js.map +1 -1
  168. package/dist/tools/formatters/copy-guidelines.d.ts +57 -0
  169. package/dist/tools/formatters/copy-guidelines.d.ts.map +1 -0
  170. package/dist/tools/formatters/copy-guidelines.js +110 -0
  171. package/dist/tools/formatters/copy-guidelines.js.map +1 -0
  172. package/dist/tools/formatters/index.d.ts +14 -0
  173. package/dist/tools/formatters/index.d.ts.map +1 -0
  174. package/dist/tools/formatters/index.js +14 -0
  175. package/dist/tools/formatters/index.js.map +1 -0
  176. package/dist/tools/formatters/spo2.d.ts +21 -0
  177. package/dist/tools/formatters/spo2.d.ts.map +1 -0
  178. package/dist/tools/formatters/spo2.js +79 -0
  179. package/dist/tools/formatters/spo2.js.map +1 -0
  180. package/dist/tools/{formatters.d.ts → formatters/text.d.ts} +1 -1
  181. package/dist/tools/formatters/text.d.ts.map +1 -0
  182. package/dist/tools/{formatters.js → formatters/text.js} +1 -1
  183. package/dist/tools/formatters/text.js.map +1 -0
  184. package/dist/tools/impls/activity.d.ts +2 -2
  185. package/dist/tools/impls/activity.js +7 -3
  186. package/dist/tools/impls/activity.js.map +1 -1
  187. package/dist/tools/impls/anomaly.d.ts +2 -2
  188. package/dist/tools/impls/anomaly.js +8 -4
  189. package/dist/tools/impls/anomaly.js.map +1 -1
  190. package/dist/tools/impls/compare.d.ts +2 -2
  191. package/dist/tools/impls/compare.js +8 -4
  192. package/dist/tools/impls/compare.js.map +1 -1
  193. package/dist/tools/impls/hrv.d.ts +2 -2
  194. package/dist/tools/impls/hrv.js +6 -2
  195. package/dist/tools/impls/hrv.js.map +1 -1
  196. package/dist/tools/impls/insights.d.ts +4 -4
  197. package/dist/tools/impls/insights.d.ts.map +1 -1
  198. package/dist/tools/impls/insights.js +10 -3
  199. package/dist/tools/impls/insights.js.map +1 -1
  200. package/dist/tools/impls/sleep.d.ts +2 -2
  201. package/dist/tools/impls/sleep.js +6 -2
  202. package/dist/tools/impls/sleep.js.map +1 -1
  203. package/dist/tools/impls/spo2.d.ts +52 -0
  204. package/dist/tools/impls/spo2.d.ts.map +1 -0
  205. package/dist/tools/impls/spo2.js +65 -0
  206. package/dist/tools/impls/spo2.js.map +1 -0
  207. package/dist/tools/index.d.ts +1 -0
  208. package/dist/tools/index.d.ts.map +1 -1
  209. package/dist/tools/index.js +4 -0
  210. package/dist/tools/index.js.map +1 -1
  211. package/dist/tools/mcp/guard.d.ts +28 -11
  212. package/dist/tools/mcp/guard.d.ts.map +1 -1
  213. package/dist/tools/mcp/guard.js +45 -15
  214. package/dist/tools/mcp/guard.js.map +1 -1
  215. package/dist/tools/mcp/index.d.ts +1 -1
  216. package/dist/tools/mcp/index.d.ts.map +1 -1
  217. package/dist/tools/mcp/index.js +1 -1
  218. package/dist/tools/mcp/index.js.map +1 -1
  219. package/dist/tools/mcp/server.d.ts.map +1 -1
  220. package/dist/tools/mcp/server.js +4 -0
  221. package/dist/tools/mcp/server.js.map +1 -1
  222. package/dist/tools/mcp/transports/http.d.ts.map +1 -1
  223. package/dist/tools/mcp/transports/http.js +4 -0
  224. package/dist/tools/mcp/transports/http.js.map +1 -1
  225. package/package.json +8 -5
  226. package/dist/tools/formatters.d.ts.map +0 -1
  227. package/dist/tools/formatters.js.map +0 -1
@@ -18,6 +18,13 @@ export interface MapperContext {
18
18
  deviceId: string;
19
19
  /** IANA timezone string, e.g. 'America/Los_Angeles'. */
20
20
  userTimezone: string;
21
+ /**
22
+ * Random-id source for session ids (principle 25). Defaults to
23
+ * `() => nanoid(24)`. Injectable so tests can keep the mapper
24
+ * deterministic — the hash suffix of a session id is always
25
+ * deterministic regardless of this generator.
26
+ */
27
+ idGenerator?: () => string;
21
28
  }
22
29
  export interface FirmwareHRVRow {
23
30
  timestamp: string;
@@ -54,6 +61,18 @@ export interface FirmwareSleepRow {
54
61
  block_type: string;
55
62
  confidence: number;
56
63
  timestamp: string;
64
+ /**
65
+ * Raw per-block quality score, when the firmware revision carries one.
66
+ * Passed through verbatim to `sleep_raw.quality`. Revisions that omit it
67
+ * fall back to `round(confidence * 100)` — see `mapper/sleep.ts`.
68
+ */
69
+ quality?: number;
70
+ /**
71
+ * Block width in minutes, when the firmware revision carries one.
72
+ * Passed through verbatim to `sleep_raw.unit_length`; drives stage-minute
73
+ * accumulation. Defaults to `DEFAULT_BLOCK_MINUTES` (1) when absent.
74
+ */
75
+ unit_length?: number;
57
76
  }
58
77
  export interface FirmwareBatteryRow {
59
78
  timestamp: string;
@@ -62,11 +81,46 @@ export interface FirmwareBatteryRow {
62
81
  export interface FirmwareRingConfig {
63
82
  automaticMonitoringData: FirmwareMonitoringWindow[];
64
83
  }
84
+ /**
85
+ * One automatic-monitoring window, verbatim from the JStyle J2301A SDK's
86
+ * `AutomaticMonitoring_J2301A` struct (see `BleSDK_Header_J2301A.h`, and
87
+ * `AutomaticMonitoringData` in `@mongrov/zivacore`).
88
+ *
89
+ * Firmware-native naming and shape on purpose (principle 20): `dataType`
90
+ * stays an integer, hours and minutes stay split, `weeks` stays a struct of
91
+ * seven booleans. Every one of those is translated at the mapper boundary
92
+ * and none reaches a warehouse column.
93
+ *
94
+ * An earlier version of this type read `{metric: string, interval_minutes,
95
+ * start_hour, end_hour}`, which matched no vendor type — it had already
96
+ * discarded `dataType`, which is why consumers had to supply a
97
+ * `RingConfigTranslator` inventing the enum back from our own metric names.
98
+ */
65
99
  export interface FirmwareMonitoringWindow {
66
- metric: string;
67
- interval_minutes: number;
68
- start_hour: number;
69
- end_hour: number;
100
+ /** 1 = heartRate, 2 = spo2, 3 = temperature, 4 = HRV. */
101
+ dataType: number;
102
+ /** Sampling cadence in minutes. */
103
+ intervalTime: number;
104
+ startTime_Hour: number;
105
+ startTime_Minutes: number;
106
+ endTime_Hour: number;
107
+ endTime_Minutes: number;
108
+ weeks: FirmwareWeekdays;
109
+ /**
110
+ * Vendor field with undocumented semantics — carried through so the
111
+ * shape stays faithful, but not currently mapped to any column.
112
+ */
113
+ mode?: number;
114
+ }
115
+ /** Per-weekday enable flags. Vendor casing (`Tuesday`..`Saturday`) preserved. */
116
+ export interface FirmwareWeekdays {
117
+ sunday: boolean;
118
+ monday: boolean;
119
+ Tuesday: boolean;
120
+ Wednesday: boolean;
121
+ Thursday: boolean;
122
+ Friday: boolean;
123
+ Saturday: boolean;
70
124
  }
71
125
  export interface FirmwareExport {
72
126
  heartrate: FirmwareHRRow[];
@@ -78,13 +132,21 @@ export interface FirmwareExport {
78
132
  battery_table: FirmwareBatteryRow[];
79
133
  ring: FirmwareRingConfig;
80
134
  }
81
- interface BaseRow {
82
- ts: Date;
135
+ /**
136
+ * Tenant columns every warehouse row carries (spec §Table schema —
137
+ * "every sensor row carries brand, family_id, user_id"). Split out from
138
+ * `BaseRow` because `sleep_session` has no `ts` column: its time axis is
139
+ * `ts_start` / `ts_end`.
140
+ */
141
+ interface TenantRow {
83
142
  brand: string;
84
143
  family_id: string;
85
144
  user_id: string;
86
145
  device_id: string;
87
146
  }
147
+ interface BaseRow extends TenantRow {
148
+ ts: Date;
149
+ }
88
150
  export interface HrvRow extends BaseRow {
89
151
  hrv_ms: number | null;
90
152
  stress: number | null;
@@ -104,24 +166,53 @@ export interface TemperatureRow extends BaseRow {
104
166
  export interface ActivityRow extends BaseRow {
105
167
  steps: number;
106
168
  }
169
+ /**
170
+ * `activity_bucket` warehouse row — 10-min calories/distance. Steps are NOT
171
+ * carried here: they live in `activity` at 1-min resolution after unnest
172
+ * (spec §Table schema). A `steps` field here would silently double-count.
173
+ */
107
174
  export interface ActivityBucketRow extends BaseRow {
108
- steps: number;
109
175
  calories: number;
110
176
  distance_km: number;
111
177
  }
112
- export interface SleepSessionRow extends BaseRow {
178
+ /**
179
+ * `sleep_session` warehouse row. Column names + nullability mirror the DDL
180
+ * in `core/schemas.ts` exactly, so `row[c]` keyed by
181
+ * `columnOrder.sleep_session` yields correct positional appender input.
182
+ *
183
+ * No `ts` — the DDL partitions on `day(ts_start)`.
184
+ */
185
+ export interface SleepSessionRow extends TenantRow {
113
186
  session_id: string;
114
- start_ts: Date;
115
- end_ts: Date;
187
+ ts_start: Date;
188
+ ts_end: Date;
189
+ total_minutes: number;
190
+ deep_minutes: number | null;
191
+ rem_minutes: number | null;
192
+ light_minutes: number | null;
193
+ awake_minutes: number | null;
194
+ avg_confidence: number | null;
116
195
  night_of: Date;
117
196
  }
197
+ /**
198
+ * `sleep_stage` warehouse row. `stage` is the DDL's integer code
199
+ * (`SLEEP_STAGE_CODES`), never the raw firmware `block_type` string —
200
+ * principle 20: firmware enums do not reach our schema.
201
+ */
118
202
  export interface SleepStageRow extends BaseRow {
119
203
  session_id: string;
120
- stage: string;
121
- confidence: number;
204
+ stage: number;
205
+ confidence: number | null;
122
206
  }
207
+ /**
208
+ * `sleep_raw` warehouse row (`collected_only`). Preserves each firmware
209
+ * block for reprocessing, flattened onto the DDL's columns rather than
210
+ * stashed as an opaque payload blob.
211
+ */
123
212
  export interface SleepRawRow extends BaseRow {
124
- payload: FirmwareSleepRow;
213
+ ts_session_start: Date;
214
+ quality: number;
215
+ unit_length: number | null;
125
216
  }
126
217
  export interface DeviceEventRow extends BaseRow {
127
218
  event_type: string;
@@ -144,8 +235,12 @@ export interface DeviceBatteryRow extends BaseRow {
144
235
  * (`data_type`, `start_time`, `end_time`, `weeks`) are produced by a
145
236
  * consumer-provided `RingConfigTranslator` (see below).
146
237
  */
147
- export interface DeviceConfigRow extends BaseRow {
148
- data_type: number;
238
+ export interface DeviceConfigRow extends TenantRow {
239
+ /**
240
+ * OUR metric id (`spo2`, `hrv`, …), never the firmware enum
241
+ * (principle 21). Derived from `dataType` by `firmwareDataTypeToMetrics`.
242
+ */
243
+ metric: string;
149
244
  interval_minutes: number;
150
245
  start_time: string | null;
151
246
  end_time: string | null;
@@ -154,22 +249,16 @@ export interface DeviceConfigRow extends BaseRow {
154
249
  valid_to: Date | null;
155
250
  }
156
251
  /**
157
- * Consumer-provided translation from firmware ring-config semantics to
158
- * warehouse schema semantics. Required at `createSyncManager()` time whenever
159
- * the subscribed tables include `'device_config'`.
160
- *
161
- * Split into three responsibilities so the mapper can:
162
- * - materialize `data_type` per insert (`metricToDataType`);
163
- * - key `activePriorConfigs` by `data_type` when reading local state
164
- * (`dataTypeToMetric` — round-trips the enum for callers that want to
165
- * surface metric names in logs or diagnostics);
166
- * - compute the schema-shaped time fields per firmware window
167
- * (`windowToSchemaFields`).
252
+ * @deprecated Since the mapper consumes the real vendor shape, translation
253
+ * is no longer consumer-specific and happens inside
254
+ * `mapper/ring-config.ts`. Kept as an exported type for one release so
255
+ * existing `createSyncManager({ ringConfigTranslator })` call sites keep
256
+ * compiling; the value is ignored.
168
257
  */
169
258
  export interface RingConfigTranslator {
170
- metricToDataType: (metric: string) => number;
171
- dataTypeToMetric: (dataType: number) => string;
172
- windowToSchemaFields: (window: FirmwareMonitoringWindow) => {
259
+ metricToDataType?: (metric: string) => number;
260
+ dataTypeToMetric?: (dataType: number) => string;
261
+ windowToSchemaFields?: (window: FirmwareMonitoringWindow) => {
173
262
  start_time: string | null;
174
263
  end_time: string | null;
175
264
  weeks: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/types.ts"],"names":[],"mappings":"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"}
@@ -37,14 +37,14 @@ function key(ctx) {
37
37
  function serialize(close) {
38
38
  return {
39
39
  device_id: close.device_id,
40
- data_type: close.data_type,
40
+ metric: close.metric,
41
41
  valid_to: close.valid_to.toISOString(),
42
42
  };
43
43
  }
44
44
  function deserialize(row) {
45
45
  return {
46
46
  device_id: row.device_id,
47
- data_type: row.data_type,
47
+ metric: row.metric,
48
48
  valid_to: new Date(row.valid_to),
49
49
  };
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pending_closes.js","sourceRoot":"","sources":["../../src/sync/pending_closes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;;;;;;;;AAMH,MAAM,UAAU,GAAG,0BAA0B,CAAA;AAQ7C,SAAS,GAAG,CAAC,GAA8C;IACzD,OAAO,GAAG,UAAU,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAA;AACrD,CAAC;AAED,SAAS,SAAS,CAAC,KAAsB;IACvC,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE;KACvC,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAoB;IACvC,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;KACjC,CAAA;AACH,CAAC;AAED,MAAM,OAAO,kBAAkB;IAG7B,YAAY,EAAW;QAFd,yCAAY;QAGnB,uBAAA,IAAI,0BAAO,EAAE,MAAA,CAAA;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CACX,GAA8C,EAC9C,MAAkC;QAElC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,QAAQ,GAAG,CAAC,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACjE,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;QACpD,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK,CACT,GAA8C;QAE9C,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,IAAI,GAAG,CAAC,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAChC,MAAM,uBAAA,IAAI,8BAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,GAA8C,EAC9C,MAAkC;QAElC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,QAAQ,GAAG,CAAC,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACjE,oEAAoE;QACpE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAA;QACpD,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"pending_closes.js","sourceRoot":"","sources":["../../src/sync/pending_closes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;;;;;;;;AAMH,MAAM,UAAU,GAAG,0BAA0B,CAAA;AAQ7C,SAAS,GAAG,CAAC,GAA8C;IACzD,OAAO,GAAG,UAAU,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAA;AACrD,CAAC;AAED,SAAS,SAAS,CAAC,KAAsB;IACvC,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE;KACvC,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAoB;IACvC,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;KACjC,CAAA;AACH,CAAC;AAED,MAAM,OAAO,kBAAkB;IAG7B,YAAY,EAAW;QAFd,yCAAY;QAGnB,uBAAA,IAAI,0BAAO,EAAE,MAAA,CAAA;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CACX,GAA8C,EAC9C,MAAkC;QAElC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,QAAQ,GAAG,CAAC,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACjE,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;QACpD,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK,CACT,GAA8C;QAE9C,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,IAAI,GAAG,CAAC,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAChC,MAAM,uBAAA,IAAI,8BAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,GAA8C,EAC9C,MAAkC;QAElC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,QAAQ,GAAG,CAAC,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACjE,oEAAoE;QACpE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAA;QACpD,MAAM,uBAAA,IAAI,8BAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;CACF"}
@@ -134,10 +134,10 @@ _R2Pusher_engine = new WeakMap(), _R2Pusher_watermark = new WeakMap(), _R2Pusher
134
134
  }
135
135
  const remote = __classPrivateFieldGet(this, _R2Pusher_remoteTable, "f").call(this, ctx, 'device_config');
136
136
  for (const close of closes) {
137
- await __classPrivateFieldGet(this, _R2Pusher_engine, "f").execute(`UPDATE ${remote} SET valid_to = $valid_to WHERE device_id = $device_id AND data_type = $data_type AND family_id = $family_id AND valid_to IS NULL`, {
137
+ await __classPrivateFieldGet(this, _R2Pusher_engine, "f").execute(`UPDATE ${remote} SET valid_to = $valid_to WHERE device_id = $device_id AND metric = $metric AND family_id = $family_id AND valid_to IS NULL`, {
138
138
  valid_to: close.valid_to.toISOString(),
139
139
  device_id: close.device_id,
140
- data_type: close.data_type,
140
+ metric: close.metric,
141
141
  family_id: ctx.tenantId,
142
142
  });
143
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pusher.js","sourceRoot":"","sources":["../../src/sync/pusher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pusher.js","sourceRoot":"","sources":["../../src/sync/pusher.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,13 @@ export interface SyncCoordinator {
43
43
  fetchIncremental: (ctx: AttachContext) => Promise<Array<{
44
44
  ok: boolean;
45
45
  }>>;
46
+ /**
47
+ * Day-first baseline recompute (Sprint 5 T-15). Runs AFTER fetch so the
48
+ * quantiles see rows that just arrived from R2, not just locally-flushed
49
+ * ones — a baseline computed before the fetch would be short a day on
50
+ * every multi-device family. Optional; failures never fail the cycle.
51
+ */
52
+ computeBaselines?: () => Promise<void>;
46
53
  onCycleComplete?: () => Promise<void>;
47
54
  }
48
55
  /** Debug/info logger — matches `@mongrov/core` shape narrowly. */
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/sync/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/sync/scheduler.ts"],"names":[],"mappings":"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"}
@@ -98,6 +98,20 @@ _SyncScheduler_config = new WeakMap(), _SyncScheduler_state = new WeakMap(), _Sy
98
98
  await __classPrivateFieldGet(this, _SyncScheduler_config, "f").coordinator.pushAll(__classPrivateFieldGet(this, _SyncScheduler_config, "f").tables, __classPrivateFieldGet(this, _SyncScheduler_config, "f").ctx);
99
99
  await __classPrivateFieldGet(this, _SyncScheduler_config, "f").coordinator.pushClosesForDeviceConfig?.(__classPrivateFieldGet(this, _SyncScheduler_config, "f").ctx);
100
100
  await __classPrivateFieldGet(this, _SyncScheduler_config, "f").coordinator.fetchIncremental(__classPrivateFieldGet(this, _SyncScheduler_config, "f").ctx);
101
+ // Baselines are derived data — a failure here leaves the previous
102
+ // (still-valid) rows in place and must not mark the cycle failed,
103
+ // which would otherwise strand the scheduler in `error` and stop
104
+ // future flushes over a stale percentile.
105
+ if (__classPrivateFieldGet(this, _SyncScheduler_config, "f").coordinator.computeBaselines) {
106
+ try {
107
+ await __classPrivateFieldGet(this, _SyncScheduler_config, "f").coordinator.computeBaselines();
108
+ }
109
+ catch (cause) {
110
+ __classPrivateFieldGet(this, _SyncScheduler_config, "f").logger.warn('scheduler.cycle.baselines_failed', {
111
+ error: String(cause),
112
+ });
113
+ }
114
+ }
101
115
  await __classPrivateFieldGet(this, _SyncScheduler_config, "f").coordinator.onCycleComplete?.();
102
116
  __classPrivateFieldGet(this, _SyncScheduler_config, "f").logger.debug('scheduler.cycle.ok');
103
117
  __classPrivateFieldGet(this, _SyncScheduler_instances, "m", _SyncScheduler_setState).call(this, 'idle');
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/sync/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/sync/scheduler.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,8 @@ export interface FakeEngine extends AnalyticsEngine {
20
20
  }[];
21
21
  queueRows: (sqlSubstring: string, rows: unknown[]) => void;
22
22
  setError: (err: Error | null) => void;
23
+ /** Seed the roster returned by `getFamilyMembers()`. */
24
+ setFamilyMembers: (ids: string[]) => void;
23
25
  }
24
26
  export declare function createFakeEngine(): FakeEngine;
25
27
  //# sourceMappingURL=engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/tools/__fakes__/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAW,SAAQ,eAAe;IACjD,QAAQ,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,CAAA;IAClE,SAAS,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;IAC1D,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;CACtC;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAmC7C"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/tools/__fakes__/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAW,SAAQ,eAAe;IACjD,QAAQ,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,CAAA;IAClE,SAAS,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;IAC1D,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;IACrC,wDAAwD;IACxD,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAC1C;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CA4C7C"}
@@ -1,10 +1,19 @@
1
1
  export function createFakeEngine() {
2
2
  const queues = [];
3
+ let familyMembers = [];
3
4
  const calls = [];
4
5
  let error = null;
5
6
  const engine = {
6
7
  async attach() { },
7
8
  async detach() { },
9
+ async dismissInsight() { },
10
+ async getFamilyMembers() {
11
+ // Honour `setError` so fail-closed tests exercise a real throw from
12
+ // the membership path, not an incidental empty roster.
13
+ if (error)
14
+ throw error;
15
+ return familyMembers;
16
+ },
8
17
  async execute(sql, params) {
9
18
  calls.push({ sql, params: params ?? {} });
10
19
  if (error)
@@ -32,6 +41,7 @@ export function createFakeEngine() {
32
41
  calls,
33
42
  queueRows(substring, rows) { queues.push({ substring, rows }); },
34
43
  setError(err) { error = err; },
44
+ setFamilyMembers(ids) { familyMembers = ids; },
35
45
  };
36
46
  return engine;
37
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/tools/__fakes__/engine.ts"],"names":[],"mappings":"AAsBA,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAA6C,EAAE,CAAA;IAC3D,MAAM,KAAK,GAAuD,EAAE,CAAA;IACpE,IAAI,KAAK,GAAiB,IAAI,CAAA;IAE9B,MAAM,MAAM,GAAe;QACzB,KAAK,CAAC,MAAM,KAAI,CAAC;QACjB,KAAK,CAAC,MAAM,KAAI,CAAC;QACjB,KAAK,CAAC,OAAO,CAAI,GAAW,EAAE,MAAgC;YAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAA;YACzC,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAA;YACtB,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;YAC5D,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO,EAAS,CAAA;YAChC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACjC,OAAO,CAAC,CAAC,IAAW,CAAA;QACtB,CAAC;QACD,MAAM;YACJ,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QACD,cAAc;YACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAC3D,CAAC;QACD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;QACzB,KAAK,CAAC,YAAY,KAAI,CAAC;QACvB,KAAK,CAAC,aAAa,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;QACrC,KAAK,CAAC,KAAK,KAAI,CAAC;QAChB,KAAK;QACL,SAAS,CAAC,SAAS,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;QAC/D,QAAQ,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAA,CAAC,CAAC;KAC9B,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/tools/__fakes__/engine.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAA6C,EAAE,CAAA;IAC3D,IAAI,aAAa,GAAa,EAAE,CAAA;IAChC,MAAM,KAAK,GAAuD,EAAE,CAAA;IACpE,IAAI,KAAK,GAAiB,IAAI,CAAA;IAE9B,MAAM,MAAM,GAAe;QACzB,KAAK,CAAC,MAAM,KAAI,CAAC;QACjB,KAAK,CAAC,MAAM,KAAI,CAAC;QACjB,KAAK,CAAC,cAAc,KAAI,CAAC;QACzB,KAAK,CAAC,gBAAgB;YACpB,oEAAoE;YACpE,uDAAuD;YACvD,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAA;YACtB,OAAO,aAAa,CAAA;QACtB,CAAC;QACD,KAAK,CAAC,OAAO,CAAI,GAAW,EAAE,MAAgC;YAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAA;YACzC,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAA;YACtB,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;YAC5D,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO,EAAS,CAAA;YAChC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACjC,OAAO,CAAC,CAAC,IAAW,CAAA;QACtB,CAAC;QACD,MAAM;YACJ,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QACD,cAAc;YACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAC3D,CAAC;QACD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;QACzB,KAAK,CAAC,YAAY,KAAI,CAAC;QACvB,KAAK,CAAC,aAAa,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;QACrC,KAAK,CAAC,KAAK,KAAI,CAAC;QAChB,KAAK;QACL,SAAS,CAAC,SAAS,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;QAC/D,QAAQ,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAA,CAAC,CAAC;QAC7B,gBAAgB,CAAC,GAAG,IAAI,aAAa,GAAG,GAAG,CAAA,CAAC,CAAC;KAC9C,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -3,10 +3,20 @@
3
3
  *
4
4
  * `familyScopeAuthorize` — grants access iff `args.userId` is either
5
5
  * the requester themselves or another member of the requester's
6
- * family. When `config.familyMembersProvider` is supplied (the
7
- * factory path since T-11), membership resolves via that provider;
8
- * otherwise the legacy SQL path against a `family_member` table is
9
- * used (kept for standalone hook usage and backwards compat).
6
+ * family.
7
+ *
8
+ * Membership always resolves through the engine's configured
9
+ * `FamilyMembersProvider` (principle 39 "Rules engine and AI tools
10
+ * share the same source of truth"): an explicitly-passed
11
+ * `config.familyMembersProvider` wins, otherwise `analytics
12
+ * .getFamilyMembers()` delegates to the one wired at `createAnalytics`.
13
+ *
14
+ * There is deliberately no SQL fallback. The spec's illustrative
15
+ * `SELECT 1 FROM family_member ...` referenced a table that no DDL in
16
+ * this package ever creates, so that path could only ever throw and
17
+ * fail closed — silently denying every cross-member query on any
18
+ * install that didn't pass a provider. Membership lives in the RxDB
19
+ * Family doc, not in DuckDB.
10
20
  *
11
21
  * Both hooks fail closed on any error — provider throws, engine
12
22
  * throws, missing/malformed args — return `false` rather than
@@ -23,14 +33,11 @@ export interface AuthorizeConfig {
23
33
  }
24
34
  export declare function familyScopeAuthorize(analytics: AnalyticsEngine, config?: AuthorizeConfig): AuthorizeFn;
25
35
  /**
26
- * `orgScopeAuthorize` — parity with family scope but against an
27
- * `org_member` table. Orgs are not first-class in v0.1.0; the ctx
28
- * `familyId` is treated as the org id until org membership is wired
29
- * through `RequestContext`.
30
- *
31
- * When `familyMembersProvider` is supplied, the same provider is
32
- * consulted (v0.1.0 shim — a dedicated `orgMembersProvider` will
33
- * split out once orgs land).
36
+ * `orgScopeAuthorize` — parity with family scope. Orgs are not
37
+ * first-class in v0.1.0; the ctx `familyId` is treated as the org id
38
+ * until org membership is wired through `RequestContext`, and the same
39
+ * membership provider is consulted (v0.1.0 shim — a dedicated
40
+ * `orgMembersProvider` splits out once orgs land).
34
41
  */
35
42
  export declare function orgScopeAuthorize(analytics: AnalyticsEngine, config?: AuthorizeConfig): AuthorizeFn;
36
43
  //# sourceMappingURL=authorize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../src/tools/authorize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;CAC9C;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,eAAe,EAC1B,MAAM,GAAE,eAAoB,GAC3B,WAAW,CAmCb;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,eAAe,EAC1B,MAAM,GAAE,eAAoB,GAC3B,WAAW,CAmCb"}
1
+ {"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../src/tools/authorize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;CAC9C;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,eAAe,EAC1B,MAAM,GAAE,eAAoB,GAC3B,WAAW,CAuBb;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,eAAe,EAC1B,MAAM,GAAE,eAAoB,GAC3B,WAAW,CAuBb"}
@@ -3,10 +3,20 @@
3
3
  *
4
4
  * `familyScopeAuthorize` — grants access iff `args.userId` is either
5
5
  * the requester themselves or another member of the requester's
6
- * family. When `config.familyMembersProvider` is supplied (the
7
- * factory path since T-11), membership resolves via that provider;
8
- * otherwise the legacy SQL path against a `family_member` table is
9
- * used (kept for standalone hook usage and backwards compat).
6
+ * family.
7
+ *
8
+ * Membership always resolves through the engine's configured
9
+ * `FamilyMembersProvider` (principle 39 "Rules engine and AI tools
10
+ * share the same source of truth"): an explicitly-passed
11
+ * `config.familyMembersProvider` wins, otherwise `analytics
12
+ * .getFamilyMembers()` delegates to the one wired at `createAnalytics`.
13
+ *
14
+ * There is deliberately no SQL fallback. The spec's illustrative
15
+ * `SELECT 1 FROM family_member ...` referenced a table that no DDL in
16
+ * this package ever creates, so that path could only ever throw and
17
+ * fail closed — silently denying every cross-member query on any
18
+ * install that didn't pass a provider. Membership lives in the RxDB
19
+ * Family doc, not in DuckDB.
10
20
  *
11
21
  * Both hooks fail closed on any error — provider throws, engine
12
22
  * throws, missing/malformed args — return `false` rather than
@@ -21,22 +31,14 @@ export function familyScopeAuthorize(analytics, config = {}) {
21
31
  if (targetUserId === ctx.requesterUserId) {
22
32
  return true;
23
33
  }
24
- if (config.familyMembersProvider) {
25
- try {
26
- const members = await config.familyMembersProvider({
34
+ try {
35
+ const members = config.familyMembersProvider
36
+ ? await config.familyMembersProvider({
27
37
  brand: ctx.brand,
28
38
  familyId: ctx.familyId,
29
- });
30
- return members.includes(targetUserId);
31
- }
32
- catch {
33
- return false;
34
- }
35
- }
36
- try {
37
- const rows = await analytics.execute('SELECT 1 AS one FROM family_member '
38
- + 'WHERE family_id = $familyId AND user_id = $userId LIMIT 1', { familyId: ctx.familyId, userId: targetUserId });
39
- return rows.length > 0;
39
+ })
40
+ : await analytics.getFamilyMembers();
41
+ return members.includes(targetUserId);
40
42
  }
41
43
  catch {
42
44
  return false;
@@ -44,14 +46,11 @@ export function familyScopeAuthorize(analytics, config = {}) {
44
46
  };
45
47
  }
46
48
  /**
47
- * `orgScopeAuthorize` — parity with family scope but against an
48
- * `org_member` table. Orgs are not first-class in v0.1.0; the ctx
49
- * `familyId` is treated as the org id until org membership is wired
50
- * through `RequestContext`.
51
- *
52
- * When `familyMembersProvider` is supplied, the same provider is
53
- * consulted (v0.1.0 shim — a dedicated `orgMembersProvider` will
54
- * split out once orgs land).
49
+ * `orgScopeAuthorize` — parity with family scope. Orgs are not
50
+ * first-class in v0.1.0; the ctx `familyId` is treated as the org id
51
+ * until org membership is wired through `RequestContext`, and the same
52
+ * membership provider is consulted (v0.1.0 shim — a dedicated
53
+ * `orgMembersProvider` splits out once orgs land).
55
54
  */
56
55
  export function orgScopeAuthorize(analytics, config = {}) {
57
56
  return async (_toolName, args, ctx) => {
@@ -62,22 +61,14 @@ export function orgScopeAuthorize(analytics, config = {}) {
62
61
  if (targetUserId === ctx.requesterUserId) {
63
62
  return true;
64
63
  }
65
- if (config.familyMembersProvider) {
66
- try {
67
- const members = await config.familyMembersProvider({
64
+ try {
65
+ const members = config.familyMembersProvider
66
+ ? await config.familyMembersProvider({
68
67
  brand: ctx.brand,
69
68
  familyId: ctx.familyId,
70
- });
71
- return members.includes(targetUserId);
72
- }
73
- catch {
74
- return false;
75
- }
76
- }
77
- try {
78
- const rows = await analytics.execute('SELECT 1 AS one FROM org_member '
79
- + 'WHERE org_id = $orgId AND user_id = $userId LIMIT 1', { orgId: ctx.familyId, userId: targetUserId });
80
- return rows.length > 0;
69
+ })
70
+ : await analytics.getFamilyMembers();
71
+ return members.includes(targetUserId);
81
72
  }
82
73
  catch {
83
74
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../src/tools/authorize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,MAAM,UAAU,oBAAoB,CAClC,SAA0B,EAC1B,SAA0B,EAAE;IAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAA;QAChC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,YAAY,KAAK,GAAG,CAAC,eAAe,EAAE,CAAC;YACzC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC;oBACjD,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC,CAAA;gBACF,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;YACvC,CAAC;YACD,MAAM,CAAC;gBACL,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAClC,qCAAqC;kBACnC,2DAA2D,EAC7D,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CACjD,CAAA;YACD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACxB,CAAC;QACD,MAAM,CAAC;YACL,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAA0B,EAC1B,SAA0B,EAAE;IAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAA;QAChC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,YAAY,KAAK,GAAG,CAAC,eAAe,EAAE,CAAC;YACzC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC;oBACjD,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC,CAAA;gBACF,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;YACvC,CAAC;YACD,MAAM,CAAC;gBACL,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAClC,kCAAkC;kBAChC,qDAAqD,EACvD,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAC9C,CAAA;YACD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACxB,CAAC;QACD,MAAM,CAAC;YACL,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../src/tools/authorize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAaH,MAAM,UAAU,oBAAoB,CAClC,SAA0B,EAC1B,SAA0B,EAAE;IAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAA;QAChC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,YAAY,KAAK,GAAG,CAAC,eAAe,EAAE,CAAC;YACzC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB;gBAC1C,CAAC,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC;oBACjC,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC;gBACJ,CAAC,CAAC,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAA;YACtC,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;QACvC,CAAC;QACD,MAAM,CAAC;YACL,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAA0B,EAC1B,SAA0B,EAAE;IAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAA;QAChC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,YAAY,KAAK,GAAG,CAAC,eAAe,EAAE,CAAC;YACzC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB;gBAC1C,CAAC,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC;oBACjC,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC;gBACJ,CAAC,CAAC,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAA;YACtC,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;QACvC,CAAC;QACD,MAAM,CAAC;YACL,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -23,6 +23,7 @@ import { type GetActivityTotalInput } from './impls/activity';
23
23
  import { type DetectAnomalyInput } from './impls/anomaly';
24
24
  import { type CompareTrendInput } from './impls/compare';
25
25
  import { type GetHRVInput } from './impls/hrv';
26
+ import { type GetSpO2Input } from './impls/spo2';
26
27
  import { type GetInsightsInput } from './impls/insights';
27
28
  import { type GetSleepSummaryInput } from './impls/sleep';
28
29
  export interface AnalyticsToolMap {
@@ -31,6 +32,7 @@ export interface AnalyticsToolMap {
31
32
  getActivityTotal: ReturnType<typeof makeTool<GetActivityTotalInput>>;
32
33
  compareTrend: ReturnType<typeof makeTool<CompareTrendInput>>;
33
34
  detectAnomaly: ReturnType<typeof makeTool<DetectAnomalyInput>>;
35
+ getSpO2: ReturnType<typeof makeTool<GetSpO2Input>>;
34
36
  getInsights: ReturnType<typeof makeTool<GetInsightsInput>>;
35
37
  }
36
38
  export interface AnalyticsToolsHandle {