intervals-icu-mcp-server 0.3.0 → 0.4.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.
- package/dist/client.d.ts +39 -0
- package/dist/client.js +13 -0
- package/dist/format.js +4 -2
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -86,6 +86,19 @@ export declare const ActivitySchema: z.ZodObject<{
|
|
|
86
86
|
source: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
87
87
|
compliance: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
88
88
|
icu_chat_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
89
|
+
coasting_time: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
90
|
+
ss_cp: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
91
|
+
ss_w_prime: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
92
|
+
ss_p_max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
93
|
+
icu_pm_ftp: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
94
|
+
icu_w_prime: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
95
|
+
p_max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
96
|
+
icu_max_wbal_depletion: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
97
|
+
icu_joules_above_ftp: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
98
|
+
icu_weight: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
99
|
+
carbs_used: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
100
|
+
carbs_ingested: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
101
|
+
avg_lr_balance: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
89
102
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
90
103
|
id: z.ZodString;
|
|
91
104
|
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -169,6 +182,19 @@ export declare const ActivitySchema: z.ZodObject<{
|
|
|
169
182
|
source: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
170
183
|
compliance: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
171
184
|
icu_chat_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
185
|
+
coasting_time: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
186
|
+
ss_cp: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
187
|
+
ss_w_prime: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
188
|
+
ss_p_max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
189
|
+
icu_pm_ftp: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
190
|
+
icu_w_prime: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
191
|
+
p_max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
192
|
+
icu_max_wbal_depletion: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
193
|
+
icu_joules_above_ftp: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
194
|
+
icu_weight: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
195
|
+
carbs_used: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
196
|
+
carbs_ingested: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
197
|
+
avg_lr_balance: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
172
198
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
173
199
|
id: z.ZodString;
|
|
174
200
|
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -252,6 +278,19 @@ export declare const ActivitySchema: z.ZodObject<{
|
|
|
252
278
|
source: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
253
279
|
compliance: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
254
280
|
icu_chat_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
281
|
+
coasting_time: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
282
|
+
ss_cp: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
283
|
+
ss_w_prime: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
284
|
+
ss_p_max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
285
|
+
icu_pm_ftp: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
286
|
+
icu_w_prime: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
287
|
+
p_max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
288
|
+
icu_max_wbal_depletion: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
289
|
+
icu_joules_above_ftp: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
290
|
+
icu_weight: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
291
|
+
carbs_used: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
292
|
+
carbs_ingested: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
293
|
+
avg_lr_balance: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
255
294
|
}, z.ZodTypeAny, "passthrough">>;
|
|
256
295
|
export type Activity = z.infer<typeof ActivitySchema>;
|
|
257
296
|
export declare const WellnessSchema: z.ZodObject<{
|
package/dist/client.js
CHANGED
|
@@ -84,6 +84,19 @@ export const ActivitySchema = z.object({
|
|
|
84
84
|
source: z.string().nullable().optional(),
|
|
85
85
|
compliance: z.number().nullable().optional(),
|
|
86
86
|
icu_chat_id: z.number().nullable().optional(),
|
|
87
|
+
coasting_time: z.number().nullable().optional(),
|
|
88
|
+
ss_cp: z.number().nullable().optional(),
|
|
89
|
+
ss_w_prime: z.number().nullable().optional(),
|
|
90
|
+
ss_p_max: z.number().nullable().optional(),
|
|
91
|
+
icu_pm_ftp: z.number().nullable().optional(),
|
|
92
|
+
icu_w_prime: z.number().nullable().optional(),
|
|
93
|
+
p_max: z.number().nullable().optional(),
|
|
94
|
+
icu_max_wbal_depletion: z.number().nullable().optional(),
|
|
95
|
+
icu_joules_above_ftp: z.number().nullable().optional(),
|
|
96
|
+
icu_weight: z.number().nullable().optional(),
|
|
97
|
+
carbs_used: z.number().nullable().optional(),
|
|
98
|
+
carbs_ingested: z.number().nullable().optional(),
|
|
99
|
+
avg_lr_balance: z.number().nullable().optional(),
|
|
87
100
|
}).passthrough();
|
|
88
101
|
export const WellnessSchema = z.object({
|
|
89
102
|
id: z.string().optional(),
|
package/dist/format.js
CHANGED
|
@@ -23,7 +23,9 @@ export function formatActivity(a) {
|
|
|
23
23
|
"Power:",
|
|
24
24
|
` Avg: ${n(a.icu_average_watts, " W")} | Weighted Avg: ${n(a.icu_weighted_avg_watts, " W")} | FTP: ${n(a.icu_ftp, " W")}`,
|
|
25
25
|
` Training Load: ${n(a.icu_training_load)} | Intensity: ${n(a.icu_intensity)} | VI: ${n(a.icu_variability_index)}`,
|
|
26
|
-
` Critical Power: ${n(a.icu_pm_cp, " W")} | Rolling FTP: ${n(a.icu_rolling_ftp, " W")} |
|
|
26
|
+
` Critical Power: ${n(a.icu_pm_cp, " W")} | Rolling FTP: ${n(a.icu_rolling_ftp, " W")} | Activity eFTP: ${n(a.icu_pm_ftp, " W")}`,
|
|
27
|
+
` Energy: ${a.icu_joules != null ? `${Math.round(a.icu_joules / 1000)} kJ` : "N/A"} | Above FTP: ${a.icu_joules_above_ftp != null ? `${Math.round(a.icu_joules_above_ftp / 1000)} kJ` : "N/A"}`,
|
|
28
|
+
` W': ${n(a.icu_w_prime, " J")} | Pmax: ${n(a.p_max, " W")} | W'bal Drop: ${a.icu_max_wbal_depletion != null ? `${(a.icu_max_wbal_depletion / 1000).toFixed(1)} kJ` : "N/A"}`,
|
|
27
29
|
"",
|
|
28
30
|
"Heart Rate:",
|
|
29
31
|
` Avg: ${n(a.average_heartrate, " bpm")} | Max: ${n(a.max_heartrate, " bpm")}`,
|
|
@@ -41,7 +43,7 @@ export function formatActivity(a) {
|
|
|
41
43
|
lines.push(` HR: ${a.icu_hr_zone_times.map((secs, i) => `Z${i + 1} ${fmtDuration(secs)}`).join(" | ")}`);
|
|
42
44
|
}
|
|
43
45
|
}
|
|
44
|
-
lines.push("", "Other:", ` Cadence: ${n(a.average_cadence, " rpm")} | Calories: ${n(a.calories)} | Speed: ${n(a.average_speed, " m/s")} (max ${n(a.max_speed, " m/s")})`, ` Temp: ${n(a.average_temp, "°C")} | Trainer: ${a.trainer ? "Yes" : "No"}`, ` RPE: ${n(a.icu_rpe ?? a.perceived_exertion)}/10 | Feel: ${n(a.feel)}/5`, "", "Fitness:", ` CTL: ${n(a.icu_ctl)} | ATL: ${n(a.icu_atl)} | TRIMP: ${n(a.trimp)} | Polarization Index: ${n(a.polarization_index)}`, ` Power Load: ${n(a.power_load)} | HR Load: ${n(a.hr_load)} | Strain: ${n(a.strain_score)}`, "", "Equipment:", ` Gear: ${n(a.gear?.name)} | Device: ${n(a.device_name)} | Power Meter: ${n(a.power_meter)}`, ` Source: ${n(a.source)} | Compliance: ${a.compliance != null ? `${a.compliance}%` : "N/A"}`);
|
|
46
|
+
lines.push("", "Other:", ` Cadence: ${n(a.average_cadence, " rpm")} | Calories: ${n(a.calories)} | Speed: ${n(a.average_speed, " m/s")} (max ${n(a.max_speed, " m/s")})`, ` Temp: ${n(a.average_temp, "°C")} | Trainer: ${a.trainer ? "Yes" : "No"} | Coasting: ${fmtDuration(a.coasting_time)}`, ` RPE: ${n(a.icu_rpe ?? a.perceived_exertion)}/10 | Feel: ${n(a.feel)}/5 | S-RPE: ${n(a.session_rpe)}`, ` L/R Balance: ${a.avg_lr_balance != null ? `${(100 - a.avg_lr_balance).toFixed(0)}/${a.avg_lr_balance.toFixed(0)}` : "N/A"}`, "", "Fitness:", ` CTL: ${n(a.icu_ctl)} | ATL: ${n(a.icu_atl)} | TRIMP: ${n(a.trimp)} | Polarization Index: ${n(a.polarization_index)}`, ` Power Load: ${n(a.power_load)} | HR Load: ${n(a.hr_load)} | Strain: ${n(a.strain_score)}`, ` SS CP: ${n(a.ss_cp, " W")} | SS W': ${n(a.ss_w_prime)} | SS Pmax: ${n(a.ss_p_max)}`, ` Weight: ${n(a.icu_weight, " kg")} | CHO Used: ${n(a.carbs_used, " g")} | CHO In: ${n(a.carbs_ingested, " g")}`, "", "Equipment:", ` Gear: ${n(a.gear?.name)} | Device: ${n(a.device_name)} | Power Meter: ${n(a.power_meter)}`, ` Source: ${n(a.source)} | Compliance: ${a.compliance != null ? `${a.compliance}%` : "N/A"}`);
|
|
45
47
|
if (a.description)
|
|
46
48
|
lines.push("", `Description: ${a.description}`);
|
|
47
49
|
return lines.join("\n");
|