@bitcobblers/wod-wiki-tools 0.50.2188 → 0.50.2190

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 (615) hide show
  1. package/dist/bin/wod.cjs +3 -47
  2. package/dist/bin/wod.cjs.map +1 -1
  3. package/dist/bin/wod.mjs +3 -3
  4. package/dist/{chunk-DGVIILUP.mjs → chunk-4TW3XOPT.mjs} +3 -3
  5. package/dist/chunk-4TW3XOPT.mjs.map +1 -0
  6. package/dist/{chunk-MKGVKC2X.mjs → chunk-L5S7PXAB.mjs} +3 -46
  7. package/dist/chunk-L5S7PXAB.mjs.map +1 -0
  8. package/dist/{chunk-BJCJ5EKB.mjs → chunk-UQN4UFJO.mjs} +6 -6
  9. package/dist/{chunk-BJCJ5EKB.mjs.map → chunk-UQN4UFJO.mjs.map} +1 -1
  10. package/dist/{compiler-Z6VNF53G.mjs → compiler-TOM2S2RL.mjs} +3 -3
  11. package/dist/{compiler-Z6VNF53G.mjs.map → compiler-TOM2S2RL.mjs.map} +1 -1
  12. package/dist/index.cjs +3 -47
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.mjs +3 -3
  15. package/dist/{scaffoldFeed-3XWNVDZV.mjs → scaffoldFeed-E3JXLYUB.mjs} +3 -3
  16. package/dist/{scaffoldFeed-3XWNVDZV.mjs.map → scaffoldFeed-E3JXLYUB.mjs.map} +1 -1
  17. package/dist/web/playground/assets/feedSync.worker-ftP9nOAl.js +17 -0
  18. package/dist/web/playground/assets/main-BSr3yVW4.css +2 -0
  19. package/dist/web/playground/assets/main-CDz0sO7m.js +499 -0
  20. package/dist/web/playground/assets/{statementBuilderFlow-xYDgQNpi.js → statementBuilderFlow-B-cSEEVk.js} +2 -2
  21. package/dist/web/playground/assets/{vendor-COQA-faA.js → vendor-BiwvmytJ.js} +62 -62
  22. package/dist/web/{server/assets/vendor-codemirror-CWvjmVZZ.js → playground/assets/vendor-codemirror-B461LMkB.js} +6 -6
  23. package/dist/web/playground/index.html +4 -4
  24. package/dist/web/playground/seed/core/chunks/{canvas.5ef99fca.json → canvas.244155fb.json} +1 -1
  25. package/dist/web/playground/seed/core/chunks/{dashboards.fe16efb9.json → dashboards.0543e87b.json} +1 -1
  26. package/dist/web/playground/seed/core/chunks/{efforts.1e9be048.json → efforts.2dcc6b6b.json} +1 -1
  27. package/dist/web/playground/seed/core/chunks/{equipment.01353167.json → equipment.59aa6ef7.json} +1 -1
  28. package/dist/web/playground/seed/core/indexes/notebooks/canvas.json +180 -180
  29. package/dist/web/playground/seed/core/indexes/notebooks/dashboards.json +16 -16
  30. package/dist/web/playground/seed/core/indexes/notebooks/efforts.json +326 -326
  31. package/dist/web/playground/seed/core/indexes/notebooks/equipment.json +50 -50
  32. package/dist/web/playground/seed/core/manifest.json +27 -27
  33. package/dist/web/playground/seed/core/markdown/canvas/ai-first/README.json +1 -1
  34. package/dist/web/playground/seed/core/markdown/canvas/guide/README.json +4 -4
  35. package/dist/web/playground/seed/core/markdown/canvas/guide/clock.json +1 -1
  36. package/dist/web/playground/seed/core/markdown/canvas/guide/dashboards.json +2 -2
  37. package/dist/web/playground/seed/core/markdown/canvas/guide/metrics-summaries.json +2 -2
  38. package/dist/web/playground/seed/core/markdown/canvas/guide/metrics.json +12 -12
  39. package/dist/web/playground/seed/core/markdown/canvas/guide/protocols.json +20 -20
  40. package/dist/web/playground/seed/core/markdown/canvas/guide/sessions.json +33 -33
  41. package/dist/web/playground/seed/core/markdown/canvas/guide/start.json +11 -11
  42. package/dist/web/playground/seed/core/markdown/canvas/guide/structure.json +25 -25
  43. package/dist/web/playground/seed/core/markdown/canvas/guide/wql.json +5 -5
  44. package/dist/web/playground/seed/core/markdown/canvas/home/sample-script.json +4 -4
  45. package/dist/web/playground/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  46. package/dist/web/playground/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  47. package/dist/web/playground/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  48. package/dist/web/playground/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  49. package/dist/web/playground/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  50. package/dist/web/playground/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  51. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  52. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-full-session.json +10 -10
  53. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  54. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  55. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-swimming.json +5 -5
  56. package/dist/web/playground/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  57. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
  58. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  59. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  60. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  61. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-3.json +3 -3
  62. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  63. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  64. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  65. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  66. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  67. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  68. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  69. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  70. package/dist/web/playground/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  71. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  72. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  73. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  74. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-4.json +5 -5
  75. package/dist/web/playground/seed/core/markdown/canvas/syntax/effort-notes.json +5 -5
  76. package/dist/web/playground/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
  77. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  78. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  79. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  80. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  81. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  82. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  83. package/dist/web/playground/seed/core/markdown/canvas/syntax/measurements.json +7 -7
  84. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  85. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  86. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  87. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-4.json +6 -6
  88. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  89. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-sections.json +10 -10
  90. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  91. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  92. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  93. package/dist/web/playground/seed/core/markdown/canvas/syntax/named-groups.json +6 -6
  94. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  95. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  96. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  97. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  98. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  99. package/dist/web/playground/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  100. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  101. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  102. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  103. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  104. package/dist/web/playground/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  105. package/dist/web/playground/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  106. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  107. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  108. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-3.json +4 -4
  109. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  110. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  111. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  112. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
  113. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
  114. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
  115. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
  116. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
  117. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
  118. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
  119. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
  120. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
  121. package/dist/web/playground/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
  122. package/dist/web/playground/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
  123. package/dist/web/playground/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
  124. package/dist/web/playground/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
  125. package/dist/web/playground/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
  126. package/dist/web/playground/seed/core/markdown/dashboards/training-block-review.json +11 -11
  127. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  128. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  129. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  130. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  131. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  132. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  133. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  134. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  135. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  136. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  137. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  138. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  139. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  140. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  141. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  142. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  143. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  144. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  145. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  146. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  147. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  148. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  149. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  150. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  151. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  152. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  153. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  154. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  155. package/dist/web/playground/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  156. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  157. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  158. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  159. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  160. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  161. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  162. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  163. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  164. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  165. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  166. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  167. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  168. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  169. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  170. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  171. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  172. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  173. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  174. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  175. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  176. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  177. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  178. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  179. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  180. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  181. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  182. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  183. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  184. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  185. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  186. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  187. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  188. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  189. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  190. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  191. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  192. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  193. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  194. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  195. package/dist/web/playground/seed/core/markdown/efforts/recovery/rest.json +1 -1
  196. package/dist/web/playground/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  197. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  198. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  199. package/dist/web/playground/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  200. package/dist/web/playground/seed/core/markdown/efforts/running/backward-running.json +1 -1
  201. package/dist/web/playground/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  202. package/dist/web/playground/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  203. package/dist/web/playground/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  204. package/dist/web/playground/seed/core/markdown/efforts/snatch.json +2 -2
  205. package/dist/web/playground/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  206. package/dist/web/playground/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  207. package/dist/web/playground/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  208. package/dist/web/playground/seed/core/markdown/efforts/strength/carioca.json +1 -1
  209. package/dist/web/playground/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  210. package/dist/web/playground/seed/core/markdown/efforts/strength/cluster.json +1 -1
  211. package/dist/web/playground/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  212. package/dist/web/playground/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  213. package/dist/web/playground/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  214. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  215. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  216. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  217. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  218. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  219. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  220. package/dist/web/playground/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  221. package/dist/web/playground/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  222. package/dist/web/playground/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  223. package/dist/web/playground/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  224. package/dist/web/playground/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  225. package/dist/web/playground/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  226. package/dist/web/playground/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  227. package/dist/web/playground/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  228. package/dist/web/playground/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  229. package/dist/web/playground/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  230. package/dist/web/playground/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  231. package/dist/web/playground/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  232. package/dist/web/playground/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  233. package/dist/web/playground/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  234. package/dist/web/playground/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  235. package/dist/web/playground/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  236. package/dist/web/playground/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  237. package/dist/web/playground/seed/core/markdown/efforts/strength/push-press.json +1 -1
  238. package/dist/web/playground/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  239. package/dist/web/playground/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  240. package/dist/web/playground/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  241. package/dist/web/playground/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  242. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  243. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  244. package/dist/web/playground/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  245. package/dist/web/playground/seed/core/markdown/efforts/strength/thruster.json +1 -1
  246. package/dist/web/playground/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  247. package/dist/web/playground/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  248. package/dist/web/playground/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  249. package/dist/web/playground/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  250. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  251. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  252. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  253. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  254. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  255. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  256. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  257. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  258. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  259. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  260. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  261. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  262. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  263. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  264. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  265. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  266. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  267. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  268. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  269. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  270. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  271. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  272. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  273. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  274. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  275. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  276. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  277. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  278. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  279. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  280. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  281. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  282. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  283. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  284. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  285. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  286. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  287. package/dist/web/playground/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  288. package/dist/web/playground/seed/core/markdown/equipment/air-bike.json +1 -1
  289. package/dist/web/playground/seed/core/markdown/equipment/barbell.json +1 -1
  290. package/dist/web/playground/seed/core/markdown/equipment/bench.json +1 -1
  291. package/dist/web/playground/seed/core/markdown/equipment/bike-erg.json +1 -1
  292. package/dist/web/playground/seed/core/markdown/equipment/climbing-rope.json +1 -1
  293. package/dist/web/playground/seed/core/markdown/equipment/clubs.json +1 -1
  294. package/dist/web/playground/seed/core/markdown/equipment/dumbbell.json +1 -1
  295. package/dist/web/playground/seed/core/markdown/equipment/ghd.json +1 -1
  296. package/dist/web/playground/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  297. package/dist/web/playground/seed/core/markdown/equipment/jump-rope.json +1 -1
  298. package/dist/web/playground/seed/core/markdown/equipment/kettlebell.json +1 -1
  299. package/dist/web/playground/seed/core/markdown/equipment/macebell.json +1 -1
  300. package/dist/web/playground/seed/core/markdown/equipment/medicine-ball.json +1 -1
  301. package/dist/web/playground/seed/core/markdown/equipment/parallettes.json +1 -1
  302. package/dist/web/playground/seed/core/markdown/equipment/plyo-box.json +1 -1
  303. package/dist/web/playground/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  304. package/dist/web/playground/seed/core/markdown/equipment/rower.json +1 -1
  305. package/dist/web/playground/seed/core/markdown/equipment/sandbag.json +1 -1
  306. package/dist/web/playground/seed/core/markdown/equipment/ski-erg.json +1 -1
  307. package/dist/web/playground/seed/core/markdown/equipment/slam-ball.json +1 -1
  308. package/dist/web/playground/seed/core/markdown/equipment/sled.json +1 -1
  309. package/dist/web/playground/seed/core/markdown/equipment/sledgehammer.json +1 -1
  310. package/dist/web/playground/seed/core/markdown/equipment/weight-vest.json +1 -1
  311. package/dist/web/playground/seed/core/report.html +13 -13
  312. package/dist/web/server/assets/feedSync.worker-ftP9nOAl.js +17 -0
  313. package/dist/web/server/assets/main-BSr3yVW4.css +2 -0
  314. package/dist/web/server/assets/main-Dpu5LAEU.js +499 -0
  315. package/dist/web/server/assets/{statementBuilderFlow-OSwfSnpF.js → statementBuilderFlow-DV-yv1de.js} +2 -2
  316. package/dist/web/server/assets/{vendor-COQA-faA.js → vendor-BiwvmytJ.js} +62 -62
  317. package/dist/web/{playground/assets/vendor-codemirror-CWvjmVZZ.js → server/assets/vendor-codemirror-B461LMkB.js} +6 -6
  318. package/dist/web/server/index.html +4 -4
  319. package/dist/web/server/seed/core/chunks/{canvas.5ef99fca.json → canvas.244155fb.json} +1 -1
  320. package/dist/web/server/seed/core/chunks/{dashboards.fe16efb9.json → dashboards.0543e87b.json} +1 -1
  321. package/dist/web/server/seed/core/chunks/{efforts.1e9be048.json → efforts.2dcc6b6b.json} +1 -1
  322. package/dist/web/server/seed/core/chunks/{equipment.01353167.json → equipment.59aa6ef7.json} +1 -1
  323. package/dist/web/server/seed/core/indexes/notebooks/canvas.json +180 -180
  324. package/dist/web/server/seed/core/indexes/notebooks/dashboards.json +16 -16
  325. package/dist/web/server/seed/core/indexes/notebooks/efforts.json +326 -326
  326. package/dist/web/server/seed/core/indexes/notebooks/equipment.json +50 -50
  327. package/dist/web/server/seed/core/manifest.json +27 -27
  328. package/dist/web/server/seed/core/markdown/canvas/ai-first/README.json +1 -1
  329. package/dist/web/server/seed/core/markdown/canvas/guide/README.json +4 -4
  330. package/dist/web/server/seed/core/markdown/canvas/guide/clock.json +1 -1
  331. package/dist/web/server/seed/core/markdown/canvas/guide/dashboards.json +2 -2
  332. package/dist/web/server/seed/core/markdown/canvas/guide/metrics-summaries.json +2 -2
  333. package/dist/web/server/seed/core/markdown/canvas/guide/metrics.json +12 -12
  334. package/dist/web/server/seed/core/markdown/canvas/guide/protocols.json +20 -20
  335. package/dist/web/server/seed/core/markdown/canvas/guide/sessions.json +33 -33
  336. package/dist/web/server/seed/core/markdown/canvas/guide/start.json +11 -11
  337. package/dist/web/server/seed/core/markdown/canvas/guide/structure.json +25 -25
  338. package/dist/web/server/seed/core/markdown/canvas/guide/wql.json +5 -5
  339. package/dist/web/server/seed/core/markdown/canvas/home/sample-script.json +4 -4
  340. package/dist/web/server/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  341. package/dist/web/server/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  342. package/dist/web/server/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  343. package/dist/web/server/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  344. package/dist/web/server/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  345. package/dist/web/server/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  346. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  347. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-full-session.json +10 -10
  348. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  349. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  350. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-swimming.json +5 -5
  351. package/dist/web/server/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  352. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
  353. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  354. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  355. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  356. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-3.json +3 -3
  357. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  358. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  359. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  360. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  361. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  362. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  363. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  364. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  365. package/dist/web/server/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  366. package/dist/web/server/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  367. package/dist/web/server/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  368. package/dist/web/server/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  369. package/dist/web/server/seed/core/markdown/canvas/syntax/document-4.json +5 -5
  370. package/dist/web/server/seed/core/markdown/canvas/syntax/effort-notes.json +5 -5
  371. package/dist/web/server/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
  372. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  373. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  374. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  375. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  376. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  377. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  378. package/dist/web/server/seed/core/markdown/canvas/syntax/measurements.json +7 -7
  379. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  380. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  381. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  382. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-4.json +6 -6
  383. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  384. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-sections.json +10 -10
  385. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  386. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  387. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  388. package/dist/web/server/seed/core/markdown/canvas/syntax/named-groups.json +6 -6
  389. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  390. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  391. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  392. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  393. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  394. package/dist/web/server/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  395. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  396. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  397. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  398. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  399. package/dist/web/server/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  400. package/dist/web/server/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  401. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  402. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  403. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-3.json +4 -4
  404. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  405. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  406. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  407. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
  408. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
  409. package/dist/web/server/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
  410. package/dist/web/server/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
  411. package/dist/web/server/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
  412. package/dist/web/server/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
  413. package/dist/web/server/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
  414. package/dist/web/server/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
  415. package/dist/web/server/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
  416. package/dist/web/server/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
  417. package/dist/web/server/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
  418. package/dist/web/server/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
  419. package/dist/web/server/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
  420. package/dist/web/server/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
  421. package/dist/web/server/seed/core/markdown/dashboards/training-block-review.json +11 -11
  422. package/dist/web/server/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  423. package/dist/web/server/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  424. package/dist/web/server/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  425. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  426. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  427. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  428. package/dist/web/server/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  429. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  430. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  431. package/dist/web/server/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  432. package/dist/web/server/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  433. package/dist/web/server/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  434. package/dist/web/server/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  435. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  436. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  437. package/dist/web/server/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  438. package/dist/web/server/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  439. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  440. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  441. package/dist/web/server/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  442. package/dist/web/server/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  443. package/dist/web/server/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  444. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  445. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  446. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  447. package/dist/web/server/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  448. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  449. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  450. package/dist/web/server/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  451. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  452. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  453. package/dist/web/server/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  454. package/dist/web/server/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  455. package/dist/web/server/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  456. package/dist/web/server/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  457. package/dist/web/server/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  458. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  459. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  460. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  461. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  462. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  463. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  464. package/dist/web/server/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  465. package/dist/web/server/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  466. package/dist/web/server/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  467. package/dist/web/server/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  468. package/dist/web/server/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  469. package/dist/web/server/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  470. package/dist/web/server/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  471. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  472. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  473. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  474. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  475. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  476. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  477. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  478. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  479. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  480. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  481. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  482. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  483. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  484. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  485. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  486. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  487. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  488. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  489. package/dist/web/server/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  490. package/dist/web/server/seed/core/markdown/efforts/recovery/rest.json +1 -1
  491. package/dist/web/server/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  492. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  493. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  494. package/dist/web/server/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  495. package/dist/web/server/seed/core/markdown/efforts/running/backward-running.json +1 -1
  496. package/dist/web/server/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  497. package/dist/web/server/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  498. package/dist/web/server/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  499. package/dist/web/server/seed/core/markdown/efforts/snatch.json +2 -2
  500. package/dist/web/server/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  501. package/dist/web/server/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  502. package/dist/web/server/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  503. package/dist/web/server/seed/core/markdown/efforts/strength/carioca.json +1 -1
  504. package/dist/web/server/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  505. package/dist/web/server/seed/core/markdown/efforts/strength/cluster.json +1 -1
  506. package/dist/web/server/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  507. package/dist/web/server/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  508. package/dist/web/server/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  509. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  510. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  511. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  512. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  513. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  514. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  515. package/dist/web/server/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  516. package/dist/web/server/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  517. package/dist/web/server/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  518. package/dist/web/server/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  519. package/dist/web/server/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  520. package/dist/web/server/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  521. package/dist/web/server/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  522. package/dist/web/server/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  523. package/dist/web/server/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  524. package/dist/web/server/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  525. package/dist/web/server/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  526. package/dist/web/server/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  527. package/dist/web/server/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  528. package/dist/web/server/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  529. package/dist/web/server/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  530. package/dist/web/server/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  531. package/dist/web/server/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  532. package/dist/web/server/seed/core/markdown/efforts/strength/push-press.json +1 -1
  533. package/dist/web/server/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  534. package/dist/web/server/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  535. package/dist/web/server/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  536. package/dist/web/server/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  537. package/dist/web/server/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  538. package/dist/web/server/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  539. package/dist/web/server/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  540. package/dist/web/server/seed/core/markdown/efforts/strength/thruster.json +1 -1
  541. package/dist/web/server/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  542. package/dist/web/server/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  543. package/dist/web/server/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  544. package/dist/web/server/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  545. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  546. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  547. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  548. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  549. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  550. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  551. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  552. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  553. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  554. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  555. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  556. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  557. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  558. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  559. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  560. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  561. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  562. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  563. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  564. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  565. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  566. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  567. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  568. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  569. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  570. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  571. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  572. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  573. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  574. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  575. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  576. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  577. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  578. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  579. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  580. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  581. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  582. package/dist/web/server/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  583. package/dist/web/server/seed/core/markdown/equipment/air-bike.json +1 -1
  584. package/dist/web/server/seed/core/markdown/equipment/barbell.json +1 -1
  585. package/dist/web/server/seed/core/markdown/equipment/bench.json +1 -1
  586. package/dist/web/server/seed/core/markdown/equipment/bike-erg.json +1 -1
  587. package/dist/web/server/seed/core/markdown/equipment/climbing-rope.json +1 -1
  588. package/dist/web/server/seed/core/markdown/equipment/clubs.json +1 -1
  589. package/dist/web/server/seed/core/markdown/equipment/dumbbell.json +1 -1
  590. package/dist/web/server/seed/core/markdown/equipment/ghd.json +1 -1
  591. package/dist/web/server/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  592. package/dist/web/server/seed/core/markdown/equipment/jump-rope.json +1 -1
  593. package/dist/web/server/seed/core/markdown/equipment/kettlebell.json +1 -1
  594. package/dist/web/server/seed/core/markdown/equipment/macebell.json +1 -1
  595. package/dist/web/server/seed/core/markdown/equipment/medicine-ball.json +1 -1
  596. package/dist/web/server/seed/core/markdown/equipment/parallettes.json +1 -1
  597. package/dist/web/server/seed/core/markdown/equipment/plyo-box.json +1 -1
  598. package/dist/web/server/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  599. package/dist/web/server/seed/core/markdown/equipment/rower.json +1 -1
  600. package/dist/web/server/seed/core/markdown/equipment/sandbag.json +1 -1
  601. package/dist/web/server/seed/core/markdown/equipment/ski-erg.json +1 -1
  602. package/dist/web/server/seed/core/markdown/equipment/slam-ball.json +1 -1
  603. package/dist/web/server/seed/core/markdown/equipment/sled.json +1 -1
  604. package/dist/web/server/seed/core/markdown/equipment/sledgehammer.json +1 -1
  605. package/dist/web/server/seed/core/markdown/equipment/weight-vest.json +1 -1
  606. package/dist/web/server/seed/core/report.html +13 -13
  607. package/package.json +6 -6
  608. package/dist/chunk-DGVIILUP.mjs.map +0 -1
  609. package/dist/chunk-MKGVKC2X.mjs.map +0 -1
  610. package/dist/web/playground/assets/feedSync.worker-BSZcrZnS.js +0 -16
  611. package/dist/web/playground/assets/main--JBe2rOY.js +0 -494
  612. package/dist/web/playground/assets/main-BKOWKN1T.css +0 -2
  613. package/dist/web/server/assets/feedSync.worker-BSZcrZnS.js +0 -16
  614. package/dist/web/server/assets/main-BKOWKN1T.css +0 -2
  615. package/dist/web/server/assets/main-D0WMt_zZ.js +0 -494
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "8191ab0d-1911-5b57-a841-989d34368416",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "3626f1a0-5ac0-5f6b-b479-4ce716ab206d",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "4089fb14-36aa-5019-a98e-a2666cb42b36",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "bfe01d2f-d415-51b5-809e-5d786b54898f",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "eace3f75-7a60-5e59-a873-91e1317b9d79",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "829da3e1-5f20-53d4-8a54-cdb94db4c951",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "ced86efd-b1fc-50aa-b734-bf9501d52160",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "721e31d9-2b44-5d6d-959c-5473aefe808d",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "eb26361e-fd14-50e5-94dc-5b860051203d",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "9278cedb-7465-5085-8703-920cee21d84f",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "a1bfcd6f-74d0-52d8-8afd-108fd6b34d48",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "b724b3cd-e1eb-52aa-a8d9-cf48718b0068",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "5ffcaf13-95d6-5efb-84ce-168f60b8bf52",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "2a8fcae8-8e2f-5bd1-aa0e-6e0c6e577111",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "297503ce-a9a0-5fcf-9016-2b5820bd5b25",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "7d8d6ef9-22d6-5145-9d63-55f4ed0cd1df",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "71f9f6d5-fb47-596a-bca2-3c648bb8aad1",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "f991b73a-f466-59e5-b318-e2362953b635",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "4a4ab1ea-9510-5a11-b113-764b1d799d2c",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "87fb4da5-0bec-58b8-b969-9caf3a991c7e",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "3300c680-ceff-5020-8594-272f6d13739e",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "cf1e38ba-2ef4-57e8-ba5e-3e69c2ebfeb4",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "9c2dcbca-4ece-5198-9a30-54cd5020ec0a",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "9eabd205-7f75-5c5c-af83-a96b2fad8e48",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "83c1db35-42f3-5fd2-aabc-79450b6326ee",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "37619ae9-d203-5a1c-b7a1-49598febd056",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "bd36b2b4-30da-516b-9e9a-8084b995d602",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "52785555-85fd-55bb-b102-8b99648c7a99",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "fa15a47a-f3d1-59bb-a36d-2081d0c79f3c",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "e866df40-1523-56a0-a8d3-b16e3eccd7b6",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "59cf7f253019ab66687d5c55afb9bbd06588747c",
8
+ "commit": "9ee7872c0329bb5ca64101263b9af20a431d8b10",
9
9
  "uuid": "4684877b-8752-582d-a45c-fff8982e8a0d",
