@murphai/contracts 0.1.5 → 0.1.11

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.
@@ -2060,6 +2060,209 @@
2060
2060
  }
2061
2061
  ]
2062
2062
  }
2063
+ },
2064
+ "workout": {
2065
+ "type": "object",
2066
+ "properties": {
2067
+ "sourceApp": {
2068
+ "type": "string",
2069
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
2070
+ },
2071
+ "sourceWorkoutId": {
2072
+ "type": "string",
2073
+ "minLength": 1,
2074
+ "maxLength": 200
2075
+ },
2076
+ "startedAt": {
2077
+ "type": "string",
2078
+ "format": "date-time"
2079
+ },
2080
+ "endedAt": {
2081
+ "type": "string",
2082
+ "format": "date-time"
2083
+ },
2084
+ "routineId": {
2085
+ "type": "string",
2086
+ "minLength": 1,
2087
+ "maxLength": 200
2088
+ },
2089
+ "routineName": {
2090
+ "type": "string",
2091
+ "minLength": 1,
2092
+ "maxLength": 160
2093
+ },
2094
+ "sessionNote": {
2095
+ "type": "string",
2096
+ "minLength": 1,
2097
+ "maxLength": 4000
2098
+ },
2099
+ "media": {
2100
+ "maxItems": 10,
2101
+ "type": "array",
2102
+ "items": {
2103
+ "type": "object",
2104
+ "properties": {
2105
+ "kind": {
2106
+ "type": "string",
2107
+ "enum": [
2108
+ "photo",
2109
+ "video",
2110
+ "gif",
2111
+ "image",
2112
+ "other"
2113
+ ]
2114
+ },
2115
+ "relativePath": {
2116
+ "type": "string",
2117
+ "pattern": "^raw\\/[A-Za-z0-9._/-]+$"
2118
+ },
2119
+ "mediaType": {
2120
+ "type": "string",
2121
+ "minLength": 1,
2122
+ "maxLength": 255
2123
+ },
2124
+ "caption": {
2125
+ "type": "string",
2126
+ "minLength": 1,
2127
+ "maxLength": 4000
2128
+ }
2129
+ },
2130
+ "required": [
2131
+ "kind",
2132
+ "relativePath"
2133
+ ],
2134
+ "additionalProperties": false
2135
+ }
2136
+ },
2137
+ "exercises": {
2138
+ "maxItems": 100,
2139
+ "type": "array",
2140
+ "items": {
2141
+ "type": "object",
2142
+ "properties": {
2143
+ "name": {
2144
+ "type": "string",
2145
+ "minLength": 1,
2146
+ "maxLength": 160
2147
+ },
2148
+ "sourceExerciseId": {
2149
+ "type": "string",
2150
+ "minLength": 1,
2151
+ "maxLength": 200
2152
+ },
2153
+ "order": {
2154
+ "type": "integer",
2155
+ "minimum": 1
2156
+ },
2157
+ "groupId": {
2158
+ "type": "string",
2159
+ "minLength": 1,
2160
+ "maxLength": 80
2161
+ },
2162
+ "mode": {
2163
+ "type": "string",
2164
+ "enum": [
2165
+ "weight_reps",
2166
+ "bodyweight",
2167
+ "assisted_bodyweight",
2168
+ "weighted_bodyweight",
2169
+ "duration",
2170
+ "cardio"
2171
+ ]
2172
+ },
2173
+ "unitOverride": {
2174
+ "type": "string",
2175
+ "enum": [
2176
+ "lb",
2177
+ "kg"
2178
+ ]
2179
+ },
2180
+ "note": {
2181
+ "type": "string",
2182
+ "minLength": 1,
2183
+ "maxLength": 4000
2184
+ },
2185
+ "sets": {
2186
+ "minItems": 1,
2187
+ "maxItems": 150,
2188
+ "type": "array",
2189
+ "items": {
2190
+ "type": "object",
2191
+ "properties": {
2192
+ "order": {
2193
+ "type": "integer",
2194
+ "minimum": 1
2195
+ },
2196
+ "type": {
2197
+ "type": "string",
2198
+ "enum": [
2199
+ "normal",
2200
+ "warmup",
2201
+ "dropset",
2202
+ "failure"
2203
+ ]
2204
+ },
2205
+ "reps": {
2206
+ "type": "integer",
2207
+ "minimum": 0
2208
+ },
2209
+ "weight": {
2210
+ "type": "number",
2211
+ "minimum": 0
2212
+ },
2213
+ "weightUnit": {
2214
+ "type": "string",
2215
+ "enum": [
2216
+ "lb",
2217
+ "kg"
2218
+ ]
2219
+ },
2220
+ "durationSeconds": {
2221
+ "type": "integer",
2222
+ "minimum": 0
2223
+ },
2224
+ "distanceMeters": {
2225
+ "type": "number",
2226
+ "minimum": 0
2227
+ },
2228
+ "rpe": {
2229
+ "type": "number",
2230
+ "minimum": 0,
2231
+ "maximum": 10
2232
+ },
2233
+ "bodyweightKg": {
2234
+ "type": "number",
2235
+ "minimum": 0
2236
+ },
2237
+ "assistanceKg": {
2238
+ "type": "number",
2239
+ "minimum": 0
2240
+ },
2241
+ "addedWeightKg": {
2242
+ "type": "number",
2243
+ "minimum": 0
2244
+ }
2245
+ },
2246
+ "required": [
2247
+ "order"
2248
+ ],
2249
+ "additionalProperties": false
2250
+ }
2251
+ }
2252
+ },
2253
+ "required": [
2254
+ "name",
2255
+ "order",
2256
+ "sets"
2257
+ ],
2258
+ "additionalProperties": false
2259
+ }
2260
+ }
2261
+ },
2262
+ "required": [
2263
+ "exercises"
2264
+ ],
2265
+ "additionalProperties": false
2063
2266
  }
