thryve-mcp-server 0.0.6 → 0.0.9

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 (108) hide show
  1. package/README.md +11 -11
  2. package/dist/index.js +53 -60
  3. package/dist/index.js.map +1 -1
  4. package/package.json +11 -8
  5. package/dist/data-types.d.ts +0 -53
  6. package/dist/data-types.d.ts.map +0 -1
  7. package/dist/data-types.js +0 -138
  8. package/dist/data-types.js.map +0 -1
  9. package/dist/debug-logger.d.ts +0 -17
  10. package/dist/debug-logger.d.ts.map +0 -1
  11. package/dist/debug-logger.js +0 -35
  12. package/dist/debug-logger.js.map +0 -1
  13. package/dist/tools/categories/getActivity.d.ts +0 -10
  14. package/dist/tools/categories/getActivity.d.ts.map +0 -1
  15. package/dist/tools/categories/getActivity.js +0 -5
  16. package/dist/tools/categories/getActivity.js.map +0 -1
  17. package/dist/tools/categories/getAudioAndHearing.d.ts +0 -10
  18. package/dist/tools/categories/getAudioAndHearing.d.ts.map +0 -1
  19. package/dist/tools/categories/getAudioAndHearing.js +0 -5
  20. package/dist/tools/categories/getAudioAndHearing.js.map +0 -1
  21. package/dist/tools/categories/getBloodGlucose.d.ts +0 -10
  22. package/dist/tools/categories/getBloodGlucose.d.ts.map +0 -1
  23. package/dist/tools/categories/getBloodGlucose.js +0 -5
  24. package/dist/tools/categories/getBloodGlucose.js.map +0 -1
  25. package/dist/tools/categories/getBodyComposition.d.ts +0 -10
  26. package/dist/tools/categories/getBodyComposition.d.ts.map +0 -1
  27. package/dist/tools/categories/getBodyComposition.js +0 -5
  28. package/dist/tools/categories/getBodyComposition.js.map +0 -1
  29. package/dist/tools/categories/getCardiovascular.d.ts +0 -10
  30. package/dist/tools/categories/getCardiovascular.d.ts.map +0 -1
  31. package/dist/tools/categories/getCardiovascular.js +0 -5
  32. package/dist/tools/categories/getCardiovascular.js.map +0 -1
  33. package/dist/tools/categories/getHeartRate.d.ts +0 -10
  34. package/dist/tools/categories/getHeartRate.d.ts.map +0 -1
  35. package/dist/tools/categories/getHeartRate.js +0 -5
  36. package/dist/tools/categories/getHeartRate.js.map +0 -1
  37. package/dist/tools/categories/getLocation.d.ts +0 -10
  38. package/dist/tools/categories/getLocation.d.ts.map +0 -1
  39. package/dist/tools/categories/getLocation.js +0 -5
  40. package/dist/tools/categories/getLocation.js.map +0 -1
  41. package/dist/tools/categories/getMicrobiome.d.ts +0 -10
  42. package/dist/tools/categories/getMicrobiome.d.ts.map +0 -1
  43. package/dist/tools/categories/getMicrobiome.js +0 -5
  44. package/dist/tools/categories/getMicrobiome.js.map +0 -1
  45. package/dist/tools/categories/getMovementAnalysis.d.ts +0 -10
  46. package/dist/tools/categories/getMovementAnalysis.d.ts.map +0 -1
  47. package/dist/tools/categories/getMovementAnalysis.js +0 -5
  48. package/dist/tools/categories/getMovementAnalysis.js.map +0 -1
  49. package/dist/tools/categories/getNutrition.d.ts +0 -10
  50. package/dist/tools/categories/getNutrition.d.ts.map +0 -1
  51. package/dist/tools/categories/getNutrition.js +0 -5
  52. package/dist/tools/categories/getNutrition.js.map +0 -1
  53. package/dist/tools/categories/getRespiratory.d.ts +0 -10
  54. package/dist/tools/categories/getRespiratory.d.ts.map +0 -1
  55. package/dist/tools/categories/getRespiratory.js +0 -5
  56. package/dist/tools/categories/getRespiratory.js.map +0 -1
  57. package/dist/tools/categories/getSleep.d.ts +0 -10
  58. package/dist/tools/categories/getSleep.d.ts.map +0 -1
  59. package/dist/tools/categories/getSleep.js +0 -5
  60. package/dist/tools/categories/getSleep.js.map +0 -1
  61. package/dist/tools/categories/getStressAndHRV.d.ts +0 -10
  62. package/dist/tools/categories/getStressAndHRV.d.ts.map +0 -1
  63. package/dist/tools/categories/getStressAndHRV.js +0 -5
  64. package/dist/tools/categories/getStressAndHRV.js.map +0 -1
  65. package/dist/tools/categories/getWellness.d.ts +0 -10
  66. package/dist/tools/categories/getWellness.d.ts.map +0 -1
  67. package/dist/tools/categories/getWellness.js +0 -5
  68. package/dist/tools/categories/getWellness.js.map +0 -1
  69. package/dist/tools/categories/getWomensHealth.d.ts +0 -10
  70. package/dist/tools/categories/getWomensHealth.d.ts.map +0 -1
  71. package/dist/tools/categories/getWomensHealth.js +0 -5
  72. package/dist/tools/categories/getWomensHealth.js.map +0 -1
  73. package/dist/tools/categories/getWorkouts.d.ts +0 -10
  74. package/dist/tools/categories/getWorkouts.d.ts.map +0 -1
  75. package/dist/tools/categories/getWorkouts.js +0 -5
  76. package/dist/tools/categories/getWorkouts.js.map +0 -1
  77. package/dist/tools/get.d.ts +0 -39
  78. package/dist/tools/get.d.ts.map +0 -1
  79. package/dist/tools/get.js +0 -118
  80. package/dist/tools/get.js.map +0 -1
  81. package/dist/tools/getConnectionWidgetUrl.d.ts +0 -12
  82. package/dist/tools/getConnectionWidgetUrl.d.ts.map +0 -1
  83. package/dist/tools/getConnectionWidgetUrl.js +0 -26
  84. package/dist/tools/getConnectionWidgetUrl.js.map +0 -1
  85. package/dist/tools/getDailyData.d.ts +0 -30
  86. package/dist/tools/getDailyData.d.ts.map +0 -1
  87. package/dist/tools/getDailyData.js +0 -114
  88. package/dist/tools/getDailyData.js.map +0 -1
  89. package/dist/tools/getEpochData.d.ts +0 -30
  90. package/dist/tools/getEpochData.d.ts.map +0 -1
  91. package/dist/tools/getEpochData.js +0 -111
  92. package/dist/tools/getEpochData.js.map +0 -1
  93. package/dist/tools/getHealthDataByCategory.d.ts +0 -38
  94. package/dist/tools/getHealthDataByCategory.d.ts.map +0 -1
  95. package/dist/tools/getHealthDataByCategory.js +0 -231
  96. package/dist/tools/getHealthDataByCategory.js.map +0 -1
  97. package/dist/tools/getUserInformation.d.ts +0 -8
  98. package/dist/tools/getUserInformation.d.ts.map +0 -1
  99. package/dist/tools/getUserInformation.js +0 -24
  100. package/dist/tools/getUserInformation.js.map +0 -1
  101. package/dist/tools/legacy.d.ts +0 -37
  102. package/dist/tools/legacy.d.ts.map +0 -1
  103. package/dist/tools/legacy.js +0 -105
  104. package/dist/tools/legacy.js.map +0 -1
  105. package/dist/tools/search-tools.d.ts +0 -8
  106. package/dist/tools/search-tools.d.ts.map +0 -1
  107. package/dist/tools/search-tools.js +0 -273
  108. package/dist/tools/search-tools.js.map +0 -1
