thryve-mcp-server 0.0.2 → 0.0.3

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 (43) hide show
  1. package/README.md +42 -16
  2. package/dist/category-data-types.d.ts +18 -0
  3. package/dist/category-data-types.d.ts.map +1 -0
  4. package/dist/category-data-types.js +74 -0
  5. package/dist/category-data-types.js.map +1 -0
  6. package/dist/category-mappings.d.ts +0 -13
  7. package/dist/category-mappings.d.ts.map +1 -1
  8. package/dist/category-mappings.js +0 -17
  9. package/dist/category-mappings.js.map +1 -1
  10. package/dist/data-enrichment.d.ts +1 -6
  11. package/dist/data-enrichment.d.ts.map +1 -1
  12. package/dist/data-enrichment.js +10 -51
  13. package/dist/data-enrichment.js.map +1 -1
  14. package/dist/data-source-mappings.d.ts +12 -0
  15. package/dist/data-source-mappings.d.ts.map +1 -0
  16. package/dist/data-source-mappings.js +47 -0
  17. package/dist/data-source-mappings.js.map +1 -0
  18. package/dist/helpers.d.ts +1 -4
  19. package/dist/helpers.d.ts.map +1 -1
  20. package/dist/helpers.js +0 -64
  21. package/dist/helpers.js.map +1 -1
  22. package/dist/index.js +142 -143
  23. package/dist/index.js.map +1 -1
  24. package/dist/schemas.d.ts +192 -300
  25. package/dist/schemas.d.ts.map +1 -1
  26. package/dist/schemas.js +39 -135
  27. package/dist/schemas.js.map +1 -1
  28. package/dist/tools/baseCategoryHandler.d.ts +5 -11
  29. package/dist/tools/baseCategoryHandler.d.ts.map +1 -1
  30. package/dist/tools/baseCategoryHandler.js +41 -67
  31. package/dist/tools/baseCategoryHandler.js.map +1 -1
  32. package/dist/tools/categoryTools.d.ts +16 -16
  33. package/dist/tools/search-filters.d.ts +4 -6
  34. package/dist/tools/search-filters.d.ts.map +1 -1
  35. package/dist/tools/search-filters.js +17 -21
  36. package/dist/tools/search-filters.js.map +1 -1
  37. package/dist/tools/search-keyword.d.ts +1 -1
  38. package/dist/tools/search-keyword.d.ts.map +1 -1
  39. package/dist/tools/search-keyword.js +46 -12
  40. package/dist/tools/search-keyword.js.map +1 -1
  41. package/dist/types.d.ts +2 -7
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +1 -1
package/README.md CHANGED
@@ -55,13 +55,12 @@ Each tool retrieves data for one health category. All support daily/epoch resolu
55
55
  - `GetMovementAnalysisData` – Gait, posture, biomechanics
56
56
 
57
57
  **Parameters (all tools):**
58
- - `resolution` – "daily" | "epoch" (default: "daily")
58
+ - `timeSeries` – "daily" | "epoch" (default: "daily")
59
59
  - `startTimestamp` – ISO 8601 (defaults to 7 days ago)
60
60
  - `endTimestamp` – ISO 8601 (defaults to now)
61
- - `dataSources` – Array of data source IDs
61
+ - `dataSources` – Array of data source identifiers (e.g., ["Fitbit", "Garmin", "AppleHealth"])
62
62
  - `limit` – Max records to return
63
- - `includeFields` – Sub-categories to include (e.g., ["Cardiovascular Health"])
64
- - `excludeFields` – Sub-categories to exclude
63
+ - `includedData` – Array of category-specific data type names to return (falls back to all data types when omitted)
65
64
 
66
65
  **Example:**
67
66
  ```bash
@@ -77,14 +76,35 @@ curl -X POST http://localhost:30000/mcp \
77
76
  "params": {
78
77
  "name": "GetActivityData",
79
78
  "arguments": {
80
- "resolution": "daily",
79
+ "timeSeries": "daily",
81
80
  "startTimestamp": "2025-10-21T00:00:00Z",
82
- "endTimestamp": "2025-10-28T23:59:59Z"
81
+ "endTimestamp": "2025-10-28T23:59:59Z",
82
+ "dataSources": ["Fitbit"],
83
+ "includedData": ["Steps", "BurnedCalories"]
83
84
  }
84
85
  }
85
86
  }'
86
87
  ```
