@murphai/murph 0.1.1 → 0.1.13

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 (100) hide show
  1. package/CHANGELOG.md +154 -0
  2. package/README.md +103 -60
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/assistant/ui/ink.d.ts.map +1 -1
  5. package/dist/assistant/ui/ink.js +2 -3
  6. package/dist/assistant/ui/ink.js.map +1 -1
  7. package/dist/assistant-runtime.d.ts +0 -2
  8. package/dist/assistant-runtime.d.ts.map +1 -1
  9. package/dist/assistant-runtime.js +0 -1
  10. package/dist/assistant-runtime.js.map +1 -1
  11. package/dist/commands/device.js +1 -1
  12. package/dist/commands/device.js.map +1 -1
  13. package/dist/commands/export-intake-read-helpers.d.ts +1 -1
  14. package/dist/commands/knowledge.d.ts +3 -0
  15. package/dist/commands/knowledge.d.ts.map +1 -0
  16. package/dist/commands/knowledge.js +164 -0
  17. package/dist/commands/knowledge.js.map +1 -0
  18. package/dist/commands/wearables.d.ts +4985 -0
  19. package/dist/commands/wearables.d.ts.map +1 -0
  20. package/dist/commands/wearables.js +355 -0
  21. package/dist/commands/wearables.js.map +1 -0
  22. package/dist/commands/workout.d.ts.map +1 -1
  23. package/dist/commands/workout.js +330 -28
  24. package/dist/commands/workout.js.map +1 -1
  25. package/dist/incur-error-bridge.d.ts +2 -0
  26. package/dist/incur-error-bridge.d.ts.map +1 -0
  27. package/dist/incur-error-bridge.js +25 -0
  28. package/dist/incur-error-bridge.js.map +1 -0
  29. package/dist/incur.generated.d.ts +118 -1
  30. package/dist/incur.generated.d.ts.map +1 -1
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/knowledge-cli-contracts.d.ts +179 -0
  36. package/dist/knowledge-cli-contracts.d.ts.map +1 -0
  37. package/dist/knowledge-cli-contracts.js +78 -0
  38. package/dist/knowledge-cli-contracts.js.map +1 -0
  39. package/dist/knowledge-documents.d.ts +44 -0
  40. package/dist/knowledge-documents.d.ts.map +1 -0
  41. package/dist/knowledge-documents.js +195 -0
  42. package/dist/knowledge-documents.js.map +1 -0
  43. package/dist/knowledge-lint.d.ts +11 -0
  44. package/dist/knowledge-lint.d.ts.map +1 -0
  45. package/dist/knowledge-lint.js +254 -0
  46. package/dist/knowledge-lint.js.map +1 -0
  47. package/dist/knowledge-runtime.d.ts +49 -0
  48. package/dist/knowledge-runtime.d.ts.map +1 -0
  49. package/dist/knowledge-runtime.js +227 -0
  50. package/dist/knowledge-runtime.js.map +1 -0
  51. package/dist/research-runtime.d.ts +3 -40
  52. package/dist/research-runtime.d.ts.map +1 -1
  53. package/dist/research-runtime.js +54 -253
  54. package/dist/research-runtime.js.map +1 -1
  55. package/dist/review-gpt-runtime.d.ts +85 -0
  56. package/dist/review-gpt-runtime.d.ts.map +1 -0
  57. package/dist/review-gpt-runtime.js +239 -0
  58. package/dist/review-gpt-runtime.js.map +1 -0
  59. package/dist/setup-assistant.d.ts +1 -0
  60. package/dist/setup-assistant.d.ts.map +1 -1
  61. package/dist/setup-assistant.js +2 -1
  62. package/dist/setup-assistant.js.map +1 -1
  63. package/dist/setup-cli.d.ts.map +1 -1
  64. package/dist/setup-cli.js +10 -1
  65. package/dist/setup-cli.js.map +1 -1
  66. package/dist/setup-wizard.d.ts.map +1 -1
  67. package/dist/setup-wizard.js +26 -7
  68. package/dist/setup-wizard.js.map +1 -1
  69. package/dist/usecases/workout-artifacts.d.ts +21 -0
  70. package/dist/usecases/workout-artifacts.d.ts.map +1 -0
  71. package/dist/usecases/workout-artifacts.js +149 -0
  72. package/dist/usecases/workout-artifacts.js.map +1 -0
  73. package/dist/usecases/workout-format.d.ts +92 -10
  74. package/dist/usecases/workout-format.d.ts.map +1 -1
  75. package/dist/usecases/workout-format.js +211 -391
  76. package/dist/usecases/workout-format.js.map +1 -1
  77. package/dist/usecases/workout-import.d.ts +36 -0
  78. package/dist/usecases/workout-import.d.ts.map +1 -0
  79. package/dist/usecases/workout-import.js +587 -0
  80. package/dist/usecases/workout-import.js.map +1 -0
  81. package/dist/usecases/workout-measurement.d.ts +66 -0
  82. package/dist/usecases/workout-measurement.d.ts.map +1 -0
  83. package/dist/usecases/workout-measurement.js +285 -0
  84. package/dist/usecases/workout-measurement.js.map +1 -0
  85. package/dist/usecases/workout-model.d.ts +15 -0
  86. package/dist/usecases/workout-model.d.ts.map +1 -0
  87. package/dist/usecases/workout-model.js +161 -0
  88. package/dist/usecases/workout-model.js.map +1 -0
  89. package/dist/usecases/workout.d.ts +57 -20
  90. package/dist/usecases/workout.d.ts.map +1 -1
  91. package/dist/usecases/workout.js +360 -214
  92. package/dist/usecases/workout.js.map +1 -1
  93. package/dist/vault-cli-command-manifest.d.ts +5179 -3
  94. package/dist/vault-cli-command-manifest.d.ts.map +1 -1
  95. package/dist/vault-cli-command-manifest.js +140 -3
  96. package/dist/vault-cli-command-manifest.js.map +1 -1
  97. package/dist/vault-cli.d.ts.map +1 -1
  98. package/dist/vault-cli.js +2 -0
  99. package/dist/vault-cli.js.map +1 -1
  100. package/package.json +22 -13