10
10
  "version": 1
11
11
  }
@@ -17,28 +17,28 @@
17
17
  <h1>Seed build report</h1>
18
18
  <h2>Version</h2>
19
19
  <dl>
20
- <dt>version</dt><dd>1 <code>59cf7f2-dirty</code> <strong style="color:#b45309">(dirty working tree — not reproducible from <code>59cf7f253019ab66687d5c55afb9bbd06588747c</code>)</strong></dd>
21
- <dt>commit</dt><dd><code>59cf7f253019ab66687d5c55afb9bbd06588747c</code></dd>
22
- <dt>built at</dt><dd>2026-11-01T13:49:05.782Z</dd>
20
+ <dt>version</dt><dd>1 <code>9ee7872-dirty</code> <strong style="color:#b45309">(dirty working tree — not reproducible from <code>9ee7872c0329bb5ca64101263b9af20a431d8b10</code>)</strong></dd>
21
+ <dt>commit</dt><dd><code>9ee7872c0329bb5ca64101263b9af20a431d8b10</code></dd>
22
+ <dt>built at</dt><dd>2026-11-01T23:34:25.045Z</dd>
23
23
  <dt>schema</dt><dd>v9</dd>
24
24
  </dl>
25
25
  <h2>Benchmarks</h2>
26
26
  <dl>