package/README.md CHANGED
@@ -5,16 +5,16 @@ Stateless MCP server that exposes Thryve's health data API via HTTP. Designed fo
5
5
  ## Quick Start
6
6
 
7
7
  ```bash
8
- npm install
9
- npm run build
10
- npm start # Listens on http://localhost:30000
8
+ pnpm install
9
+ pnpm run build
10
+ pnpm start # Listens on http://localhost:30000
11
11
  ```
12
12
 
13
13
  **Scripts:**
14
- - `npm run build` – Compile TypeScript
15
- - `npm run dev` – Development mode with auto-reload (uses nodemon)
16
- - `npm run dev:debug` – Development mode with DEBUG logging enabled
17
- - `npm start` – Launch server
14
+ - `pnpm run build` – Compile TypeScript
15
+ - `pnpm run dev` – Development mode with auto-reload (uses nodemon)
16
+ - `pnpm run dev:debug` – Development mode with DEBUG logging enabled
17
+ - `pnpm start` – Launch server
18
18
 
19
19
  ## Configuration
20
20
 
@@ -33,9 +33,9 @@ Stateless design: all credentials arrive as HTTP headers from the BlueNexus MCP
33
33
  Enable detailed execution logging by setting the `DEBUG` environment variable:
34
34
 
35
35
  ```bash
36
- DEBUG=true npm start
36
+ DEBUG=true pnpm start
37
37
  # or
38
- npm run dev:debug
38
+ pnpm run dev:debug
39
39
  ```
