@workingdevshero/olympia-ait-adapter 0.1.5 → 1.1.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/README.md +139 -35
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/reader/cell-utils.d.ts +10 -0
- package/dist/reader/cell-utils.d.ts.map +1 -0
- package/dist/reader/cell-utils.js +40 -0
- package/dist/reader/cell-utils.js.map +1 -0
- package/dist/reader/parse-day-sheet.d.ts +0 -1
- package/dist/reader/parse-day-sheet.d.ts.map +1 -1
- package/dist/reader/parse-day-sheet.js +95 -75
- package/dist/reader/parse-day-sheet.js.map +1 -1
- package/dist/reader/parse-warmup-workbook.d.ts +13 -0
- package/dist/reader/parse-warmup-workbook.d.ts.map +1 -0
- package/dist/reader/parse-warmup-workbook.js +154 -0
- package/dist/reader/parse-warmup-workbook.js.map +1 -0
- package/dist/reader/parse-workbook.d.ts +2 -2
- package/dist/reader/parse-workbook.d.ts.map +1 -1
- package/dist/reader/parse-workbook.js +1 -6
- package/dist/reader/parse-workbook.js.map +1 -1
- package/dist/schema/program.d.ts +398 -67
- package/dist/schema/program.d.ts.map +1 -1
- package/dist/schema/program.js +135 -28
- package/dist/schema/program.js.map +1 -1
- package/dist/schema/warmup.d.ts +426 -0
- package/dist/schema/warmup.d.ts.map +1 -0
- package/dist/schema/warmup.js +100 -0
- package/dist/schema/warmup.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +51 -18
- package/dist/server.js.map +1 -1
- package/dist/tools/program-json-to-xlsx.d.ts +3 -0
- package/dist/tools/program-json-to-xlsx.d.ts.map +1 -0
- package/dist/tools/program-json-to-xlsx.js +5 -0
- package/dist/tools/program-json-to-xlsx.js.map +1 -0
- package/dist/tools/program-xlsx-to-json.d.ts +3 -0
- package/dist/tools/program-xlsx-to-json.d.ts.map +1 -0
- package/dist/tools/program-xlsx-to-json.js +5 -0
- package/dist/tools/program-xlsx-to-json.js.map +1 -0
- package/dist/tools/warmup-json-to-xlsx.d.ts +3 -0
- package/dist/tools/warmup-json-to-xlsx.d.ts.map +1 -0
- package/dist/tools/warmup-json-to-xlsx.js +5 -0
- package/dist/tools/warmup-json-to-xlsx.js.map +1 -0
- package/dist/tools/warmup-xlsx-to-json.d.ts +3 -0
- package/dist/tools/warmup-xlsx-to-json.d.ts.map +1 -0
- package/dist/tools/warmup-xlsx-to-json.js +5 -0
- package/dist/tools/warmup-xlsx-to-json.js.map +1 -0
- package/dist/writer/build-warmup-workbook.d.ts +3 -0
- package/dist/writer/build-warmup-workbook.d.ts.map +1 -0
- package/dist/writer/build-warmup-workbook.js +101 -0
- package/dist/writer/build-warmup-workbook.js.map +1 -0
- package/dist/writer/build-workbook.d.ts +2 -2
- package/dist/writer/build-workbook.d.ts.map +1 -1
- package/dist/writer/build-workbook.js +19 -23
- package/dist/writer/build-workbook.js.map +1 -1
- package/dist/writer/layout.d.ts +19 -7
- package/dist/writer/layout.d.ts.map +1 -1
- package/dist/writer/layout.js +40 -21
- package/dist/writer/layout.js.map +1 -1
- package/dist/writer/stamp-exercise.d.ts +13 -5
- package/dist/writer/stamp-exercise.d.ts.map +1 -1
- package/dist/writer/stamp-exercise.js +25 -18
- package/dist/writer/stamp-exercise.js.map +1 -1
- package/dist/writer/supplemental-template.d.ts +3 -2
- package/dist/writer/supplemental-template.d.ts.map +1 -1
- package/dist/writer/supplemental-template.js +15 -15
- package/dist/writer/supplemental-template.js.map +1 -1
- package/package.json +5 -4
- package/skills/olympia-authoring/SKILL.md +140 -0
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Warm-up document — the companion workbook to a Program workbook.
|
|
4
|
+
*
|
|
5
|
+
* A warm-up workbook pairs with the program workbook for the same client
|
|
6
|
+
* and date ("Bobby Galli Warm Up 4.26.xlsx" ↔ "Bobby Galli Programs
|
|
7
|
+
* 4.26.xlsx"). The pairing is day-for-day: the "Day 4" warm-up column is
|
|
8
|
+
* performed before the "Day 4" program sheet, and the "Warm Up #4" label
|
|
9
|
+
* stamped on that program sheet refers back to it.
|
|
10
|
+
*
|
|
11
|
+
* Unlike programs (one sheet per day, 6-week grid), a warm-up workbook is a
|
|
12
|
+
* single sheet where each day is a COLUMN of titled sections of freeform
|
|
13
|
+
* exercise lines — the prescription is embedded in the text:
|
|
14
|
+
*
|
|
15
|
+
* "Pecs :45E" → 45 seconds each side
|
|
16
|
+
* "Supine Chest Opener on Roller X8br" → 8 breaths
|
|
17
|
+
* "MB Lateral Step > Diag. Slam X4E" → 4 each side
|
|
18
|
+
*
|
|
19
|
+
* The shorthand is trainer convention and intentionally NOT parsed — copy
|
|
20
|
+
* the style of past documents rather than inventing semantics.
|
|
21
|
+
*/
|
|
22
|
+
export declare const WarmUpItem: z.ZodObject<{
|
|
23
|
+
text: z.ZodString;
|
|
24
|
+
note: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
25
|
+
}, "strict", z.ZodTypeAny, {
|
|
26
|
+
text: string;
|
|
27
|
+
note?: string | undefined;
|
|
28
|
+
}, {
|
|
29
|
+
text: string;
|
|
30
|
+
note?: string | undefined;
|
|
31
|
+
}>;
|
|
32
|
+
export declare const WarmUpSection: z.ZodObject<{
|
|
33
|
+
title: z.ZodString;
|
|
34
|
+
items: z.ZodArray<z.ZodObject<{
|
|
35
|
+
text: z.ZodString;
|
|
36
|
+
note: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
37
|
+
}, "strict", z.ZodTypeAny, {
|
|
38
|
+
text: string;
|
|
39
|
+
note?: string | undefined;
|
|
40
|
+
}, {
|
|
41
|
+
text: string;
|
|
42
|
+
note?: string | undefined;
|
|
43
|
+
}>, "many">;
|
|
44
|
+
}, "strict", z.ZodTypeAny, {
|
|
45
|
+
title: string;
|
|
46
|
+
items: {
|
|
47
|
+
text: string;
|
|
48
|
+
note?: string | undefined;
|
|
49
|
+
}[];
|
|
50
|
+
}, {
|
|
51
|
+
title: string;
|
|
52
|
+
items: {
|
|
53
|
+
text: string;
|
|
54
|
+
note?: string | undefined;
|
|
55
|
+
}[];
|
|
56
|
+
}>;
|
|
57
|
+
export declare const WarmUpDay: z.ZodObject<{
|
|
58
|
+
name: z.ZodString;
|
|
59
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
60
|
+
title: z.ZodString;
|
|
61
|
+
items: z.ZodArray<z.ZodObject<{
|
|
62
|
+
text: z.ZodString;
|
|
63
|
+
note: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
64
|
+
}, "strict", z.ZodTypeAny, {
|
|
65
|
+
text: string;
|
|
66
|
+
note?: string | undefined;
|
|
67
|
+
}, {
|
|
68
|
+
text: string;
|
|
69
|
+
note?: string | undefined;
|
|
70
|
+
}>, "many">;
|
|
71
|
+
}, "strict", z.ZodTypeAny, {
|
|
72
|
+
title: string;
|
|
73
|
+
items: {
|
|
74
|
+
text: string;
|
|
75
|
+
note?: string | undefined;
|
|
76
|
+
}[];
|
|
77
|
+
}, {
|
|
78
|
+
title: string;
|
|
79
|
+
items: {
|
|
80
|
+
text: string;
|
|
81
|
+
note?: string | undefined;
|
|
82
|
+
}[];
|
|
83
|
+
}>, "many">;
|
|
84
|
+
}, "strict", z.ZodTypeAny, {
|
|
85
|
+
name: string;
|
|
86
|
+
sections: {
|
|
87
|
+
title: string;
|
|
88
|
+
items: {
|
|
89
|
+
text: string;
|
|
90
|
+
note?: string | undefined;
|
|
91
|
+
}[];
|
|
92
|
+
}[];
|
|
93
|
+
}, {
|
|
94
|
+
name: string;
|
|
95
|
+
sections: {
|
|
96
|
+
title: string;
|
|
97
|
+
items: {
|
|
98
|
+
text: string;
|
|
99
|
+
note?: string | undefined;
|
|
100
|
+
}[];
|
|
101
|
+
}[];
|
|
102
|
+
}>;
|
|
103
|
+
export declare const WarmUpDocument: z.ZodObject<{
|
|
104
|
+
client: z.ZodString;
|
|
105
|
+
warmUpDate: z.ZodString;
|
|
106
|
+
days: z.ZodArray<z.ZodObject<{
|
|
107
|
+
name: z.ZodString;
|
|
108
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
109
|
+
title: z.ZodString;
|
|
110
|
+
items: z.ZodArray<z.ZodObject<{
|
|
111
|
+
text: z.ZodString;
|
|
112
|
+
note: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
113
|
+
}, "strict", z.ZodTypeAny, {
|
|
114
|
+
text: string;
|
|
115
|
+
note?: string | undefined;
|
|
116
|
+
}, {
|
|
117
|
+
text: string;
|
|
118
|
+
note?: string | undefined;
|
|
119
|
+
}>, "many">;
|
|
120
|
+
}, "strict", z.ZodTypeAny, {
|
|
121
|
+
title: string;
|
|
122
|
+
items: {
|
|
123
|
+
text: string;
|
|
124
|
+
note?: string | undefined;
|
|
125
|
+
}[];
|
|
126
|
+
}, {
|
|
127
|
+
title: string;
|
|
128
|
+
items: {
|
|
129
|
+
text: string;
|
|
130
|
+
note?: string | undefined;
|
|
131
|
+
}[];
|
|
132
|
+
}>, "many">;
|
|
133
|
+
}, "strict", z.ZodTypeAny, {
|
|
134
|
+
name: string;
|
|
135
|
+
sections: {
|
|
136
|
+
title: string;
|
|
137
|
+
items: {
|
|
138
|
+
text: string;
|
|
139
|
+
note?: string | undefined;
|
|
140
|
+
}[];
|
|
141
|
+
}[];
|
|
142
|
+
}, {
|
|
143
|
+
name: string;
|
|
144
|
+
sections: {
|
|
145
|
+
title: string;
|
|
146
|
+
items: {
|
|
147
|
+
text: string;
|
|
148
|
+
note?: string | undefined;
|
|
149
|
+
}[];
|
|
150
|
+
}[];
|
|
151
|
+
}>, "many">;
|
|
152
|
+
}, "strict", z.ZodTypeAny, {
|
|
153
|
+
client: string;
|
|
154
|
+
days: {
|
|
155
|
+
name: string;
|
|
156
|
+
sections: {
|
|
157
|
+
title: string;
|
|
158
|
+
items: {
|
|
159
|
+
text: string;
|
|
160
|
+
note?: string | undefined;
|
|
161
|
+
}[];
|
|
162
|
+
}[];
|
|
163
|
+
}[];
|
|
164
|
+
warmUpDate: string;
|
|
165
|
+
}, {
|
|
166
|
+
client: string;
|
|
167
|
+
days: {
|
|
168
|
+
name: string;
|
|
169
|
+
sections: {
|
|
170
|
+
title: string;
|
|
171
|
+
items: {
|
|
172
|
+
text: string;
|
|
173
|
+
note?: string | undefined;
|
|
174
|
+
}[];
|
|
175
|
+
}[];
|
|
176
|
+
}[];
|
|
177
|
+
warmUpDate: string;
|
|
178
|
+
}>;
|
|
179
|
+
export type WarmUpItem = z.infer<typeof WarmUpItem>;
|
|
180
|
+
export type WarmUpSection = z.infer<typeof WarmUpSection>;
|
|
181
|
+
export type WarmUpDay = z.infer<typeof WarmUpDay>;
|
|
182
|
+
export type WarmUpDocument = z.infer<typeof WarmUpDocument>;
|
|
183
|
+
export declare const WarmUpXlsxToJsonInput: z.ZodObject<{
|
|
184
|
+
xlsxPath: z.ZodString;
|
|
185
|
+
}, "strict", z.ZodTypeAny, {
|
|
186
|
+
xlsxPath: string;
|
|
187
|
+
}, {
|
|
188
|
+
xlsxPath: string;
|
|
189
|
+
}>;
|
|
190
|
+
export declare const WarmUpXlsxToJsonOutput: z.ZodObject<{
|
|
191
|
+
warmUp: z.ZodObject<{
|
|
192
|
+
client: z.ZodString;
|
|
193
|
+
warmUpDate: z.ZodString;
|
|
194
|
+
days: z.ZodArray<z.ZodObject<{
|
|
195
|
+
name: z.ZodString;
|
|
196
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
197
|
+
title: z.ZodString;
|
|
198
|
+
items: z.ZodArray<z.ZodObject<{
|
|
199
|
+
text: z.ZodString;
|
|
200
|
+
note: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
201
|
+
}, "strict", z.ZodTypeAny, {
|
|
202
|
+
text: string;
|
|
203
|
+
note?: string | undefined;
|
|
204
|
+
}, {
|
|
205
|
+
text: string;
|
|
206
|
+
note?: string | undefined;
|
|
207
|
+
}>, "many">;
|
|
208
|
+
}, "strict", z.ZodTypeAny, {
|
|
209
|
+
title: string;
|
|
210
|
+
items: {
|
|
211
|
+
text: string;
|
|
212
|
+
note?: string | undefined;
|
|
213
|
+
}[];
|
|
214
|
+
}, {
|
|
215
|
+
title: string;
|
|
216
|
+
items: {
|
|
217
|
+
text: string;
|
|
218
|
+
note?: string | undefined;
|
|
219
|
+
}[];
|
|
220
|
+
}>, "many">;
|
|
221
|
+
}, "strict", z.ZodTypeAny, {
|
|
222
|
+
name: string;
|
|
223
|
+
sections: {
|
|
224
|
+
title: string;
|
|
225
|
+
items: {
|
|
226
|
+
text: string;
|
|
227
|
+
note?: string | undefined;
|
|
228
|
+
}[];
|
|
229
|
+
}[];
|
|
230
|
+
}, {
|
|
231
|
+
name: string;
|
|
232
|
+
sections: {
|
|
233
|
+
title: string;
|
|
234
|
+
items: {
|
|
235
|
+
text: string;
|
|
236
|
+
note?: string | undefined;
|
|
237
|
+
}[];
|
|
238
|
+
}[];
|
|
239
|
+
}>, "many">;
|
|
240
|
+
}, "strict", z.ZodTypeAny, {
|
|
241
|
+
client: string;
|
|
242
|
+
days: {
|
|
243
|
+
name: string;
|
|
244
|
+
sections: {
|
|
245
|
+
title: string;
|
|
246
|
+
items: {
|
|
247
|
+
text: string;
|
|
248
|
+
note?: string | undefined;
|
|
249
|
+
}[];
|
|
250
|
+
}[];
|
|
251
|
+
}[];
|
|
252
|
+
warmUpDate: string;
|
|
253
|
+
}, {
|
|
254
|
+
client: string;
|
|
255
|
+
days: {
|
|
256
|
+
name: string;
|
|
257
|
+
sections: {
|
|
258
|
+
title: string;
|
|
259
|
+
items: {
|
|
260
|
+
text: string;
|
|
261
|
+
note?: string | undefined;
|
|
262
|
+
}[];
|
|
263
|
+
}[];
|
|
264
|
+
}[];
|
|
265
|
+
warmUpDate: string;
|
|
266
|
+
}>;
|
|
267
|
+
warnings: z.ZodArray<z.ZodString, "many">;
|
|
268
|
+
}, "strict", z.ZodTypeAny, {
|
|
269
|
+
warnings: string[];
|
|
270
|
+
warmUp: {
|
|
271
|
+
client: string;
|
|
272
|
+
days: {
|
|
273
|
+
name: string;
|
|
274
|
+
sections: {
|
|
275
|
+
title: string;
|
|
276
|
+
items: {
|
|
277
|
+
text: string;
|
|
278
|
+
note?: string | undefined;
|
|
279
|
+
}[];
|
|
280
|
+
}[];
|
|
281
|
+
}[];
|
|
282
|
+
warmUpDate: string;
|
|
283
|
+
};
|
|
284
|
+
}, {
|
|
285
|
+
warnings: string[];
|
|
286
|
+
warmUp: {
|
|
287
|
+
client: string;
|
|
288
|
+
days: {
|
|
289
|
+
name: string;
|
|
290
|
+
sections: {
|
|
291
|
+
title: string;
|
|
292
|
+
items: {
|
|
293
|
+
text: string;
|
|
294
|
+
note?: string | undefined;
|
|
295
|
+
}[];
|
|
296
|
+
}[];
|
|
297
|
+
}[];
|
|
298
|
+
warmUpDate: string;
|
|
299
|
+
};
|
|
300
|
+
}>;
|
|
301
|
+
export declare const WarmUpJsonToXlsxInput: z.ZodObject<{
|
|
302
|
+
warmUp: z.ZodObject<{
|
|
303
|
+
client: z.ZodString;
|
|
304
|
+
warmUpDate: z.ZodString;
|
|
305
|
+
days: z.ZodArray<z.ZodObject<{
|
|
306
|
+
name: z.ZodString;
|
|
307
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
308
|
+
title: z.ZodString;
|
|
309
|
+
items: z.ZodArray<z.ZodObject<{
|
|
310
|
+
text: z.ZodString;
|
|
311
|
+
note: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
312
|
+
}, "strict", z.ZodTypeAny, {
|
|
313
|
+
text: string;
|
|
314
|
+
note?: string | undefined;
|
|
315
|
+
}, {
|
|
316
|
+
text: string;
|
|
317
|
+
note?: string | undefined;
|
|
318
|
+
}>, "many">;
|
|
319
|
+
}, "strict", z.ZodTypeAny, {
|
|
320
|
+
title: string;
|
|
321
|
+
items: {
|
|
322
|
+
text: string;
|
|
323
|
+
note?: string | undefined;
|
|
324
|
+
}[];
|
|
325
|
+
}, {
|
|
326
|
+
title: string;
|
|
327
|
+
items: {
|
|
328
|
+
text: string;
|
|
329
|
+
note?: string | undefined;
|
|
330
|
+
}[];
|
|
331
|
+
}>, "many">;
|
|
332
|
+
}, "strict", z.ZodTypeAny, {
|
|
333
|
+
name: string;
|
|
334
|
+
sections: {
|
|
335
|
+
title: string;
|
|
336
|
+
items: {
|
|
337
|
+
text: string;
|
|
338
|
+
note?: string | undefined;
|
|
339
|
+
}[];
|
|
340
|
+
}[];
|
|
341
|
+
}, {
|
|
342
|
+
name: string;
|
|
343
|
+
sections: {
|
|
344
|
+
title: string;
|
|
345
|
+
items: {
|
|
346
|
+
text: string;
|
|
347
|
+
note?: string | undefined;
|
|
348
|
+
}[];
|
|
349
|
+
}[];
|
|
350
|
+
}>, "many">;
|
|
351
|
+
}, "strict", z.ZodTypeAny, {
|
|
352
|
+
client: string;
|
|
353
|
+
days: {
|
|
354
|
+
name: string;
|
|
355
|
+
sections: {
|
|
356
|
+
title: string;
|
|
357
|
+
items: {
|
|
358
|
+
text: string;
|
|
359
|
+
note?: string | undefined;
|
|
360
|
+
}[];
|
|
361
|
+
}[];
|
|
362
|
+
}[];
|
|
363
|
+
warmUpDate: string;
|
|
364
|
+
}, {
|
|
365
|
+
client: string;
|
|
366
|
+
days: {
|
|
367
|
+
name: string;
|
|
368
|
+
sections: {
|
|
369
|
+
title: string;
|
|
370
|
+
items: {
|
|
371
|
+
text: string;
|
|
372
|
+
note?: string | undefined;
|
|
373
|
+
}[];
|
|
374
|
+
}[];
|
|
375
|
+
}[];
|
|
376
|
+
warmUpDate: string;
|
|
377
|
+
}>;
|
|
378
|
+
outputPath: z.ZodString;
|
|
379
|
+
}, "strict", z.ZodTypeAny, {
|
|
380
|
+
outputPath: string;
|
|
381
|
+
warmUp: {
|
|
382
|
+
client: string;
|
|
383
|
+
days: {
|
|
384
|
+
name: string;
|
|
385
|
+
sections: {
|
|
386
|
+
title: string;
|
|
387
|
+
items: {
|
|
388
|
+
text: string;
|
|
389
|
+
note?: string | undefined;
|
|
390
|
+
}[];
|
|
391
|
+
}[];
|
|
392
|
+
}[];
|
|
393
|
+
warmUpDate: string;
|
|
394
|
+
};
|
|
395
|
+
}, {
|
|
396
|
+
outputPath: string;
|
|
397
|
+
warmUp: {
|
|
398
|
+
client: string;
|
|
399
|
+
days: {
|
|
400
|
+
name: string;
|
|
401
|
+
sections: {
|
|
402
|
+
title: string;
|
|
403
|
+
items: {
|
|
404
|
+
text: string;
|
|
405
|
+
note?: string | undefined;
|
|
406
|
+
}[];
|
|
407
|
+
}[];
|
|
408
|
+
}[];
|
|
409
|
+
warmUpDate: string;
|
|
410
|
+
};
|
|
411
|
+
}>;
|
|
412
|
+
export declare const WarmUpJsonToXlsxOutput: z.ZodObject<{
|
|
413
|
+
outputPath: z.ZodString;
|
|
414
|
+
bytesWritten: z.ZodNumber;
|
|
415
|
+
}, "strict", z.ZodTypeAny, {
|
|
416
|
+
outputPath: string;
|
|
417
|
+
bytesWritten: number;
|
|
418
|
+
}, {
|
|
419
|
+
outputPath: string;
|
|
420
|
+
bytesWritten: number;
|
|
421
|
+
}>;
|
|
422
|
+
export type WarmUpXlsxToJsonInput = z.infer<typeof WarmUpXlsxToJsonInput>;
|
|
423
|
+
export type WarmUpXlsxToJsonOutput = z.infer<typeof WarmUpXlsxToJsonOutput>;
|
|
424
|
+
export type WarmUpJsonToXlsxInput = z.infer<typeof WarmUpJsonToXlsxInput>;
|
|
425
|
+
export type WarmUpJsonToXlsxOutput = z.infer<typeof WarmUpJsonToXlsxOutput>;
|
|
426
|
+
//# sourceMappingURL=warmup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warmup.d.ts","sourceRoot":"","sources":["../../src/schema/warmup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,UAAU;;;;;;;;;EAqBoE,CAAC;AAE5F,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;EAU6C,CAAC;AAExE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWqD,CAAC;AAE5E,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaxB,CAAC;AAEJ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAI5D,eAAO,MAAM,qBAAqB;;;;;;EASvB,CAAC;AAEZ,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASxB,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUvB,CAAC;AAEZ,eAAO,MAAM,sBAAsB;;;;;;;;;EAKxB,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC5E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Warm-up document — the companion workbook to a Program workbook.
|
|
4
|
+
*
|
|
5
|
+
* A warm-up workbook pairs with the program workbook for the same client
|
|
6
|
+
* and date ("Bobby Galli Warm Up 4.26.xlsx" ↔ "Bobby Galli Programs
|
|
7
|
+
* 4.26.xlsx"). The pairing is day-for-day: the "Day 4" warm-up column is
|
|
8
|
+
* performed before the "Day 4" program sheet, and the "Warm Up #4" label
|
|
9
|
+
* stamped on that program sheet refers back to it.
|
|
10
|
+
*
|
|
11
|
+
* Unlike programs (one sheet per day, 6-week grid), a warm-up workbook is a
|
|
12
|
+
* single sheet where each day is a COLUMN of titled sections of freeform
|
|
13
|
+
* exercise lines — the prescription is embedded in the text:
|
|
14
|
+
*
|
|
15
|
+
* "Pecs :45E" → 45 seconds each side
|
|
16
|
+
* "Supine Chest Opener on Roller X8br" → 8 breaths
|
|
17
|
+
* "MB Lateral Step > Diag. Slam X4E" → 4 each side
|
|
18
|
+
*
|
|
19
|
+
* The shorthand is trainer convention and intentionally NOT parsed — copy
|
|
20
|
+
* the style of past documents rather than inventing semantics.
|
|
21
|
+
*/
|
|
22
|
+
export const WarmUpItem = z
|
|
23
|
+
.object({
|
|
24
|
+
text: z
|
|
25
|
+
.string()
|
|
26
|
+
.min(1)
|
|
27
|
+
.describe('One warm-up exercise line, verbatim, with the prescription embedded in the text — e.g. "Pecs :45E", "Superband SL Bridge X10EL", "Band H-String Leg Lowers+Hold :30E". Freeform; the shorthand is never parsed. Do NOT author an item whose entire text is wrapped in parentheses — fully-parenthesized lines decode as notes, not items.'),
|
|
28
|
+
note: z
|
|
29
|
+
.string()
|
|
30
|
+
.min(1)
|
|
31
|
+
.refine((v) => v.split("\n").every((line) => line.trim() !== ""), {
|
|
32
|
+
message: "note lines must be non-empty — blank or whitespace-only lines do not survive a round-trip (blank cells are structural padding on decode)",
|
|
33
|
+
})
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('Annotation line rendered under the item, stored verbatim including any decoration — e.g. "(^R.F.E on SB, F-Roller for Balance^)". Rendered in italics. Multiple source note lines are joined with "\\n"; every line must be non-empty. Omit the field entirely when there is no note.'),
|
|
36
|
+
})
|
|
37
|
+
.strict()
|
|
38
|
+
.describe("One exercise line in a warm-up section, with an optional note line below it.");
|
|
39
|
+
export const WarmUpSection = z
|
|
40
|
+
.object({
|
|
41
|
+
title: z
|
|
42
|
+
.string()
|
|
43
|
+
.describe('Section header, e.g. "Foam Roll", "Mobility", "Prep \\ Activation X2 Rounds" — a rounds count may be embedded in the title. Empty string only for the artifact case where a decoded file had items before any section header.'),
|
|
44
|
+
items: z.array(WarmUpItem),
|
|
45
|
+
})
|
|
46
|
+
.strict()
|
|
47
|
+
.describe("A titled block of warm-up exercises within a day column.");
|
|
48
|
+
export const WarmUpDay = z
|
|
49
|
+
.object({
|
|
50
|
+
name: z
|
|
51
|
+
.string()
|
|
52
|
+
.min(1)
|
|
53
|
+
.describe('Day label, e.g. "Day 4". Must match the corresponding day sheet name in the companion program workbook — the warm-up for "Day 4" is performed before the "Day 4" program sheet.'),
|
|
54
|
+
sections: z.array(WarmUpSection),
|
|
55
|
+
})
|
|
56
|
+
.strict()
|
|
57
|
+
.describe("One training day's warm-up = one column in the output sheet.");
|
|
58
|
+
export const WarmUpDocument = z
|
|
59
|
+
.object({
|
|
60
|
+
client: z.string().min(1).describe('Client name, e.g. "Bobby Galli".'),
|
|
61
|
+
warmUpDate: z
|
|
62
|
+
.string()
|
|
63
|
+
.describe('Date identifier as it appears in the filename, e.g. "4.26" for April 2026. Should match the companion program\'s programDate.'),
|
|
64
|
+
days: z.array(WarmUpDay).min(1),
|
|
65
|
+
})
|
|
66
|
+
.strict()
|
|
67
|
+
.describe("A complete Olympia warm-up document. Maps 1:1 to one client warm-up XLSX workbook — the companion of the program workbook for the same client and date, paired day-for-day. Days are laid out as columns on a single sheet, separated by empty gutter columns, with sections row-aligned across days.");
|
|
68
|
+
// --- Tool input/output schemas ---
|
|
69
|
+
export const WarmUpXlsxToJsonInput = z
|
|
70
|
+
.object({
|
|
71
|
+
xlsxPath: z
|
|
72
|
+
.string()
|
|
73
|
+
.min(1)
|
|
74
|
+
.describe("Absolute path to an Olympia warm-up .xlsx file on the local filesystem."),
|
|
75
|
+
})
|
|
76
|
+
.strict();
|
|
77
|
+
export const WarmUpXlsxToJsonOutput = z
|
|
78
|
+
.object({
|
|
79
|
+
warmUp: WarmUpDocument,
|
|
80
|
+
warnings: z
|
|
81
|
+
.array(z.string())
|
|
82
|
+
.describe("Structural surprises encountered while parsing (e.g. a note line with no preceding exercise, items before any section header). Empty if the file parsed cleanly."),
|
|
83
|
+
})
|
|
84
|
+
.strict();
|
|
85
|
+
export const WarmUpJsonToXlsxInput = z
|
|
86
|
+
.object({
|
|
87
|
+
warmUp: WarmUpDocument,
|
|
88
|
+
outputPath: z
|
|
89
|
+
.string()
|
|
90
|
+
.min(1)
|
|
91
|
+
.describe("Absolute path where the generated .xlsx file should be written. Parent directory must exist."),
|
|
92
|
+
})
|
|
93
|
+
.strict();
|
|
94
|
+
export const WarmUpJsonToXlsxOutput = z
|
|
95
|
+
.object({
|
|
96
|
+
outputPath: z.string(),
|
|
97
|
+
bytesWritten: z.number().int().nonnegative(),
|
|
98
|
+
})
|
|
99
|
+
.strict();
|
|
100
|
+
//# sourceMappingURL=warmup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warmup.js","sourceRoot":"","sources":["../../src/schema/warmup.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBpE,wBAAgB,YAAY,IAAI,SAAS,CA2FxC"}
|
package/dist/server.js
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { ProgramJsonToXlsxInput, ProgramJsonToXlsxOutput, ProgramXlsxToJsonInput, ProgramXlsxToJsonOutput, } from "./schema/program.js";
|
|
3
|
+
import { WarmUpJsonToXlsxInput, WarmUpJsonToXlsxOutput, WarmUpXlsxToJsonInput, WarmUpXlsxToJsonOutput, } from "./schema/warmup.js";
|
|
4
|
+
import { programXlsxToJson } from "./tools/program-xlsx-to-json.js";
|
|
5
|
+
import { programJsonToXlsx } from "./tools/program-json-to-xlsx.js";
|
|
6
|
+
import { warmUpXlsxToJson } from "./tools/warmup-xlsx-to-json.js";
|
|
7
|
+
import { warmUpJsonToXlsx } from "./tools/warmup-json-to-xlsx.js";
|
|
5
8
|
export function createServer() {
|
|
6
9
|
const server = new McpServer({
|
|
7
10
|
name: "olympia-ait-adapter",
|
|
8
|
-
version: "
|
|
11
|
+
version: "1.0.0",
|
|
9
12
|
});
|
|
10
|
-
server.registerTool("
|
|
11
|
-
title: "Olympia XLSX → JSON",
|
|
12
|
-
description: "Parse an Olympia Fitness program XLSX workbook into a strict JSON document. The output `program` is a structured representation of all training days, sections, exercises, and per-set/per-week prescriptions. `warnings` lists any structural surprises the parser encountered.",
|
|
13
|
-
inputSchema:
|
|
14
|
-
outputSchema:
|
|
13
|
+
server.registerTool("olympia_program_xlsx_to_json", {
|
|
14
|
+
title: "Olympia Program XLSX → JSON",
|
|
15
|
+
description: "Parse an Olympia Fitness program XLSX workbook into a strict JSON document. The output `program` is a structured representation of all training days, sections, exercises, and per-set/per-week prescriptions. `warnings` lists any structural surprises the parser encountered. Programs usually have a companion warm-up workbook — use the olympia_warmup_* tools for those.",
|
|
16
|
+
inputSchema: ProgramXlsxToJsonInput.shape,
|
|
17
|
+
outputSchema: ProgramXlsxToJsonOutput.shape,
|
|
15
18
|
}, async (raw) => {
|
|
16
|
-
const input =
|
|
17
|
-
const result = await
|
|
19
|
+
const input = ProgramXlsxToJsonInput.parse(raw);
|
|
20
|
+
const result = await programXlsxToJson(input);
|
|
18
21
|
return {
|
|
19
22
|
content: [
|
|
20
23
|
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
@@ -22,14 +25,44 @@ export function createServer() {
|
|
|
22
25
|
structuredContent: result,
|
|
23
26
|
};
|
|
24
27
|
});
|
|
25
|
-
server.registerTool("
|
|
26
|
-
title: "Olympia JSON → XLSX",
|
|
27
|
-
description:
|
|
28
|
-
inputSchema:
|
|
29
|
-
outputSchema:
|
|
28
|
+
server.registerTool("olympia_program_json_to_xlsx", {
|
|
29
|
+
title: "Olympia Program JSON → XLSX",
|
|
30
|
+
description: 'Render an Olympia program JSON document to an .xlsx workbook on disk. The input `program` MUST conform to the strict Olympia schema (one sheet per day; one entry per week in every set row, 4 or 6 weeks to match the previous program of the client; group labels match `<digit><uppercase letter>`; prescriptions are reps/time/breaths; the optional `weights` grid carries the Weight column as free text). The "Date:" header cells are always left blank for the client to hand-write. Returns the output path and bytes written.',
|
|
31
|
+
inputSchema: ProgramJsonToXlsxInput.shape,
|
|
32
|
+
outputSchema: ProgramJsonToXlsxOutput.shape,
|
|
30
33
|
}, async (raw) => {
|
|
31
|
-
const input =
|
|
32
|
-
const result = await
|
|
34
|
+
const input = ProgramJsonToXlsxInput.parse(raw);
|
|
35
|
+
const result = await programJsonToXlsx(input);
|
|
36
|
+
return {
|
|
37
|
+
content: [
|
|
38
|
+
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
39
|
+
],
|
|
40
|
+
structuredContent: result,
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
server.registerTool("olympia_warmup_xlsx_to_json", {
|
|
44
|
+
title: "Olympia Warm-Up XLSX → JSON",
|
|
45
|
+
description: "Parse an Olympia warm-up XLSX workbook into a strict JSON document. A warm-up workbook is the companion of a program workbook — same client and date, paired day-for-day (the \"Day 4\" warm-up is performed before the \"Day 4\" program sheet). This is a different file from the program workbook and a different concept from the \"warmup\" section inside a program day. Days are columns on a single sheet; each day is a run of titled sections of freeform exercise lines with the prescription embedded in the text; parenthesized or italic lines are notes attached to the exercise above. `warnings` lists any structural surprises the parser encountered.",
|
|
46
|
+
inputSchema: WarmUpXlsxToJsonInput.shape,
|
|
47
|
+
outputSchema: WarmUpXlsxToJsonOutput.shape,
|
|
48
|
+
}, async (raw) => {
|
|
49
|
+
const input = WarmUpXlsxToJsonInput.parse(raw);
|
|
50
|
+
const result = await warmUpXlsxToJson(input);
|
|
51
|
+
return {
|
|
52
|
+
content: [
|
|
53
|
+
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
54
|
+
],
|
|
55
|
+
structuredContent: result,
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
server.registerTool("olympia_warmup_json_to_xlsx", {
|
|
59
|
+
title: "Olympia Warm-Up JSON → XLSX",
|
|
60
|
+
description: 'Render an Olympia warm-up JSON document to an .xlsx workbook on disk. The input `warmUp` MUST conform to the strict warm-up schema. Output layout: one sheet, one column per day (empty gutter columns between), bold underlined day headers, bold section headers row-aligned across days, plain exercise lines with the prescription inline in the text (e.g. "Pecs :45E"), italic note lines under their exercise. Day names should match the companion program workbook\'s day sheets. Returns the output path and bytes written.',
|
|
61
|
+
inputSchema: WarmUpJsonToXlsxInput.shape,
|
|
62
|
+
outputSchema: WarmUpJsonToXlsxOutput.shape,
|
|
63
|
+
}, async (raw) => {
|
|
64
|
+
const input = WarmUpJsonToXlsxInput.parse(raw);
|
|
65
|
+
const result = await warmUpJsonToXlsx(input);
|
|
33
66
|
return {
|
|
34
67
|
content: [
|
|
35
68
|
{ type: "text", text: JSON.stringify(result, null, 2) },
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-json-to-xlsx.d.ts","sourceRoot":"","sources":["../../src/tools/program-json-to-xlsx.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAElC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-json-to-xlsx.js","sourceRoot":"","sources":["../../src/tools/program-json-to-xlsx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAMnE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA6B;IAE7B,OAAO,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-xlsx-to-json.d.ts","sourceRoot":"","sources":["../../src/tools/program-xlsx-to-json.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAElC"}
|