@@ -1,16 +1,20 @@
1
1
  import { Cli, z } from 'incur';
2
2
  import { withBaseOptions } from '@murphai/assistant-core/command-helpers';
3
- import { isoTimestampSchema, showResultSchema, workoutAddResultSchema, workoutFormatListResultSchema, workoutFormatSaveResultSchema, } from '@murphai/assistant-core/vault-cli-contracts';
3
+ import { inputFileOptionSchema, normalizeInputFileOption, } from '@murphai/assistant-core/json-input';
4
+ import { isoTimestampSchema, listResultSchema, pathSchema, showResultSchema, workoutAddResultSchema, workoutFormatListResultSchema, workoutFormatSaveResultSchema, workoutImportCsvResultSchema, workoutImportInspectResultSchema, workoutMeasurementAddResultSchema, workoutUnitPreferencesResultSchema, } from '@murphai/assistant-core/vault-cli-contracts';
5
+ import { listWorkoutRecords, listWorkoutMeasurementRecords, showWorkoutManifest, showWorkoutMeasurementManifest, showWorkoutMeasurementRecord, showWorkoutRecord, workoutImportManifestResultSchema, workoutLookupSchema, } from '@murphai/assistant-core/usecases/workout-read';
4
6
  import { listWorkoutFormats, logWorkoutFormat, saveWorkoutFormat, showWorkoutFormat, } from '../usecases/workout-format.js';
5
7
  import { addWorkoutRecord, deleteWorkoutRecord, editWorkoutRecord, } from '../usecases/workout.js';