40
40
 
41
41
  When debug mode is enabled, all tool responses include additional metadata:
@@ -69,8 +69,8 @@ This is useful for:
69
69
  The server uses `nodemon` to automatically reload when source files change:
70
70
 
71
71
  ```bash
72
- npm run dev # Watch and reload on changes
73
- npm run dev:debug # Watch with DEBUG mode enabled
72
+ pnpm run dev # Watch and reload on changes
73
+ pnpm run dev:debug # Watch with DEBUG mode enabled
74
74
  ```
75
75
 
76
76
  **Watched files:**
package/dist/index.js CHANGED
@@ -40,75 +40,68 @@ toolRegistry.register("searchFilters", SearchFiltersSchema, searchFilters);
40
40
  toolRegistry.register("getAvailableDataTypes", GetAvailableDataTypesSchema, getAvailableDataTypes);
41
41
  toolRegistry.register("listConnectedSources", ListConnectedSourcesSchema, listConnectedSources);
42
42
  toolRegistry.register("listDevices", ListDevicesSchema, listDevices);
43
- // Create MCP server
44
- const server = new Server({
45
- name: "bluenexus-wearables-mcp-server",
46
- version: "1.0.0",
47
- }, {
48
- capabilities: {
49
- tools: {},
50
- },
51
- });
52
- // Register tool handlers
53
- server.setRequestHandler(ListToolsRequestSchema, async () => {
54
- // Load tool definitions from JSON (reloads on each request in dev mode)
55
- const toolDefinitions = loadToolDefinitions();
56
- return {
57
- tools: toolDefinitions,
58
- };
59
- });
60
- // Store current request in context (set during HTTP request handling)
61
- let currentRequest = null;
62
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
63
- if (!currentRequest) {
64
- throw new Error("No request context available. This server must be called via HTTP transport.");
65
- }
66
- try {
67
- // Execute tool via registry (includes automatic validation and debug wrapping)
68
- const result = await toolRegistry.execute(request.params.name, request.params.arguments, currentRequest);
69
- // Return formatted response with data and optional debug info
70
- // Debug info is included in the response when DEBUG mode is enabled
71
- return {
72
- content: [
73
- {
74
- type: "text",
75
- text: JSON.stringify(result, null, 2),
76
- },
77
- ],
78
- };
79
- }
80
- catch (error) {
81
- if (error instanceof z.ZodError) {
82
- throw new Error(`Invalid arguments: ${error.message}`);
43
+ // Factory function to create fresh server instances per request
44
+ function createStatelessServer(httpReq) {
45
+ const server = new Server({
46
+ name: "bluenexus-wearables-mcp-server",
47
+ version: "1.0.0",
48
+ }, {
49
+ capabilities: {
50
+ tools: {},
51
+ },
52
+ });
53
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
54
+ const toolDefinitions = loadToolDefinitions();
55
+ return { tools: toolDefinitions };
56
+ });
57
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
58
+ try {
59
+ const result = await toolRegistry.execute(request.params.name, request.params.arguments, httpReq);
60
+ return {
61
+ content: [
62
+ {
63
+ type: "text",
64
+ text: JSON.stringify(result, null, 2),
65
+ },
66
+ ],
67
+ };
83
68
  }
84
- throw error;
85
- }
86
- });
69
+ catch (error) {
70
+ if (error instanceof z.ZodError) {
71
+ throw new Error(`Invalid arguments: ${error.message}`);
72
+ }
73
+ throw error;
74
+ }
75
+ });
76
+ return server;
77
+ }
87
78
  // Create Express app with stateless HTTP transport
88
79
  const app = express();
89
80
  app.use(express.json());
