@sessionplan/contracts 0.3.0 → 0.5.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @sessionplan/contracts
2
2
 
3
- Type declarations for the SessionPlan API.
3
+ Type declarations, closed vocabularies and shared rules for the SessionPlan API.
4
4
 
5
5
  > **Public for installation convenience; not a stable external contract until 1.0.**
6
6
  > These types describe the shapes exchanged between the SessionPlan API and its
@@ -27,25 +27,31 @@ import type {
27
27
  } from '@sessionplan/contracts';
28
28
  ```
29
29
 
30
- Besides types, the package has two kinds of runtime export: `ContractVersion`, which
30
+ Besides types, the package has three kinds of runtime export: `ContractVersion`, which
31
31
  mirrors the package version so clients can report the contract revision they were
32
- built against, and **closed vocabularies** as frozen `const` arrays
32
+ built against; **closed vocabularies** as frozen `const` data
33
33
  (`WORKSPACE_SAFETY_PROFILES`, `TRAINING_TYPES`, `MODALITIES`, `MOVEMENT_PATTERNS`,
34
- `MUSCLES`, `EXERCISE_LEVELS`, `LOG_TYPES_BY_TRAINING_TYPE`), so every service reads
35
- the same list of allowed values.
34
+ `MUSCLES`, `EXERCISE_LEVELS`, `LOG_TYPES_BY_TRAINING_TYPE`, `LOG_TYPE_INPUTS`,
35
+ `DISTANCE_MODALITIES`), so every service reads the same list of allowed values; and
36
+ **shared rules** (`inferLogType`), so every service that picks an exercise's log type
37
+ picks the same one.
36
38
 
37
39
  ```ts
38
40
  import { ContractVersion } from '@sessionplan/contracts';
39
41
 
40
- console.log(ContractVersion); // "0.1.7"
42
+ console.log(ContractVersion); // "0.4.0"
41
43
  ```
42
44
 
43
45
  ## Scope
44
46
 
45
47
  This package is the single source of truth for the API wire contract. It contains
46
- `interface` / `type` declarations, `ContractVersion`, and closed-vocabulary `const`
47
- arrays — data, never logic. Runtime builders, validators, and helpers stay in the
48
- API and its clients.
48
+ `interface` / `type` declarations, `ContractVersion`, closed-vocabulary `const` data,
49
+ and a small number of shared rules. A function belongs here only when two or more
50
+ services must reach the same answer and a disagreement would be stored or seen by
51
+ the user, and only if it is pure, synchronous and total, imports nothing outside this
52
+ package, and ships with a case-table test. `inferLogType` is the one such rule today.
53
+ Runtime builders, validators, parsers of one service's own shapes, and helpers stay
54
+ in the API and its clients.
49
55
 
50
56
  | Module | Covers |
51
57
  | ------------ | ------------------------------------------------------------- |
@@ -55,7 +61,7 @@ API and its clients.
55
61
  | `workspaces` | Workspace list/detail responses |
56
62
  | `sessions` | Session create/update requests and responses |
57
63
  | `logs` | Performance log content + `PerformanceSummary` |
58
- | `exercises` | Exercise resolution and search responses |
64
+ | `exercises` | Exercise resolution and search responses; the log type rule |
59
65
  | `reports` | Progress report content and list/detail responses |
60
66
  | `health` | `/health` diagnostics response |
61
67
  | `public-catalogs` | Public location session catalog responses and provenance |
@@ -63,7 +69,7 @@ API and its clients.
63
69
  ## Versioning
64
70
 
65
71
  While in `0.x`, minor versions may introduce breaking changes. Consumers pin an
66
- **exact** version (`"@sessionplan/contracts": "0.1.7"`).
72
+ **exact** version (`"@sessionplan/contracts": "0.4.0"`).
67
73
 
68
74
  **To publish a release or bump a consumer, see [`docs/runbook.md`](docs/runbook.md).**
69
75
  It covers the publish flow (tag-triggered and manual), consumer update ordering,
@@ -75,4 +81,5 @@ breaking-change rules, and what to do about a bad published version.
75
81
  npm install
76
82
  npm run build # emit dist/ declarations + js
77
83
  npm run typecheck # type-check without emitting
84
+ npm test # vitest, including the log type case table
78
85
  ```
