@dofek/scoring 0.1.36 → 0.1.38

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
@@ -39,7 +39,7 @@ console.log({
39
39
  | `@dofek/scoring/colors` | Semantic, chart, surface, text, sleep-stage, and activity colors |
40
40
  | `@dofek/scoring/tokens` | Framework-neutral typography, spacing, radius, animation, and chart tokens |
41
41
  | `@dofek/scoring/strain-target` | Daily strain-target calculation and result types |
42
- | `@dofek/scoring/today-plan` | Deterministic ready/insufficient-data Today Plan result with a primary action, supporting facts, server-authored caveats, confidence, freshness, and shared presentation helpers |
42
+ | `@dofek/scoring/today-plan` | Deterministic ready/insufficient-data Today Plan result with a primary action, supporting facts, server-authored caveats, freshness, and shared presentation helpers |
43
43
  | `@dofek/scoring/epistemic-status` | Shared Observed / Estimated / Associated / Suggested / Unavailable status vocabulary |
44
44
  | `@dofek/scoring/sleep-performance` | Sleep-performance components, tiers, and recommended-bedtime calculation |
45
45
  | `@dofek/scoring/healthspan-years` | Score-to-years mapping and formatting |
@@ -54,8 +54,7 @@ console.log({
54
54
  - `zScoreToRecoveryScore` uses a Dofek-defined asymmetric sigmoid where a
55
55
  z-score of zero maps to 62.
56
56
  - Strain targets use Dofek-defined readiness bands.
57
- - Today Plan keeps Push and Recovery recommendations actionable while presenting
58
- the Maintain band as the neutral “No change needs attention” state
57
+ - Today Plan presents a suggested strain target with supporting observations
59
58
  ([rule builder](./src/today-plan.ts), [executable tests](./src/today-plan.test.ts)).
60
59
  - Ready Today Plan results include server-authored supporting observations and
61
60
  caveats for missing or stale inputs; clients render these values without
package/dist/scoring.d.ts CHANGED
@@ -31,8 +31,6 @@ export declare const SCORE_ZONES: ScoreZone[];
31
31
  export declare function scoreColor(score: number): string;
32
32
  /** Get a human-readable label for a recovery score (0-100) */
33
33
  export declare function scoreLabel(score: number): string;
34
- /** Get a contextual description for a recovery score explaining what it means */
35
- export declare function scoreDescription(score: number): string;
36
34
  export interface WeekSummary {
37
35
  week: string;
38
36
  hours: number;
@@ -58,8 +56,6 @@ export declare function trendColor(trend: "improving" | "worsening" | "stable" |
58
56
  export declare function readinessLevelColor(level: "high" | "moderate" | "low" | "unknown"): string;
59
57
  /** Get the color for a health metric status (excellent/good/fair/poor) */
60
58
  export declare function healthStatusColor(status: "excellent" | "good" | "fair" | "poor"): string;
61
- /** Get the color for a ramp rate value (always uses absolute value) */
62
- export declare function rampRateColor(rate: number): string;
63
59
  /**
64
60
  * Map a z-score to a 0-100 recovery score using an asymmetric sigmoid.
65
61
  * Tuned to match Whoop's recovery scoring:
@@ -1 +1 @@
1
- {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qBAAa,WAAW;;IAKtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACX,KAAK,EAAE,MAAM;IAIzB,IAAI,KAAK,IAAI,MAAM,CAKlB;IAED,IAAI,KAAK,IAAI,MAAM,CAKlB;IAED,IAAI,WAAW,IAAI,MAAM,CAKxB;IAED,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAOhD,MAAM,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,GAAG,WAAW;IAIpE,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW;CAGrD;AAED,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,MAAM,WAAW,SAAS;IACxB,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;CAC3C;AAED,sFAAsF;AACtF,eAAO,MAAM,WAAW,EAAE,SAAS,EAIlC,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,WAAW,EAAE,CAcjG;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAI1F;AAED,uEAAuE;AACvE,qBAAa,WAAW;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACX,KAAK,EAAE,MAAM;IAIzB,IAAI,KAAK,IAAI,MAAM,CAKlB;IAED,IAAI,KAAK,IAAI,MAAM,CAKlB;CACF;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAI5F;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAK1F;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAKxF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAW5D;AAED,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAEpD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,uBAAuB,GAC9B,2BAA2B,CAmB7B;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAKnF;AAED,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAKzF;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED,oDAAoD;AACpD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,sDAAsD;AACtD,eAAO,MAAM,gBAAgB;;;;;;CAMnB,CAAC;AAEX,kFAAkF;AAClF,qBAAa,QAAQ;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACX,KAAK,EAAE,MAAM;IAIzB,IAAI,KAAK,IAAI,MAAM,CAMlB;IAED,IAAI,KAAK,IAAI,MAAM,CAMlB;CACF"}
package/dist/scoring.js CHANGED
@@ -79,14 +79,6 @@ export function scoreLabel(score) {
79
79
  return "Moderate";
80
80
  return "Poor";
81
81
  }
82
- /** Get a contextual description for a recovery score explaining what it means */
83
- export function scoreDescription(score) {
84
- if (score > SCORE_RECOVERED_THRESHOLD)
85
- return "You're well recovered and ready for high-intensity training.";
86
- if (score >= SCORE_WARNING_THRESHOLD)
87
- return "Your body is at a moderate recovery level. Steady effort is recommended.";
88
- return "Recovery is low. Focus on rest and keep today's effort light.";
89
- }
90
82
  /** Aggregate weekly volume rows into a summary with relative fractions */
91
83
  export function aggregateWeeklyVolume(rows) {
92
84
  const weekMap = new Map();
@@ -164,15 +156,6 @@ export function healthStatusColor(status) {
164
156
  return statusColors.warning;
165
157
  return statusColors.danger;
166
158
  }
167
- /** Get the color for a ramp rate value (always uses absolute value) */
168
- export function rampRateColor(rate) {
169
- const absRate = Math.abs(rate);
170
- if (absRate < 5)
171
- return statusColors.positive;
172
- if (absRate <= 7)
173
- return statusColors.warning;
174
- return statusColors.danger;
175
- }
176
159
  /**
177
160
  * Map a z-score to a 0-100 recovery score using an asymmetric sigmoid.
178
161
  * Tuned to match Whoop's recovery scoring:
@@ -1 +1 @@
1
- {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACtB,MAAM,CAAU,aAAa,GAAG,KAAK,CAAC;IACtC,MAAM,CAAU,IAAI,GAAG,EAAE,CAAC;IAC1B,MAAM,CAAU,gBAAgB,GAAG,CAAC,CAAC;IAE5B,KAAK,CAAS;IACvB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE;YAAE,OAAO,YAAY,CAAC,MAAM,CAAC;QAChD,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;YAAE,OAAO,YAAY,CAAC,OAAO,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;YAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;QACnD,OAAO,UAAU,CAAC,SAAS,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE;YAAE,OAAO,SAAS,CAAC;QACtC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;YAAE,OAAO,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;YAAE,OAAO,UAAU,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,WAAW;QACb,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE;YAAE,OAAO,sDAAsD,CAAC;QACnF,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;YAAE,OAAO,qDAAqD,CAAC;QACnF,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;YAAE,OAAO,iDAAiD,CAAC;QAC/E,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAe;QAChC,IAAI,OAAO,IAAI,CAAC;YAAE,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACvE,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,iBAAyB;QACpD,OAAO,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAiB;QACpC,OAAO,WAAW,CAAC,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC3E,CAAC;;AAGH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAU5C,sFAAsF;AACtF,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC1D,EAAE,GAAG,EAAE,uBAAuB,EAAE,GAAG,EAAE,yBAAyB,EAAE,MAAM,EAAE,SAAS,EAAE;IACnF,EAAE,GAAG,EAAE,yBAAyB,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;CACjE,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,GAAG,yBAAyB;QAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;IACpE,IAAI,KAAK,IAAI,uBAAuB;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAClE,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,GAAG,yBAAyB;QAAE,OAAO,WAAW,CAAC;IAC1D,IAAI,KAAK,IAAI,uBAAuB;QAAE,OAAO,UAAU,CAAC;IACxD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,GAAG,yBAAyB;QACnC,OAAO,8DAA8D,CAAC;IACxE,IAAI,KAAK,IAAI,uBAAuB;QAClC,OAAO,0EAA0E,CAAC;IACpF,OAAO,+DAA+D,CAAC;AACzE,CAAC;AAQD,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CAAC,IAA4C;IAChF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI;QACJ,KAAK;QACL,QAAQ,EAAE,KAAK,GAAG,QAAQ;KAC3B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,QAAgB;IAC9D,IAAI,OAAO,GAAG,QAAQ;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,OAAO,GAAG,QAAQ;QAAE,OAAO,MAAM,CAAC;IACtC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,uEAAuE;AACvE,MAAM,OAAO,WAAW;IACb,KAAK,CAAS;IACvB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;QACpD,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,YAAY,CAAC,OAAO,CAAC;QACnD,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;QACpD,OAAO,YAAY,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,KAAK,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,UAAU,CAAC;QACzC,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,MAAM,CAAC;QACrC,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,UAAU,UAAU,CAAC,KAAyD;IAClF,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;IACxD,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC;IAC/E,OAAO,UAAU,CAAC,OAAO,CAAC;AAC5B,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB,CAAC,KAA8C;IAChF,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;IACnD,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IACtD,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC;IAChD,OAAO,UAAU,CAAC,OAAO,CAAC;AAC5B,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,MAA8C;IAC9E,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;IACzD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAChD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IACnD,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC9C,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC9C,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,gBAAgB,GAAG,GAAG,CAAC;IAC7B,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,qCAAqC;IACnE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,mCAAmC;IAC7D,MAAM,KAAK,GACT,OAAO,IAAI,GAAG;QACZ,CAAC,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC5C,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAgBpD,MAAM,UAAU,2BAA2B,CACzC,MAA+B;IAE/B,OAAO;QACL,QAAQ,EACN,MAAM,CAAC,SAAS,IAAI,IAAI;YACtB,CAAC,CAAC,iCAAiC;YACnC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7C,cAAc,EACZ,MAAM,CAAC,sBAAsB,IAAI,IAAI;YACnC,CAAC,CAAC,iCAAiC;YACnC,CAAC,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC;QAC3D,UAAU,EACR,MAAM,CAAC,eAAe,IAAI,IAAI;YAC5B,CAAC,CAAC,iCAAiC;YACnC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QACpE,oBAAoB,EAClB,MAAM,CAAC,qBAAqB,IAAI,IAAI;YAClC,CAAC,CAAC,iCAAiC;YACnC,CAAC,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,cAAc,CAAC,IAA4C;IACzE,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;IACvD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC9C,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IACjD,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,oBAAoB,CAAC,IAA4C;IAC/E,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,iDAAiD,CAAC;IACnF,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,qDAAqD,CAAC;IAClF,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,kDAAkD,CAAC;IAC/E,OAAO,wDAAwD,CAAC;AAClE,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC/C,IAAI,OAAO,GAAG,GAAG;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC/C,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;IACnD,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAClD,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,CAAC;AAErC,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,YAAY,CAAC,QAAQ;IAC5B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,YAAY,CAAC,QAAQ;IAC9B,QAAQ,EAAE,YAAY,CAAC,MAAM;CACrB,CAAC;AAEX,kFAAkF;AAClF,MAAM,OAAO,QAAQ;IACV,KAAK,CAAS;IACvB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,KAAK,GAAG,oBAAoB;YAAE,OAAO,gBAAgB,CAAC,UAAU,CAAC;QAC1E,IAAI,IAAI,CAAC,KAAK,GAAG,eAAe;YAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC;QAChE,IAAI,IAAI,CAAC,KAAK,GAAG,cAAc;YAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC;QAC9D,IAAI,IAAI,CAAC,KAAK,GAAG,iBAAiB;YAAE,OAAO,gBAAgB,CAAC,OAAO,CAAC;QACpE,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,KAAK,GAAG,oBAAoB;YAAE,OAAO,YAAY,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,GAAG,eAAe;YAAE,OAAO,OAAO,CAAC;QACjD,IAAI,IAAI,CAAC,KAAK,GAAG,cAAc;YAAE,OAAO,WAAW,CAAC;QACpD,IAAI,IAAI,CAAC,KAAK,GAAG,iBAAiB;YAAE,OAAO,SAAS,CAAC;QACrD,OAAO,WAAW,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"strain-target.d.ts","sourceRoot":"","sources":["../src/strain-target.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB;IACjB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IACvC,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,CA0C9E"}
1
+ {"version":3,"file":"strain-target.d.ts","sourceRoot":"","sources":["../src/strain-target.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB;IACjB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IACvC,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,CAmC9E"}
@@ -29,16 +29,7 @@ export function computeStrainTarget(readinessScore) {
29
29
  const zoneReadinessMax = zone === "Push" ? 100 : zone === "Maintain" ? 69 : 49;
30
30
  const fraction = Math.min(1, Math.max(0, (readinessScore - zoneReadinessMin) / (zoneReadinessMax - zoneReadinessMin)));
31
31
  const targetStrain = minStrain + fraction * (maxStrain - minStrain);
32
- let explanation;
33
- if (zone === "Push") {
34
- explanation = `Recovery is strong (${readinessScore}). Push for a high-strain day to build fitness.`;
35
- }
36
- else if (zone === "Maintain") {
37
- explanation = `Moderate recovery (${readinessScore}). Aim for a steady training day.`;
38
- }
39
- else {
40
- explanation = `Recovery is low (${readinessScore}). Keep it light and focus on restoration.`;
41
- }
32
+ const explanation = `Based on a recovery score of ${readinessScore}/100.`;
42
33
  return {
43
34
  targetStrain: Math.round(targetStrain * 10) / 10,
44
35
  zone,
@@ -1 +1 @@
1
- {"version":3,"file":"strain-target.js","sourceRoot":"","sources":["../src/strain-target.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAsB;IACxD,IAAI,IAAgC,CAAC;IACrC,IAAI,SAAiB,CAAC;IACtB,IAAI,SAAiB,CAAC;IAEtB,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;QACzB,IAAI,GAAG,MAAM,CAAC;QACd,SAAS,GAAG,EAAE,CAAC;QACf,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;SAAM,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,GAAG,UAAU,CAAC;QAClB,SAAS,GAAG,EAAE,CAAC;QACf,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,UAAU,CAAC;QAClB,SAAS,GAAG,CAAC,CAAC;QACd,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,iDAAiD;IACjD,MAAM,gBAAgB,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CACzF,CAAC;IACF,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAEpE,IAAI,WAAmB,CAAC;IACxB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,WAAW,GAAG,uBAAuB,cAAc,iDAAiD,CAAC;IACvG,CAAC;SAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,WAAW,GAAG,sBAAsB,cAAc,mCAAmC,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,oBAAoB,cAAc,4CAA4C,CAAC;IAC/F,CAAC;IAED,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,EAAE;QAChD,IAAI;QACJ,WAAW;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"strain-target.js","sourceRoot":"","sources":["../src/strain-target.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAsB;IACxD,IAAI,IAAgC,CAAC;IACrC,IAAI,SAAiB,CAAC;IACtB,IAAI,SAAiB,CAAC;IAEtB,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;QACzB,IAAI,GAAG,MAAM,CAAC;QACd,SAAS,GAAG,EAAE,CAAC;QACf,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;SAAM,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,GAAG,UAAU,CAAC;QAClB,SAAS,GAAG,EAAE,CAAC;QACf,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,UAAU,CAAC;QAClB,SAAS,GAAG,CAAC,CAAC;QACd,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,iDAAiD;IACjD,MAAM,gBAAgB,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CACzF,CAAC;IACF,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,gCAAgC,cAAc,OAAO,CAAC;IAE1E,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,EAAE;QAChD,IAAI;QACJ,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { type EpistemicStatus } from "./epistemic-status.ts";
2
- export type TodayPlanConfidence = "high" | "moderate" | "low";
3
2
  export type TodayPlanZone = "Push" | "Maintain" | "Recovery";
4
3
  export type TodayPlanSleepTier = "Excellent" | "Good" | "Fair" | "Poor";
5
4
  export interface TodayPlanSupportingFact {
@@ -9,7 +8,6 @@ export interface TodayPlanSupportingFact {
9
8
  export interface TodayPlanAction {
10
9
  id: "strain_target";
11
10
  title: string;
12
- summary: string;
13
11
  zone: TodayPlanZone;
14
12
  }
15
13
  export interface TodayPlanFreshness {
@@ -19,7 +17,6 @@ export interface TodayPlanFreshness {
19
17
  export interface TodayPlanStrainTargetInput {
20
18
  targetStrain: number;
21
19
  zone: TodayPlanZone;
22
- explanation: string;
23
20
  readinessScore: number;
24
21
  workloadRatio: number | null;
25
22
  }
@@ -36,10 +33,9 @@ export type TodayPlanResult = {
36
33
  epistemicStatus: EpistemicStatus;
37
34
  date: string;
38
35
  action: TodayPlanAction;
39
- supportingFacts: [TodayPlanSupportingFact, TodayPlanSupportingFact];
36
+ supportingFacts: TodayPlanSupportingFact[];
40
37
  /** Server-authored limitations that qualify the action's observations. */
41
38
  caveats: string[];
42
- confidence: TodayPlanConfidence;
43
39
  freshness: TodayPlanFreshness;
44
40
  missingInputs: string[];
45
41
  message?: undefined;
@@ -49,7 +45,6 @@ export type TodayPlanResult = {
49
45
  date: string;
50
46
  action: null;
51
47
  supportingFacts: [];
52
- confidence: "low";
53
48
  freshness: TodayPlanFreshness;
54
49
  missingInputs: string[];
55
50
  message: string;
@@ -59,10 +54,6 @@ export type TodayPlanResult = {
59
54
  * Clients must render this payload and must not recompute health meaning.
60
55
  */
61
56
  export declare function buildTodayPlan(input: BuildTodayPlanInput): TodayPlanResult;
62
- /**
63
- * Shared confidence wording for web and mobile Today Plan cards.
64
- */
65
- export declare function formatTodayPlanConfidence(confidence: TodayPlanConfidence): string;
66
57
  /**
67
58
  * Shared freshness wording for web and mobile Today Plan cards.
68
59
  */
@@ -1 +1 @@
1
- {"version":3,"file":"today-plan.d.ts","sourceRoot":"","sources":["../src/today-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAEjF,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,eAAe,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAChD,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oBAAoB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,MAAM,eAAe,GACvB;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,eAAe,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAC;IACpE,0EAA0E;IAC1E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,mBAAmB,CAAC;IAChC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,GACD;IACE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;IACb,eAAe,EAAE,EAAE,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC;IAClB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AA2FN;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,eAAe,CA8C1E;AAQD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAEjF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CASrF"}
1
+ {"version":3,"file":"today-plan.d.ts","sourceRoot":"","sources":["../src/today-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAEjF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,eAAe,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAChD,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oBAAoB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,MAAM,eAAe,GACvB;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,eAAe,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,uBAAuB,EAAE,CAAC;IAC3C,0EAA0E;IAC1E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,GACD;IACE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;IACb,eAAe,EAAE,EAAE,CAAC;IACpB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAkEN;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,eAAe,CA2C1E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CASrF"}
@@ -4,24 +4,6 @@ function daysBetween(laterDate, earlierDate) {
4
4
  new Date(`${earlierDate}T00:00:00Z`).getTime()) /
5
5
  86400000);
6
6
  }
7
- function resolveConfidence(endDate, recoveryDate, sleepDate) {
8
- if (recoveryDate == null)
9
- return "low";
10
- const recoveryAgeDays = daysBetween(endDate, recoveryDate);
11
- if (recoveryAgeDays > 1)
12
- return "low";
13
- if (recoveryAgeDays === 0 && sleepDate != null && daysBetween(endDate, sleepDate) <= 1) {
14
- return "high";
15
- }
16
- return "moderate";
17
- }
18
- function actionTitle(zone, targetStrain) {
19
- if (zone === "Push")
20
- return `Train hard today — aim for ${targetStrain} strain`;
21
- if (zone === "Recovery")
22
- return `Keep training light today — aim for ${targetStrain} strain`;
23
- return `No change needs attention — aim for ${targetStrain} strain`;
24
- }
25
7
  function secondSupportingFact(input) {
26
8
  if (input.sleepPerformanceScore != null && input.sleepPerformanceTier != null) {
27
9
  return {
@@ -42,10 +24,7 @@ function secondSupportingFact(input) {
42
24
  };
43
25
  }
44
26
  return {
45
- fact: {
46
- label: "Strain target",
47
- value: String(input.strainTarget?.targetStrain ?? 0),
48
- },
27
+ fact: null,
49
28
  missingSleep: true,
50
29
  };
51
30
  }
@@ -53,14 +32,14 @@ function buildCaveats(input, missingSleep) {
53
32
  const caveats = [];
54
33
  if (missingSleep) {
55
34
  if (input.strainTarget?.workloadRatio == null) {
56
- caveats.push("Sleep and recent workload data were unavailable, so this plan uses recovery and the strain target.");
35
+ caveats.push("Sleep and recent workload data were unavailable, so this suggestion uses recovery only.");
57
36
  }
58
37
  else {
59
- caveats.push("Sleep performance was unavailable, so this plan uses recovery and recent workload instead.");
38
+ caveats.push("Sleep performance was unavailable; recent workload is shown for context.");
60
39
  }
61
40
  }
62
41
  if (input.recoveryDate == null) {
63
- caveats.push("Recovery data has no date, so confidence is low.");
42
+ caveats.push("Recovery data has no date; its recency is unknown.");
64
43
  }
65
44
  else if (daysBetween(input.endDate, input.recoveryDate) > 0) {
66
45
  caveats.push(`Recovery data is from ${input.recoveryDate}, so this plan may be less current.`);
@@ -86,7 +65,6 @@ export function buildTodayPlan(input) {
86
65
  date: input.endDate,
87
66
  action: null,
88
67
  supportingFacts: [],
89
- confidence: "low",
90
68
  freshness,
91
69
  missingInputs: ["recovery"],
92
70
  message: "Connect a recovery source and wait for today's recovery score before a training plan can be generated.",
@@ -100,8 +78,7 @@ export function buildTodayPlan(input) {
100
78
  date: input.endDate,
101
79
  action: {
102
80
  id: "strain_target",
103
- title: actionTitle(input.strainTarget.zone, input.strainTarget.targetStrain),
104
- summary: input.strainTarget.explanation,
81
+ title: `Suggested strain: ${input.strainTarget.targetStrain}`,
105
82
  zone: input.strainTarget.zone,
106
83
  },
107
84
  supportingFacts: [
@@ -109,25 +86,13 @@ export function buildTodayPlan(input) {
109
86
  label: "Recovery",
110
87
  value: `${input.strainTarget.readinessScore}/100`,
111
88
  },
112
- secondFact,
89
+ ...(secondFact ? [secondFact] : []),
113
90
  ],
114
91
  caveats: buildCaveats(input, missingSleep),
115
- confidence: resolveConfidence(input.endDate, input.recoveryDate, input.sleepDate),
116
92
  freshness,
117
93
  missingInputs,
118
94
  };
119
95
  }
120
- const confidenceLabels = {
121
- high: "High confidence",
122
- moderate: "Moderate confidence",
123
- low: "Low confidence",
124
- };
125
- /**
126
- * Shared confidence wording for web and mobile Today Plan cards.
127
- */
128
- export function formatTodayPlanConfidence(confidence) {
129
- return confidenceLabels[confidence];
130
- }
131
96
  /**
132
97
  * Shared freshness wording for web and mobile Today Plan cards.
133
98
  */
@@ -1 +1 @@
1
- {"version":3,"file":"today-plan.js","sourceRoot":"","sources":["../src/today-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"today-plan.js","sourceRoot":"","sources":["../src/today-plan.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dofek/scoring",
3
- "version": "0.1.36",
3
+ "version": "0.1.38",
4
4
  "description": "Platform-agnostic health scoring models, labels, colors, and design tokens",
5
5
  "type": "module",
6
6
  "license": "MIT",