90
- // Create stateless transport (no session management)
91
- const transport = new StreamableHTTPServerTransport({
92
- sessionIdGenerator: undefined, // Stateless mode
93
- enableJsonResponse: true,
94
- });
95
- // Connect server to transport
96
- await server.connect(transport);
97
- // Handle MCP requests
81
+ // Handle MCP requests - create fresh server + transport per request
98
82
  app.post("/mcp", async (req, res) => {
99
83
  try {
100
- // Store request in context for tool handlers to access headers
101
- currentRequest = req;
84
+ const server = createStatelessServer(req);
85
+ const transport = new StreamableHTTPServerTransport({
86
+ sessionIdGenerator: undefined,
87
+ enableJsonResponse: true,
88
+ });
89
+ res.on("close", () => {
90
+ transport.close();
91
+ server.close();
92
+ });
93
+ await server.connect(transport);
102
94
  await transport.handleRequest(req, res, req.body);
103
- currentRequest = null; // Clear context after request
104
95
  }
105
96
  catch (error) {
106
- currentRequest = null; // Clear context on error
107
97
  console.error("Error handling MCP request:", error);
108
- res.status(500).json({
109
- error: "Internal server error",
110
- message: error instanceof Error ? error.message : "Unknown error",
111
- });
98
+ if (!res.headersSent) {
99
+ res.status(500).json({
100
+ jsonrpc: "2.0",
101
+ error: { code: -32603, message: "Internal server error" },
102
+ id: null,
103
+ });
104
+ }
112
105
  }
113
106
  });
114
107
  // Health check endpoint
@@ -123,7 +116,7 @@ app.get("/health", (_req, res) => {
123
116
  });
124
117
  });
125
118
  // Start server
