@bitcobblers/wod-wiki-tools 0.51.2195 → 0.52.2198

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 (642) hide show
  1. package/dist/bin/wod.cjs +979 -888
  2. package/dist/bin/wod.cjs.map +1 -1
  3. package/dist/bin/wod.mjs +4 -4
  4. package/dist/{chunk-V23POHG2.mjs → chunk-2EWCEE6N.mjs} +86 -7
  5. package/dist/chunk-2EWCEE6N.mjs.map +1 -0
  6. package/dist/{chunk-QAPPKPCL.mjs → chunk-FJSPH4EA.mjs} +69 -148
  7. package/dist/chunk-FJSPH4EA.mjs.map +1 -0
  8. package/dist/{chunk-ZUZMRH3G.mjs → chunk-FUISPA7A.mjs} +55 -3
  9. package/dist/chunk-FUISPA7A.mjs.map +1 -0
  10. package/dist/chunk-KGP6STLY.mjs +69 -0
  11. package/dist/chunk-KGP6STLY.mjs.map +1 -0
  12. package/dist/{chunk-Z2IQPTDI.mjs → chunk-LNBKPHEP.mjs} +6 -5
  13. package/dist/chunk-LNBKPHEP.mjs.map +1 -0
  14. package/dist/{chunk-V7EGHQAY.mjs → chunk-V77RQF5T.mjs} +3 -3
  15. package/dist/chunk-V77RQF5T.mjs.map +1 -0
  16. package/dist/{chunk-L5S7PXAB.mjs → compiler-KOSG7QUK.mjs} +50 -70
  17. package/dist/compiler-KOSG7QUK.mjs.map +1 -0
  18. package/dist/index.cjs +979 -888
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.mjs +6 -6
  23. package/dist/{scaffoldFeed-I35NUXOI.mjs → scaffoldFeed-Y57UWPGG.mjs} +3 -3
  24. package/dist/{scaffoldFeed-I35NUXOI.mjs.map → scaffoldFeed-Y57UWPGG.mjs.map} +1 -1
  25. package/dist/server/app.cjs +155 -5
  26. package/dist/server/app.cjs.map +1 -1
  27. package/dist/server/app.d.cts +3 -0
  28. package/dist/server/app.d.ts +3 -0
  29. package/dist/server/app.mjs +2 -1
  30. package/dist/server-SHNWCIIM.mjs +11 -0
  31. package/dist/{server-QK2CXCDJ.mjs.map → server-SHNWCIIM.mjs.map} +1 -1
  32. package/dist/skills/wod-extraction/SKILL.md +40 -0
  33. package/dist/web/playground/ai-skills/parse.md +40 -0
  34. package/dist/web/playground/assets/{feedSync.worker-CK48nNHX.js → feedSync.worker-O4TGLEj3.js} +7 -7
  35. package/dist/web/playground/assets/main-CnfiwGSd.js +1149 -0
  36. package/dist/web/playground/assets/main-Vksl1E71.css +2 -0
  37. package/dist/web/playground/assets/{statementBuilderFlow-uTfwbWmx.js → statementBuilderFlow-Ba3zNEUH.js} +2 -2
  38. package/dist/web/playground/assets/{vendor-BiwvmytJ.js → vendor-Dz-Azkoq.js} +69 -69
  39. package/dist/web/playground/assets/{vendor-codemirror-B461LMkB.js → vendor-codemirror-B4BeZarI.js} +11 -11
  40. package/dist/web/playground/index.html +4 -4
  41. package/dist/web/playground/seed/core/chunks/canvas.6ac57ab1.json +1 -0
  42. package/dist/web/playground/seed/core/chunks/dashboards.96c1474b.json +1 -0
  43. package/dist/web/playground/seed/core/chunks/{efforts.1f14a471.json → efforts.b724fc2b.json} +1 -1
  44. package/dist/web/playground/seed/core/chunks/{equipment.3d9eda19.json → equipment.2743295a.json} +1 -1
  45. package/dist/web/playground/seed/core/indexes/notebooks/canvas.json +181 -181
  46. package/dist/web/playground/seed/core/indexes/notebooks/dashboards.json +17 -17
  47. package/dist/web/playground/seed/core/indexes/notebooks/efforts.json +326 -326
  48. package/dist/web/playground/seed/core/indexes/notebooks/equipment.json +50 -50
  49. package/dist/web/playground/seed/core/manifest.json +31 -31
  50. package/dist/web/playground/seed/core/markdown/canvas/ai-first/README.json +1 -1
  51. package/dist/web/playground/seed/core/markdown/canvas/guide/README.json +4 -4
  52. package/dist/web/playground/seed/core/markdown/canvas/guide/clock.json +1 -1
  53. package/dist/web/playground/seed/core/markdown/canvas/guide/dashboards.json +4 -32
  54. package/dist/web/playground/seed/core/markdown/canvas/guide/metrics-summaries.json +6 -6
  55. package/dist/web/playground/seed/core/markdown/canvas/guide/metrics.json +16 -16
  56. package/dist/web/playground/seed/core/markdown/canvas/guide/protocols.json +20 -20
  57. package/dist/web/playground/seed/core/markdown/canvas/guide/sessions.json +33 -33
  58. package/dist/web/playground/seed/core/markdown/canvas/guide/start.json +11 -11
  59. package/dist/web/playground/seed/core/markdown/canvas/guide/structure.json +25 -25
  60. package/dist/web/playground/seed/core/markdown/canvas/guide/wql.json +22 -22
  61. package/dist/web/playground/seed/core/markdown/canvas/home/sample-script.json +4 -4
  62. package/dist/web/playground/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  63. package/dist/web/playground/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  64. package/dist/web/playground/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  65. package/dist/web/playground/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  66. package/dist/web/playground/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  67. package/dist/web/playground/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  68. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  69. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-full-session.json +10 -10
  70. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  71. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  72. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-swimming.json +5 -5
  73. package/dist/web/playground/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  74. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
  75. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  76. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  77. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  78. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-3.json +3 -3
  79. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  80. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  81. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  82. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  83. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  84. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  85. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  86. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  87. package/dist/web/playground/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  88. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  89. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  90. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  91. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-4.json +5 -5
  92. package/dist/web/playground/seed/core/markdown/canvas/syntax/effort-notes.json +5 -5
  93. package/dist/web/playground/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
  94. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  95. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  96. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  97. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  98. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  99. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  100. package/dist/web/playground/seed/core/markdown/canvas/syntax/measurements.json +7 -7
  101. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  102. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  103. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  104. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-4.json +6 -6
  105. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  106. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-sections.json +10 -10
  107. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  108. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  109. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  110. package/dist/web/playground/seed/core/markdown/canvas/syntax/named-groups.json +6 -6
  111. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  112. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  113. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  114. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  115. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  116. package/dist/web/playground/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  117. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  118. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  119. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  120. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  121. package/dist/web/playground/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  122. package/dist/web/playground/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  123. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  124. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  125. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-3.json +4 -4
  126. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  127. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  128. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  129. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +6 -6
  130. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +6 -6
  131. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/content-fran.json +6 -6
  132. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/filter-combos.json +6 -6
  133. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/pipes-limit.json +6 -6
  134. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/session-rpe.json +6 -6
  135. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/source-journal.json +6 -6
  136. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/tis-trend.json +6 -6
  137. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/where-join.json +6 -6
  138. package/dist/web/playground/seed/core/markdown/dashboards/benchmark-pr-board.json +32 -32
  139. package/dist/web/playground/seed/core/markdown/dashboards/finger-strength-v8.json +26 -26
  140. package/dist/web/playground/seed/core/markdown/dashboards/polarized-base-marathon.json +50 -50
  141. package/dist/web/playground/seed/core/markdown/dashboards/recovery-readiness.json +38 -38
  142. package/dist/web/playground/seed/core/markdown/dashboards/road-to-560-total.json +50 -50
  143. package/dist/web/playground/seed/core/markdown/dashboards/training-block-review.json +62 -62
  144. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  145. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  146. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  147. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  148. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  149. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  150. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  151. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  152. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  153. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  154. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  155. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  156. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  157. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  158. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  159. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  160. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  161. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  162. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  163. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  164. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  165. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  166. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  167. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  168. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  169. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  170. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  171. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  172. package/dist/web/playground/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  173. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  174. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  175. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  176. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  177. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  178. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  179. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  180. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  181. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  182. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  183. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  184. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  185. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  186. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  187. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  188. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  189. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  190. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  191. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  192. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  193. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  194. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  195. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  196. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  197. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  198. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  199. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  200. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  201. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  202. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  203. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  204. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  205. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  206. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  207. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  208. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  209. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  210. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  211. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  212. package/dist/web/playground/seed/core/markdown/efforts/recovery/rest.json +1 -1
  213. package/dist/web/playground/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  214. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  215. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  216. package/dist/web/playground/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  217. package/dist/web/playground/seed/core/markdown/efforts/running/backward-running.json +1 -1
  218. package/dist/web/playground/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  219. package/dist/web/playground/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  220. package/dist/web/playground/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  221. package/dist/web/playground/seed/core/markdown/efforts/snatch.json +2 -2
  222. package/dist/web/playground/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  223. package/dist/web/playground/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  224. package/dist/web/playground/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  225. package/dist/web/playground/seed/core/markdown/efforts/strength/carioca.json +1 -1
  226. package/dist/web/playground/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  227. package/dist/web/playground/seed/core/markdown/efforts/strength/cluster.json +1 -1
  228. package/dist/web/playground/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  229. package/dist/web/playground/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  230. package/dist/web/playground/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  231. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  232. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  233. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  234. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  235. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  236. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  237. package/dist/web/playground/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  238. package/dist/web/playground/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  239. package/dist/web/playground/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  240. package/dist/web/playground/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  241. package/dist/web/playground/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  242. package/dist/web/playground/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  243. package/dist/web/playground/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  244. package/dist/web/playground/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  245. package/dist/web/playground/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  246. package/dist/web/playground/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  247. package/dist/web/playground/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  248. package/dist/web/playground/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  249. package/dist/web/playground/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  250. package/dist/web/playground/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  251. package/dist/web/playground/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  252. package/dist/web/playground/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  253. package/dist/web/playground/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  254. package/dist/web/playground/seed/core/markdown/efforts/strength/push-press.json +1 -1
  255. package/dist/web/playground/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  256. package/dist/web/playground/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  257. package/dist/web/playground/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  258. package/dist/web/playground/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  259. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  260. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  261. package/dist/web/playground/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  262. package/dist/web/playground/seed/core/markdown/efforts/strength/thruster.json +1 -1
  263. package/dist/web/playground/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  264. package/dist/web/playground/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  265. package/dist/web/playground/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  266. package/dist/web/playground/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  267. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  268. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  269. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  270. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  271. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  272. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  273. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  274. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  275. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  276. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  277. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  278. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  279. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  280. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  281. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  282. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  283. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  284. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  285. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  286. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  287. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  288. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  289. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  290. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  291. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  292. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  293. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  294. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  295. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  296. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  297. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  298. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  299. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  300. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  301. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  302. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  303. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  304. package/dist/web/playground/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  305. package/dist/web/playground/seed/core/markdown/equipment/air-bike.json +1 -1
  306. package/dist/web/playground/seed/core/markdown/equipment/barbell.json +1 -1
  307. package/dist/web/playground/seed/core/markdown/equipment/bench.json +1 -1
  308. package/dist/web/playground/seed/core/markdown/equipment/bike-erg.json +1 -1
  309. package/dist/web/playground/seed/core/markdown/equipment/climbing-rope.json +1 -1
  310. package/dist/web/playground/seed/core/markdown/equipment/clubs.json +1 -1
  311. package/dist/web/playground/seed/core/markdown/equipment/dumbbell.json +1 -1
  312. package/dist/web/playground/seed/core/markdown/equipment/ghd.json +1 -1
  313. package/dist/web/playground/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  314. package/dist/web/playground/seed/core/markdown/equipment/jump-rope.json +1 -1
  315. package/dist/web/playground/seed/core/markdown/equipment/kettlebell.json +1 -1
  316. package/dist/web/playground/seed/core/markdown/equipment/macebell.json +1 -1
  317. package/dist/web/playground/seed/core/markdown/equipment/medicine-ball.json +1 -1
  318. package/dist/web/playground/seed/core/markdown/equipment/parallettes.json +1 -1
  319. package/dist/web/playground/seed/core/markdown/equipment/plyo-box.json +1 -1
  320. package/dist/web/playground/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  321. package/dist/web/playground/seed/core/markdown/equipment/rower.json +1 -1
  322. package/dist/web/playground/seed/core/markdown/equipment/sandbag.json +1 -1
  323. package/dist/web/playground/seed/core/markdown/equipment/ski-erg.json +1 -1
  324. package/dist/web/playground/seed/core/markdown/equipment/slam-ball.json +1 -1
  325. package/dist/web/playground/seed/core/markdown/equipment/sled.json +1 -1
  326. package/dist/web/playground/seed/core/markdown/equipment/sledgehammer.json +1 -1
  327. package/dist/web/playground/seed/core/markdown/equipment/weight-vest.json +1 -1
  328. package/dist/web/playground/seed/core/report.html +13 -13
  329. package/dist/web/server/ai-skills/parse.md +40 -0
  330. package/dist/web/server/assets/{feedSync.worker-CK48nNHX.js → feedSync.worker-O4TGLEj3.js} +7 -7
  331. package/dist/web/server/assets/main-CnNELDQ_.js +1149 -0
  332. package/dist/web/server/assets/main-Vksl1E71.css +2 -0
  333. package/dist/web/server/assets/{statementBuilderFlow-D5c1zwcv.js → statementBuilderFlow-D5uFXVe0.js} +2 -2
  334. package/dist/web/server/assets/{vendor-BiwvmytJ.js → vendor-Dz-Azkoq.js} +69 -69
  335. package/dist/web/server/assets/{vendor-codemirror-B461LMkB.js → vendor-codemirror-B4BeZarI.js} +11 -11
  336. package/dist/web/server/index.html +4 -4
  337. package/dist/web/server/seed/core/chunks/canvas.6ac57ab1.json +1 -0
  338. package/dist/web/server/seed/core/chunks/dashboards.96c1474b.json +1 -0
  339. package/dist/web/server/seed/core/chunks/{efforts.1f14a471.json → efforts.b724fc2b.json} +1 -1
  340. package/dist/web/server/seed/core/chunks/{equipment.3d9eda19.json → equipment.2743295a.json} +1 -1
  341. package/dist/web/server/seed/core/indexes/notebooks/canvas.json +181 -181
  342. package/dist/web/server/seed/core/indexes/notebooks/dashboards.json +17 -17
  343. package/dist/web/server/seed/core/indexes/notebooks/efforts.json +326 -326
  344. package/dist/web/server/seed/core/indexes/notebooks/equipment.json +50 -50
  345. package/dist/web/server/seed/core/manifest.json +31 -31
  346. package/dist/web/server/seed/core/markdown/canvas/ai-first/README.json +1 -1
  347. package/dist/web/server/seed/core/markdown/canvas/guide/README.json +4 -4
  348. package/dist/web/server/seed/core/markdown/canvas/guide/clock.json +1 -1
  349. package/dist/web/server/seed/core/markdown/canvas/guide/dashboards.json +4 -32
  350. package/dist/web/server/seed/core/markdown/canvas/guide/metrics-summaries.json +6 -6
  351. package/dist/web/server/seed/core/markdown/canvas/guide/metrics.json +16 -16
  352. package/dist/web/server/seed/core/markdown/canvas/guide/protocols.json +20 -20
  353. package/dist/web/server/seed/core/markdown/canvas/guide/sessions.json +33 -33
  354. package/dist/web/server/seed/core/markdown/canvas/guide/start.json +11 -11
  355. package/dist/web/server/seed/core/markdown/canvas/guide/structure.json +25 -25
  356. package/dist/web/server/seed/core/markdown/canvas/guide/wql.json +22 -22
  357. package/dist/web/server/seed/core/markdown/canvas/home/sample-script.json +4 -4
  358. package/dist/web/server/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  359. package/dist/web/server/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  360. package/dist/web/server/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  361. package/dist/web/server/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  362. package/dist/web/server/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  363. package/dist/web/server/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  364. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  365. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-full-session.json +10 -10
  366. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  367. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  368. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-swimming.json +5 -5
  369. package/dist/web/server/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  370. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
  371. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  372. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  373. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  374. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-3.json +3 -3
  375. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  376. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  377. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  378. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  379. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  380. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  381. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  382. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  383. package/dist/web/server/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  384. package/dist/web/server/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  385. package/dist/web/server/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  386. package/dist/web/server/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  387. package/dist/web/server/seed/core/markdown/canvas/syntax/document-4.json +5 -5
  388. package/dist/web/server/seed/core/markdown/canvas/syntax/effort-notes.json +5 -5
  389. package/dist/web/server/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
  390. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  391. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  392. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  393. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  394. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  395. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  396. package/dist/web/server/seed/core/markdown/canvas/syntax/measurements.json +7 -7
  397. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  398. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  399. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  400. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-4.json +6 -6
  401. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  402. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-sections.json +10 -10
  403. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  404. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  405. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  406. package/dist/web/server/seed/core/markdown/canvas/syntax/named-groups.json +6 -6
  407. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  408. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  409. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  410. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  411. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  412. package/dist/web/server/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  413. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  414. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  415. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  416. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  417. package/dist/web/server/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  418. package/dist/web/server/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  419. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  420. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  421. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-3.json +4 -4
  422. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  423. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  424. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  425. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +6 -6
  426. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +6 -6
  427. package/dist/web/server/seed/core/markdown/canvas/wql-presets/content-fran.json +6 -6
  428. package/dist/web/server/seed/core/markdown/canvas/wql-presets/filter-combos.json +6 -6
  429. package/dist/web/server/seed/core/markdown/canvas/wql-presets/pipes-limit.json +6 -6
  430. package/dist/web/server/seed/core/markdown/canvas/wql-presets/session-rpe.json +6 -6
  431. package/dist/web/server/seed/core/markdown/canvas/wql-presets/source-journal.json +6 -6
  432. package/dist/web/server/seed/core/markdown/canvas/wql-presets/tis-trend.json +6 -6
  433. package/dist/web/server/seed/core/markdown/canvas/wql-presets/where-join.json +6 -6
  434. package/dist/web/server/seed/core/markdown/dashboards/benchmark-pr-board.json +32 -32
  435. package/dist/web/server/seed/core/markdown/dashboards/finger-strength-v8.json +26 -26
  436. package/dist/web/server/seed/core/markdown/dashboards/polarized-base-marathon.json +50 -50
  437. package/dist/web/server/seed/core/markdown/dashboards/recovery-readiness.json +38 -38
  438. package/dist/web/server/seed/core/markdown/dashboards/road-to-560-total.json +50 -50
  439. package/dist/web/server/seed/core/markdown/dashboards/training-block-review.json +62 -62
  440. package/dist/web/server/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  441. package/dist/web/server/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  442. package/dist/web/server/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  443. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  444. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  445. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  446. package/dist/web/server/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  447. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  448. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  449. package/dist/web/server/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  450. package/dist/web/server/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  451. package/dist/web/server/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  452. package/dist/web/server/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  453. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  454. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  455. package/dist/web/server/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  456. package/dist/web/server/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  457. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  458. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  459. package/dist/web/server/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  460. package/dist/web/server/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  461. package/dist/web/server/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  462. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  463. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  464. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  465. package/dist/web/server/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  466. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  467. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  468. package/dist/web/server/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  469. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  470. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  471. package/dist/web/server/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  472. package/dist/web/server/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  473. package/dist/web/server/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  474. package/dist/web/server/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  475. package/dist/web/server/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  476. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  477. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  478. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  479. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  480. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  481. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  482. package/dist/web/server/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  483. package/dist/web/server/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  484. package/dist/web/server/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  485. package/dist/web/server/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  486. package/dist/web/server/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  487. package/dist/web/server/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  488. package/dist/web/server/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  489. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  490. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  491. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  492. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  493. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  494. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  495. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  496. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  497. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  498. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  499. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  500. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  501. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  502. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  503. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  504. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  505. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  506. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  507. package/dist/web/server/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  508. package/dist/web/server/seed/core/markdown/efforts/recovery/rest.json +1 -1
  509. package/dist/web/server/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  510. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  511. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  512. package/dist/web/server/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  513. package/dist/web/server/seed/core/markdown/efforts/running/backward-running.json +1 -1
  514. package/dist/web/server/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  515. package/dist/web/server/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  516. package/dist/web/server/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  517. package/dist/web/server/seed/core/markdown/efforts/snatch.json +2 -2
  518. package/dist/web/server/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  519. package/dist/web/server/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  520. package/dist/web/server/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  521. package/dist/web/server/seed/core/markdown/efforts/strength/carioca.json +1 -1
  522. package/dist/web/server/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  523. package/dist/web/server/seed/core/markdown/efforts/strength/cluster.json +1 -1
  524. package/dist/web/server/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  525. package/dist/web/server/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  526. package/dist/web/server/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  527. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  528. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  529. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  530. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  531. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  532. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  533. package/dist/web/server/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  534. package/dist/web/server/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  535. package/dist/web/server/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  536. package/dist/web/server/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  537. package/dist/web/server/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  538. package/dist/web/server/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  539. package/dist/web/server/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  540. package/dist/web/server/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  541. package/dist/web/server/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  542. package/dist/web/server/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  543. package/dist/web/server/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  544. package/dist/web/server/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  545. package/dist/web/server/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  546. package/dist/web/server/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  547. package/dist/web/server/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  548. package/dist/web/server/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  549. package/dist/web/server/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  550. package/dist/web/server/seed/core/markdown/efforts/strength/push-press.json +1 -1
  551. package/dist/web/server/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  552. package/dist/web/server/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  553. package/dist/web/server/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  554. package/dist/web/server/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  555. package/dist/web/server/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  556. package/dist/web/server/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  557. package/dist/web/server/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  558. package/dist/web/server/seed/core/markdown/efforts/strength/thruster.json +1 -1
  559. package/dist/web/server/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  560. package/dist/web/server/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  561. package/dist/web/server/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  562. package/dist/web/server/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  563. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  564. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  565. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  566. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  567. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  568. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  569. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  570. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  571. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  572. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  573. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  574. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  575. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  576. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  577. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  578. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  579. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  580. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  581. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  582. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  583. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  584. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  585. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  586. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  587. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  588. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  589. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  590. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  591. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  592. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  593. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  594. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  595. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  596. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  597. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  598. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  599. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  600. package/dist/web/server/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  601. package/dist/web/server/seed/core/markdown/equipment/air-bike.json +1 -1
  602. package/dist/web/server/seed/core/markdown/equipment/barbell.json +1 -1
  603. package/dist/web/server/seed/core/markdown/equipment/bench.json +1 -1
  604. package/dist/web/server/seed/core/markdown/equipment/bike-erg.json +1 -1
  605. package/dist/web/server/seed/core/markdown/equipment/climbing-rope.json +1 -1
  606. package/dist/web/server/seed/core/markdown/equipment/clubs.json +1 -1
  607. package/dist/web/server/seed/core/markdown/equipment/dumbbell.json +1 -1
  608. package/dist/web/server/seed/core/markdown/equipment/ghd.json +1 -1
  609. package/dist/web/server/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  610. package/dist/web/server/seed/core/markdown/equipment/jump-rope.json +1 -1
  611. package/dist/web/server/seed/core/markdown/equipment/kettlebell.json +1 -1
  612. package/dist/web/server/seed/core/markdown/equipment/macebell.json +1 -1
  613. package/dist/web/server/seed/core/markdown/equipment/medicine-ball.json +1 -1
  614. package/dist/web/server/seed/core/markdown/equipment/parallettes.json +1 -1
  615. package/dist/web/server/seed/core/markdown/equipment/plyo-box.json +1 -1
  616. package/dist/web/server/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  617. package/dist/web/server/seed/core/markdown/equipment/rower.json +1 -1
  618. package/dist/web/server/seed/core/markdown/equipment/sandbag.json +1 -1
  619. package/dist/web/server/seed/core/markdown/equipment/ski-erg.json +1 -1
  620. package/dist/web/server/seed/core/markdown/equipment/slam-ball.json +1 -1
  621. package/dist/web/server/seed/core/markdown/equipment/sled.json +1 -1
  622. package/dist/web/server/seed/core/markdown/equipment/sledgehammer.json +1 -1
  623. package/dist/web/server/seed/core/markdown/equipment/weight-vest.json +1 -1
  624. package/dist/web/server/seed/core/report.html +13 -13
  625. package/package.json +6 -6
  626. package/dist/chunk-L5S7PXAB.mjs.map +0 -1
  627. package/dist/chunk-QAPPKPCL.mjs.map +0 -1
  628. package/dist/chunk-V23POHG2.mjs.map +0 -1
  629. package/dist/chunk-V7EGHQAY.mjs.map +0 -1
  630. package/dist/chunk-Z2IQPTDI.mjs.map +0 -1
  631. package/dist/chunk-ZUZMRH3G.mjs.map +0 -1
  632. package/dist/compiler-TOM2S2RL.mjs +0 -9
  633. package/dist/compiler-TOM2S2RL.mjs.map +0 -1
  634. package/dist/server-QK2CXCDJ.mjs +0 -11
  635. package/dist/web/playground/assets/main-CRhUHzsM.js +0 -499
  636. package/dist/web/playground/assets/main-Dq1wHl4y.css +0 -2
  637. package/dist/web/playground/seed/core/chunks/canvas.ed613b72.json +0 -1
  638. package/dist/web/playground/seed/core/chunks/dashboards.d1732e3d.json +0 -1
  639. package/dist/web/server/assets/main-DYNiJfcz.js +0 -499
  640. package/dist/web/server/assets/main-Dq1wHl4y.css +0 -2
  641. package/dist/web/server/seed/core/chunks/canvas.ed613b72.json +0 -1
  642. package/dist/web/server/seed/core/chunks/dashboards.d1732e3d.json +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/seedbuild/contract.ts","../src/seedbuild/filename.ts","../src/seedbuild/git-version.ts","../src/seedbuild/validation.ts","../src/seedbuild/compiler.ts"],"names":["wod_wiki_engine_star","execSync","parsed","section"],"mappings":"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","file":"compiler-KOSG7QUK.mjs","sourcesContent":["export * from '@bitcobblers/wod-wiki-engine';\n","/**\n * fileToDisplayName — port of wod-wiki's\n * apps/playground/src/repositories/groupings.ts (display-name derivation\n * only). Block-index rows carry the same note titles the app renders, so\n * titles must derive identically on both sides.\n */\n\n/** Lowercased mid-title words — \"and\", \"of\", \"70.3\"-style fragments read wrong capped. */\nconst FILE_TITLE_STOP_WORDS: Record<string, true> = {\n and: true, or: true, of: true, for: true, to: true, in: true, on: true,\n at: true, by: true, with: true, the: true, a: true, an: true,\n};\n\n/**\n * Parse a filename into a display name.\n * \"simple-and-sinister.md\" -> \"Simple and Sinister\"\n */\nexport function fileToDisplayName(filename: string): string {\n const base = filename.replace(/\\.md$/, '');\n if (base.toUpperCase() === 'README') return 'Overview';\n // Strip leading \"day-01-\" prefixes if present, then humanise\n const cleaned = base.replace(/^day-\\d+-/, '');\n const tokens = cleaned.split(/[-_]/);\n const titled: string[] = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]!;\n const next = tokens[i + 1];\n const after = tokens[i + 2];\n const prev = tokens[i - 1];\n // Race distances keep their dot: a lone 1-2-digit pair (\"70-3\" -> \"70.3\").\n // Longer numeric runs are dates (2009-12-01) or rep ladders (5-3-1) —\n // only an isolated pair between words is a distance.\n if (\n /^\\d{1,2}$/.test(token) && /^\\d{1,2}$/.test(next ?? '')\n && !/^\\d+$/.test(prev ?? '') && !/^\\d+$/.test(after ?? '')\n ) {\n titled.push(`${token}.${next}`);\n i++;\n continue;\n }\n if (titled.length > 0 && FILE_TITLE_STOP_WORDS[token.toLowerCase()]) {\n titled.push(token.toLowerCase());\n continue;\n }\n titled.push(token.charAt(0).toUpperCase() + token.slice(1));\n }\n return titled.join(' ');\n}\n","/**\n * Git-derived versioning — the seed artifact's version IS this repo's git\n * history. Every merged MR advances `version` (commit count), and\n * `versionLabel`/`commit` make an artifact traceable to its exact source\n * tree, so the app (and humans diffing manifests) can answer \"what changed\n * and what needs syncing\" from the manifest alone.\n */\nimport { execSync } from 'node:child_process';\n\nexport interface GitVersion {\n /** Monotonic commit count — the import-order version stamped on the manifest. */\n version: number;\n /** `git describe --tags --long --always --dirty`, e.g. `v1.2.0-4-gdeadbee`. */\n versionLabel: string;\n /** Full HEAD sha. */\n commit: string;\n /** True when built with uncommitted working-tree changes. */\n dirty: boolean;\n}\n\n/** Unversioned fallback for source trees without git history (e.g. exported tarballs). */\nexport const UNKNOWN_GIT_VERSION: GitVersion = {\n version: 0,\n versionLabel: 'unknown',\n commit: '',\n dirty: false,\n};\n\nexport function resolveGitVersion(repoRoot: string): GitVersion {\n try {\n const run = (args: string): string =>\n execSync(`git ${args}`, { cwd: repoRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n const count = Number(run('rev-list --count HEAD'));\n return {\n version: Number.isFinite(count) && count > 0 ? count : 0,\n versionLabel: run('describe --tags --long --always --dirty'),\n commit: run('rev-parse HEAD'),\n dirty: run('status --porcelain') !== '',\n };\n } catch {\n return UNKNOWN_GIT_VERSION;\n }\n}\n","export * from '@bitcobblers/wod-wiki-engine';\n","/** Compiles exact source, occurrence maps and sparse projections into atomic notes chunks. */\nimport { parseScript, whiteboardParser } from '@bitcobblers/wod-wiki-lang';\nimport { blockContentId, parseDocumentSections, parseNoteBundleFromJsonl, reconcileNoteBlocks, serializeNoteBundleToJsonl } from '@bitcobblers/wod-wiki-core';\nimport type { BlockEffort, BlockEquipment, BlockIndexRow } from '@bitcobblers/wod-wiki-storage';\nimport {\n buildDashboardDocument,\n isDashboardWidgetType,\n parseDashboardNote,\n parseDocument,\n parseQuery,\n resolveWidgetType,\n} from '@bitcobblers/wod-wiki-wql';\nimport {\n DASHBOARDS_CHUNK_ID,\n SEED_NAMESPACE,\n SEED_SCHEMA,\n SEED_REGISTERED_WIDGETS,\n canvasRouteSlug,\n seedNoteSourceId,\n notebookSlugForChunkId,\n type ManifestChunk,\n type NotebookIndex,\n type NotebookIndexSummary,\n type SeedManifest,\n type SeedRecordRef,\n type SeedRow,\n} from './contract';\nimport { fileToDisplayName } from './filename';\nimport { createReferenceIndex, extractStatementRefs, parseEffortFile, parseEquipmentFile, slugifyRefLabel, type IEffort, type IEquipment } from '@bitcobblers/wod-wiki-lang';\nimport { resolveGitVersion } from './git-version';\nimport { writeBuildReport } from './report';\nimport { getScalar, parseFrontmatter } from './frontmatter';\nimport { assertNotebookIndex, assertSeedManifest, assertSeedRows } from './validation';\nimport { createHash } from 'node:crypto';\nimport { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs';\nimport { execFileSync, execSync } from 'node:child_process';\nimport { dirname, join } from 'node:path';\n\n// BlockEffort/BlockIndexRow row types come from @bitcobblers/wod-wiki-storage\n// (type-only import — chunk rows are plain JSON applied structurally by the\n// app, mirroring cli/seed.ts).\n\n/** Scan `dir` recursively for `*.md` files; returns POSIX paths relative to `dir`, sorted. */\nfunction listMarkdownFiles(dir: string, prefix = ''): string[] {\n if (!existsSync(dir)) return [];\n const out: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n if (entry.isDirectory()) out.push(...listMarkdownFiles(join(dir, entry.name), rel));\n else if (entry.isFile() && entry.name.endsWith('.md')) out.push(rel);\n }\n return out.sort();\n}\n\n// ── Types ─────────────────────────────────────────────────────────────────\n\nexport interface ChunkGroup {\n id: string;\n files: string[];\n}\n\nexport interface GenerateSeedOptions {\n /** The corpus directory (`markdown/`). Defaults to `<corpusRoot>/markdown`. */\n markdownDir?: string;\n /** Output directory. Defaults to `<corpusRoot>/dist`. */\n outDir?: string;\n /**\n * Explicit manifest version (tests). Defaults to the corpus repo's git\n * commit count — see git-version.ts.\n */\n version?: number;\n /** Repo root the corpus paths resolve against and versioning derives from. Defaults to cwd. */\n corpusRoot?: string;\n /** Automatically scaffold markdown files for newly discovered efforts. */\n scaffoldDiscoveredEfforts?: boolean;\n /** Repo-relative POSIX paths omitted from chunk rows and derived indexes. */\n excludePaths?: readonly string[];\n}\n\nexport interface GenerateSeedResult {\n manifest: SeedManifest;\n outDir: string;\n totalFiles: number;\n reportPath: string;\n /** ms timings per pass (mirrored into report.html). */\n passMs: { scan: number; blockIndex: number; parseGate: number; blockEfforts: number; write: number };\n}\n\n// ── Corpus partition ──────────────────────────────────────────────────────\n\n/**\n * Map one `markdown/…` path to its chunk id. Returns null for files outside\n * the known corpora — callers MUST treat that as a parity failure so new\n * content directories cannot bypass the seed.\n */\nexport function chunkIdFor(relPath: string): string | null {\n const parts = relPath.split('/');\n if (parts[0] !== 'markdown' || parts.length < 2) return null;\n const corpus = parts[1];\n // markdown/<corpus>/<rest…>; a file directly under markdown/ has no corpus.\n if (parts.length === 2) return null;\n const slug = parts[2]?.replace(/\\.md$/, '');\n switch (corpus) {\n case 'canvas':\n case 'dashboards':\n case 'efforts':\n case 'equipment':\n return corpus;\n case 'notebooks':\n return parts.length === 3 ? `notebook._root` : `notebook.${slug}`;\n default:\n return null;\n }\n}\n\n/** Scan the markdown corpus; returns repo-relative POSIX paths of all .md files. */\nexport function collectCorpusMarkdown(markdownDir: string, excludePaths: readonly string[] = []): string[] {\n const excluded = new Set(excludePaths);\n return listMarkdownFiles(markdownDir)\n .map((p) => `markdown/${p}`)\n .filter((path) => !excluded.has(path));\n}\n\n/** Group markdown corpus paths into chunk groups; throws on paths outside the known corpora. */\nexport function partitionIntoChunks(paths: string[]): ChunkGroup[] {\n const byId = new Map<string, string[]>();\n for (const p of paths) {\n const id = chunkIdFor(p);\n if (id === null) {\n throw new Error(\n `[generate-seed] Parity failure: '${p}' is not part of any known corpus ` +\n `(canvas | dashboards | efforts | equipment | notebooks). ` +\n `Extend chunkIdFor() if this is a new corpus.`,\n );\n }\n const list = byId.get(id);\n if (list) list.push(p);\n else byId.set(id, [p]);\n }\n return [...byId.entries()]\n .sort(([a], [b]) => (a < b ? -1 : 1))\n .map(([id, files]) => ({ id, files }));\n}\n\n// ── Dashboard gate (#906) ─────────────────────────────────────────────────\n\n/**\n * Validate one dashboard note in the locked #899 format: dashboard\n * frontmatter, a title, known widget types, WQL bodies that parse (and are\n * aggregate queries, not find queries), and every `$token` reference\n * declared. Returns the problems found (empty = valid).\n */\nexport function validateDashboardNote(raw: string): string[] {\n const problems: string[] = [];\n const { meta } = parseFrontmatter(raw);\n const { sections } = parseDashboardNote(raw);\n const doc = buildDashboardDocument(sections, meta);\n if (!doc.isDashboard) return ['file is not a dashboard note (missing dashboard frontmatter)'];\n if (doc.title === undefined) problems.push('dashboard has no title');\n if (doc.widgets.length < 3) problems.push(`dashboard has only ${doc.widgets.length} widgets (the locked format has ≥ 3)`);\n const declared = new Set(doc.tokens.map((t) => t.name));\n for (const widget of doc.widgets) {\n const where = `widget '${widget.title ?? widget.body.slice(0, 40)}'`;\n if (widget.title === undefined) problems.push(`${where}: missing title`);\n if (!isDashboardWidgetType(resolveWidgetType(widget.type))) {\n problems.push(`${where}: unknown widget type '${widget.type}'`);\n }\n if (widget.body.includes('\\n')) {\n const docParsed = parseDocument(widget.body);\n if (docParsed.diagnostics.length > 0) {\n problems.push(`${where}: QueryDocument error: ${docParsed.diagnostics[0]}`);\n }\n } else {\n const parsed = parseQuery(widget.body);\n if (parsed.error !== undefined) problems.push(`${where}: WQL parse error: ${parsed.error}`);\n }\n for (const ref of [\n ...widget.body.matchAll(/\\$([A-Za-z][\\w-]*)/g),\n ...Object.values(widget.attributes).flatMap((v) => [...String(v).matchAll(/\\$([A-Za-z][\\w-]*)/g)]),\n ]) {\n if (!declared.has(ref[1])) problems.push(`${where}: undeclared token $${ref[1]}`);\n }\n }\n return problems;\n}\n\n/** Validate every dashboard file in a chunk group; throws on the first invalid file. */\nfunction gateDashboards(groups: ChunkGroup[], corpusRoot: string): void {\n for (const group of groups) {\n if (group.id !== DASHBOARDS_CHUNK_ID) continue;\n for (const p of group.files) {\n const problems = validateDashboardNote(readFileSync(join(corpusRoot, p), 'utf8'));\n if (problems.length > 0) {\n throw new Error(`[generate-seed] Dashboard validation failed for '${p}':\\n - ${problems.join('\\n - ')}`);\n }\n }\n }\n}\n\n// ── Block index derivation ────────────────────────────────────────────────\n\n\n/** Created-at from the corpus repo's git history (notebooks/guides), 0 fallback when unknown. */\nfunction getFileCreatedAt(file: string, repoRoot: string): number {\n try {\n const out = execSync(`git log -1 --format=%ct -- '${file}'`, { cwd: repoRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n const ts = Number(out) * 1000;\n return Number.isFinite(ts) && ts > 0 ? ts : 0;\n } catch {\n return 0;\n }\n}\n\nexport function seedNoteIdSync(path: string): string {\n const hash = createHash('sha1').update(`${SEED_NAMESPACE}:${path}`).digest();\n const bytes = new Uint8Array(hash.subarray(0, 16));\n bytes[6] = (bytes[6] & 0x0f) | 0x50;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n return [...bytes].map((b, i) => ([4, 6, 8, 10].includes(i) ? `-${b.toString(16).padStart(2, '0')}` : b.toString(16).padStart(2, '0'))).join('');\n}\n\nexport function getFileCommit(file: string, repoRoot: string): string {\n try {\n return execFileSync('git', ['log', '-1', '--format=%H', '--', file], { cwd: repoRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n } catch {\n return '';\n }\n}\n\nexport function getFileVersion(file: string, repoRoot: string): number {\n try {\n const out = execFileSync('git', ['rev-list', '--count', 'HEAD', '--', file], { cwd: repoRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n const count = Number(out);\n return Number.isFinite(count) && count > 0 ? count : 1;\n } catch {\n return 1;\n }\n}\nexport function getPathVersion(targetPath: string, repoRoot: string): number {\n try {\n const out = execFileSync('git', ['rev-list', '--count', 'HEAD', '--', targetPath], { cwd: repoRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n const count = Number(out);\n return Number.isFinite(count) && count > 0 ? count : 1;\n } catch {\n return 1;\n }\n}\n\nexport function getPathCommit(targetPath: string, repoRoot: string): string {\n try {\n return execFileSync('git', ['log', '-1', '--format=%H', '--', targetPath], { cwd: repoRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n } catch {\n return '';\n }\n}\n\nexport function getPathUpdatedAt(targetPath: string, repoRoot: string): string | undefined {\n try {\n const out = execFileSync('git', ['log', '-1', '--format=%cI', '--', targetPath], { cwd: repoRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n return out || undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function groupCorpusPath(id: string): string {\n if (id.startsWith('notebook.')) {\n const slug = id.slice('notebook.'.length);\n return slug === '_root' ? 'markdown/notebooks' : `markdown/notebooks/${slug}`;\n }\n return `markdown/${id}`;\n}\n\n/**\n * Frontmatter `date: YYYY-MM-DD` → epoch ms at noon UTC (mirrors the seed\n * importer's Note.date, so the block and note planes place a post on the\n * same civil day). Absent/empty → undefined; anything else that is not a\n * real calendar day throws — the build fails loudly instead of silently\n * misdating or rolling the post to another day.\n */\nexport function frontmatterDateToCreatedAt(raw: string, path: string): number | undefined {\n const value = getScalar(parseFrontmatter(raw).meta, 'date');\n if (value === undefined || value === '') return undefined;\n const text = String(value);\n const parts = text.match(/^(\\d{4})-(\\d{2})-(\\d{2})$/);\n const ts = parts ? Date.parse(`${text}T12:00:00Z`) : NaN;\n // Some engines roll impossible days (2026-02-30 → March 2) instead of\n // failing — round-trip the UTC components so the post can never silently\n // move to another day.\n const valid = !!parts && Number.isFinite(ts)\n && new Date(ts).getUTCMonth() === Number(parts[2]) - 1\n && new Date(ts).getUTCDate() === Number(parts[3]);\n if (!valid) {\n throw new Error(`[wod build] invalid frontmatter date '${text}' in '${path}' — expected a real calendar day (YYYY-MM-DD)`);\n }\n return ts;\n}\n\n/** Created-at timestamp for a dated notebook item's date key (`yyyy-mm-dd` from the path). */\nexport function dateKeyToCreatedAt(dateKey: string): number {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(dateKey)) return 0;\n const ts = Date.parse(`${dateKey}T00:00:00Z`);\n return Number.isNaN(ts) ? 0 : ts;\n}\n\n// canvasRouteSlug lives in contract.ts — one derivation shared by the\n// block plane (here) and the app's importer (note plane).\n\n\nfunction compileCompanionTelemetry(path: string, jsonl: string, blockIndex: BlockIndexRow[]): SeedRow['telemetry'] {\n const firstWod = blockIndex.find((block) => block.dataType === 'wod');\n const noteId = seedNoteIdSync(path);\n const normalized = jsonl.split(/\\r?\\n/).map((line) => {\n if (!line.trim()) return line;\n const parsed: unknown = JSON.parse(line);\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) return line;\n const record: Record<string, unknown> = { ...parsed, noteId };\n if (record.kind === 'session' || record.kind === 'event') {\n if (!firstWod) throw new Error(`Telemetry for '${path}' requires a wod block`);\n if (record.blockId === undefined || record.blockId === '@first-wod') record.blockId = firstWod.blockId;\n if (record.blockVersion === undefined || record.blockVersion === '@first-wod') record.blockVersion = firstWod.blockVersion;\n if (record.blockContentId === undefined || record.blockContentId === '@first-wod') record.blockContentId = firstWod.blockContentId;\n }\n return JSON.stringify(record);\n }).join('\\n');\n const parsed = parseNoteBundleFromJsonl(normalized);\n if (parsed.errors.length > 0) throw new Error(`Invalid telemetry companion '${path}': ${parsed.errors.join('; ')}`);\n return {\n sessions: parsed.bundles.flatMap((bundle) => bundle.sessions),\n events: parsed.bundles.flatMap((bundle) => bundle.events),\n };\n}\n\nexport function compileSeedRow(path: string, content: string, metadata: { routeId?: string; noteTitle?: string; sourceId?: string; createdAt?: number; telemetryJsonl?: string } = {}): SeedRow {\n let ordinal = 0;\n const blocks = reconcileNoteBlocks(content, { sourceRevision: 1, registeredWidgets: SEED_REGISTERED_WIDGETS, createId: () => `seed:${path}:${ordinal++}` });\n const noteId = metadata.routeId ?? path;\n const sections = parseDocumentSections(content);\n const blockIndex: BlockIndexRow[] = Object.values(blocks).map((block, position) => {\n const section = sections.find((section) => section.from === block.from && section.to === block.to);\n return { id: `${noteId}:${block.id}`, noteId, blockId: block.id, blockVersion: 1, sourceRevision: 1, from: block.from, to: block.to, position, dataType: block.kind, ...(block.kind === 'wod' ? { blockContentId: blockContentId(section?.scriptBlock?.content ?? content.slice(block.from, block.to)) } : {}), rawContent: content.slice(block.from, block.to), noteTitle: metadata.noteTitle ?? fileToDisplayName(path.split('/').at(-1) ?? path), createdAt: metadata.createdAt ?? 0, isStatic: true, sourceId: metadata.sourceId, sourcePath: path, routeId: metadata.routeId };\n });\n const telemetry = metadata.telemetryJsonl === undefined ? undefined : compileCompanionTelemetry(path, metadata.telemetryJsonl, blockIndex);\n return { path, content, blocks, blockIndex, blockEfforts: [], blockEquipment: [], ...(telemetry ? { telemetry } : {}) };\n}\n\nexport function buildBlockIndexRows(markdownDir: string, corpusRoot: string, excludePaths: readonly string[] = []): BlockIndexRow[] {\n const rows: BlockIndexRow[] = [];\n for (const path of collectCorpusMarkdown(markdownDir, excludePaths)) {\n const chunkId = chunkIdFor(path);\n if (!chunkId) continue;\n const content = readFileSync(join(corpusRoot, path), 'utf8');\n const parts = path.split('/');\n const stem = (parts.at(-1) ?? '').replace(/\\.md$/, '');\n const slug = parts[2];\n const routeId = chunkId === 'canvas' ? canvasRouteSlug(content) ?? undefined : chunkId.startsWith('notebook.') ? (stem.toLowerCase() === 'readme' ? slug : parts.slice(2).join('/').replace(/\\.md$/, '')) : undefined;\n const sourceId = seedNoteSourceId(path, content, chunkId);\n // Authored frontmatter date wins regardless of filename/directory; dated\n // notebooks keep their historical path-date placement, everything else\n // falls back to the corpus repo's git history.\n const createdAt = frontmatterDateToCreatedAt(content, path)\n ?? (chunkId.startsWith('notebook.') && /^\\d{4}-\\d{2}-\\d{2}$/.test(parts.at(-2) ?? '') ? dateKeyToCreatedAt(parts.at(-2) ?? '') : getFileCreatedAt(path, corpusRoot));\n rows.push(...compileSeedRow(path, content, { routeId, sourceId, createdAt }).blockIndex);\n }\n return rows;\n}\n\n/**\n * Syntax gate — every `wod` block's script must parse cleanly.\n *\n * Plain fences get a strict scan of the Lezer tree for error nodes\n * (`WhiteboardScript.errors` only carries mapper exceptions; the parser\n * recovers silently, so the tree is scanned directly) with `path:line`\n * diagnostics. Dialect-fenced blocks (`log:climbing`, …) are owned by the\n * dialect stack — their `key: value` lines are recovered by dialect\n * handlers, not the base grammar — so those gate on the exception channel\n * of a dialect-aware parse instead, matching how the app consumes them.\n */\nexport function validateWodBlockSyntax(blocks: BlockIndexRow[]): string[] {\n const problems: string[] = [];\n for (const block of blocks) {\n if (block.dataType !== 'wod' || !block.rawContent?.trim()) continue;\n const section = parseDocumentSections(block.rawContent, { registeredWidgets: SEED_REGISTERED_WIDGETS })\n .find((s) => s.scriptBlock);\n const source = section?.scriptBlock?.content ?? block.rawContent;\n if (!source.trim()) continue;\n\n const where = block.sourcePath ?? block.noteId;\n if (section?.sport) {\n const parsed = parseScript(source, { sport: section.sport });\n for (const error of parsed.errors ?? []) {\n problems.push(`${where}: ${error.message}`);\n }\n continue;\n }\n\n const doc = source.endsWith('\\n') ? source : source + '\\n';\n const tree = whiteboardParser.parse(doc);\n tree.iterate({\n enter: (node) => {\n if (!node.type.isError) return;\n const line = doc.slice(0, node.from).split('\\n').length;\n const snippet = source.slice(node.from, Math.min(node.to, node.from + 60)).split('\\n')[0];\n problems.push(`${where}:${line} \\`${snippet}\\``);\n },\n });\n }\n return problems;\n}\n\n/**\n * Uncataloged effort discovered during workout block analysis.\n */\nexport interface DiscoveredEffort {\n slug: string;\n label: string;\n rawLabels: string[];\n}\n\n/** Static lookup — syntax/structure keywords and known non-effort labels that must never scaffold. */\nconst NON_EFFORT_SLUGS: Record<string, true> = {\n 'amrap': true, 'emom': true, 'tabata': true, 'for-time': true, 'rounds': true, 'sets': true,\n 'repetitions': true, 'count-down': true, 'total-reps': true,\n 'warmup': true, 'cooldown': true, 'cool-down': true, 'transition': true, 'rest': true, 'break': true, 'work': true,\n 'i-suck-at-this': true, 'isuckatthis': true, 'movement': true, 'movement-you': true, 'selected-exercise': true,\n 'training-setup': true, 'grade-system': true, 'hangs': true, 'warm-light-wind': true, 'basin': true, 'rock-canyon': true,\n 'b-onsight': true, 'a-redpoint': true, 'd-redpoint': true, 'v0-flash': true, 'v2-flash': true, 'v7-redpoint': true,\n 'avgrpe-mean': true, 'calculate': true, 'totalload-sum': true, 'query': true, 'by': true,\n '': true, '-': true, '...': true, 'x': true, 's': true, 'bw': true,\n};\n\nfunction formatDiscoveredLabel(raw: string): string {\n const clean = raw.replace(/[-_]+/g, ' ').trim();\n return clean\n .split(/\\s+/)\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())\n .join(' ');\n}\n\n/**\n * ONE corpus reference catalog — both definition families parsed once into\n * real arrays, the direct feed for lang's `createReferenceIndex`. Effort and\n * equipment containment rows, discovery and the runtime all resolve through\n * that single index, so the static plane and runtime agree on canonical\n * slugs with no per-family copies.\n */\nexport function loadCorpusReferenceCatalog(markdownDir: string): { efforts: IEffort[]; equipment: IEquipment[] } {\n const efforts: IEffort[] = [];\n const equipment: IEquipment[] = [];\n const effortsDir = join(markdownDir, 'efforts');\n for (const file of listMarkdownFiles(effortsDir)) {\n const parsed = parseEffortFile(readFileSync(join(effortsDir, file), 'utf8'));\n if (parsed) efforts.push(parsed);\n }\n const equipmentDir = join(markdownDir, 'equipment');\n for (const file of listMarkdownFiles(equipmentDir)) {\n const parsed = parseEquipmentFile(readFileSync(join(equipmentDir, file), 'utf8'));\n if (parsed) equipment.push(parsed);\n }\n return { efforts, equipment };\n}\n\nexport function discoverUncatalogedEfforts(markdownDir: string, corpusRoot: string, excludePaths: readonly string[] = []): DiscoveredEffort[] {\n const catalog = loadCorpusReferenceCatalog(markdownDir);\n const index = createReferenceIndex(catalog);\n const blocks = buildBlockIndexRows(markdownDir, corpusRoot, excludePaths);\n const discovered = new Map<string, { label: string; rawLabels: Set<string> }>();\n\n for (const block of blocks) {\n if (block.dataType !== 'wod' || !block.rawContent) continue;\n const section = parseDocumentSections(block.rawContent, { registeredWidgets: SEED_REGISTERED_WIDGETS }).find((section) => section.scriptBlock);\n const script = parseScript(section?.scriptBlock?.content ?? block.rawContent, { references: index });\n for (const statement of script.statements) {\n const effortMetric = statement.metrics?.getMetric?.('effort');\n const effortLabel = (effortMetric && typeof effortMetric.value === 'string' ? effortMetric.value : undefined) ?? statement.exerciseId;\n if (!effortLabel) continue;\n\n const slugified = slugifyRefLabel(effortLabel);\n if (!slugified || NON_EFFORT_SLUGS[slugified]) continue;\n\n // Known efforts are exactly the catalog's canonical slugs — discovery\n // only reports labels the shared index cannot resolve.\n if (index.resolveEffort(slugified) || index.resolveEffort(effortLabel)) continue;\n\n const existing = discovered.get(slugified);\n if (existing) {\n existing.rawLabels.add(effortLabel);\n } else {\n discovered.set(slugified, {\n label: formatDiscoveredLabel(effortLabel),\n rawLabels: new Set([effortLabel]),\n });\n }\n }\n }\n\n return Array.from(discovered.entries()).map(([slug, data]) => ({\n slug,\n label: data.label,\n rawLabels: Array.from(data.rawLabels),\n }));\n}\n\nexport function scaffoldDiscoveredEfforts(\n discovered: DiscoveredEffort[],\n markdownDir: string,\n): string[] {\n const targetDir = join(markdownDir, 'efforts', 'discovered');\n if (!existsSync(targetDir)) {\n mkdirSync(targetDir, { recursive: true });\n }\n\n const createdPaths: string[] = [];\n for (const effort of discovered) {\n const filePath = join(targetDir, `${effort.slug}.md`);\n if (existsSync(filePath)) continue;\n\n const aliases = effort.rawLabels\n .filter((l) => l.toLowerCase() !== effort.label.toLowerCase())\n .map((l) => ` - \"${l.replace(/\"/g, '\\\\\"')}\"`);\n\n const content = [\n '---',\n `id: effort-bundled-${effort.slug}`,\n `slug: ${effort.slug}`,\n `label: \"${effort.label.replace(/\"/g, '\\\\\"')}\"`,\n aliases.length > 0 ? `aliases:\\n${aliases.join('\\n')}` : 'aliases: []',\n 'baseAttributes:',\n ' met: 5.0',\n ' discipline: general',\n ' intensityTier: moderate',\n 'registrySource: bundled',\n '---',\n '',\n ].join('\\n');\n\n writeFileSync(filePath, content, 'utf8');\n createdPaths.push(filePath);\n }\n\n return createdPaths;\n}\n\n/**\n * Derive BlockEffort[] containment rows from the block-index row set.\n * Requires a second pass over the source markdown to parse the script AST\n * (with the corpus reference index configured, so statements carry canonical\n * refs), which is safe because the corpus is static and compile-time.\n *\n * Only VALIDATED refs enter the durable index: a slug that survives is\n * confirmed by the shared index (`resolveEffort`); uncataloged movements\n * produce no durable link — that is discovery's reporting job.\n */\nexport function buildBlockEffortRows(markdownDir: string, corpusRoot: string, blocks: BlockIndexRow[] = buildBlockIndexRows(markdownDir, corpusRoot)): BlockEffort[] {\n const efforts: BlockEffort[] = [];\n const index = createReferenceIndex(loadCorpusReferenceCatalog(markdownDir));\n for (const block of blocks) {\n if (block.dataType !== 'wod' || !block.rawContent) continue;\n const section = parseDocumentSections(block.rawContent, { registeredWidgets: SEED_REGISTERED_WIDGETS }).find((section) => section.scriptBlock);\n const script = parseScript(section?.scriptBlock?.content ?? block.rawContent, { references: index });\n const linked = new Set<string>();\n for (const rawSlug of extractStatementRefs(script.statements).efforts) {\n const canonical = index.resolveEffort(rawSlug);\n const canonicalSlug = canonical?.slug;\n if (!canonicalSlug || NON_EFFORT_SLUGS[canonicalSlug] || NON_EFFORT_SLUGS[rawSlug]) {\n continue;\n }\n if (linked.has(canonicalSlug)) continue;\n linked.add(canonicalSlug);\n efforts.push({\n id: `${block.id}:${canonicalSlug}`,\n noteId: block.noteId,\n blockId: block.blockId,\n blockContentId: block.blockContentId,\n effortSlug: canonicalSlug,\n isStatic: block.isStatic,\n sourcePath: block.sourcePath,\n createdAt: block.createdAt,\n });\n }\n }\n return efforts;\n}\n\n/**\n * Derive BlockEquipment[] containment rows — the equipment twin of\n * {@link buildBlockEffortRows}. Parsed with the corpus reference index so\n * statements carry canonical equipment refs; only slugs the shared index\n * confirms (`resolveEquipment`) produce a durable link. Unknown equipment\n * stays visible as authored source + parser diagnostics.\n */\nexport function buildBlockEquipmentRows(markdownDir: string, corpusRoot: string, blocks: BlockIndexRow[] = buildBlockIndexRows(markdownDir, corpusRoot)): BlockEquipment[] {\n const links: BlockEquipment[] = [];\n const index = createReferenceIndex(loadCorpusReferenceCatalog(markdownDir));\n for (const block of blocks) {\n if (block.dataType !== 'wod' || !block.rawContent) continue;\n const section = parseDocumentSections(block.rawContent, { registeredWidgets: SEED_REGISTERED_WIDGETS }).find((s) => s.scriptBlock);\n const script = parseScript(section?.scriptBlock?.content ?? block.rawContent, { references: index });\n const linked = new Set<string>();\n for (const rawSlug of extractStatementRefs(script.statements).equipment) {\n const canonicalSlug = index.resolveEquipment(rawSlug)?.slug;\n if (!canonicalSlug || linked.has(canonicalSlug)) continue;\n linked.add(canonicalSlug);\n links.push({\n id: `${block.id}:${canonicalSlug}`,\n noteId: block.noteId,\n blockId: block.blockId,\n blockContentId: block.blockContentId,\n equipmentSlug: canonicalSlug,\n isStatic: block.isStatic,\n sourcePath: block.sourcePath,\n createdAt: block.createdAt,\n });\n }\n }\n return links;\n}\n\n\n// ── Generation ────────────────────────────────────────────────────────────\n\nfunction sha256Hex(data: string | Buffer): string {\n return createHash('sha256').update(data).digest('hex');\n}\n\nexport function generateSeed(options: GenerateSeedOptions = {}): GenerateSeedResult {\n const t0 = Date.now();\n const passMs = { scan: 0, blockIndex: 0, parseGate: 0, blockEfforts: 0, write: 0 };\n const corpusRoot = options.corpusRoot ?? process.cwd();\n const markdownDir = options.markdownDir ?? join(corpusRoot, 'markdown');\n const outDir = options.outDir ?? join(corpusRoot, 'dist');\n const gitVersion = options.version !== undefined\n ? { ...resolveGitVersion(corpusRoot), version: options.version }\n : resolveGitVersion(corpusRoot);\n const packageFile = join(corpusRoot, 'package.json');\n const packageMetadata: unknown = existsSync(packageFile) ? JSON.parse(readFileSync(packageFile, 'utf8')) : {};\n const metadata = packageMetadata && typeof packageMetadata === 'object' ? packageMetadata : {};\n const repository = 'repository' in metadata ? metadata.repository : undefined;\n const repositoryUrl = typeof repository === 'string' ? repository : repository && typeof repository === 'object' && 'url' in repository && typeof repository.url === 'string' ? repository.url : undefined;\n const webRepositoryUrl = repositoryUrl?.replace(/^git\\+/, '').replace(/\\.git$/, '');\n const repositoryLink = webRepositoryUrl && URL.canParse(webRepositoryUrl) ? new URL(webRepositoryUrl) : undefined;\n if (options.scaffoldDiscoveredEfforts) {\n const discovered = discoverUncatalogedEfforts(markdownDir, corpusRoot, options.excludePaths);\n if (discovered.length > 0) {\n scaffoldDiscoveredEfforts(discovered, markdownDir);\n }\n }\n\n const tScan = Date.now();\n const paths = collectCorpusMarkdown(markdownDir, options.excludePaths);\n const groups = partitionIntoChunks(paths);\n gateDashboards(groups, corpusRoot);\n passMs.scan = Date.now() - tScan;\n\n const tBlockIndex = Date.now();\n const blockRows = buildBlockIndexRows(markdownDir, corpusRoot, options.excludePaths);\n passMs.blockIndex = Date.now() - tBlockIndex;\n const tParseGate = Date.now();\n const syntaxProblems = validateWodBlockSyntax(blockRows);\n passMs.parseGate = Date.now() - tParseGate;\n if (syntaxProblems.length > 0) {\n const shown = syntaxProblems.slice(0, 20).map((p) => ` ${p}`).join('\\n');\n const more = syntaxProblems.length > 20 ? `\\n … and ${syntaxProblems.length - 20} more` : '';\n throw new Error(`[wod build] block syntax gate failed — ${syntaxProblems.length} block(s) do not parse:\\n${shown}${more}`);\n }\n\n const chunksDir = join(outDir, 'chunks');\n rmSync(outDir, { recursive: true, force: true });\n mkdirSync(chunksDir, { recursive: true });\n\n const manifestChunks: ManifestChunk[] = [];\n const tBlockEfforts = Date.now();\n const effortRows = buildBlockEffortRows(markdownDir, corpusRoot, blockRows);\n const equipmentRows = buildBlockEquipmentRows(markdownDir, corpusRoot, blockRows);\n passMs.blockEfforts = Date.now() - tBlockEfforts;\n const blocksByPath = new Map<string, BlockIndexRow[]>();\n const effortsByPath = new Map<string, BlockEffort[]>();\n const equipmentByPath = new Map<string, BlockEquipment[]>();\n for (const row of blockRows) {\n const rows = blocksByPath.get(row.sourcePath!) ?? [];\n rows.push(row); blocksByPath.set(row.sourcePath!, rows);\n }\n for (const row of effortRows) {\n const rows = effortsByPath.get(row.sourcePath!) ?? [];\n rows.push(row); effortsByPath.set(row.sourcePath!, rows);\n }\n for (const row of equipmentRows) {\n const rows = equipmentByPath.get(row.sourcePath!) ?? [];\n rows.push(row); equipmentByPath.set(row.sourcePath!, rows);\n }\n let totalFiles = 0;\n const manifestNotebooks: NotebookIndexSummary[] = [];\n const manifestBuiltAt = new Date().toISOString();\n\n const tWrite = Date.now();\n for (const { id, files } of groups) {\n const records: SeedRecordRef[] = [];\n const rows: SeedRow[] = files.map((p) => {\n const raw = readFileSync(join(corpusRoot, p), 'utf8');\n const content = raw;\n const companionPath = join(corpusRoot, p.replace(/\\.md$/, '.jsonl'));\n const compiled = compileSeedRow(p, content, { telemetryJsonl: existsSync(companionPath) ? readFileSync(companionPath, 'utf8') : undefined });\n compiled.blockIndex = blocksByPath.get(p) ?? compiled.blockIndex;\n compiled.blockEfforts = effortsByPath.get(p) ?? [];\n compiled.blockEquipment = equipmentByPath.get(p) ?? [];\n const fileCommit = getFileCommit(p, corpusRoot) || gitVersion.commit || '';\n const fileVer = getFileVersion(p, corpusRoot);\n const uuid = seedNoteIdSync(p);\n compiled.commit = fileCommit;\n compiled.uuid = uuid;\n compiled.version = fileVer;\n\n // Write compiled record JSON alongside markdown\n const recordRelPath = p.replace(/\\.md$/, '.json');\n const recordOutFile = join(outDir, recordRelPath);\n mkdirSync(dirname(recordOutFile), { recursive: true });\n const recordBytes = Buffer.from(JSON.stringify(compiled, null, 2), 'utf8');\n writeFileSync(recordOutFile, recordBytes);\n if (compiled.telemetry) {\n writeFileSync(join(outDir, p.replace(/\\.md$/, '.jsonl')), serializeNoteBundleToJsonl(compiled.telemetry) + '\\n');\n }\n\n const title = compiled.blockIndex[0]?.noteTitle ?? fileToDisplayName(p.split('/').at(-1) ?? p);\n records.push({\n uuid,\n path: p,\n recordPath: recordRelPath,\n commit: fileCommit,\n version: fileVer,\n sha256: sha256Hex(recordBytes),\n title,\n date: frontmatterDateToCreatedAt(content, p),\n });\n\n return compiled;\n });\n assertSeedRows(rows);\n const bytes = Buffer.from(JSON.stringify(rows), 'utf8');\n const sha = sha256Hex(bytes);\n const file = `chunks/${id}.${sha.slice(0, 8)}.json`;\n writeFileSync(join(outDir, file), bytes);\n manifestChunks.push({ id, path: file, sha256: sha, bytes: bytes.length, count: rows.length });\n totalFiles += rows.length;\n\n // Emit notebook index\n const groupPath = groupCorpusPath(id);\n const groupVersion = getPathVersion(groupPath, corpusRoot);\n const groupCommit = getPathCommit(groupPath, corpusRoot) || gitVersion.commit || '';\n const groupUpdatedAt = getPathUpdatedAt(groupPath, corpusRoot);\n\n const notebookIndexPath = `indexes/notebooks/${id}.json`;\n const summary: NotebookIndexSummary = {\n notebookId: id,\n label: fileToDisplayName(id.split('.').at(-1) ?? id),\n category: notebookSlugForChunkId(id),\n indexPath: notebookIndexPath,\n version: groupVersion,\n commit: groupCommit,\n updatedAt: groupUpdatedAt,\n builtAt: manifestBuiltAt,\n sha256: sha,\n bytes: bytes.length,\n count: rows.length,\n };\n const notebookIndex: NotebookIndex = {\n ...summary,\n records,\n };\n assertNotebookIndex(notebookIndex);\n const indexOutFile = join(outDir, notebookIndexPath);\n mkdirSync(dirname(indexOutFile), { recursive: true });\n writeFileSync(indexOutFile, JSON.stringify(notebookIndex, null, 2) + '\\n');\n manifestNotebooks.push(summary);\n }\n\n passMs.write = Date.now() - tWrite;\n\n const manifest: SeedManifest = {\n name: 'name' in metadata && typeof metadata.name === 'string' ? metadata.name : undefined,\n description: 'description' in metadata && typeof metadata.description === 'string' ? metadata.description : undefined,\n repositoryUrl: repositoryLink?.protocol === 'https:' && !repositoryLink.username && !repositoryLink.password ? repositoryLink.href : undefined,\n schema: SEED_SCHEMA,\n version: gitVersion.version,\n versionLabel: gitVersion.versionLabel,\n commit: gitVersion.commit,\n dirty: gitVersion.dirty,\n builtAt: manifestBuiltAt,\n chunks: manifestChunks,\n notebooks: manifestNotebooks,\n };\n assertSeedManifest(manifest);\n writeFileSync(join(outDir, 'manifest.json'), JSON.stringify(manifest, null, 2) + '\\n');\n\n const reportPath = writeBuildReport(outDir, {\n manifest,\n totalMs: Date.now() - t0,\n passMs,\n fileCount: paths.length,\n outDir,\n });\n\n return { manifest, outDir, totalFiles, reportPath, passMs };\n}\n"]}