27
- <dt>total</dt><dd>2327 ms</dd>
28
- <dt>corpus scan + partition</dt><dd>19 ms (278 files)</dd>
29
- <dt>block-index derivation</dt><dd>817 ms</dd>
30
- <dt>block syntax gate</dt><dd>25 ms</dd>
31
- <dt>block-efforts derivation</dt><dd>108 ms</dd>
32
- <dt>chunk writes</dt><dd>1256 ms</dd>
27
+ <dt>total</dt><dd>1734 ms</dd>
28
+ <dt>corpus scan + partition</dt><dd>22 ms (278 files)</dd>
29
+ <dt>block-index derivation</dt><dd>575 ms</dd>
30
+ <dt>block syntax gate</dt><dd>24 ms</dd>
31
+ <dt>block-efforts derivation</dt><dd>118 ms</dd>
32
+ <dt>chunk writes</dt><dd>860 ms</dd>
33
33
  </dl>
34
34
  <h2>Chunks (4, 442 KB total)</h2>
35
35
  <table>
36
36
  <thead><tr><th>id</th><th>kind</th><th>rows</th><th>size</th><th>sha256</th></tr></thead>
37
37
  <tbody>
38
- <tr><td>canvas</td><td>notes</td><td>88</td><td>303.1 KB</td><td><code>5ef99fca</code></td></tr>
39
- <tr><td>dashboards</td><td>notes</td><td>6</td><td>37.1 KB</td><td><code>fe16efb9</code></td></tr>
40
- <tr><td>efforts</td><td>notes</td><td>161</td><td>86.5 KB</td><td><code>1e9be048</code></td></tr>
41
- <tr><td>equipment</td><td>notes</td><td>23</td><td>15.2 KB</td><td><code>01353167</code></td></tr>
38
+ <tr><td>canvas</td><td>notes</td><td>88</td><td>303.1 KB</td><td><code>244155fb</code></td></tr>
39
+ <tr><td>dashboards</td><td>notes</td><td>6</td><td>37.1 KB</td><td><code>0543e87b</code></td></tr>
40
+ <tr><td>efforts</td><td>notes</td><td>161</td><td>86.5 KB</td><td><code>2dcc6b6b</code></td></tr>
41
+ <tr><td>equipment</td><td>notes</td><td>23</td><td>15.2 KB</td><td><code>59aa6ef7</code></td></tr>
42
42
  </tbody>