package/dist/context.d.ts CHANGED
@@ -48,17 +48,51 @@ export interface UnitContext {
48
48
  distance: 'mi' | 'km';
49
49
  height: 'ft' | 'cm';
50
50
  }
51
+ /**
52
+ * One logged session of an exercise. Each measure is present only when it was
53
+ * recorded: a run carries `distance`, `time` and `pace` and no `load` or `reps`.
54
+ * Distance and pace are written in the person's current unit system.
55
+ */
51
56
  export interface ExerciseHistorySnapshot {
52
57
  date: string;
53
- load: string;
54
- reps: number;
55
- rpe: number;
58
+ /** Present when weight or reps were recorded; "bodyweight" when reps were recorded without weight. */
59
+ load?: string;
60
+ /** Present only when reps were recorded. */
61
+ reps?: number;
62
+ /** Present only when RPE was recorded. */
63
+ rpe?: number;
64
+ /** Number of sets logged. */
65
+ sets?: number;
66
+ /** Last set's distance, e.g. "4 mi" or "400 m". */
67
+ distance?: string;
68
+ /** Last set's time, e.g. "31:28". */
69
+ time?: string;
70
+ /** Last set's hold, e.g. "45s". */
71
+ hold?: string;
72
+ /** Pace over the sets that recorded both time and distance, e.g. "7:52 /mi". */
73
+ pace?: string;
56
74
  }