2064
2267
  },
2065
2268
  "required": [
@@ -2076,6 +2279,237 @@
2076
2279
  ],
2077
2280
  "additionalProperties": false
2078
2281
  },
2282
+ {
2283
+ "type": "object",
2284
+ "properties": {
2285
+ "schemaVersion": {
2286
+ "type": "string",
2287
+ "const": "murph.event.v1"
2288
+ },
2289
+ "id": {
2290
+ "type": "string",
2291
+ "pattern": "^evt_[0-9A-HJKMNP-TV-Z]{26}$"
2292
+ },
2293
+ "occurredAt": {
2294
+ "type": "string",
2295
+ "format": "date-time"
2296
+ },
2297
+ "recordedAt": {
2298
+ "type": "string",
2299
+ "format": "date-time"
2300
+ },
2301
+ "dayKey": {
2302
+ "type": "string",
2303
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
2304
+ },
2305
+ "source": {
2306
+ "type": "string",
2307
+ "enum": [
2308
+ "manual",
2309
+ "import",
2310
+ "device",
2311
+ "derived"
2312
+ ]
2313
+ },
2314
+ "title": {
2315
+ "type": "string",
2316
+ "minLength": 1,
2317
+ "maxLength": 160
2318
+ },
2319
+ "kind": {
2320
+ "type": "string",
2321
+ "const": "body_measurement"
2322
+ },
2323
+ "note": {
2324
+ "type": "string",
2325
+ "minLength": 1,
2326
+ "maxLength": 4000
2327
+ },
2328
+ "tags": {
2329
+ "type": "array",
2330
+ "items": {
2331
+ "type": "string",
2332
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
2333
+ },
2334
+ "uniqueItems": true
2335
+ },
2336
+ "relatedIds": {
2337
+ "type": "array",
2338
+ "items": {
2339
+ "type": "string",
2340
+ "pattern": "^(?:alg|asmt|aud|cond|doc|evt|exp|fam|food|goal|meal|pack|psnap|prov|rcp|prot|smp|xfm|var|vault|wfmt)_[0-9A-HJKMNP-TV-Z]{26}$"
2341
+ },
2342
+ "uniqueItems": true
2343
+ },
2344
+ "rawRefs": {
2345
+ "type": "array",
2346
+ "items": {
2347
+ "type": "string",
2348
+ "pattern": "^raw\\/[A-Za-z0-9._/-]+$"
2349
+ },
2350
+ "uniqueItems": true
2351
+ },
2352
+ "externalRef": {
2353
+ "type": "object",
2354
+ "properties": {
2355
+ "system": {
2356
+ "type": "string",
2357
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
2358
+ },
2359
+ "resourceType": {
2360
+ "type": "string",
2361
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
2362
+ },
2363
+ "resourceId": {
2364
+ "type": "string",
2365
+ "minLength": 1,
2366
+ "maxLength": 200
2367
+ },
2368
+ "version": {
2369
+ "type": "string",
2370
+ "minLength": 1,
2371
+ "maxLength": 200
2372
+ },
2373
+ "facet": {
2374
+ "type": "string",
2375
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
2376
+ }
2377
+ },
2378
+ "required": [
2379
+ "system",
2380
+ "resourceType",
2381
+ "resourceId"
2382
+ ],
2383
+ "additionalProperties": false
2384
+ },
2385
+ "lifecycle": {
2386
+ "type": "object",
2387
+ "properties": {
2388
+ "revision": {
2389
+ "type": "integer",
2390
+ "minimum": 1
2391
+ },
2392
+ "state": {
2393
+ "type": "string",
2394
+ "enum": [
2395
+ "deleted"
2396
+ ]
2397
+ }
2398
+ },
2399
+ "required": [
2400
+ "revision"
2401
+ ],
2402
+ "additionalProperties": false
2403
+ },
2404
+ "timeZone": {
2405
+ "type": "string",
2406
+ "minLength": 3,
2407
+ "maxLength": 64
2408
+ },
2409
+ "measurements": {
2410
+ "minItems": 1,
2411
+ "maxItems": 25,
2412
+ "type": "array",
2413
+ "items": {
2414
+ "type": "object",
2415
+ "properties": {
2416
+ "type": {
2417
+ "type": "string",
2418
+ "enum": [
2419
+ "weight",
2420
+ "body_fat_pct",
2421
+ "waist",
2422
+ "neck",
2423
+ "shoulders",
2424
+ "chest",
2425
+ "biceps",
2426
+ "forearms",
2427
+ "abdomen",
2428
+ "hips",
2429
+ "thighs",
2430
+ "calves"
2431
+ ]
2432
+ },
2433
+ "value": {
2434
+ "type": "number",
2435
+ "minimum": 0
2436
+ },
2437
+ "unit": {
2438
+ "type": "string",
2439
+ "enum": [
2440
+ "lb",
2441
+ "kg",
2442
+ "percent",
2443
+ "cm",
2444
+ "in"
2445
+ ]
2446
+ },
2447
+ "note": {
2448
+ "type": "string",
2449
+ "minLength": 1,
2450
+ "maxLength": 4000
2451
+ }
2452
+ },
2453
+ "required": [
2454
+ "type",
2455
+ "value",
2456
+ "unit"
2457
+ ],
2458
+ "additionalProperties": false
2459
+ }
2460
+ },
2461
+ "media": {
2462
+ "maxItems": 10,
2463
+ "type": "array",
2464
+ "items": {
2465
+ "type": "object",
2466
+ "properties": {
2467
+ "kind": {
2468
+ "type": "string",
2469
+ "enum": [
2470
+ "photo",
2471
+ "video",
2472
+ "gif",
2473
+ "image",
2474
+ "other"
2475
+ ]
2476
+ },
2477
+ "relativePath": {
2478
+ "type": "string",
2479
+ "pattern": "^raw\\/[A-Za-z0-9._/-]+$"
2480
+ },
2481
+ "mediaType": {
2482
+ "type": "string",
2483
+ "minLength": 1,
2484
+ "maxLength": 255
2485
+ },
2486
+ "caption": {
2487
+ "type": "string",
2488
+ "minLength": 1,
2489
+ "maxLength": 4000
2490
+ }
2491
+ },
2492
+ "required": [
2493
+ "kind",
2494
+ "relativePath"
2495
+ ],
2496
+ "additionalProperties": false
2497
+ }
2498
+ }
2499
+ },
2500
+ "required": [
2501
+ "schemaVersion",
2502
+ "id",
2503
+ "occurredAt",
2504
+ "recordedAt",
2505
+ "dayKey",
2506
+ "source",
2507
+ "title",
2508
+ "kind",
2509
+ "measurements"
2510
+ ],
2511
+ "additionalProperties": false
2512
+ },
2079
2513
  {
2080
2514
  "type": "object",
2081
2515
  "properties": {
@@ -41,6 +41,33 @@
41
41
  "pattern": "^goal_[0-9A-HJKMNP-TV-Z]{26}$"
42
42
  },
43
43
  "uniqueItems": true
44
+ },
45
+ "unitPreferences": {
46
+ "type": "object",
47
+ "properties": {
48
+ "weight": {
49
+ "type": "string",
50
+ "enum": [
51
+ "lb",
52
+ "kg"
53
+ ]
54
+ },
55
+ "distance": {
56
+ "type": "string",
57
+ "enum": [
58
+ "km",
59
+ "mi"
60
+ ]
61
+ },
62
+ "bodyMeasurement": {
63
+ "type": "string",
64
+ "enum": [
65
+ "cm",
66
+ "in"
67
+ ]
68
+ }
69
+ },
70
+ "additionalProperties": false
44
71
  }