43
43
  </table>
44
44
  </body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitcobblers/wod-wiki-tools",
3
- "version": "0.50.2188",
3
+ "version": "0.50.2190",
4
4
  "description": "CLI tools and server runner for Whiteboard Language & WQL engine",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -29,11 +29,11 @@
29
29
  "access": "public"
30
30
  },
31
31
  "dependencies": {
32
- "@bitcobblers/wod-wiki-core": "^0.50.2188",
33
- "@bitcobblers/wod-wiki-engine": "^0.50.2188",
34
- "@bitcobblers/wod-wiki-lang": "^0.50.2188",
35
- "@bitcobblers/wod-wiki-storage": "^0.50.2188",
36
- "@bitcobblers/wod-wiki-wql": "^0.50.2188",
32
+ "@bitcobblers/wod-wiki-core": "^0.50.2190",
33
+ "@bitcobblers/wod-wiki-engine": "^0.50.2190",
34
+ "@bitcobblers/wod-wiki-lang": "^0.50.2190",
35
+ "@bitcobblers/wod-wiki-storage": "^0.50.2190",
36
+ "@bitcobblers/wod-wiki-wql": "^0.50.2190",
37
37
  "@libsql/client": "^0.18.0",
38
38
  "fake-indexeddb": "^6.2.5"
39
39
  },
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/version.ts"],"names":[],"mappings":";;;;;;;AAIO,IAAM,OAAA,GAAU","file":"chunk-DGVIILUP.mjs","sourcesContent":["/**\n * Auto-generated build version metadata.\n * Do not edit directly; updated by scripts/stamp-version.ts\n */\nexport const VERSION = '0.50.2188';\nexport const GIT_SHA = '59cf7f2';\nexport const BUILD_TIME = '2026-11-01T13:47:18.479Z';\nexport const SEMVER = {\n version: '0.50.2188',\n gitSha: '59cf7f2',\n buildTime: '2026-11-01T13:47:18.479Z',\n} as const;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/seedbuild/contract.ts","../src/seedbuild/filename.ts","../src/seedbuild/git-version.ts","../src/seedbuild/report.ts","../src/seedbuild/frontmatter.ts","../src/seedbuild/validation.ts","../src/seedbuild/compiler.ts"],"names":["wod_wiki_engine_star","join","execSync","section","writeFileSync"],"mappings":"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","file":"chunk-MKGVKC2X.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","/**\n * Build report — a static HTML benchmark page for each seed build\n * (`dist/report.html`). Per-chunk sizes, row counts, pass timings, and the\n * git version stamp, so CI and contributors see build health at a glance.\n * Deliberately dependency-free (one string template + a file write).\n */\nimport { writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { SeedManifest } from './contract';\n\nexport interface BuildReportData {\n manifest: SeedManifest;\n /** Wall-clock ms for the full build. */\n totalMs: number;\n /** Per-pass timings (ms): corpus scan, block-index derivation, effort-row derivation, chunk writes. */\n passMs: { scan: number; blockIndex: number; parseGate: number; blockEfforts: number; write: number };\n /** Number of corpus markdown files. */\n fileCount: number;\n outDir: string;\n}\n\nfunction escapeHtml(s: string): string {\n return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\n}\n\nfunction rowHtml(c: SeedManifest['chunks'][number]): string {\n const kind = c.kind ?? 'notes';\n return `<tr><td>${escapeHtml(c.id)}</td><td>${kind}</td><td>${c.count}</td><td>${(c.bytes / 1024).toFixed(1)} KB</td><td><code>${c.sha256.slice(0, 8)}</code></td></tr>`;\n}\n\nexport function writeBuildReport(outDir: string, data: BuildReportData): string {\n const { manifest, totalMs, passMs, fileCount } = data;\n const totalBytes = manifest.chunks.reduce((s, c) => s + c.bytes, 0);\n const dirtyBadge = manifest.dirty\n ? ' <strong style=\"color:#b45309\">(dirty working tree — not reproducible from <code>' + escapeHtml(manifest.commit ?? '') + '</code>)</strong>'\n : '';\n const html = `<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\" />\n<title>Seed build report</title>\n<style>\n body { font-family: system-ui, sans-serif; max-width: 960px; margin: 2rem auto; padding: 0 1rem; color: #1f2937; }\n h1 { font-size: 1.4rem; } h2 { font-size: 1.1rem; margin-top: 2rem; }\n table { border-collapse: collapse; width: 100%; font-size: 0.9rem; }\n th, td { text-align: left; padding: 0.3rem 0.6rem; border-bottom: 1px solid #e5e7eb; }\n code { font-size: 0.85em; }\n dl { display: grid; grid-template-columns: max-content 1fr; gap: 0.2rem 1rem; font-size: 0.95rem; }\n dt { font-weight: 600; }\n</style>\n</head>\n<body>\n<h1>Seed build report</h1>\n<h2>Version</h2>\n<dl>\n <dt>version</dt><dd>${manifest.version} <code>${escapeHtml(manifest.versionLabel ?? '')}</code>${dirtyBadge}</dd>\n <dt>commit</dt><dd><code>${escapeHtml(manifest.commit ?? 'unknown')}</code></dd>\n <dt>built at</dt><dd>${escapeHtml(manifest.builtAt)}</dd>\n <dt>schema</dt><dd>v${manifest.schema}</dd>\n</dl>\n<h2>Benchmarks</h2>\n<dl>\n <dt>total</dt><dd>${totalMs} ms</dd>\n <dt>corpus scan + partition</dt><dd>${passMs.scan} ms (${fileCount} files)</dd>\n <dt>block-index derivation</dt><dd>${passMs.blockIndex} ms</dd>\n <dt>block syntax gate</dt><dd>${passMs.parseGate} ms</dd>\n <dt>block-efforts derivation</dt><dd>${passMs.blockEfforts} ms</dd>\n <dt>chunk writes</dt><dd>${passMs.write} ms</dd>\n</dl>\n<h2>Chunks (${manifest.chunks.length}, ${(totalBytes / 1024).toFixed(0)} KB total)</h2>\n<table>\n<thead><tr><th>id</th><th>kind</th><th>rows</th><th>size</th><th>sha256</th></tr></thead>\n<tbody>\n${manifest.chunks.map(rowHtml).join('\\n')}\n</tbody>\n</table>\n</body>\n</html>\n`;\n const file = join(outDir, 'report.html');\n writeFileSync(file, html, 'utf8');\n return file;\n}\n","/**\n * Frontmatter parser — port of wod-wiki's apps/playground/src/lib/frontmatter.ts\n * (parseFrontmatter/getScalar/getList only; the editor-only helpers\n * (LinkWidget, YouTube, serialize) stay in the app).\n *\n * ponytail: semantics must match the app's parser exactly — the seed\n * compiler and the app runtime derive frontmatter from the same corpus.\n * Upgrade path: publish the parser in @bitcobblers/wod-wiki-core and import\n * from both sides.\n */\n\nexport interface ParsedFrontmatter {\n meta: Record<string, string | number | string[]>\n body: string\n}\n\n/** Leading `---` … `---` block; body is everything after the closing delimiter. */\nconst FRONTMATTER_RE = /^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n?/;\n\n/** Strip matched wrapping quotes: `\"x\"` / `'x'` → `x`; mismatched quotes are kept.\n * Double-quoted values also collapse the serializer's escapes (`\\\\\"`, `\\\\\\\\`). */\nfunction unquote(value: string): string {\n return value.replace(/^(['\"])(.*)\\1$/, (_match, quote: string, inner: string) =>\n quote === '\"' ? inner.replace(/\\\\([\"\\\\])/g, '$1') : inner,\n );\n}\n\n/**\n * Parse the leading YAML frontmatter block of a markdown string.\n *\n * Semantics (mirrors the app):\n * - Scalar `key: value` (key `/^[A-Za-z][\\w.-]*$/`, dots allow flat nested\n * keys like `book.title`): wrapping quotes stripped; bare numeric strings\n * become `number`, quoted scalars always stay strings.\n * - `key:` with empty value followed by indented `- item` lines → `string[]`.\n * - `key:` with empty value and no list items → `''`.\n * - Inline `key: [a, b]` stays a plain scalar string.\n */\nexport function parseFrontmatter(raw: string): ParsedFrontmatter {\n const match = raw.match(FRONTMATTER_RE);\n if (!match) return { meta: {}, body: raw };\n return { meta: parseMetaLines(match[1].split(/\\r?\\n/)), body: raw.slice(match[0].length) };\n}\n\nfunction parseMetaLines(lines: string[]): ParsedFrontmatter['meta'] {\n const meta: ParsedFrontmatter['meta'] = {};\n\n for (let i = 0; i < lines.length; i++) {\n const keyMatch = lines[i].match(/^([A-Za-z][\\w.-]*)\\s*:(.*)$/);\n if (!keyMatch) continue; // indented/nested/list lines are not top-level keys\n\n const key = keyMatch[1];\n const rawVal = keyMatch[2].trim();\n\n if (rawVal === '') {\n const items: string[] = [];\n while (i + 1 < lines.length) {\n const itemMatch = lines[i + 1].match(/^\\s+-\\s+(.+)$/);\n if (!itemMatch) break;\n items.push(itemMatch[1].trim());\n i++;\n }\n meta[key] = items.length > 0 ? items : '';\n } else {\n const wasQuoted = /^(['\"])(.*)\\1$/.test(rawVal);\n const value = unquote(rawVal);\n const num = Number(value);\n meta[key] = !wasQuoted && value !== '' && !isNaN(num) ? num : value;\n }\n }\n\n return meta;\n}\n\n/** Scalar value at `key`, or `undefined` when absent or a list. */\nexport function getScalar(\n meta: ParsedFrontmatter['meta'],\n key: string,\n): string | number | undefined {\n const value = meta[key];\n return typeof value === 'string' || typeof value === 'number' ? value : undefined;\n}\n\n/** List value at `key`, or `[]` when absent or a scalar. */\nexport function getList(meta: ParsedFrontmatter['meta'], key: string): string[] {\n const value = meta[key];\n return Array.isArray(value) ? value : [];\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, reconcileNoteBlocks } from '@bitcobblers/wod-wiki-core';\nimport type { BlockEffort, BlockEquipment, BlockIndexRow } from '@bitcobblers/wod-wiki-storage';\nimport {\n buildDashboardDocument,\n isDashboardWidgetType,\n parseDashboardNote,\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 const parsed = parseQuery(widget.body);\n if (parsed.error !== undefined) problems.push(`${where}: WQL parse error: ${parsed.error}`);\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\nexport function compileSeedRow(path: string, content: string, metadata: { routeId?: string; noteTitle?: string; sourceId?: string; createdAt?: number } = {}): 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 return { path, content, blocks, blockIndex, blockEfforts: [], blockEquipment: [] };\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 compiled = compileSeedRow(p, content);\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\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"]}