8
+ import { importWorkoutCsv, inspectWorkoutCsvImport, } from '../usecases/workout-import.js';
9
+ import { addWorkoutMeasurementRecord, setWorkoutUnitPreferences, showWorkoutUnitPreferences, } from '../usecases/workout-measurement.js';
6
10
  import { createDirectEntityDeleteCommandDefinition, createDirectEventBackedEntityEditCommandDefinition, } from './record-mutation-command-helpers.js';
7
11
  const eventSourceSchema = z.enum(['manual', 'import', 'device', 'derived']);
8
12
  export function registerWorkoutCommands(cli, _services) {
9
13
  const workout = Cli.create('workout', {
10
- description: 'Quick workout capture commands routed through canonical activity-session events.',
14
+ description: 'Workout capture, reusable routine, and CSV import commands routed through canonical activity-session events plus bank workout-format docs.',
11
15
  });
12
16
  workout.command('add', {
13
- description: 'Record one workout from a freeform note with lightweight structured inference.',
17
+ description: 'Record one workout either from a freeform note or from a structured JSON payload.',
14
18
  args: z.object({
15
19
  text: z
16
20
  .string()
@@ -29,24 +33,26 @@ export function registerWorkoutCommands(cli, _services) {
29
33
  },
30
34
  },
31
35
  {
32
- description: 'Capture strength-session exercise details from one note.',
33
- args: {
34
- text: '20 min strength training. 4 sets of 20 pushups. 4 sets of 12 incline bench with a 45 lb bar plus 10 lb plates on both sides.',
35
- },
36
+ description: 'Capture a structured workout payload from disk.',
37
+ args: {},
36
38
  options: {
39
+ input: '@workout.json',
37
40
  vault: './vault',
38
41
  },
39
42
  },
40
43
  ],
41
- hint: 'The freeform note is stored on the canonical activity_session event. Explicit strength notes can also capture exercise/set/load structure; pass --duration or --type when the note is ambiguous.',
44
+ hint: 'Use freeform text for lightweight logging, or pass --input @workout.json to store a rich nested workout payload with exercises, sets, notes, grouping, and source metadata.',
42
45
  options: withBaseOptions({
46
+ input: inputFileOptionSchema
47
+ .optional()
48
+ .describe('Optional structured workout payload in @file.json form or - for stdin.'),
43
49
  duration: z
44
50
  .number()
45
51
  .int()
46
52
  .positive()
47
53
  .max(24 * 60)
48
54
  .optional()
49
- .describe('Optional duration override in minutes when the note is missing or ambiguous.'),
55
+ .describe('Optional duration override in minutes when the note or structured payload is missing or ambiguous.'),
50
56
  type: z
51
57
  .string()
52
58
  .min(1)
@@ -65,12 +71,19 @@ export function registerWorkoutCommands(cli, _services) {
65
71
  source: eventSourceSchema
66
72
  .optional()
67
73
  .describe('Optional event source (`manual`, `import`, `device`, or `derived`).'),
74
+ media: z
75
+ .array(pathSchema)
76
+ .optional()
77
+ .describe('Optional workout photo or video file paths to copy into raw/workouts/** and attach to the workout event.'),
68
78
  }),
69
79
  output: workoutAddResultSchema,
70
80
  async run({ args, options }) {
71
81
  return addWorkoutRecord({
72
82
  vault: options.vault,
73
- text: args.text,
83
+ text: typeof args.text === 'string' ? args.text : undefined,
84
+ inputFile: typeof options.input === 'string'
85
+ ? normalizeInputFileOption(options.input)
86
+ : undefined,
74
87
  durationMinutes: options.duration,
75
88
  activityType: typeof options.type === 'string' ? options.type : undefined,
76
89
  distanceKm: typeof options.distanceKm === 'number'
@@ -80,16 +93,56 @@ export function registerWorkoutCommands(cli, _services) {
80
93
  ? options.occurredAt
81
94
  : undefined,
82
95
  source: typeof options.source === 'string' ? options.source : undefined,
96
+ mediaPaths: Array.isArray(options.media)
97
+ ? options.media.filter((entry) => typeof entry === 'string')
98
+ : undefined,
99
+ });
100
+ },
101
+ });
102
+ workout.command('show', {
103
+ description: 'Show one workout session by canonical event id.',
104
+ args: z.object({
105
+ id: workoutLookupSchema,
106
+ }),
107
+ options: withBaseOptions(),
108
+ output: showResultSchema,
109
+ async run({ args, options }) {
110
+ return showWorkoutRecord(options.vault, args.id);
111
+ },
112
+ });
113
+ workout.command('list', {
114
+ description: 'List workout sessions with optional date bounds.',
115
+ args: z.object({}),
116
+ options: withBaseOptions({
117
+ from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/u).optional(),
118
+ to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/u).optional(),
119
+ limit: z.number().int().positive().max(200).default(50),
120
+ }),
121
+ output: listResultSchema,
122
+ async run({ options }) {
123
+ return listWorkoutRecords({
124
+ vault: options.vault,
125
+ from: typeof options.from === 'string' ? options.from : undefined,
126
+ to: typeof options.to === 'string' ? options.to : undefined,
127
+ limit: typeof options.limit === 'number' ? options.limit : undefined,
83
128
  });
84
129
  },
85
130
  });
131
+ workout.command('manifest', {
132
+ description: 'Show the immutable raw import manifest for an imported workout event.',
133
+ args: z.object({
134
+ id: workoutLookupSchema,
135
+ }),
136
+ options: withBaseOptions(),
137
+ output: workoutImportManifestResultSchema,
138
+ async run({ args, options }) {
139
+ return showWorkoutManifest(options.vault, args.id);
140
+ },
141
+ });
86
142
  workout.command('edit', createDirectEventBackedEntityEditCommandDefinition({
87
143
  arg: {
88
144
  name: 'id',
89
- schema: z
90
- .string()
91
- .regex(/^evt_[0-9A-Za-z]+$/u, 'Expected a canonical workout event id in evt_* form.')
92
- .describe('Canonical workout event id such as evt_<ULID>.'),
145
+ schema: workoutLookupSchema,
93
146
  },
94
147
  description: 'Edit one workout session by merging a partial JSON patch or one or more path assignments into the saved activity event.',
95
148
  run(input) {
@@ -106,10 +159,7 @@ export function registerWorkoutCommands(cli, _services) {
106
159
  workout.command('delete', createDirectEntityDeleteCommandDefinition({
107
160
  arg: {
108
161
  name: 'id',
109
- schema: z
110
- .string()
111
- .regex(/^evt_[0-9A-Za-z]+$/u, 'Expected a canonical workout event id in evt_* form.')
112
- .describe('Canonical workout event id such as evt_<ULID>.'),
162
+ schema: workoutLookupSchema,
113
163
  },
114
164
  description: 'Delete one workout activity_session event.',
115
165
  run(input) {
@@ -119,11 +169,239 @@ export function registerWorkoutCommands(cli, _services) {
119
169
  });
120
170
  },
121
171
  }));
172
+ const measurement = Cli.create('measurement', {
173
+ description: 'Body-measurement capture routed through canonical body_measurement events plus optional progress photos under raw/measurements/**.',
174
+ });
175
+ measurement.command('add', {
176
+ description: 'Record one body-measurement check-in either from a structured JSON payload or a single typed measurement.',
177
+ args: z.object({}),
178
+ options: withBaseOptions({
179
+ input: inputFileOptionSchema
180
+ .optional()
181
+ .describe('Optional structured body-measurement payload in @file.json form or - for stdin.'),
182
+ type: z
183
+ .enum([
184
+ 'weight',
185
+ 'body_fat_pct',
186
+ 'waist',
187
+ 'neck',
188
+ 'shoulders',
189
+ 'chest',
190
+ 'biceps',
191
+ 'forearms',
192
+ 'abdomen',
193
+ 'hips',
194
+ 'thighs',
195
+ 'calves',
196
+ ])
197
+ .optional()
198
+ .describe('Single measurement type to record when --input is not provided.'),
199
+ value: z
200
+ .number()
201
+ .nonnegative()
202
+ .optional()
203
+ .describe('Single measurement numeric value when --input is not provided.'),
204
+ unit: z
205
+ .enum(['lb', 'kg', 'percent', 'cm', 'in'])
206
+ .optional()
207
+ .describe('Optional measurement unit. When omitted, Murph falls back to saved workout unit preferences where possible.'),
208
+ note: z
209
+ .string()
210
+ .min(1)
211
+ .max(4000)
212
+ .optional()
213
+ .describe('Optional measurement note.'),
214
+ title: z
215
+ .string()
216
+ .min(1)
217
+ .max(160)
218
+ .optional()
219
+ .describe('Optional measurement title override.'),
220
+ occurredAt: isoTimestampSchema
221
+ .optional()
222
+ .describe('Optional occurrence timestamp in ISO 8601 form.'),
223
+ source: eventSourceSchema
224
+ .optional()
225
+ .describe('Optional event source (`manual`, `import`, `device`, or `derived`).'),
226
+ media: z
227
+ .array(pathSchema)
228
+ .optional()
229
+ .describe('Optional progress photo or video file paths to copy into raw/measurements/** and attach to the measurement event.'),
230
+ }),
231
+ output: workoutMeasurementAddResultSchema,
232
+ async run({ options }) {
233
+ return addWorkoutMeasurementRecord({
234
+ vault: options.vault,
235
+ inputFile: typeof options.input === 'string'
236
+ ? normalizeInputFileOption(options.input)
237
+ : undefined,
238
+ type: typeof options.type === 'string' ? options.type : undefined,
239
+ value: typeof options.value === 'number' ? options.value : undefined,
240
+ unit: typeof options.unit === 'string' ? options.unit : undefined,
241
+ note: typeof options.note === 'string' ? options.note : undefined,
242
+ title: typeof options.title === 'string' ? options.title : undefined,
243
+ occurredAt: typeof options.occurredAt === 'string'
244
+ ? options.occurredAt
245
+ : undefined,
246
+ source: typeof options.source === 'string' ? options.source : undefined,
247
+ mediaPaths: Array.isArray(options.media)
248
+ ? options.media.filter((entry) => typeof entry === 'string')
249
+ : undefined,
250
+ });
251
+ },
252
+ });
253
+ measurement.command('show', {
254
+ description: 'Show one body-measurement event by canonical event id.',
255
+ args: z.object({
256
+ id: workoutLookupSchema,
257
+ }),
258
+ options: withBaseOptions(),
259
+ output: showResultSchema,
260
+ async run({ args, options }) {
261
+ return showWorkoutMeasurementRecord(options.vault, args.id);
262
+ },
263
+ });
264
+ measurement.command('list', {
265
+ description: 'List body-measurement events with optional date bounds.',
266
+ args: z.object({}),
267
+ options: withBaseOptions({
268
+ from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/u).optional(),
269
+ to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/u).optional(),
270
+ limit: z.number().int().positive().max(200).default(50),
271
+ }),
272
+ output: listResultSchema,
273
+ async run({ options }) {
274
+ return listWorkoutMeasurementRecords({
275
+ vault: options.vault,
276
+ from: typeof options.from === 'string' ? options.from : undefined,
277
+ to: typeof options.to === 'string' ? options.to : undefined,
278
+ limit: typeof options.limit === 'number' ? options.limit : undefined,
279
+ });
280
+ },
281
+ });
282
+ measurement.command('manifest', {
283
+ description: 'Show the immutable raw import manifest for an imported body-measurement event.',
284
+ args: z.object({
285
+ id: workoutLookupSchema,
286
+ }),
287
+ options: withBaseOptions(),
288
+ output: workoutImportManifestResultSchema,
289
+ async run({ args, options }) {
290
+ return showWorkoutMeasurementManifest(options.vault, args.id);
291
+ },
292
+ });
293
+ const units = Cli.create('units', {
294
+ description: 'Profile-level workout unit preferences used by workout and body-measurement capture flows.',
295
+ });
296
+ units.command('show', {
297
+ description: 'Show the saved workout unit preferences from the current profile snapshot.',
298
+ args: z.object({}),
299
+ options: withBaseOptions(),
300
+ output: workoutUnitPreferencesResultSchema,
301
+ async run({ options }) {
302
+ return showWorkoutUnitPreferences(options.vault);
303
+ },
304
+ });
305
+ units.command('set', {
306
+ description: 'Set one or more workout unit preferences on the current profile snapshot.',
307
+ args: z.object({}),
308
+ options: withBaseOptions({
309
+ weight: z.enum(['lb', 'kg']).optional(),
310
+ distance: z.enum(['km', 'mi']).optional(),
311
+ bodyMeasurement: z
312
+ .enum(['cm', 'in'])
313
+ .optional()
314
+ .describe('Preferred circumference/body-measurement unit.'),
315
+ recordedAt: isoTimestampSchema
316
+ .optional()
317
+ .describe('Optional profile-snapshot timestamp override in ISO 8601 form.'),
318
+ }),
319
+ output: workoutUnitPreferencesResultSchema,
320
+ async run({ options }) {
321
+ return setWorkoutUnitPreferences({
322
+ vault: options.vault,
323
+ weight: typeof options.weight === 'string' ? options.weight : undefined,
324
+ distance: typeof options.distance === 'string' ? options.distance : undefined,
325
+ bodyMeasurement: typeof options.bodyMeasurement === 'string'
326
+ ? options.bodyMeasurement
327
+ : undefined,
328
+ recordedAt: typeof options.recordedAt === 'string'
329
+ ? options.recordedAt
330
+ : undefined,
331
+ });
332
+ },
333
+ });
334
+ const importGroup = Cli.create('import', {
335
+ description: 'Inspect and import Strong/Hevy-style workout CSV exports into immutable raw batches plus canonical workout events.',
336
+ });
337
+ importGroup.command('inspect', {
338
+ description: 'Inspect one workout CSV file without writing anything.',
339
+ args: z.object({
340
+ file: pathSchema.describe('Path to the workout CSV export to inspect.'),
341
+ }),
342
+ options: withBaseOptions({
343
+ source: z
344
+ .string()
345
+ .min(1)
346
+ .max(80)
347
+ .optional()
348
+ .describe('Optional source hint such as strong or hevy.'),
349
+ delimiter: z
350
+ .string()
351
+ .min(1)
352
+ .max(1)
353
+ .optional()
354
+ .describe('Optional single-character CSV delimiter override.'),
355
+ }),
356
+ output: workoutImportInspectResultSchema,
357
+ async run({ args, options }) {
358
+ return inspectWorkoutCsvImport({
359
+ vault: options.vault,
360
+ file: args.file,
361
+ source: typeof options.source === 'string' ? options.source : undefined,
362
+ delimiter: typeof options.delimiter === 'string' ? options.delimiter : undefined,
363
+ });
364
+ },
365
+ });
366
+ importGroup.command('csv', {
367
+ description: 'Copy one workout CSV export into raw/workouts/** and optionally map it into activity_session events.',
368
+ args: z.object({
369
+ file: pathSchema.describe('Path to the workout CSV export to import.'),
370
+ }),
371
+ options: withBaseOptions({
372
+ source: z
373
+ .string()
374
+ .min(1)
375
+ .max(80)
376
+ .optional()
377
+ .describe('Optional source hint such as strong or hevy.'),
378
+ delimiter: z
379
+ .string()
380
+ .min(1)
381
+ .max(1)
382
+ .optional()
383
+ .describe('Optional single-character CSV delimiter override.'),
384
+ storeRawOnly: z
385
+ .boolean()
386
+ .optional()
387
+ .describe('Store the raw CSV + manifest without creating workout events.'),
388
+ }),
389
+ output: workoutImportCsvResultSchema,
390
+ async run({ args, options }) {
391
+ return importWorkoutCsv({
392
+ vault: options.vault,
393
+ file: args.file,
394
+ source: typeof options.source === 'string' ? options.source : undefined,
395
+ delimiter: typeof options.delimiter === 'string' ? options.delimiter : undefined,
396
+ storeRawOnly: options.storeRawOnly === true,
397
+ });
398
+ },
399
+ });
122
400
  const format = Cli.create('format', {
123
- description: 'Saved workout-format defaults that feed the same canonical workout add pipeline.',
401
+ description: 'Saved workout-format defaults that store structured routine templates in bank/workout-formats.',
124
402
  });
125
403
  format.command('save', {
126
- description: 'Save or update one reusable workout format from a name plus workout text.',
404
+ description: 'Save or update one reusable workout format from a name plus freeform text, or from a structured JSON payload.',
127
405
  args: z.object({
128
406
  name: z
129
407
  .string()
@@ -134,11 +412,11 @@ export function registerWorkoutCommands(cli, _services) {
134
412
  .string()
135
413
  .min(1)
136
414
  .max(4000)
137
- .describe('Saved workout text that should later log through workout add.'),
415
+ .describe('Saved workout text.'),
138
416
  }),
139
417
  examples: [
140
418
  {
141
- description: 'Save one reusable strength workout format.',
419
+ description: 'Save one reusable strength workout format from freeform text.',
142
420
  args: {
143
421
  name: 'Push Day A',
144
422
  text: '20 min strength training. 4 sets of 20 pushups. 4 sets of 12 incline bench with a 45 lb bar plus 10 lb plates on both sides.',
@@ -147,16 +425,27 @@ export function registerWorkoutCommands(cli, _services) {
147
425
  vault: './vault',
148
426
  },
149
427
  },
428
+ {
429
+ description: 'Save a structured routine template from disk.',
430
+ args: {},
431
+ options: {
432
+ input: '@routine.json',
433
+ vault: './vault',
434
+ },
435
+ },
150
436
  ],
151
- hint: 'This stores thin reusable defaults only. Saved workout formats are validated up front by the same inference rules that power workout add so later logging stays on the canonical activity_session path.',
437
+ hint: 'Saved workout formats now support a structured template payload for routine exercises, planned sets, grouping, and persistent notes. Freeform text still works and is converted into a simple template when possible.',
152
438
  options: withBaseOptions({
439
+ input: inputFileOptionSchema
440
+ .optional()
441
+ .describe('Optional structured workout format payload in @file.json form or - for stdin.'),
153
442
  duration: z
154
443
  .number()
155
444
  .int()
156
445
  .positive()
157
446
  .max(24 * 60)
158
447
  .optional()
159
- .describe('Optional default duration override in minutes when the saved note is missing or ambiguous.'),
448
+ .describe('Optional default duration override in minutes when the saved note or payload is missing or ambiguous.'),
160
449
  type: z
161
450
  .string()
162
451
  .min(1)
@@ -174,8 +463,11 @@ export function registerWorkoutCommands(cli, _services) {
174
463
  async run({ args, options }) {
175
464
  return saveWorkoutFormat({
176
465
  vault: options.vault,
177
- name: args.name,
178
- text: args.text,
466
+ name: typeof args.name === 'string' ? args.name : undefined,
467
+ text: typeof args.text === 'string' ? args.text : undefined,
468
+ inputFile: typeof options.input === 'string'
469
+ ? normalizeInputFileOption(options.input)
470
+ : undefined,
179
471
  durationMinutes: options.duration,
180
472
  activityType: typeof options.type === 'string' ? options.type : undefined,
181
473
  distanceKm: typeof options.distanceKm === 'number'
@@ -214,7 +506,7 @@ export function registerWorkoutCommands(cli, _services) {
214
506
  },
215
507
  });
216
508
  format.command('log', {
217
- description: 'Log one dated workout from a saved workout format through the same canonical event path as workout add.',
509
+ description: 'Log one dated workout from a saved workout format through the canonical activity_session write path.',
218
510
  args: z.object({
219
511
  name: z
220
512
  .string()
@@ -233,7 +525,7 @@ export function registerWorkoutCommands(cli, _services) {
233
525
  },
234
526
  },
235
527
  ],
236
- hint: 'This is a thin source-of-defaults layer only. The saved workout text and defaults feed the exact same activity_session write path and strength inference behavior used by workout add.',
528
+ hint: 'Structured routine templates log directly into the rich workout session payload. Older thin formats still fall back to their saved freeform text.',
237
529
  options: withBaseOptions({
238
530
  duration: z
239
531
  .number()
@@ -260,6 +552,10 @@ export function registerWorkoutCommands(cli, _services) {
260
552
  source: eventSourceSchema
261
553
  .optional()
262
554
  .describe('Optional event source (`manual`, `import`, `device`, or `derived`).'),
555
+ media: z
556
+ .array(pathSchema)
557
+ .optional()
558
+ .describe('Optional workout photo or video file paths to copy into raw/workouts/** and attach to the workout event.'),
263
559
  }),
264
560
  output: workoutAddResultSchema,
265
561
  async run({ args, options }) {
@@ -275,9 +571,15 @@ export function registerWorkoutCommands(cli, _services) {
275
571
  ? options.occurredAt
276
572
  : undefined,
277
573
  source: typeof options.source === 'string' ? options.source : undefined,
574
+ mediaPaths: Array.isArray(options.media)
575
+ ? options.media.filter((entry) => typeof entry === 'string')
576
+ : undefined,
278
577
  });
279
578
  },
280
579
  });
580
+ workout.command(measurement);
581
+ workout.command(units);
582
+ workout.command(importGroup);
281
583
  workout.command(format);
282
584
  cli.command(workout);
283
585
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workout.js","sourceRoot":"","sources":["../../src/commands/workout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workout.js","sourceRoot":"","sources":["../../src/commands/workout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const incurErrorBridge: import("incur").MiddlewareHandler<undefined, undefined>;
2
+ //# sourceMappingURL=incur-error-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incur-error-bridge.d.ts","sourceRoot":"","sources":["../src/incur-error-bridge.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,gBAAgB,yDAe3B,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { Errors, middleware } from 'incur';
2
+ import { VaultCliError } from '@murphai/assistant-core/vault-cli-errors';
3
+ function readOptionalBoolean(value) {
4
+ return typeof value === 'boolean' ? value : undefined;
5
+ }
6
+ function readOptionalNumber(value) {
7
+ return typeof value === 'number' ? value : undefined;
8
+ }
9
+ export const incurErrorBridge = middleware(async (_context, next) => {
10
+ try {
11
+ await next();
12
+ }
13
+ catch (error) {
14
+ if (error instanceof VaultCliError) {
15
+ throw new Errors.IncurError({
16
+ code: error.code,
17
+ message: error.message,
18
+ retryable: readOptionalBoolean(error.context?.retryable),
19
+ exitCode: readOptionalNumber(error.context?.exitCode),
20
+ });
21
+ }
22
+ throw error;
23
+ }
24
+ });
25
+ //# sourceMappingURL=incur-error-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incur-error-bridge.js","sourceRoot":"","sources":["../src/incur-error-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAA;AAExE,SAAS,mBAAmB,CAC1B,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACvD,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAClE,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAA;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC;gBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;gBACxD,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;aACtD,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAC,CAAA"}