126
- const PORT = process.env.PORT || 30000;
119
+ const PORT = process.env.PORT || 30002;
127
120
  app.listen(PORT, () => {
128
121
  console.log(`Bluenexus Wearables MCP Server running on http://localhost:${PORT}`);
129
122
  console.log(`MCP endpoint: http://localhost:${PORT}/mcp`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thryve-mcp-server",
3
- "version": "0.0.6",
3
+ "version": "0.0.9",
4
4
  "description": "Stateless MCP Server for Thryve Health Data API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -9,10 +9,12 @@
9
9
  },
10
10
  "scripts": {
11
11
  "build": "tsc",
12
+ "dev": "node --watch dist/index.js",
12
13
  "start": "node dist/index.js",
13
- "dev": "nodemon",
14
- "dev:debug": "DEBUG=true nodemon",
15
- "prepack": "npm run build"
14
+ "test": "vitest run",
15
+ "test:watch": "vitest",
16
+ "package": "docker build -t thryve-mcp-server .",
17
+ "clean": "rm -rf dist"
16
18
  },
17
19
  "keywords": [
18
20
  "mcp",
@@ -23,20 +25,21 @@
23
25
  "author": "BlueNexus AI",
24
26
  "license": "PROPRIETARY",
25
27
  "dependencies": {
26
- "@modelcontextprotocol/sdk": "^1.0.4",
28
+ "@modelcontextprotocol/sdk": "^1.26.0",
27
29
  "express": "^4.21.2",
28
30
  "zod": "^3.24.1"
29
31
  },
30
32
  "devDependencies": {
31
33
  "@types/express": "^5.0.0",
32
34
  "@types/node": "^22.10.2",
33
- "nodemon": "^3.1.10",
34
- "typescript": "^5.8.3"
35
+ "typescript": "^5.8.3",
36
+ "vitest": "^3.0.0"
35
37
  },
36
38
  "files": [
37
39
  "dist/**/*",
38
40
  "README.md",
39
41
  "LICENSE",
40
42
  "tools.json"
41
- ]
43
+ ],
44
+ "packageManager": "pnpm@10.22.0"
42
45
  }
@@ -1,53 +0,0 @@
1
- /**
2
- * Thryve Data Types Catalog
3
- *
4
- * This file contains the comprehensive list of 250+ data types available through Thryve API.
5
- * Organized by category for easy LLM understanding and filtering.
6
- */
7
- export interface DataType {
8
- id: number;
9
- name: string;
10
- displayName: string;
11
- category: string;
12
- description: string;
13
- unit?: string;
14
- commonSources?: string[];
15
- }
16
- export interface DataTypeCategory {
17
- name: string;
18
- description: string;
19
- dataTypes: DataType[];
20
- }
21
- /**
22
- * Complete catalog of Thryve data types organized by category
23
- */
24
- export declare const DATA_TYPE_CATEGORIES: DataTypeCategory[];
25
- /**
26
- * Flatten all data types into a single array for easy searching
27
- */
28
- export declare const ALL_DATA_TYPES: DataType[];
29
- /**
30
- * Get data types by category name
31
- */
32
- export declare function getDataTypesByCategory(categoryName: string): DataType[];
33
- /**
34
- * Search data types by keyword
35
- */
36
- export declare function searchDataTypes(keyword: string): DataType[];
37
- /**
38
- * Get data types available for a specific data source
39
- */
40
- export declare function getDataTypesForSource(sourceName: string): DataType[];
41
- /**
42
- * Get summary of all categories for LLM context
43
- */
44
- export declare function getCategorySummary(): {
45
- totalCategories: number;
46
- totalDataTypes: number;
47
- categories: Array<{
48
- name: string;
49
- count: number;
50
- description: string;
51
- }>;
52
- };
53
- //# sourceMappingURL=data-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-types.d.ts","sourceRoot":"","sources":["../src/data-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAAgB,EAsFlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,EAEpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,EAAE,CAKvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAS3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,CAOpE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE,CAUA"}
@@ -1,138 +0,0 @@
1
- /**
2
- * Thryve Data Types Catalog
3
- *
4
- * This file contains the comprehensive list of 250+ data types available through Thryve API.
5
- * Organized by category for easy LLM understanding and filtering.
6
- */
7
- /**
8
- * Complete catalog of Thryve data types organized by category
9
- */
10
- export const DATA_TYPE_CATEGORIES = [
11
- {
12
- name: "Activity",
13
- description: "Daily activity metrics including steps, calories, and movement",
14
- dataTypes: [
15
- { id: 1, name: "Steps", displayName: "Steps", category: "Activity", description: "Total steps taken", unit: "steps", commonSources: ["Fitbit", "Garmin", "Apple Health"] },
16
- { id: 2, name: "BurnedCalories", displayName: "Burned Calories", category: "Activity", description: "Total calories burned", unit: "kcal", commonSources: ["Fitbit", "Garmin", "Whoop"] },
17
- { id: 3, name: "ActiveDuration", displayName: "Active Duration", category: "Activity", description: "Time spent in active movement", unit: "minutes", commonSources: ["Fitbit", "Garmin"] },
18
- { id: 4, name: "Distance", displayName: "Distance", category: "Activity", description: "Total distance traveled", unit: "meters", commonSources: ["Fitbit", "Garmin", "Strava"] },
19
- { id: 5, name: "FloorsClimbed", displayName: "Floors Climbed", category: "Activity", description: "Number of floors climbed", unit: "floors", commonSources: ["Fitbit", "Garmin"] },
20
- { id: 6, name: "LightlyActiveDuration", displayName: "Lightly Active Duration", category: "Activity", description: "Time spent in light activity", unit: "minutes", commonSources: ["Fitbit"] },
21
- { id: 7, name: "ModeratelyActiveDuration", displayName: "Moderately Active Duration", category: "Activity", description: "Time spent in moderate activity", unit: "minutes", commonSources: ["Fitbit", "Garmin"] },
22
- { id: 8, name: "VeryActiveDuration", displayName: "Very Active Duration", category: "Activity", description: "Time spent in vigorous activity", unit: "minutes", commonSources: ["Fitbit"] },
23
- ],
24
- },
25
- {
26
- name: "Heart Rate",
27
- description: "Heart rate measurements including resting, average, and zone-specific data",
28
- dataTypes: [
29
- { id: 20, name: "RestingHeartRate", displayName: "Resting Heart Rate", category: "Heart Rate", description: "Heart rate at rest", unit: "bpm", commonSources: ["Fitbit", "Garmin", "Whoop", "Apple Health"] },
30
- { id: 21, name: "AverageHeartRate", displayName: "Average Heart Rate", category: "Heart Rate", description: "Average heart rate over the day", unit: "bpm", commonSources: ["Fitbit", "Garmin", "Whoop"] },
31
- { id: 22, name: "MaxHeartRate", displayName: "Max Heart Rate", category: "Heart Rate", description: "Maximum heart rate reached", unit: "bpm", commonSources: ["Fitbit", "Garmin"] },
32
- { id: 23, name: "SleepHeartRate", displayName: "Sleep Heart Rate", category: "Heart Rate", description: "Average heart rate during sleep", unit: "bpm", commonSources: ["Fitbit", "Whoop"] },
33
- ],
34
- },
35
- {
36
- name: "Sleep",
37
- description: "Sleep duration, quality, and stage-specific measurements",
38
- dataTypes: [
39
- { id: 40, name: "SleepDuration", displayName: "Sleep Duration", category: "Sleep", description: "Total time spent sleeping", unit: "minutes", commonSources: ["Fitbit", "Garmin", "Whoop", "Oura"] },
40
- { id: 41, name: "LightSleepDuration", displayName: "Light Sleep Duration", category: "Sleep", description: "Time in light sleep stage", unit: "minutes", commonSources: ["Fitbit", "Whoop", "Oura"] },
41
- { id: 42, name: "DeepSleepDuration", displayName: "Deep Sleep Duration", category: "Sleep", description: "Time in deep sleep stage", unit: "minutes", commonSources: ["Fitbit", "Whoop", "Oura"] },
42
- { id: 43, name: "REMSleepDuration", displayName: "REM Sleep Duration", category: "Sleep", description: "Time in REM sleep stage", unit: "minutes", commonSources: ["Fitbit", "Whoop", "Oura"] },
43
- { id: 44, name: "AwakeDuration", displayName: "Awake Duration", category: "Sleep", description: "Time spent awake during sleep period", unit: "minutes", commonSources: ["Fitbit", "Whoop"] },
44
- { id: 45, name: "SleepEfficiency", displayName: "Sleep Efficiency", category: "Sleep", description: "Percentage of time asleep vs in bed", unit: "percent", commonSources: ["Fitbit", "Oura"] },
45
- ],
46
- },
47
- {
48
- name: "Body Composition",
49
- description: "Body measurements including weight, BMI, and body composition metrics",
50
- dataTypes: [
51
- { id: 60, name: "Weight", displayName: "Weight", category: "Body Composition", description: "Body weight", unit: "kg", commonSources: ["Fitbit", "Garmin", "Withings"] },
52
- { id: 61, name: "BMI", displayName: "BMI", category: "Body Composition", description: "Body Mass Index", unit: "kg/m²", commonSources: ["Fitbit", "Withings"] },
53
- { id: 62, name: "BodyFatPercentage", displayName: "Body Fat Percentage", category: "Body Composition", description: "Percentage of body fat", unit: "percent", commonSources: ["Withings", "Fitbit Aria"] },
54
- { id: 63, name: "MuscleMass", displayName: "Muscle Mass", category: "Body Composition", description: "Total muscle mass", unit: "kg", commonSources: ["Withings"] },
55
- { id: 64, name: "BoneMass", displayName: "Bone Mass", category: "Body Composition", description: "Total bone mass", unit: "kg", commonSources: ["Withings"] },
56
- { id: 65, name: "WaterPercentage", displayName: "Water Percentage", category: "Body Composition", description: "Body water percentage", unit: "percent", commonSources: ["Withings"] },
57
- ],
58
- },
59
- {
60
- name: "Stress & HRV",
61
- description: "Stress levels and heart rate variability measurements",
62
- dataTypes: [
63
- { id: 80, name: "StressLevel", displayName: "Stress Level", category: "Stress & HRV", description: "Overall stress measurement", unit: "score", commonSources: ["Garmin", "Fitbit"] },
64
- { id: 81, name: "HRV", displayName: "Heart Rate Variability", category: "Stress & HRV", description: "Heart rate variability measurement", unit: "ms", commonSources: ["Whoop", "Oura", "Garmin"] },
65
- { id: 82, name: "RMSSD", displayName: "RMSSD", category: "Stress & HRV", description: "Root mean square of successive differences", unit: "ms", commonSources: ["Whoop", "Oura"] },
66
- ],
67
- },
68
- {
69
- name: "Blood Oxygen",
70
- description: "Blood oxygen saturation and respiratory measurements",
71
- dataTypes: [
72
- { id: 100, name: "SpO2", displayName: "Blood Oxygen Saturation", category: "Blood Oxygen", description: "Oxygen saturation percentage", unit: "percent", commonSources: ["Fitbit", "Garmin", "Whoop"] },
73
- { id: 101, name: "RespiratoryRate", displayName: "Respiratory Rate", category: "Blood Oxygen", description: "Breaths per minute", unit: "bpm", commonSources: ["Fitbit", "Whoop", "Oura"] },
74
- ],
75
- },
76
- {
77
- name: "Workouts",
78
- description: "Exercise and workout-specific metrics",
79
- dataTypes: [
80
- { id: 120, name: "WorkoutDuration", displayName: "Workout Duration", category: "Workouts", description: "Total workout time", unit: "minutes", commonSources: ["Fitbit", "Garmin", "Strava"] },
81
- { id: 121, name: "WorkoutCalories", displayName: "Workout Calories", category: "Workouts", description: "Calories burned during workout", unit: "kcal", commonSources: ["Fitbit", "Garmin", "Strava"] },
82
- { id: 122, name: "AveragePace", displayName: "Average Pace", category: "Workouts", description: "Average pace during activity", unit: "min/km", commonSources: ["Garmin", "Strava"] },
83
- { id: 123, name: "MaxSpeed", displayName: "Max Speed", category: "Workouts", description: "Maximum speed reached", unit: "km/h", commonSources: ["Garmin", "Strava"] },
84
- { id: 124, name: "ElevationGain", displayName: "Elevation Gain", category: "Workouts", description: "Total elevation climbed", unit: "meters", commonSources: ["Garmin", "Strava"] },
85
- ],
86
- },
87
- {
88
- name: "Recovery",
89
- description: "Recovery and readiness metrics",
90
- dataTypes: [
91
- { id: 140, name: "RecoveryScore", displayName: "Recovery Score", category: "Recovery", description: "Overall recovery measurement", unit: "score", commonSources: ["Whoop", "Oura"] },
92
- { id: 141, name: "ReadinessScore", displayName: "Readiness Score", category: "Recovery", description: "Physical readiness for activity", unit: "score", commonSources: ["Oura"] },
93
- { id: 142, name: "Strain", displayName: "Strain", category: "Recovery", description: "Cardiovascular strain measurement", unit: "score", commonSources: ["Whoop"] },
94
- ],
95
- },
96
- ];
97
- /**
98
- * Flatten all data types into a single array for easy searching
99
- */
100
- export const ALL_DATA_TYPES = DATA_TYPE_CATEGORIES.flatMap((category) => category.dataTypes);
101
- /**
102
- * Get data types by category name
103
- */
104
- export function getDataTypesByCategory(categoryName) {
105
- const category = DATA_TYPE_CATEGORIES.find((cat) => cat.name.toLowerCase() === categoryName.toLowerCase());
106
- return category?.dataTypes || [];
107
- }
108
- /**
109
- * Search data types by keyword
110
- */
111
- export function searchDataTypes(keyword) {
112
- const lowerKeyword = keyword.toLowerCase();
113
- return ALL_DATA_TYPES.filter((dt) => dt.name.toLowerCase().includes(lowerKeyword) ||
114
- dt.displayName.toLowerCase().includes(lowerKeyword) ||
115
- dt.description.toLowerCase().includes(lowerKeyword) ||
116
- dt.category.toLowerCase().includes(lowerKeyword));
117
- }
118
- /**
119
- * Get data types available for a specific data source
120
- */
121
- export function getDataTypesForSource(sourceName) {
122
- return ALL_DATA_TYPES.filter((dt) => dt.commonSources?.some((source) => source.toLowerCase().includes(sourceName.toLowerCase())));
123
- }
124
- /**
125
- * Get summary of all categories for LLM context
126
- */
127
- export function getCategorySummary() {
128
- return {
129
- totalCategories: DATA_TYPE_CATEGORIES.length,
130
- totalDataTypes: ALL_DATA_TYPES.length,
131
- categories: DATA_TYPE_CATEGORIES.map((cat) => ({
132
- name: cat.name,
133
- count: cat.dataTypes.length,
134
- description: cat.description,
135
- })),
136
- };
137
- }
138
- //# sourceMappingURL=data-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-types.js","sourceRoot":"","sources":["../src/data-types.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { DebugMetadata } from "./types.js";
2
- /**
3
- * Log debug information to console in a formatted way
4
- * Only outputs when DEBUG_MODE is enabled
5
- *
6
- * @param debug - Debug metadata to log
7
- */
8
- export declare function logDebugInfo(debug: DebugMetadata): void;
9
- /**
10
- * Log a simple debug message
11
- * Only outputs when DEBUG_MODE is enabled
12
- *
13
- * @param message - Message to log
14
- * @param data - Optional data to log
15
- */
16
- export declare function debugLog(message: string, data?: any): void;
17
- //# sourceMappingURL=debug-logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-logger.d.ts","sourceRoot":"","sources":["../src/debug-logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CASvD;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAQ1D"}
@@ -1,35 +0,0 @@
1
- import { DEBUG_MODE } from "./debug-middleware.js";
2
- /**
3
- * Log debug information to console in a formatted way
4
- * Only outputs when DEBUG_MODE is enabled
5
- *
6
- * @param debug - Debug metadata to log
7
- */
8
- export function logDebugInfo(debug) {
9
- if (!DEBUG_MODE)
10
- return;
11
- console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
12
- console.log(`🔧 DEBUG: ${debug.toolName}`);
13
- console.log(`⏰ Timestamp: ${debug.timestamp}`);
14
- console.log(`⚡ Duration: ${debug.toolCallTime.toFixed(2)}ms`);
15
- console.log(`📥 Input:`, JSON.stringify(debug.toolInput, null, 2));
16
- console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
17
- }
18
- /**
19
- * Log a simple debug message
20
- * Only outputs when DEBUG_MODE is enabled
21
- *
22
- * @param message - Message to log
23
- * @param data - Optional data to log
24
- */
25
- export function debugLog(message, data) {
26
- if (!DEBUG_MODE)
27
- return;
28
- if (data !== undefined) {
29
- console.log(`[DEBUG] ${message}`, data);
30
- }
31
- else {
32
- console.log(`[DEBUG] ${message}`);
33
- }
34
- }
35
- //# sourceMappingURL=debug-logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../src/debug-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAoB;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,IAAU;IAClD,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Request } from "express";
2
- import type { z } from "zod";
3
- import type { GetActivitySchema } from "../../schemas.js";
4
- export declare function getActivity(req: Request, args: z.infer<typeof GetActivitySchema>): Promise<{
5
- category: import("../../category-mappings.js").HealthCategory;
6
- resolution: "daily" | "epoch";
7
- data: import("../../types.js").HealthDataRecord[];
8
- metadata: any;
9
- }>;
10
- //# sourceMappingURL=getActivity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/tools/categories/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,wBAAsB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;;;;;GAEtF"}
@@ -1,5 +0,0 @@
1
- import { baseCategoryHandler } from "../baseCategoryHandler.js";
2
- export async function getActivity(req, args) {
3
- return baseCategoryHandler(req, "Activity", args);
4
- }
5
- //# sourceMappingURL=getActivity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getActivity.js","sourceRoot":"","sources":["../../../src/tools/categories/getActivity.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAY,EAAE,IAAuC;IACrF,OAAO,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Request } from "express";
2
- import type { z } from "zod";
3
- import type { GetAudioAndHearingSchema } from "../../schemas.js";
4
- export declare function getAudioAndHearing(req: Request, args: z.infer<typeof GetAudioAndHearingSchema>): Promise<{
5
- category: import("../../category-mappings.js").HealthCategory;
6
- resolution: "daily" | "epoch";
7
- data: import("../../types.js").HealthDataRecord[];
8
- metadata: any;
9
- }>;
10
- //# sourceMappingURL=getAudioAndHearing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getAudioAndHearing.d.ts","sourceRoot":"","sources":["../../../src/tools/categories/getAudioAndHearing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAGjE,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC;;;;;GAEpG"}
@@ -1,5 +0,0 @@
1
- import { baseCategoryHandler } from "../baseCategoryHandler.js";
2
- export async function getAudioAndHearing(req, args) {
3
- return baseCategoryHandler(req, "Audio & Hearing", args);
4
- }
5
- //# sourceMappingURL=getAudioAndHearing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getAudioAndHearing.js","sourceRoot":"","sources":["../../../src/tools/categories/getAudioAndHearing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAY,EAAE,IAA8C;IACnG,OAAO,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Request } from "express";
2
- import type { z } from "zod";
3
- import type { GetBloodGlucoseSchema } from "../../schemas.js";
4
- export declare function getBloodGlucose(req: Request, args: z.infer<typeof GetBloodGlucoseSchema>): Promise<{
5
- category: import("../../category-mappings.js").HealthCategory;
6
- resolution: "daily" | "epoch";
7
- data: import("../../types.js").HealthDataRecord[];
8
- metadata: any;
9
- }>;
10
- //# sourceMappingURL=getBloodGlucose.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBloodGlucose.d.ts","sourceRoot":"","sources":["../../../src/tools/categories/getBloodGlucose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG9D,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC;;;;;GAE9F"}
@@ -1,5 +0,0 @@
1
- import { baseCategoryHandler } from "../baseCategoryHandler.js";
2
- export async function getBloodGlucose(req, args) {
3
- return baseCategoryHandler(req, "Blood Glucose", args);
4
- }
5
- //# sourceMappingURL=getBloodGlucose.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBloodGlucose.js","sourceRoot":"","sources":["../../../src/tools/categories/getBloodGlucose.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAY,EAAE,IAA2C;IAC7F,OAAO,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC"}