45
72
  },
46
73
  "required": [
@@ -146,6 +146,128 @@
146
146
  "type": "string",
147
147
  "minLength": 1,
148
148
  "maxLength": 4000
149
+ },
150
+ "template": {
151
+ "type": "object",
152
+ "properties": {
153
+ "routineNote": {
154
+ "type": "string",
155
+ "minLength": 1,
156
+ "maxLength": 4000
157
+ },
158
+ "exercises": {
159
+ "type": "array",
160
+ "minItems": 1,
161
+ "maxItems": 100,
162
+ "items": {
163
+ "type": "object",
164
+ "properties": {
165
+ "name": {
166
+ "type": "string",
167
+ "minLength": 1,
168
+ "maxLength": 160
169
+ },
170
+ "order": {
171
+ "type": "integer",
172
+ "minimum": 1
173
+ },
174
+ "groupId": {
175
+ "type": "string",
176
+ "minLength": 1,
177
+ "maxLength": 80
178
+ },
179
+ "mode": {
180
+ "type": "string",
181
+ "enum": [
182
+ "weight_reps",
183
+ "bodyweight",
184
+ "assisted_bodyweight",
185
+ "weighted_bodyweight",
186
+ "duration",
187
+ "cardio"
188
+ ]
189
+ },
190
+ "unitOverride": {
191
+ "type": "string",
192
+ "enum": [
193
+ "lb",
194
+ "kg"
195
+ ]
196
+ },
197
+ "note": {
198
+ "type": "string",
199
+ "minLength": 1,
200
+ "maxLength": 4000
201
+ },
202
+ "plannedSets": {
203
+ "type": "array",
204
+ "minItems": 1,
205
+ "maxItems": 150,
206
+ "items": {
207
+ "type": "object",
208
+ "properties": {
209
+ "order": {
210
+ "type": "integer",
211
+ "minimum": 1
212
+ },
213
+ "type": {
214
+ "type": "string",
215
+ "enum": [
216
+ "normal",
217
+ "warmup",
218
+ "dropset",
219
+ "failure"
220
+ ]
221
+ },
222
+ "targetReps": {
223
+ "type": "integer",
224
+ "minimum": 0
225
+ },
226
+ "targetWeight": {
227
+ "type": "number",
228
+ "minimum": 0
229
+ },
230
+ "targetWeightUnit": {
231
+ "type": "string",
232
+ "enum": [
233
+ "lb",
234
+ "kg"
235
+ ]
236
+ },
237
+ "targetDurationSeconds": {
238
+ "type": "integer",
239
+ "minimum": 0
240
+ },
241
+ "targetDistanceMeters": {
242
+ "type": "number",
243
+ "minimum": 0
244
+ },
245
+ "targetRpe": {
246
+ "type": "number",
247
+ "minimum": 0,
248
+ "maximum": 10
249
+ }
250
+ },
251
+ "required": [
252
+ "order"
253
+ ],
254
+ "additionalProperties": false
255
+ }
256
+ }
257
+ },
258
+ "required": [
259
+ "name",
260
+ "order",
261
+ "plannedSets"
262
+ ],
263
+ "additionalProperties": false
264
+ }
265
+ }
266
+ },
267
+ "required": [
268
+ "exercises"
269
+ ],
270
+ "additionalProperties": false
149
271
  }