75
+ /**
76
+ * An exercise's recent history for the AI. Each measure is present only when it
77
+ * was recorded; an absent field means not recorded, never zero.
78
+ */
57
79
  export interface ExerciseHistorySummary {
58
80
  exercise: string;
59
81
  lastPerformed: string;
60
- lastLoad: string;
61
- lastReps: number;
82
+ /** Present when weight or reps were recorded; "bodyweight" when reps were recorded without weight. */
83
+ lastLoad?: string;
84
+ /** Present only when reps were recorded. */
85
+ lastReps?: number;
86
+ /** Number of sets in the most recent log. */
87
+ lastSets?: number;
88
+ /** Last set's distance, e.g. "4 mi" or "400 m". */
89
+ lastDistance?: string;
90
+ /** Last set's time, e.g. "31:28". */
91
+ lastTime?: string;
92
+ /** Last set's hold, e.g. "45s". */
93
+ lastHold?: string;
94
+ /** Pace over the most recent log's sets that recorded both time and distance. */
95
+ lastPace?: string;
62
96
  avgRPE: number;
63
97
  peakLoad?: string;
64
98
  peakReps?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM9C,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC9C,wFAAwF;IACxF,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,eAAe,CAAC;IAC1B,eAAe,EAAE,sBAAsB,CAAC;IACxC,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IACxD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,+BAA+B,CAAC;IAClD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,eAAe,CAAC;CAC9B;AAMD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;CACrB;AAMD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAChD,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CACpC;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,sBAAsB,EAAE,CAAC;IAC1C,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC1C,sEAAsE;IACtE,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,cAAc,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC;IACzE,YAAY,EAAE,IAAI,CAChB,mBAAmB,EACnB,MAAM,GAAG,KAAK,GAAG,aAAa,GAAG,gBAAgB,GAAG,eAAe,GAAG,aAAa,CACpF,CAAC;CACH;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,WAAW,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,EAChD,QAAQ,GAAG,kBAAkB,GAAG,YAAY,GAAG,UAAU,CAC1D,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;QAC1C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC,GAAG,IAAI,CAAC;CACX;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAC3B,kBAAkB,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC;QAClD,gBAAgB,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;QACvD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;QACzC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B;;;;;WAKG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE,4BAA4B,EAAE,CAAC;CAC1C;AAMD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;KAC/C,CAAC;IACF,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,UAAU,EAAE,KAAK,CAAC,gBAAgB,GAAG,wBAAwB,GAAG,SAAS,CAAC,CAAC;KAC5E,CAAC;IACF,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,EAAE,YAAY,GAAG,mBAAmB,CAAC;KAC9C,CAAC;CACH;AAMD,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,WAAW,GACX,cAAc,GACd,WAAW,GACX,OAAO,GACP,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;CAC/B;AAED,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;IAChD,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -58,10 +58,53 @@ export declare const EXERCISE_TAGS: readonly ExerciseTag[];
58
58
  export type ExerciseLevel = 'beginner' | 'intermediate' | 'advanced';
59
59
  export declare const EXERCISE_LEVELS: readonly ExerciseLevel[];
60
60
  /**
61
- * The logger log types each training type allows when the app chooses one (a
62
- * swap). An item's explicit log type always takes precedence.
61
+ * The logger log types each training type allows when a log type is chosen for
62
+ * an exercise whose author did not set one: the API on save, and the app on a
63
+ * swap or when reading an older session (see `inferLogType`). An item's explicit
64
+ * log type always takes precedence, and the prescription wins when nothing
65
+ * allowed can show a prescribed load, rep count or distance.
63
66
  */
64
67
  export declare const LOG_TYPES_BY_TRAINING_TYPE: Readonly<Record<TrainingType, readonly DefaultLogType[]>>;
68
+ /** An input box the logger's set row renders. */
69
+ export type LoggerInput = 'reps' | 'weight' | 'time' | 'distance';
70
+ /**
71
+ * The boxes the logger's set row renders for each log type. `time` is a hold
72
+ * for `isometric`, `mobility` and `stretch`, and a clock for the rest.
73
+ */
74
+ export declare const LOG_TYPE_INPUTS: Readonly<Record<DefaultLogType, readonly LoggerInput[]>>;
75
+ /** Conditioning modalities that cover ground, so default to `endurance`. */
76
+ export declare const DISTANCE_MODALITIES: readonly Modality[];
77
+ /**
78
+ * What was prescribed, as flags. Each service converts its own shape — a session
79
+ * item's prescription, or a library exercise's prescription hints — so this
80
+ * package parses nothing. `hold` is a hold duration; `time` is a clock.
81
+ */
82
+ export interface PrescribedInputs {
83
+ reps?: boolean;
84
+ weight?: boolean;
85
+ time?: boolean;
86
+ hold?: boolean;
87
+ distance?: boolean;
88
+ }
89
+ /** The library classification the rule reads, when the exercise has an exact match. */
90
+ export interface LogTypeExercise {
91
+ training_type?: string | null;
92
+ modality?: string | null;
93
+ movement_pattern?: string | null;
94
+ tags?: readonly string[] | null;
95
+ }
96
+ /**
97
+ * Pick the log type for an exercise whose author did not set one.
98
+ *
99
+ * With a classified library exercise, its training type sets the default and the
100
+ * allowed set (`LOG_TYPES_BY_TRAINING_TYPE`); the prescription then decides
101
+ * within that set, so a prescribed load, rep count or distance always has a box.
102
+ * When nothing the training type allows can show the prescribed load or distance,
103
+ * or would put a rep count into a hold, the prescription wins. Without a
104
+ * classification (no match, or a null training type) the prescription decides,
105
+ * with tags as the tie-break. Nothing prescribed and nothing known: `strength`.
106
+ */
107
+ export declare function inferLogType(prescribed: PrescribedInputs, exercise?: LogTypeExercise | null): DefaultLogType;
65
108
  /** Classification fields shared by create, update and read shapes. */
66
109
  export interface ExerciseTaxonomyFields {
67
110
  training_type?: TrainingType;
@@ -1 +1 @@
1
- {"version":3,"file":"exercises.d.ts","sourceRoot":"","sources":["../src/exercises.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAWnD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhF,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAKxC,CAAC;AAEX,2FAA2F;AAC3F,MAAM,MAAM,QAAQ,GAChB,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,YAAY,GACZ,WAAW,GACX,aAAa,GACb,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEZ,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAahC,CAAC;AAEX,+FAA+F;AAC/F,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,OAAO,GACP,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,sBAAsB,CAAC;AAE3B,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAW9C,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,MAAM,GACd,OAAO,GACP,MAAM,GACN,YAAY,GACZ,OAAO,GACP,MAAM,GACN,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,UAAU,GACV,KAAK,GACL,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,WAAW,GACX,WAAW,GACX,aAAa,GACb,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,UAAU,GACV,aAAa,CAAC;AAElB,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAwB3B,CAAC;AAEX,mFAAmF;AACnF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwB1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAQtF,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,WAAW,GACX,WAAW,GACX,YAAY,GACZ,WAAW,GACX,MAAM,GACN,UAAU,GACV,YAAY,GACZ,SAAS,GACT,YAAY,GACZ,OAAO,GACP,YAAY,CAAC;AAEjB,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAetC,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,CAAC;AAErE,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAI1C,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,cAAc,EAAE,CAAC,CAKhG,CAAC;AAEF,sEAAsE;AACtE,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAMD,oDAAoD;AACpD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC;AAE3E,gCAAgC;AAChC,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,iCAAiC;AACjC,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAMD,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;CACxC;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"exercises.d.ts","sourceRoot":"","sources":["../src/exercises.ts"],"names":[],"mappings":"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"}
package/dist/exercises.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LOG_TYPES_BY_TRAINING_TYPE = exports.EXERCISE_LEVELS = exports.EXERCISE_TAGS = exports.MUSCLE_GROUPS = exports.MUSCLE_LABELS = exports.MUSCLES = exports.MOVEMENT_PATTERNS = exports.MODALITIES = exports.TRAINING_TYPES = void 0;
3
+ exports.DISTANCE_MODALITIES = exports.LOG_TYPE_INPUTS = exports.LOG_TYPES_BY_TRAINING_TYPE = exports.EXERCISE_LEVELS = exports.EXERCISE_TAGS = exports.MUSCLE_GROUPS = exports.MUSCLE_LABELS = exports.MUSCLES = exports.MOVEMENT_PATTERNS = exports.MODALITIES = exports.TRAINING_TYPES = void 0;
4
+ exports.inferLogType = inferLogType;
4
5
  exports.TRAINING_TYPES = [
5
6
  'strength',
6
7
  'conditioning',
@@ -120,8 +121,11 @@ exports.EXERCISE_LEVELS = [
120
121
  'advanced',
121
122
  ];
122
123
  /**
123
- * The logger log types each training type allows when the app chooses one (a
124
- * swap). An item's explicit log type always takes precedence.
124
+ * The logger log types each training type allows when a log type is chosen for
125
+ * an exercise whose author did not set one: the API on save, and the app on a
126
+ * swap or when reading an older session (see `inferLogType`). An item's explicit
127
+ * log type always takes precedence, and the prescription wins when nothing
128
+ * allowed can show a prescribed load, rep count or distance.
125
129
  */
126
130
  exports.LOG_TYPES_BY_TRAINING_TYPE = {
127
131
  strength: ['strength', 'isometric', 'carry'],
@@ -129,4 +133,174 @@ exports.LOG_TYPES_BY_TRAINING_TYPE = {
129
133
  mobility: ['mobility', 'isometric', 'strength'],
130
134
  stretch: ['stretch'],
131
135
  };
136
+ /**
137
+ * The boxes the logger's set row renders for each log type. `time` is a hold
138
+ * for `isometric`, `mobility` and `stretch`, and a clock for the rest.
139
+ */
140
+ exports.LOG_TYPE_INPUTS = {
141
+ strength: ['reps', 'weight'],
142
+ isometric: ['weight', 'time'],
143
+ conditioning: ['reps', 'time'],
144
+ endurance: ['time', 'distance'],
145
+ carry: ['weight', 'time', 'distance'],
146
+ mobility: ['time'],
147
+ stretch: ['time'],
148
+ };
149
+ /** Conditioning modalities that cover ground, so default to `endurance`. */
150
+ exports.DISTANCE_MODALITIES = [
151
+ 'run',
152
+ 'walk',
153
+ 'row',
154
+ 'bike',
155
+ 'ski',
156
+ 'swim',
157
+ 'stairs',
158
+ ];
159
+ /** Tags that name a log type, most specific first (unclassified exercises only). */
160
+ const LOG_TYPE_TAGS = [
161
+ 'stretch',
162
+ 'isometric',
163
+ 'mobility',
164
+ 'carry',
165
+ 'endurance',
166
+ 'conditioning',
167
+ 'strength',
168
+ ];
169
+ /**
170
+ * Pick the log type for an exercise whose author did not set one.
171
+ *
172
+ * With a classified library exercise, its training type sets the default and the
173
+ * allowed set (`LOG_TYPES_BY_TRAINING_TYPE`); the prescription then decides
174
+ * within that set, so a prescribed load, rep count or distance always has a box.
175
+ * When nothing the training type allows can show the prescribed load or distance,
176
+ * or would put a rep count into a hold, the prescription wins. Without a
177
+ * classification (no match, or a null training type) the prescription decides,
178
+ * with tags as the tie-break. Nothing prescribed and nothing known: `strength`.
179
+ */
180
+ function inferLogType(prescribed, exercise) {
181
+ const tags = lowerTags(exercise?.tags);
182
+ const type = exercise?.training_type;
183
+ if (!isTrainingType(type))
184
+ return fromPrescription(tags, prescribed);
185
+ const libraryDefault = libraryLogType(type, exercise ?? {}, tags.has('isometric'));
186
+ if (!anyPrescribed(prescribed))
187
+ return libraryDefault;
188
+ // Topical tags are ignored once classified; `isometric` survives as the one tag
189
+ // that states how an exercise is performed.
190
+ const tieBreak = new Set([libraryDefault, type]);
191
+ if (tags.has('isometric'))
192
+ tieBreak.add('isometric');
193
+ const candidate = fromPrescription(tieBreak, prescribed);
194
+ const needed = neededInputs(prescribed);
195
+ const clamped = clampToTrainingType(candidate, type, needed);
196
+ if (!losesPrescribed(clamped, needed))
197
+ return clamped;
198
+ // Nothing the training type allows keeps the prescription: it wins.
199
+ if (!losesPrescribed(candidate, needed))
200
+ return candidate;
201
+ return fromPrescription(new Set(), prescribed);
202
+ }
203
+ function isTrainingType(value) {
204
+ return typeof value === 'string' && exports.TRAINING_TYPES.includes(value);
205
+ }
206
+ function lowerTags(tags) {
207
+ // Library data, not user input, but a stray null must not fail a save.
208
+ return new Set((tags ?? []).filter((tag) => typeof tag === 'string').map((tag) => tag.toLowerCase()));
209
+ }
210
+ function anyPrescribed(p) {
211
+ return Boolean(p.reps || p.weight || p.time || p.hold || p.distance);
212
+ }
213
+ /** The log type a classified exercise gets when nothing was prescribed. */
214
+ function libraryLogType(type, exercise, isometric) {
215
+ switch (type) {
216
+ case 'stretch':
217
+ return 'stretch';
218
+ case 'mobility':
219
+ return 'mobility';
220
+ case 'conditioning':
221
+ return exports.DISTANCE_MODALITIES.includes(exercise.modality ?? '')
222
+ ? 'endurance'
223
+ : 'conditioning';
224
+ case 'strength':
225
+ if (exercise.movement_pattern === 'carry')
226
+ return 'carry';
227
+ return isometric ? 'isometric' : 'strength';
228
+ }
229
+ }
230
+ function neededInputs(p) {
231
+ const needed = new Set();
232
+ if (p.reps)
233
+ needed.add('reps');
234
+ if (p.weight)
235
+ needed.add('weight');
236
+ if (p.time || p.hold)
237
+ needed.add('time');
238
+ if (p.distance)
239
+ needed.add('distance');
240
+ return needed;
241
+ }
242
+ function shows(logType, input) {
243
+ return exports.LOG_TYPE_INPUTS[logType].includes(input);
244
+ }
245
+ /** A prescribed load, rep count or distance with no box to record it. */
246
+ function losesPrescribed(logType, needed) {
247
+ return ['weight', 'reps', 'distance'].some((input) => needed.has(input) && !shows(logType, input));
248
+ }
249
+ /**
250
+ * Keep the log type within those the training type allows, choosing one that
251
+ * shows every prescribed input where one exists.
252
+ */
253
+ function clampToTrainingType(candidate, type, needed) {
254
+ const allowed = exports.LOG_TYPES_BY_TRAINING_TYPE[type];
255
+ const covers = (lt) => [...needed].every((input) => shows(lt, input));
256
+ if (allowed.includes(candidate) && covers(candidate))
257
+ return candidate;
258
+ const full = allowed.find(covers);
259
+ if (full)
260
+ return full;
261
+ // Nothing allowed shows every prescribed input. Keep the candidate if allowed
262
+ // and it keeps the load, distance and reps; otherwise prefer one that does,
263
+ // then whichever shows most.
264
+ if (allowed.includes(candidate) && !losesPrescribed(candidate, needed))
265
+ return candidate;
266
+ const shown = (lt) => [...needed].filter((input) => shows(lt, input)).length;
267
+ const loses = (lt) => (losesPrescribed(lt, needed) ? 1 : 0);
268
+ const ranked = [...allowed].sort((a, b) => loses(a) - loses(b) || shown(b) - shown(a));
269
+ return ranked[0];
270
+ }
271
+ /** The prescription-first derivation, with `tags` as the tie-break. */
272
+ function fromPrescription(tags, p) {
273
+ // Covering ground: loaded is a carry, unloaded is endurance.
274
+ if (p.distance)
275
+ return p.weight ? 'carry' : 'endurance';
276
+ // A duration plus a hold tag is a hold, even alongside a rep count — the
277
+ // library writes these as `reps: "3-4 holds", time: "10-20s per hold"`.
278
+ if (p.time || p.hold) {
279
+ if (tags.has('isometric'))
280
+ return 'isometric';
281
+ if (tags.has('stretch'))
282
+ return 'stretch';
283
+ if (tags.has('mobility'))
284
+ return 'mobility';
285
+ }
286
+ // Reps are reps; unloaded reps against a clock, or a conditioning movement,
287
+ // want `conditioning`, which shows both.
288
+ if (p.reps)
289
+ return !p.weight && (p.time || tags.has('conditioning')) ? 'conditioning' : 'strength';
290
+ if (p.hold)
291
+ return p.weight ? 'isometric' : 'stretch';
292
+ if (p.time) {
293
+ if (p.weight || tags.has('carry'))
294
+ return 'carry';
295
+ if (tags.has('endurance'))
296
+ return 'endurance';
297
+ return 'conditioning';
298
+ }
299
+ // Nothing but a load, or nothing at all: a tag that keeps the load, else strength.
300
+ for (const candidate of LOG_TYPE_TAGS) {
301
+ if (tags.has(candidate) && (!p.weight || shows(candidate, 'weight')))
302
+ return candidate;
303
+ }
304
+ return 'strength';
305
+ }
132
306
  //# sourceMappingURL=exercises.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exercises.js","sourceRoot":"","sources":["../src/exercises.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exercises.js","sourceRoot":"","sources":["../src/exercises.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * How distance, duration and pace are written (SES-311, conditioning-exercise-history).
3
+ *
4
+ * A shared rule: the API writes these strings into exercise history and the AI's
5
+ * planning context, and the app writes durations in the logger and on history
6
+ * pages. If the two disagreed, the same run would read differently on the page
7
+ * and to the coach. Pure and import-free (see AGENTS.md, shared rules).
8
+ */
9
+ import type { UnitSystem } from './common.js';
10
+ /**
11
+ * Write a distance given in metres in the person's unit system.
12
+ *
13
+ * Imperial: miles to at most two decimals from 0.1 mi up, whole yards below.
14
+ * Metric: whole metres below 1,000 m, kilometres to at most two decimals from
15
+ * there. A distance greater than zero is never written as zero. Returns '' when
16
+ * nothing was recorded.
17
+ */
18
+ export declare function formatDistance(meters: number | null | undefined, unitSystem: UnitSystem): string;
19
+ /**
20
+ * Write a duration: seconds below a minute ("45s"), m:ss below an hour,
21
+ * h:mm:ss from an hour up. Returns '' when nothing was recorded.
22
+ */
23
+ export declare function formatDuration(seconds: number | null | undefined): string;
24
+ /**
25
+ * Read a duration typed as h:mm:ss, m:ss (minutes may exceed 59, as before) or
26
+ * plain seconds with an optional "s"/"sec" suffix. Undefined when unreadable or
27
+ * when a minutes or seconds part that must be under 60 is not.
28
+ */
29
+ export declare function parseDuration(input: string): number | undefined;
30
+ /**
31
+ * Write a pace as time per mile (imperial) or per kilometre (metric), rounded to
32
+ * the nearest second, for every kind of exercise. Callers pass only time and
33
+ * distance from sets that recorded both. Returns '' when either is missing.
34
+ */
35
+ export declare function formatPace(seconds: number | null | undefined, meters: number | null | undefined, unitSystem: UnitSystem): string;
36
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAU9C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAWhG;AAYD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKzE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyB/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,UAAU,EAAE,UAAU,GACrB,MAAM,CAKR"}
package/dist/format.js ADDED
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatDistance = formatDistance;
4
+ exports.formatDuration = formatDuration;
5
+ exports.parseDuration = parseDuration;
6
+ exports.formatPace = formatPace;
7
+ const METERS_PER_MILE = 1609.344;
8
+ const METERS_PER_YARD = 0.9144;
9
+ /** Round to at most two decimals and drop trailing zeros: 3.10686 → "3.11", 4.0 → "4". */
10
+ function twoDecimals(value) {
11
+ return String(Math.round(value * 100) / 100);
12
+ }
13
+ /**
14
+ * Write a distance given in metres in the person's unit system.
15
+ *
16
+ * Imperial: miles to at most two decimals from 0.1 mi up, whole yards below.
17
+ * Metric: whole metres below 1,000 m, kilometres to at most two decimals from
18
+ * there. A distance greater than zero is never written as zero. Returns '' when
19
+ * nothing was recorded.
20
+ */
21
+ function formatDistance(meters, unitSystem) {
22
+ if (meters == null || !Number.isFinite(meters) || meters < 0)
23
+ return '';
24
+ if (unitSystem === 'imperial') {
25
+ const miles = meters / METERS_PER_MILE;
26
+ if (miles >= 0.1)
27
+ return `${twoDecimals(miles)} mi`;
28
+ const yards = Math.round(meters / METERS_PER_YARD);
29
+ return `${meters > 0 ? Math.max(1, yards) : 0} yd`;
30
+ }
31
+ const wholeMeters = Math.round(meters);
32
+ if (wholeMeters < 1000)
33
+ return `${meters > 0 ? Math.max(1, wholeMeters) : 0} m`;
34
+ return `${twoDecimals(meters / 1000)} km`;
35
+ }
36
+ /** h:mm:ss or m:ss for a whole number of seconds. */
37
+ function clock(totalSeconds) {
38
+ const hours = Math.floor(totalSeconds / 3600);
39
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
40
+ const seconds = totalSeconds % 60;
41
+ const ss = String(seconds).padStart(2, '0');
42
+ if (hours > 0)
43
+ return `${hours}:${String(minutes).padStart(2, '0')}:${ss}`;
44
+ return `${minutes}:${ss}`;
45
+ }
46
+ /**
47
+ * Write a duration: seconds below a minute ("45s"), m:ss below an hour,
48
+ * h:mm:ss from an hour up. Returns '' when nothing was recorded.
49
+ */
50
+ function formatDuration(seconds) {
51
+ if (seconds == null || !Number.isFinite(seconds) || seconds < 0)
52
+ return '';
53
+ const whole = Math.round(seconds);
54
+ if (whole < 60)
55
+ return `${whole}s`;
56
+ return clock(whole);
57
+ }
58
+ /**
59
+ * Read a duration typed as h:mm:ss, m:ss (minutes may exceed 59, as before) or
60
+ * plain seconds with an optional "s"/"sec" suffix. Undefined when unreadable or
61
+ * when a minutes or seconds part that must be under 60 is not.
62
+ */
63
+ function parseDuration(input) {
64
+ const trimmed = input.trim();
65
+ if (!trimmed)
66
+ return undefined;
67
+ const hms = trimmed.match(/^(\d+):(\d{1,2}):(\d{1,2})$/);
68
+ if (hms) {
69
+ const hours = parseInt(hms[1], 10);
70
+ const minutes = parseInt(hms[2], 10);
71
+ const seconds = parseInt(hms[3], 10);
72
+ if (minutes >= 60 || seconds >= 60)
73
+ return undefined;
74
+ return hours * 3600 + minutes * 60 + seconds;
75
+ }
76
+ const ms = trimmed.match(/^(\d+):(\d{1,2})$/);
77
+ if (ms) {
78
+ const minutes = parseInt(ms[1], 10);
79
+ const seconds = parseInt(ms[2], 10);
80
+ if (seconds >= 60)
81
+ return undefined;
82
+ return minutes * 60 + seconds;
83
+ }
84
+ const plain = trimmed.match(/^(\d+)\s*(s|sec)?$/i);
85
+ if (plain)
86
+ return parseInt(plain[1], 10);
87
+ return undefined;
88
+ }
89
+ /**
90
+ * Write a pace as time per mile (imperial) or per kilometre (metric), rounded to
91
+ * the nearest second, for every kind of exercise. Callers pass only time and
92
+ * distance from sets that recorded both. Returns '' when either is missing.
93
+ */
94
+ function formatPace(seconds, meters, unitSystem) {
95
+ if (seconds == null || meters == null || !(seconds > 0) || !(meters > 0))
96
+ return '';
97
+ const units = unitSystem === 'imperial' ? meters / METERS_PER_MILE : meters / 1000;
98
+ const perUnit = Math.round(seconds / units);
99
+ return `${clock(perUnit)} /${unitSystem === 'imperial' ? 'mi' : 'km'}`;
100
+ }
101
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,8 +2,9 @@
2
2
  * @sessionplan/contracts
3
3
  *
4
4
  * Shared TypeScript wire contracts for the SessionPlan API. Types, the
5
- * `ContractVersion` constant below, and closed-vocabulary `const` arrays — data,
6
- * never logic.
5
+ * `ContractVersion` constant below, closed-vocabulary `const` data, and shared
6
+ * rules — pure, import-free functions that two or more services must agree on
7
+ * (see AGENTS.md for the four conditions).
7
8
  *
8
9
  * Public for installation convenience; not a stable external contract until 1.0.
9
10
  */
@@ -17,9 +18,10 @@ export * from './exercises.js';
17
18
  export * from './reports.js';
18
19
  export * from './health.js';
19
20
  export * from './public-catalogs.js';
21
+ export * from './format.js';
20
22
  /**
21
23
  * The contract revision this build was published at. Mirrors package.json
22
24
  * version so clients can report the contract they were compiled against.
23
25
  */
24
- export declare const ContractVersion = "0.3.0";
26
+ export declare const ContractVersion = "0.5.0";
25
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -3,8 +3,9 @@
3
3
  * @sessionplan/contracts
4
4
  *
5
5
  * Shared TypeScript wire contracts for the SessionPlan API. Types, the
6
- * `ContractVersion` constant below, and closed-vocabulary `const` arrays — data,
7
- * never logic.
6
+ * `ContractVersion` constant below, closed-vocabulary `const` data, and shared
7
+ * rules — pure, import-free functions that two or more services must agree on
8
+ * (see AGENTS.md for the four conditions).
8
9
  *
9
10
  * Public for installation convenience; not a stable external contract until 1.0.
10
11
  */
@@ -34,9 +35,10 @@ __exportStar(require("./exercises.js"), exports);
34
35
  __exportStar(require("./reports.js"), exports);
35
36
  __exportStar(require("./health.js"), exports);
36
37
  __exportStar(require("./public-catalogs.js"), exports);
38
+ __exportStar(require("./format.js"), exports);
37
39
  /**
38
40
  * The contract revision this build was published at. Mirrors package.json
39
41
  * version so clients can report the contract they were compiled against.
40
42
  */
41
- exports.ContractVersion = '0.3.0';
43
+ exports.ContractVersion = '0.5.0';
42
44
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,kDAAgC;AAChC,gDAA8B;AAC9B,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,8CAA4B;AAC5B,uDAAqC;AAErC;;;GAGG;AACU,QAAA,eAAe,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,kDAAgC;AAChC,gDAA8B;AAC9B,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,8CAA4B;AAC5B,uDAAqC;AACrC,8CAA4B;AAE5B;;;GAGG;AACU,QAAA,eAAe,GAAG,OAAO,CAAC"}
package/dist/logs.d.ts CHANGED
@@ -78,6 +78,16 @@ export interface ExerciseSummary {
78
78
  avgRpe?: number;
79
79
  maxWeight?: number;
80
80
  totalVolume: number;
81
+ /** Seconds of time recorded across the counted sets. Absent when none was recorded. */
82
+ totalTimeSeconds?: number;
83
+ /** Seconds of hold recorded across the counted sets. Absent when none was recorded. */
84
+ totalHoldSeconds?: number;
85
+ /** Metres recorded across the counted sets (miles converted). Absent when none was recorded. */
86
+ totalDistanceMeters?: number;
87
+ /** Time of the sets that recorded both time and distance — the only sets pace is computed from. */
88
+ pacedTimeSeconds?: number;
89
+ /** Distance in metres of the sets that recorded both time and distance. */
90
+ pacedDistanceMeters?: number;
81
91
  jsonPaths?: string[];
82
92
  }
83
93
  /** Full performance log content (perf-2 format). */
@@ -1 +1 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sessionplan/contracts",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Shared TypeScript wire contracts for the SessionPlan API. Public for installation convenience; not a stable external contract until 1.0.",
5
5
  "license": "UNLICENSED",
6
6
  "main": "dist/index.js",