87
88
 
89
+ #### Data source identifiers
90
+
91
+ Category tools, `searchKeyword`, and `searchFilters` now accept friendly source names instead of numeric IDs. Use `listConnectedSources` to discover what each user has linked, or pick from common values:
92
+
93
+ - `Fitbit`
94
+ - `Garmin`
95
+ - `Polar`
96
+ - `AppleHealth`
97
+ - `SamsungHealth`
98
+ - `Withings`
99
+ - `Strava`
100
+ - `Oura`
101
+ - `Whoop`
102
+ - `GoogleFitREST`
103
+ - `GoogleFitNative`
104
+ - `HealthConnect`
105
+ - `Dexcom`
106
+ - `Suunto`
107
+
88
108
  ### Search and Retrieval Tools
89
109
 
90
110
  #### `searchKeyword`
@@ -96,7 +116,7 @@ Search for health data by property name (e.g., "SleepBinary", "Steps", "HeartRat
96
116
  - `startDate` – YYYY-MM-DD
97
117
  - `endDate` – YYYY-MM-DD
98
118
  - `dataType` – Filter by category
99
- - `dataSource` – Filter by source ID
119
+ - `dataSource` – Filter by source identifier (e.g., "Fitbit")
100
120
  - `page` – Page number (default: 1)
101
121
  - `pageSize` – Results per page (default: 50, max: 200)
102
122
  - `sortBy` – "timestamp" | "day" | "value" | "dataType" | "dataSource"
@@ -107,9 +127,9 @@ Search for health data by property name (e.g., "SleepBinary", "Steps", "HeartRat
107
127
  Advanced search with comprehensive filtering. Replaces legacy getDailyData/getEpochData.
108
128
 
109
129
  **Parameters:**
110
- - `resolution` – "daily" | "epoch" | "both" (default: "both")
130
+ - `timeSeries` – "daily" | "epoch" | "both" (default: "both")
111
131
  - `dataTypes` – Array of data type IDs
112
- - `dataSources` – Array of source IDs
132
+ - `dataSources` – Array of source identifiers
113
133
  - `categories` – Array of category names
114
134
  - `groupByCategory` – Boolean (default: false)
115
135
  - `limit` – Max records
@@ -124,7 +144,7 @@ Advanced search with comprehensive filtering. Replaces legacy getDailyData/getEp
124
144
  {
125
145
  "name": "searchFilters",
126
146
  "arguments": {
127
- "resolution": "daily",
147
+ "timeSeries": "daily",
128
148
  "categories": ["Activity", "Heart Rate"],
129
149
  "groupByCategory": true
130
150
  }
@@ -215,12 +235,18 @@ Catalog of 250+ data types organized by 16 categories.
215
235
  }
216
236
  ```
217
237
 
218
- ## Common Data Source IDs
219
-
220
- - `1` – Fitbit
221
- - `2` – Garmin
222
- - `3` – Polar
223
- - `11` – Strava
238
+ ## Common Data Source Identifiers
239
+
240
+ - `Fitbit`
241
+ - `Garmin`
242
+ - `Polar`
243
+ - `AppleHealth`
244
+ - `SamsungHealth`
245
+ - `Withings`
246
+ - `Strava`
247
+ - `Oura`
248
+ - `Whoop`
249
+ - `Dexcom`
224
250
 
225
251
  ## Error Handling
226
252
 
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Category-specific data type enumerations for LLM-friendly access
3
+ * Automatically generated from ALL_DATA_TYPES
4
+ */
5
+ import type { HealthCategory } from "./category-mappings.js";
6
+ /**
7
+ * Get available data type names for a specific category
8
+ */
9
+ export declare function getDataTypeNamesForCategory(category: HealthCategory): string[];
10
+ /**
11
+ * Pre-computed data type names for each category (for schema generation)
12
+ */
13
+ export declare const CATEGORY_DATA_TYPE_NAMES: Record<HealthCategory, string[]>;
14
+ /**
15
+ * Convert data type names to IDs for API calls
16
+ */
17
+ export declare function dataTypeNamesToIds(names: string[]): number[];
18
+ //# sourceMappingURL=category-data-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category-data-types.d.ts","sourceRoot":"","sources":["../src/category-data-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,EAAE,CAmC9E;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAiBrE,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAS5D"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Category-specific data type enumerations for LLM-friendly access
3
+ * Automatically generated from ALL_DATA_TYPES
4
+ */
5
+ import { ALL_DATA_TYPES } from "./data-types-generated.js";
6
+ /**
7
+ * Get available data type names for a specific category
8
+ */
9
+ export function getDataTypeNamesForCategory(category) {
10
+ // Map our HealthCategory to Thryve categories
11
+ const categoryMap = {
12
+ "Activity": ["Activity"],
13
+ "Heart Rate": ["Heart Rate"],
14
+ "Sleep": ["Sleep"],
15
+ "Workouts": ["Workouts"],
16
+ "Stress & HRV": ["Stress & HRV"],
17
+ "Respiratory": ["Respiratory & Breathing"],
18
+ "Blood Glucose": ["Blood Glucose"],
19
+ "Body Composition": ["Body Composition & Measurements"],
20
+ "Womens Health": ["Women's Health"],
21
+ "Nutrition": ["Detailed Nutrition"],
22
+ "Cardiovascular": ["Cardiovascular Health", "Advanced Cardiac Analysis"],
23
+ "Wellness": ["Self-Reported Wellness"],
24
+ "Audio & Hearing": ["Audio & Hearing Health"],
25
+ "Microbiome": ["Microbiome & Gut Health"],
26
+ "Location": ["Location & GPS"],
27
+ "Movement Analysis": ["Movement Analysis"],
28
+ };
29
+ const thryveCategories = categoryMap[category] || [];
30
+ const dataTypeNames = new Set();
31
+ for (const dataType of ALL_DATA_TYPES) {
32
+ // Handle compound categories like "Activity,Workouts"
33
+ const categories = dataType.category.split(",").map((c) => c.trim());
34
+ // Check if any of this data type's categories match our target categories
35
+ if (categories.some(cat => thryveCategories.includes(cat))) {
36
+ dataTypeNames.add(dataType.name);
37
+ }
38
+ }
39
+ return Array.from(dataTypeNames).sort();
40
+ }
41
+ /**
42
+ * Pre-computed data type names for each category (for schema generation)
43
+ */
44
+ export const CATEGORY_DATA_TYPE_NAMES = {
45
+ "Activity": getDataTypeNamesForCategory("Activity"),
46
+ "Heart Rate": getDataTypeNamesForCategory("Heart Rate"),
47
+ "Sleep": getDataTypeNamesForCategory("Sleep"),
48
+ "Workouts": getDataTypeNamesForCategory("Workouts"),
49
+ "Stress & HRV": getDataTypeNamesForCategory("Stress & HRV"),
50
+ "Respiratory": getDataTypeNamesForCategory("Respiratory"),
51
+ "Blood Glucose": getDataTypeNamesForCategory("Blood Glucose"),
52
+ "Body Composition": getDataTypeNamesForCategory("Body Composition"),
53
+ "Womens Health": getDataTypeNamesForCategory("Womens Health"),
54
+ "Nutrition": getDataTypeNamesForCategory("Nutrition"),
55
+ "Cardiovascular": getDataTypeNamesForCategory("Cardiovascular"),
56
+ "Wellness": getDataTypeNamesForCategory("Wellness"),
57
+ "Audio & Hearing": getDataTypeNamesForCategory("Audio & Hearing"),
58
+ "Microbiome": getDataTypeNamesForCategory("Microbiome"),
59
+ "Location": getDataTypeNamesForCategory("Location"),
60
+ "Movement Analysis": getDataTypeNamesForCategory("Movement Analysis"),
61
+ };
62
+ /**
63
+ * Convert data type names to IDs for API calls
64
+ */
65
+ export function dataTypeNamesToIds(names) {
66
+ const nameToIdMap = ALL_DATA_TYPES.reduce((acc, dt) => {
67
+ acc[dt.name] = dt.id;
68
+ return acc;
69
+ }, {});
70
+ return names
71
+ .map(name => nameToIdMap[name])
72
+ .filter(id => id !== undefined);
73
+ }
74
+ //# sourceMappingURL=category-data-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category-data-types.js","sourceRoot":"","sources":["../src/category-data-types.ts"],"names":[],"mappings":"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"}
@@ -17,18 +17,5 @@ export declare function getDataTypeIdsForCategories(categories: HealthCategory[]
17
17
  * Get category information for display
18
18
  */
19
19
  export declare function getCategoryInfo(category: HealthCategory): CategoryMapping | undefined;
20
- /**
21
- * Get all available categories
22
- */
23
- export declare function getAllCategories(): HealthCategory[];
24
- /**
25
- * Get category statistics
26
- */
27
- export declare function getCategoryStats(): {
28
- category: string;
29
- description: string;
30
- dataTypeCount: number;
31
- thryveCategories: string[];
32
- }[];
33
20
  export {};
34
21
  //# sourceMappingURL=category-mappings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"category-mappings.d.ts","sourceRoot":"","sources":["../src/category-mappings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,YAAY,GACZ,OAAO,GACP,UAAU,GACV,cAAc,GACd,aAAa,GACb,eAAe,GACf,kBAAkB,GAClB,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,iBAAiB,GACjB,YAAY,GACZ,UAAU,GACV,mBAAmB,CAAC;AAExB,UAAU,eAAe;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AA6GD,eAAO,MAAM,iBAAiB,yCAA0B,CAAC;AAEzD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,CAWlF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,eAAe,GAAG,SAAS,CAErF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB;;;;;IAO/B"}
1
+ {"version":3,"file":"category-mappings.d.ts","sourceRoot":"","sources":["../src/category-mappings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,YAAY,GACZ,OAAO,GACP,UAAU,GACV,cAAc,GACd,aAAa,GACb,eAAe,GACf,kBAAkB,GAClB,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,iBAAiB,GACjB,YAAY,GACZ,UAAU,GACV,mBAAmB,CAAC;AAExB,UAAU,eAAe;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AA6GD,eAAO,MAAM,iBAAiB,yCAA0B,CAAC;AAEzD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,CAWlF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,eAAe,GAAG,SAAS,CAErF"}
@@ -126,21 +126,4 @@ export function getDataTypeIdsForCategories(categories) {
126
126
  export function getCategoryInfo(category) {
127
127
  return CATEGORY_MAPPINGS[category];
128
128
  }
129
- /**
130
- * Get all available categories
131
- */
132
- export function getAllCategories() {
133
- return Object.keys(CATEGORY_MAPPINGS);
134
- }
135
- /**
136
- * Get category statistics
137
- */
138
- export function getCategoryStats() {
139
- return Object.entries(CATEGORY_MAPPINGS).map(([category, mapping]) => ({
140
- category,
141
- description: mapping.description,
142
- dataTypeCount: mapping.dataTypeIds.length,
143
- thryveCategories: mapping.thryveCategories,
144
- }));
145
- }
146
129
  //# sourceMappingURL=category-mappings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"category-mappings.js","sourceRoot":"","sources":["../src/category-mappings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"category-mappings.js","sourceRoot":"","sources":["../src/category-mappings.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Shared data enrichment utilities for health data
3
- * Used by getDailyData, getEpochData, and getHealthDataByCategory
3
+ * Used by search tools and category handlers to enrich API responses
4
4
  */
5
5
  import type { HealthDataRecord } from "./types.js";
6
6
  /**
@@ -11,9 +11,4 @@ export declare function flattenThryveResponse(data: any): HealthDataRecord[];
11
11
  * Enrich records with data type metadata (name, category, unit)
12
12
  */
13
13
  export declare function enrichWithDataTypes(records: HealthDataRecord[]): void;
14
- /**
15
- * Rebuild Thryve API response structure from flattened records
16
- * Groups records by dataSource
17
- */
18
- export declare function rebuildThryveResponse(records: HealthDataRecord[]): any[];
19
14
  //# sourceMappingURL=data-enrichment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-enrichment.d.ts","sourceRoot":"","sources":["../src/data-enrichment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,GAAG,gBAAgB,EAAE,CAyBnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAyBrE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,GAAG,EAAE,CAmDxE"}
1
+ {"version":3,"file":"data-enrichment.d.ts","sourceRoot":"","sources":["../src/data-enrichment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,GAAG,gBAAgB,EAAE,CA+BnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAyBrE"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Shared data enrichment utilities for health data
3
- * Used by getDailyData, getEpochData, and getHealthDataByCategory
3
+ * Used by search tools and category handlers to enrich API responses
4
4
  */
5
5
  import { getDataTypeById } from "./data-types-generated.js";
6
- import { generateRecordId } from "./helpers.js";
6
+ import { DATA_SOURCE_MAPPINGS } from "./data-source-mappings.js";
7
7
  /**
8
8
  * Flatten Thryve API response structure into flat array of records
9
9
  */
@@ -17,11 +17,16 @@ export function flattenThryveResponse(data) {
17
17
  for (const dataSource of item.dataSources) {
18
18
  if (dataSource.data && Array.isArray(dataSource.data)) {
19
19
  for (const record of dataSource.data) {
20
+ // Convert numeric data source ID to friendly name if needed
21
+ let dataSourceName = dataSource.dataSourceName;
22
+ if (!dataSourceName && typeof dataSource.dataSource === 'number') {
23
+ dataSourceName = DATA_SOURCE_MAPPINGS[dataSource.dataSource] || `Unknown (${dataSource.dataSource})`;
24
+ }
20
25
  records.push({
21
26
  ...record,
22
- dataSource: dataSource.dataSource,
23
- dataSourceName: dataSource.dataSourceName,
24
- _recordId: generateRecordId({ ...record, dataSource: dataSource.dataSource }),
27
+ dataSource: dataSourceName || dataSource.dataSource, // Use friendly name as primary
28
+ dataSourceName: dataSourceName, // Keep for backward compatibility
29
+ dataSourceId: typeof dataSource.dataSource === 'number' ? dataSource.dataSource : undefined, // Preserve numeric ID
25
30
  });
26
31
  }
27
32
  }
@@ -56,50 +61,4 @@ export function enrichWithDataTypes(records) {
56
61
  }
57
62
  }
58
63
  }
59
- /**
60
- * Rebuild Thryve API response structure from flattened records
61
- * Groups records by dataSource
62
- */
63
- export function rebuildThryveResponse(records) {
64
- if (records.length === 0) {
65
- return [];
66
- }
67
- // Group records by data source
68
- const groupedBySource = new Map();
69
- for (const record of records) {
70
- const sourceId = record.dataSource || 0;
71
- if (!groupedBySource.has(sourceId)) {
72
- groupedBySource.set(sourceId, []);
73
- }
74
- groupedBySource.get(sourceId).push(record);
75
- }
76
- // Rebuild structure
77
- const result = [];
78
- for (const [dataSource, sourceRecords] of groupedBySource) {
79
- // Extract first record to get authToken (if present)
80
- const firstRecord = sourceRecords[0];
81
- const authToken = firstRecord.authenticationToken;
82
- const dataSourceObj = {
83
- dataSource,
84
- data: sourceRecords.map((record) => {
85
- // Remove internal fields
86
- const { dataSource: _ds, dataSourceName: _dsName, _recordId, ...cleanRecord } = record;
87
- return cleanRecord;
88
- }),
89
- };
90
- // Add dataSourceName if available
91
- if (sourceRecords[0].dataSourceName) {
92
- dataSourceObj.dataSourceName = sourceRecords[0].dataSourceName;
93
- }
94
- const responseItem = {
95
- dataSources: [dataSourceObj],
96
- };
97
- // Add authToken if present
98
- if (authToken) {
99
- responseItem.authenticationToken = authToken;
100
- }
101
- result.push(responseItem);
102
- }
103
- return result;
104
- }
105
64
  //# sourceMappingURL=data-enrichment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-enrichment.js","sourceRoot":"","sources":["../src/data-enrichment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-enrichment.js","sourceRoot":"","sources":["../src/data-enrichment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAS;IAC7C,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,UAAU,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;wBACrC,4DAA4D;wBAC5D,IAAI,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;wBAC/C,IAAI,CAAC,cAAc,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;4BACjE,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,YAAY,UAAU,CAAC,UAAU,GAAG,CAAC;wBACvG,CAAC;wBAED,OAAO,CAAC,IAAI,CAAC;4BACX,GAAG,MAAM;4BACT,UAAU,EAAE,cAAc,IAAI,UAAU,CAAC,UAAU,EAAE,+BAA+B;4BACpF,cAAc,EAAE,cAAc,EAAE,kCAAkC;4BAClE,YAAY,EAAE,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,sBAAsB;yBACpH,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA2B;IAC7D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GACV,MAAM,CAAC,qBAAqB;YAC5B,MAAM,CAAC,gBAAgB;YACvB,MAAM,CAAC,qBAAqB,CAAC;QAE/B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACb,uDAAuD;gBACvD,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;oBACjC,MAAM,CAAC,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACnD,CAAC;gBACD,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;oBAC5D,MAAM,CAAC,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAC5C,MAAM,CAAC,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACnD,CAAC;gBAED,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACpC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC5B,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Data source mappings for LLM-friendly access
3
+ * Maps data source IDs to friendly names based on Thryve API documentation
4
+ * Source: https://docs.thryve.health/thryve-data-sources/overview
5
+ */
6
+ export declare const DATA_SOURCE_MAPPINGS: Record<number, string>;
7
+ export type DataSourceName = typeof DATA_SOURCE_MAPPINGS[keyof typeof DATA_SOURCE_MAPPINGS];
8
+ /**
9
+ * Convert data source names to IDs
10
+ */
11
+ export declare function dataSourceNamesToIds(names: string[]): number[];
12
+ //# sourceMappingURL=data-source-mappings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source-mappings.d.ts","sourceRoot":"","sources":["../src/data-source-mappings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuB9C,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,oBAAoB,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAE5F;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAe9D"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Data source mappings for LLM-friendly access
3
+ * Maps data source IDs to friendly names based on Thryve API documentation
4
+ * Source: https://docs.thryve.health/thryve-data-sources/overview
5
+ */
6
+ export const DATA_SOURCE_MAPPINGS = {
7
+ 1: "Fitbit",
8
+ 2: "Garmin",
9
+ 3: "Polar",
10
+ 5: "AppleHealth",
11
+ 6: "SamsungHealth",
12
+ 8: "Withings",
13
+ 11: "Strava",
14
+ 12: "GoogleFitREST",
15
+ 16: "OmronConnect",
16
+ 17: "Suunto",
17
+ 18: "Oura",
18
+ 21: "iHealth",
19
+ 27: "Beurer",
20
+ 38: "HuaweiHealth",
21
+ 40: "GoogleFitNative",
22
+ 41: "Dexcom",
23
+ 42: "Whoop",
24
+ 43: "Decathlon",
25
+ 44: "HealthConnect",
26
+ 45: "Komoot",
27
+ 46: "FreeStyleLibre",
28
+ 47: "ShenAI",
29
+ };
30
+ /**
31
+ * Convert data source names to IDs
32
+ */
33
+ export function dataSourceNamesToIds(names) {
34
+ const ids = [];
35
+ const nameToIdMap = Object.entries(DATA_SOURCE_MAPPINGS).reduce((acc, [id, name]) => {
36
+ acc[name.toLowerCase()] = parseInt(id);
37
+ return acc;
38
+ }, {});
39
+ for (const name of names) {
40
+ const id = nameToIdMap[name.toLowerCase()];
41
+ if (id !== undefined) {
42
+ ids.push(id);
43
+ }
44
+ }
45
+ return ids;
46
+ }
47
+ //# sourceMappingURL=data-source-mappings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source-mappings.js","sourceRoot":"","sources":["../src/data-source-mappings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,eAAe;IAClB,CAAC,EAAE,UAAU;IACb,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,QAAQ;CACJ,CAAC;AAIX;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAe;IAClD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;QAClF,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA4B,CAAC,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
package/dist/helpers.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Request } from "express";
2
- import type { HealthDataRecord, ThryveHeaders, PaginatedResult, ParsedRecordId } from "./types.js";
2
+ import type { HealthDataRecord, ThryveHeaders, PaginatedResult } from "./types.js";
3
3
  export declare const THRYVE_API_BASE_URL = "https://api.und-gesund.de";
4
4
  export declare function extractThryveHeaders(req: Request): ThryveHeaders;
5
5
  export declare function buildUrlEncodedBody(params: Record<string, string | boolean | undefined>): string;
@@ -13,7 +13,4 @@ export declare function getDefaultTimestampRange(): {
13
13
  };
14
14
  export declare function sortHealthData(data: HealthDataRecord[], sortBy: string, sortOrder: "asc" | "desc"): HealthDataRecord[];
15
15
  export declare function paginateResults<T>(data: T[], page: number, pageSize: number): PaginatedResult<T>;
16
- export declare function filterByKeyword(data: HealthDataRecord[], query: string): HealthDataRecord[];
17
- export declare function generateRecordId(record: HealthDataRecord): string;
18
- export declare function parseRecordId(id: string): ParsedRecordId | null;
19
16
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGnG,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAG/D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAqBhE;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,MAAM,CAOhG;AAGD,wBAAgB,mBAAmB,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAS1E;AAGD,wBAAgB,wBAAwB,IAAI;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAS3F;AAGD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,gBAAgB,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,GAAG,MAAM,GACxB,gBAAgB,EAAE,CAqCpB;AAGD,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,eAAe,CAAC,CAAC,CAAC,CAgBpB;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA2B3F;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAejE;AAGD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAiB/D"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGnF,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAG/D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAqBhE;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,MAAM,CAOhG;AAGD,wBAAgB,mBAAmB,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAS1E;AAGD,wBAAgB,wBAAwB,IAAI;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAS3F;AAGD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,gBAAgB,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,GAAG,MAAM,GACxB,gBAAgB,EAAE,CAqCpB;AAGD,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,eAAe,CAAC,CAAC,CAAC,CAgBpB"}
package/dist/helpers.js CHANGED
@@ -99,68 +99,4 @@ export function paginateResults(data, page, pageSize) {
99
99
  },
100
100
  };
101
101
  }
102
- // Helper function to filter health data by keyword
103
- export function filterByKeyword(data, query) {
104
- const lowerQuery = query.toLowerCase();
105
- return data.filter((record) => {
106
- // Search in data type name
107
- if (record.dataTypeName && record.dataTypeName.toLowerCase().includes(lowerQuery)) {
108
- return true;
109
- }
110
- // Search in data source name
111
- if (record.dataSourceName && record.dataSourceName.toLowerCase().includes(lowerQuery)) {
112
- return true;
113
- }
114
- // Search in category
115
- if (record.category && record.category.toLowerCase().includes(lowerQuery)) {
116
- return true;
117
- }
118
- // Search in daily dynamic value type name
119
- if (record.dailyDynamicValueTypeName &&
120
- record.dailyDynamicValueTypeName.toLowerCase().includes(lowerQuery)) {
121
- return true;
122
- }
123
- // Search in dynamic epoch value type name
124
- if (record.dynamicEpochValueTypeName &&
125
- record.dynamicEpochValueTypeName.toLowerCase().includes(lowerQuery)) {
126
- return true;
127
- }
128
- return false;
129
- });
130
- }
131
- // Helper function to generate a unique ID for a health record
132
- export function generateRecordId(record) {
133
- if (record.day) {
134
- // Daily record: daily:{dataType}:{day}:{dataSource}
135
- const dataType = record.dataType || record.dailyDynamicValueType || 'unknown';
136
- const day = record.day;
137
- const dataSource = record.dataSource || 'unknown';
138
- return `daily:${dataType}:${day}:${dataSource}`;
139
- }
140
- else if (record.timestamp) {
141
- // Epoch record: epoch:{dataType}:{timestamp}:{dataSource}
142
- const dataType = record.dataType || record.dynamicEpochValueType || 'unknown';
143
- const timestamp = record.timestamp;
144
- const dataSource = record.dataSource || 'unknown';
145
- return `epoch:${dataType}:${timestamp}:${dataSource}`;
146
- }
147
- return 'unknown';
148
- }
149
- // Helper function to parse a record ID
150
- export function parseRecordId(id) {
151
- const parts = id.split(':');
152
- if (parts.length !== 4) {
153
- return null;
154
- }
155
- const [type, dataType, timeKey, dataSource] = parts;
156
- if (type !== 'daily' && type !== 'epoch') {
157
- return null;
158
- }
159
- return {
160
- type: type,
161
- dataType,
162
- timeKey,
163
- dataSource,
164
- };
165
- }
166
102
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}