150
272
  },
151
273
  "required": [
@@ -76,6 +76,33 @@
76
76
  },
77
77
  "additionalProperties": false
78
78
  },
79
+ "unitPreferences": {
80
+ "type": "object",
81
+ "properties": {
82
+ "weight": {
83
+ "type": "string",
84
+ "enum": [
85
+ "lb",
86
+ "kg"
87
+ ]
88
+ },
89
+ "distance": {
90
+ "type": "string",
91
+ "enum": [
92
+ "km",
93
+ "mi"
94
+ ]
95
+ },
96
+ "bodyMeasurement": {
97
+ "type": "string",
98
+ "enum": [
99
+ "cm",
100
+ "in"
101
+ ]
102
+ }
103
+ },
104
+ "additionalProperties": false
105
+ },
79
106
  "custom": {
80
107
  "type": "object",
81
108
  "properties": {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@murphai/contracts",
3
- "version": "0.1.5",
3
+ "version": "0.1.11",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "GPL-3.0-only",
@@ -49,6 +49,11 @@
49
49
  "import": "./dist/schemas.js",
50
50
  "default": "./dist/schemas.js"
51
51
  },
52
+ "./time": {
53
+ "types": "./dist/time.d.ts",
54
+ "import": "./dist/time.js",
55
+ "default": "./dist/time.js"
56
+ },
52
57
  "./validate": {
53
58
  "types": "./dist/validate.d.ts",
54
59
  "import": "./dist/validate.js",