@bitcobblers/wod-wiki-tools 0.44.2159 → 0.45.2166

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 (632) hide show
  1. package/dist/bin/wod.cjs +151 -153
  2. package/dist/bin/wod.cjs.map +1 -1
  3. package/dist/bin/wod.mjs +4 -4
  4. package/dist/{chunk-BQ6HTRH3.mjs → chunk-EAFF2GVB.mjs} +29 -38
  5. package/dist/chunk-EAFF2GVB.mjs.map +1 -0
  6. package/dist/{chunk-IWT7U3WX.mjs → chunk-F7IXIJ4I.mjs} +3 -3
  7. package/dist/{chunk-IWT7U3WX.mjs.map → chunk-F7IXIJ4I.mjs.map} +1 -1
  8. package/dist/{chunk-RWNL6APX.mjs → chunk-FSOBPDUC.mjs} +3 -3
  9. package/dist/{chunk-RWNL6APX.mjs.map → chunk-FSOBPDUC.mjs.map} +1 -1
  10. package/dist/{chunk-SOGZC3TL.mjs → chunk-O5ZCOUQE.mjs} +3 -3
  11. package/dist/chunk-O5ZCOUQE.mjs.map +1 -0
  12. package/dist/{chunk-LGEZVB44.mjs → chunk-PF5BTGWZ.mjs} +99 -92
  13. package/dist/chunk-PF5BTGWZ.mjs.map +1 -0
  14. package/dist/compiler-ZMG22VH4.mjs +9 -0
  15. package/dist/{compiler-V2BLOB2B.mjs.map → compiler-ZMG22VH4.mjs.map} +1 -1
  16. package/dist/index.cjs +151 -153
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +1 -3
  19. package/dist/index.d.ts +1 -3
  20. package/dist/index.mjs +5 -5
  21. package/dist/{scaffoldCatalog-WNAHHEL2.mjs → scaffoldFeed-UXH3L5HM.mjs} +29 -29
  22. package/dist/scaffoldFeed-UXH3L5HM.mjs.map +1 -0
  23. package/dist/{server-2DVBA35J.mjs → server-5XDT7ITA.mjs} +4 -4
  24. package/dist/{server-2DVBA35J.mjs.map → server-5XDT7ITA.mjs.map} +1 -1
  25. package/dist/web/playground/assets/feedSync.worker-CEbxagtY.js +16 -0
  26. package/dist/web/playground/assets/main-BKDG9P36.css +2 -0
  27. package/dist/web/playground/assets/main-DAHoAykp.js +491 -0
  28. package/dist/web/playground/assets/{statementBuilderFlow-CFMsgRLA.js → statementBuilderFlow-DHSfYrHi.js} +2 -2
  29. package/dist/web/playground/assets/{vendor-BmgUyVmX.js → vendor-DKhA8bPd.js} +59 -59
  30. package/dist/web/{server/assets/vendor-codemirror-CFcn3kQd.js → playground/assets/vendor-codemirror-CnY0iCTs.js} +2 -2
  31. package/dist/web/playground/index.html +5 -5
  32. package/dist/web/playground/seed/core/chunks/canvas.9ad327d4.json +1 -0
  33. package/dist/web/playground/seed/core/chunks/{dashboards.302c4388.json → dashboards.f4196444.json} +1 -1
  34. package/dist/web/playground/seed/core/chunks/{efforts.835c18aa.json → efforts.7f0d2160.json} +1 -1
  35. package/dist/web/playground/seed/core/chunks/{equipment.5091d784.json → equipment.e7531ab5.json} +1 -1
  36. package/dist/web/playground/seed/core/indexes/notebooks/canvas.json +174 -183
  37. package/dist/web/playground/seed/core/indexes/notebooks/dashboards.json +13 -13
  38. package/dist/web/playground/seed/core/indexes/notebooks/efforts.json +323 -323
  39. package/dist/web/playground/seed/core/indexes/notebooks/equipment.json +47 -47
  40. package/dist/web/playground/seed/core/manifest.json +570 -604
  41. package/dist/web/playground/seed/core/markdown/canvas/ai-first/README.json +1 -1
  42. package/dist/web/playground/seed/core/markdown/canvas/guide/README.json +9 -9
  43. package/dist/web/playground/seed/core/markdown/canvas/guide/clock.json +2 -2
  44. package/dist/web/playground/seed/core/markdown/canvas/guide/dashboards.json +11 -11
  45. package/dist/web/playground/seed/core/markdown/canvas/guide/metrics.json +59 -59
  46. package/dist/web/playground/seed/core/markdown/canvas/guide/protocols.json +95 -95
  47. package/dist/web/playground/seed/core/markdown/canvas/guide/sessions.json +131 -131
  48. package/dist/web/playground/seed/core/markdown/canvas/guide/start.json +53 -53
  49. package/dist/web/playground/seed/core/markdown/canvas/guide/structure.json +101 -101
  50. package/dist/web/playground/seed/core/markdown/canvas/guide/wql.json +39 -39
  51. package/dist/web/playground/seed/core/markdown/canvas/home/sample-script.json +4 -4
  52. package/dist/web/playground/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  53. package/dist/web/playground/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  54. package/dist/web/playground/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  55. package/dist/web/playground/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  56. package/dist/web/playground/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  57. package/dist/web/playground/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  58. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  59. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-full-session.json +9 -9
  60. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  61. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  62. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-swimming.json +3 -3
  63. package/dist/web/playground/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  64. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +8 -8
  65. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  66. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  67. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  68. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-3.json +2 -2
  69. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  70. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  71. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  72. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  73. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  74. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  75. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  76. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  77. package/dist/web/playground/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  78. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  79. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  80. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  81. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-4.json +4 -4
  82. package/dist/web/playground/seed/core/markdown/canvas/syntax/effort-notes.json +4 -4
  83. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  84. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  85. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  86. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  87. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  88. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  89. package/dist/web/playground/seed/core/markdown/canvas/syntax/measurements.json +4 -4
  90. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  91. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  92. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  93. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-4.json +5 -5
  94. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  95. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-sections.json +8 -8
  96. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  97. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  98. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  99. package/dist/web/playground/seed/core/markdown/canvas/syntax/named-groups.json +5 -5
  100. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  101. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  102. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  103. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  104. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  105. package/dist/web/playground/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  106. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  107. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  108. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  109. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  110. package/dist/web/playground/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  111. package/dist/web/playground/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  112. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  113. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  114. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-3.json +3 -3
  115. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  116. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  117. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  118. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
  119. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
  120. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
  121. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
  122. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
  123. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
  124. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
  125. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
  126. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
  127. package/dist/web/playground/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
  128. package/dist/web/playground/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
  129. package/dist/web/playground/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
  130. package/dist/web/playground/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
  131. package/dist/web/playground/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
  132. package/dist/web/playground/seed/core/markdown/dashboards/training-block-review.json +11 -11
  133. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  134. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  135. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  136. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  137. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  138. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  139. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  140. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  141. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  142. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  143. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  144. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  145. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  146. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  147. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  148. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  149. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  150. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  151. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  152. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  153. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  154. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  155. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  156. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  157. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  158. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  159. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  160. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  161. package/dist/web/playground/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  162. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  163. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  164. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  165. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  166. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  167. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  168. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  169. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  170. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  171. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  172. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  173. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  174. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  175. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  176. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  177. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  178. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  179. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  180. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  181. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  182. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  183. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  184. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  185. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  186. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  187. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  188. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  189. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  190. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  191. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  192. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  193. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  194. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  195. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  196. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  197. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  198. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  199. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  200. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  201. package/dist/web/playground/seed/core/markdown/efforts/recovery/rest.json +1 -1
  202. package/dist/web/playground/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  203. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  204. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  205. package/dist/web/playground/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  206. package/dist/web/playground/seed/core/markdown/efforts/running/backward-running.json +1 -1
  207. package/dist/web/playground/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  208. package/dist/web/playground/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  209. package/dist/web/playground/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  210. package/dist/web/playground/seed/core/markdown/efforts/snatch.json +2 -2
  211. package/dist/web/playground/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  212. package/dist/web/playground/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  213. package/dist/web/playground/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  214. package/dist/web/playground/seed/core/markdown/efforts/strength/carioca.json +1 -1
  215. package/dist/web/playground/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  216. package/dist/web/playground/seed/core/markdown/efforts/strength/cluster.json +1 -1
  217. package/dist/web/playground/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  218. package/dist/web/playground/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  219. package/dist/web/playground/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  220. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  221. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  222. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  223. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  224. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  225. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  226. package/dist/web/playground/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  227. package/dist/web/playground/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  228. package/dist/web/playground/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  229. package/dist/web/playground/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  230. package/dist/web/playground/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  231. package/dist/web/playground/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  232. package/dist/web/playground/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  233. package/dist/web/playground/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  234. package/dist/web/playground/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  235. package/dist/web/playground/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  236. package/dist/web/playground/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  237. package/dist/web/playground/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  238. package/dist/web/playground/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  239. package/dist/web/playground/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  240. package/dist/web/playground/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  241. package/dist/web/playground/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  242. package/dist/web/playground/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  243. package/dist/web/playground/seed/core/markdown/efforts/strength/push-press.json +1 -1
  244. package/dist/web/playground/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  245. package/dist/web/playground/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  246. package/dist/web/playground/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  247. package/dist/web/playground/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  248. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  249. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  250. package/dist/web/playground/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  251. package/dist/web/playground/seed/core/markdown/efforts/strength/thruster.json +1 -1
  252. package/dist/web/playground/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  253. package/dist/web/playground/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  254. package/dist/web/playground/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  255. package/dist/web/playground/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  256. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  257. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  258. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  259. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  260. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  261. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  262. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  263. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  264. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  265. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  266. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  267. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  268. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  269. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  270. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  271. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  272. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  273. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  274. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  275. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  276. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  277. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  278. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  279. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  280. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  281. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  282. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  283. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  284. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  285. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  286. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  287. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  288. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  289. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  290. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  291. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  292. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  293. package/dist/web/playground/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  294. package/dist/web/playground/seed/core/markdown/equipment/air-bike.json +1 -1
  295. package/dist/web/playground/seed/core/markdown/equipment/barbell.json +1 -1
  296. package/dist/web/playground/seed/core/markdown/equipment/bench.json +1 -1
  297. package/dist/web/playground/seed/core/markdown/equipment/bike-erg.json +1 -1
  298. package/dist/web/playground/seed/core/markdown/equipment/climbing-rope.json +1 -1
  299. package/dist/web/playground/seed/core/markdown/equipment/clubs.json +1 -1
  300. package/dist/web/playground/seed/core/markdown/equipment/dumbbell.json +1 -1
  301. package/dist/web/playground/seed/core/markdown/equipment/ghd.json +1 -1
  302. package/dist/web/playground/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  303. package/dist/web/playground/seed/core/markdown/equipment/jump-rope.json +1 -1
  304. package/dist/web/playground/seed/core/markdown/equipment/kettlebell.json +1 -1
  305. package/dist/web/playground/seed/core/markdown/equipment/macebell.json +1 -1
  306. package/dist/web/playground/seed/core/markdown/equipment/medicine-ball.json +1 -1
  307. package/dist/web/playground/seed/core/markdown/equipment/parallettes.json +1 -1
  308. package/dist/web/playground/seed/core/markdown/equipment/plyo-box.json +1 -1
  309. package/dist/web/playground/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  310. package/dist/web/playground/seed/core/markdown/equipment/rower.json +1 -1
  311. package/dist/web/playground/seed/core/markdown/equipment/sandbag.json +1 -1
  312. package/dist/web/playground/seed/core/markdown/equipment/ski-erg.json +1 -1
  313. package/dist/web/playground/seed/core/markdown/equipment/slam-ball.json +1 -1
  314. package/dist/web/playground/seed/core/markdown/equipment/sled.json +1 -1
  315. package/dist/web/playground/seed/core/markdown/equipment/sledgehammer.json +1 -1
  316. package/dist/web/playground/seed/core/markdown/equipment/weight-vest.json +1 -1
  317. package/dist/web/playground/seed/core/report.html +14 -15
  318. package/dist/web/server/assets/feedSync.worker-CEbxagtY.js +16 -0
  319. package/dist/web/server/assets/main-BKDG9P36.css +2 -0
  320. package/dist/web/server/assets/main-C_b1CczJ.js +491 -0
  321. package/dist/web/server/assets/{statementBuilderFlow-CQ3x0D5F.js → statementBuilderFlow-BPmNsGND.js} +2 -2
  322. package/dist/web/server/assets/{vendor-BmgUyVmX.js → vendor-DKhA8bPd.js} +59 -59
  323. package/dist/web/{playground/assets/vendor-codemirror-CFcn3kQd.js → server/assets/vendor-codemirror-CnY0iCTs.js} +2 -2
  324. package/dist/web/server/index.html +5 -5
  325. package/dist/web/server/seed/core/chunks/canvas.9ad327d4.json +1 -0
  326. package/dist/web/server/seed/core/chunks/{dashboards.302c4388.json → dashboards.f4196444.json} +1 -1
  327. package/dist/web/server/seed/core/chunks/{efforts.835c18aa.json → efforts.7f0d2160.json} +1 -1
  328. package/dist/web/server/seed/core/chunks/{equipment.5091d784.json → equipment.e7531ab5.json} +1 -1
  329. package/dist/web/server/seed/core/indexes/notebooks/canvas.json +174 -183
  330. package/dist/web/server/seed/core/indexes/notebooks/dashboards.json +13 -13
  331. package/dist/web/server/seed/core/indexes/notebooks/efforts.json +323 -323
  332. package/dist/web/server/seed/core/indexes/notebooks/equipment.json +47 -47
  333. package/dist/web/server/seed/core/manifest.json +570 -604
  334. package/dist/web/server/seed/core/markdown/canvas/ai-first/README.json +1 -1
  335. package/dist/web/server/seed/core/markdown/canvas/guide/README.json +9 -9
  336. package/dist/web/server/seed/core/markdown/canvas/guide/clock.json +2 -2
  337. package/dist/web/server/seed/core/markdown/canvas/guide/dashboards.json +11 -11
  338. package/dist/web/server/seed/core/markdown/canvas/guide/metrics.json +59 -59
  339. package/dist/web/server/seed/core/markdown/canvas/guide/protocols.json +95 -95
  340. package/dist/web/server/seed/core/markdown/canvas/guide/sessions.json +131 -131
  341. package/dist/web/server/seed/core/markdown/canvas/guide/start.json +53 -53
  342. package/dist/web/server/seed/core/markdown/canvas/guide/structure.json +101 -101
  343. package/dist/web/server/seed/core/markdown/canvas/guide/wql.json +39 -39
  344. package/dist/web/server/seed/core/markdown/canvas/home/sample-script.json +4 -4
  345. package/dist/web/server/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  346. package/dist/web/server/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  347. package/dist/web/server/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  348. package/dist/web/server/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  349. package/dist/web/server/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  350. package/dist/web/server/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  351. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  352. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-full-session.json +9 -9
  353. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  354. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  355. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-swimming.json +3 -3
  356. package/dist/web/server/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  357. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +8 -8
  358. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  359. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  360. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  361. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-3.json +2 -2
  362. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  363. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  364. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  365. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  366. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  367. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  368. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  369. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  370. package/dist/web/server/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  371. package/dist/web/server/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  372. package/dist/web/server/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  373. package/dist/web/server/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  374. package/dist/web/server/seed/core/markdown/canvas/syntax/document-4.json +4 -4
  375. package/dist/web/server/seed/core/markdown/canvas/syntax/effort-notes.json +4 -4
  376. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  377. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  378. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  379. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  380. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  381. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  382. package/dist/web/server/seed/core/markdown/canvas/syntax/measurements.json +4 -4
  383. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  384. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  385. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  386. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-4.json +5 -5
  387. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  388. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-sections.json +8 -8
  389. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  390. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  391. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  392. package/dist/web/server/seed/core/markdown/canvas/syntax/named-groups.json +5 -5
  393. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  394. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  395. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  396. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  397. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  398. package/dist/web/server/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  399. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  400. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  401. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  402. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  403. package/dist/web/server/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  404. package/dist/web/server/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  405. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  406. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  407. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-3.json +3 -3
  408. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  409. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  410. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  411. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
  412. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
  413. package/dist/web/server/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
  414. package/dist/web/server/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
  415. package/dist/web/server/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
  416. package/dist/web/server/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
  417. package/dist/web/server/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
  418. package/dist/web/server/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
  419. package/dist/web/server/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
  420. package/dist/web/server/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
  421. package/dist/web/server/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
  422. package/dist/web/server/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
  423. package/dist/web/server/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
  424. package/dist/web/server/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
  425. package/dist/web/server/seed/core/markdown/dashboards/training-block-review.json +11 -11
  426. package/dist/web/server/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  427. package/dist/web/server/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  428. package/dist/web/server/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  429. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  430. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  431. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  432. package/dist/web/server/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  433. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  434. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  435. package/dist/web/server/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  436. package/dist/web/server/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  437. package/dist/web/server/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  438. package/dist/web/server/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  439. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  440. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  441. package/dist/web/server/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  442. package/dist/web/server/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  443. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  444. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  445. package/dist/web/server/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  446. package/dist/web/server/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  447. package/dist/web/server/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  448. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  449. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  450. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  451. package/dist/web/server/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  452. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  453. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  454. package/dist/web/server/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  455. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  456. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  457. package/dist/web/server/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  458. package/dist/web/server/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  459. package/dist/web/server/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  460. package/dist/web/server/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  461. package/dist/web/server/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  462. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  463. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  464. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  465. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  466. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  467. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  468. package/dist/web/server/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  469. package/dist/web/server/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  470. package/dist/web/server/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  471. package/dist/web/server/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  472. package/dist/web/server/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  473. package/dist/web/server/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  474. package/dist/web/server/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  475. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  476. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  477. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  478. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  479. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  480. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  481. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  482. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  483. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  484. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  485. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  486. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  487. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  488. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  489. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  490. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  491. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  492. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  493. package/dist/web/server/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  494. package/dist/web/server/seed/core/markdown/efforts/recovery/rest.json +1 -1
  495. package/dist/web/server/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  496. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  497. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  498. package/dist/web/server/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  499. package/dist/web/server/seed/core/markdown/efforts/running/backward-running.json +1 -1
  500. package/dist/web/server/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  501. package/dist/web/server/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  502. package/dist/web/server/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  503. package/dist/web/server/seed/core/markdown/efforts/snatch.json +2 -2
  504. package/dist/web/server/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  505. package/dist/web/server/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  506. package/dist/web/server/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  507. package/dist/web/server/seed/core/markdown/efforts/strength/carioca.json +1 -1
  508. package/dist/web/server/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  509. package/dist/web/server/seed/core/markdown/efforts/strength/cluster.json +1 -1
  510. package/dist/web/server/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  511. package/dist/web/server/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  512. package/dist/web/server/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  513. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  514. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  515. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  516. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  517. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  518. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  519. package/dist/web/server/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  520. package/dist/web/server/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  521. package/dist/web/server/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  522. package/dist/web/server/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  523. package/dist/web/server/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  524. package/dist/web/server/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  525. package/dist/web/server/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  526. package/dist/web/server/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  527. package/dist/web/server/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  528. package/dist/web/server/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  529. package/dist/web/server/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  530. package/dist/web/server/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  531. package/dist/web/server/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  532. package/dist/web/server/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  533. package/dist/web/server/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  534. package/dist/web/server/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  535. package/dist/web/server/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  536. package/dist/web/server/seed/core/markdown/efforts/strength/push-press.json +1 -1
  537. package/dist/web/server/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  538. package/dist/web/server/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  539. package/dist/web/server/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  540. package/dist/web/server/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  541. package/dist/web/server/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  542. package/dist/web/server/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  543. package/dist/web/server/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  544. package/dist/web/server/seed/core/markdown/efforts/strength/thruster.json +1 -1
  545. package/dist/web/server/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  546. package/dist/web/server/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  547. package/dist/web/server/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  548. package/dist/web/server/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  549. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  550. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  551. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  552. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  553. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  554. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  555. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  556. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  557. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  558. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  559. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  560. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  561. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  562. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  563. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  564. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  565. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  566. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  567. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  568. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  569. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  570. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  571. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  572. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  573. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  574. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  575. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  576. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  577. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  578. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  579. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  580. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  581. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  582. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  583. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  584. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  585. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  586. package/dist/web/server/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  587. package/dist/web/server/seed/core/markdown/equipment/air-bike.json +1 -1
  588. package/dist/web/server/seed/core/markdown/equipment/barbell.json +1 -1
  589. package/dist/web/server/seed/core/markdown/equipment/bench.json +1 -1
  590. package/dist/web/server/seed/core/markdown/equipment/bike-erg.json +1 -1
  591. package/dist/web/server/seed/core/markdown/equipment/climbing-rope.json +1 -1
  592. package/dist/web/server/seed/core/markdown/equipment/clubs.json +1 -1
  593. package/dist/web/server/seed/core/markdown/equipment/dumbbell.json +1 -1
  594. package/dist/web/server/seed/core/markdown/equipment/ghd.json +1 -1
  595. package/dist/web/server/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  596. package/dist/web/server/seed/core/markdown/equipment/jump-rope.json +1 -1
  597. package/dist/web/server/seed/core/markdown/equipment/kettlebell.json +1 -1
  598. package/dist/web/server/seed/core/markdown/equipment/macebell.json +1 -1
  599. package/dist/web/server/seed/core/markdown/equipment/medicine-ball.json +1 -1
  600. package/dist/web/server/seed/core/markdown/equipment/parallettes.json +1 -1
  601. package/dist/web/server/seed/core/markdown/equipment/plyo-box.json +1 -1
  602. package/dist/web/server/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  603. package/dist/web/server/seed/core/markdown/equipment/rower.json +1 -1
  604. package/dist/web/server/seed/core/markdown/equipment/sandbag.json +1 -1
  605. package/dist/web/server/seed/core/markdown/equipment/ski-erg.json +1 -1
  606. package/dist/web/server/seed/core/markdown/equipment/slam-ball.json +1 -1
  607. package/dist/web/server/seed/core/markdown/equipment/sled.json +1 -1
  608. package/dist/web/server/seed/core/markdown/equipment/sledgehammer.json +1 -1
  609. package/dist/web/server/seed/core/markdown/equipment/weight-vest.json +1 -1
  610. package/dist/web/server/seed/core/report.html +14 -15
  611. package/package.json +6 -6
  612. package/dist/chunk-BQ6HTRH3.mjs.map +0 -1
  613. package/dist/chunk-LGEZVB44.mjs.map +0 -1
  614. package/dist/chunk-SOGZC3TL.mjs.map +0 -1
  615. package/dist/compiler-V2BLOB2B.mjs +0 -9
  616. package/dist/scaffoldCatalog-WNAHHEL2.mjs.map +0 -1
  617. package/dist/web/playground/assets/main-Ba8fwabQ.js +0 -209
  618. package/dist/web/playground/assets/main-bpDz6cBb.css +0 -2
  619. package/dist/web/playground/assets/seedSync.worker-CXyhCqQv.js +0 -16
  620. package/dist/web/playground/seed/core/apps/playground/app/templates/new-playground.json +0 -39
  621. package/dist/web/playground/seed/core/chunks/canvas.4ae0f2d2.json +0 -1
  622. package/dist/web/playground/seed/core/chunks/template.2d38f4df.json +0 -1
  623. package/dist/web/playground/seed/core/indexes/notebooks/template.json +0 -18
  624. package/dist/web/playground/seed/core/markdown/canvas/home/README.json +0 -11
  625. package/dist/web/server/assets/main-CESv8JYf.js +0 -209
  626. package/dist/web/server/assets/main-bpDz6cBb.css +0 -2
  627. package/dist/web/server/assets/seedSync.worker-CXyhCqQv.js +0 -16
  628. package/dist/web/server/seed/core/apps/playground/app/templates/new-playground.json +0 -39
  629. package/dist/web/server/seed/core/chunks/canvas.4ae0f2d2.json +0 -1
  630. package/dist/web/server/seed/core/chunks/template.2d38f4df.json +0 -1
  631. package/dist/web/server/seed/core/indexes/notebooks/template.json +0 -18
  632. package/dist/web/server/seed/core/markdown/canvas/home/README.json +0 -11
package/dist/bin/wod.cjs CHANGED
@@ -286,8 +286,8 @@ var init_db = __esm({
286
286
  CLI_UUID_NAMESPACE = "c0ffee00-8b1a-4e2c-9d3f-5a6b7c8d9e0f";
287
287
  }
288
288
  });
289
- function catalogForChunkId(chunkId) {
290
- const value = /^(?:collection|feed)\.(.+)$/.exec(chunkId)?.[1];
289
+ function notebookSlugForChunkId(chunkId) {
290
+ const value = /^notebook\.(.+)$/.exec(chunkId)?.[1];
291
291
  return value && value !== "_root" ? value : void 0;
292
292
  }
293
293
  function canvasRouteSlug(content) {
@@ -303,15 +303,13 @@ function seedNoteSourceId(path, content, chunkId) {
303
303
  if (chunkId === DASHBOARDS_CHUNK_ID) return "dashboards";
304
304
  if (chunkId === EFFORTS_CHUNK_ID) return "efforts";
305
305
  if (chunkId === EQUIPMENT_CHUNK_ID) return "equipment";
306
- if (chunkId === TEMPLATE_CHUNK_ID) return "playground";
307
- if (chunkId.startsWith("collection.")) {
308
- const catalog = catalogForChunkId(chunkId);
309
- return !catalog ? "collection:_root" : stem.toLowerCase() === "readme" ? `collection:${catalog}` : `collection:${catalog}/${stem}`;
306
+ if (chunkId.startsWith("notebook.")) {
307
+ const slug = notebookSlugForChunkId(chunkId);
308
+ return !slug ? "notebook:_root" : stem.toLowerCase() === "readme" ? `notebook:${slug}` : `notebook:${under}`;
310
309
  }
311
- if (chunkId.startsWith("feed.")) return `feed:feeds/${under}`;
312
310
  return void 0;
313
311
  }
314
- var SEED_SCHEMA2, SEED_REGISTERED_WIDGETS, SEED_NAMESPACE, EFFORTS_CHUNK_ID, EQUIPMENT_CHUNK_ID, CANVAS_CHUNK_ID2, DASHBOARDS_CHUNK_ID, TEMPLATE_CHUNK_ID;
312
+ var SEED_SCHEMA2, SEED_REGISTERED_WIDGETS, SEED_NAMESPACE, EFFORTS_CHUNK_ID, EQUIPMENT_CHUNK_ID, CANVAS_CHUNK_ID2, DASHBOARDS_CHUNK_ID;
315
313
  var init_contract = __esm({
316
314
  "src/seedbuild/contract.ts"() {
317
315
  SEED_SCHEMA2 = 9;
@@ -321,7 +319,6 @@ var init_contract = __esm({
321
319
  EQUIPMENT_CHUNK_ID = "equipment";
322
320
  CANVAS_CHUNK_ID2 = "canvas";
323
321
  DASHBOARDS_CHUNK_ID = "dashboards";
324
- TEMPLATE_CHUNK_ID = "template";
325
322
  }
326
323
  });
327
324
 
@@ -548,8 +545,8 @@ __export(compiler_exports, {
548
545
  chunkIdFor: () => chunkIdFor,
549
546
  collectCorpusMarkdown: () => collectCorpusMarkdown,
550
547
  compileSeedRow: () => compileSeedRow,
548
+ dateKeyToCreatedAt: () => dateKeyToCreatedAt,
551
549
  discoverUncatalogedEfforts: () => discoverUncatalogedEfforts,
552
- feedDateToCreatedAt: () => feedDateToCreatedAt,
553
550
  frontmatterDateToCreatedAt: () => frontmatterDateToCreatedAt,
554
551
  generateSeed: () => generateSeed,
555
552
  getFileCommit: () => getFileCommit,
@@ -583,16 +580,15 @@ function chunkIdFor(relPath) {
583
580
  case "efforts":
584
581
  case "equipment":
585
582
  return corpus;
586
- case "collections":
587
- return parts.length === 3 ? `collection._root` : `collection.${slug}`;
588
- case "feeds":
589
- return parts.length === 3 ? `feed._root` : `feed.${slug}`;
583
+ case "notebooks":
584
+ return parts.length === 3 ? `notebook._root` : `notebook.${slug}`;
590
585
  default:
591
586
  return null;
592
587
  }
593
588
  }
594
- function collectCorpusMarkdown(markdownDir) {
595
- return listMarkdownFiles(markdownDir).map((p) => `markdown/${p}`);
589
+ function collectCorpusMarkdown(markdownDir, excludePaths = []) {
590
+ const excluded = new Set(excludePaths);
591
+ return listMarkdownFiles(markdownDir).map((p) => `markdown/${p}`).filter((path) => !excluded.has(path));
596
592
  }
597
593
  function partitionIntoChunks(paths) {
598
594
  const byId = /* @__PURE__ */ new Map();
@@ -600,7 +596,7 @@ function partitionIntoChunks(paths) {
600
596
  const id = chunkIdFor(p);
601
597
  if (id === null) {
602
598
  throw new Error(
603
- `[generate-seed] Parity failure: '${p}' is not part of any known corpus (canvas | dashboards | efforts | equipment | collections | feeds). Extend chunkIdFor() if this is a new corpus.`
599
+ `[generate-seed] Parity failure: '${p}' is not part of any known corpus (canvas | dashboards | efforts | equipment | notebooks). Extend chunkIdFor() if this is a new corpus.`
604
600
  );
605
601
  }
606
602
  const list = byId.get(id);
@@ -691,7 +687,7 @@ function frontmatterDateToCreatedAt(raw, path) {
691
687
  }
692
688
  return ts;
693
689
  }
694
- function feedDateToCreatedAt(dateKey) {
690
+ function dateKeyToCreatedAt(dateKey) {
695
691
  if (!/^\d{4}-\d{2}-\d{2}$/.test(dateKey)) return 0;
696
692
  const ts = Date.parse(`${dateKey}T00:00:00Z`);
697
693
  return Number.isNaN(ts) ? 0 : ts;
@@ -707,18 +703,18 @@ function compileSeedRow(path, content, metadata = {}) {
707
703
  });
708
704
  return { path, content, blocks, blockIndex, blockEfforts: [], blockEquipment: [] };
709
705
  }
710
- function buildBlockIndexRows(markdownDir, corpusRoot) {
706
+ function buildBlockIndexRows(markdownDir, corpusRoot, excludePaths = []) {
711
707
  const rows = [];
712
- for (const path$1 of collectCorpusMarkdown(markdownDir)) {
708
+ for (const path$1 of collectCorpusMarkdown(markdownDir, excludePaths)) {
713
709
  const chunkId = chunkIdFor(path$1);
714
710
  if (!chunkId) continue;
715
711
  const content = fs.readFileSync(path.join(corpusRoot, path$1), "utf8");
716
712
  const parts = path$1.split("/");
717
713
  const stem = (parts.at(-1) ?? "").replace(/\.md$/, "");
718
- const catalog = parts[2];
719
- const routeId = chunkId === "canvas" ? canvasRouteSlug(content) ?? void 0 : chunkId.startsWith("collection.") ? stem.toLowerCase() === "readme" ? catalog : `${catalog}/${stem}` : chunkId.startsWith("feed.") ? parts.slice(1).join("/").replace(/\.md$/, "") : void 0;
714
+ const slug = parts[2];
715
+ const routeId = chunkId === "canvas" ? canvasRouteSlug(content) ?? void 0 : chunkId.startsWith("notebook.") ? stem.toLowerCase() === "readme" ? slug : parts.slice(2).join("/").replace(/\.md$/, "") : void 0;
720
716
  const sourceId = seedNoteSourceId(path$1, content, chunkId);
721
- const createdAt = frontmatterDateToCreatedAt(content, path$1) ?? (chunkId.startsWith("feed.") ? feedDateToCreatedAt(parts.at(-2) ?? "") : getFileCreatedAt(path$1, corpusRoot));
717
+ const createdAt = frontmatterDateToCreatedAt(content, path$1) ?? (chunkId.startsWith("notebook.") && /^\d{4}-\d{2}-\d{2}$/.test(parts.at(-2) ?? "") ? dateKeyToCreatedAt(parts.at(-2) ?? "") : getFileCreatedAt(path$1, corpusRoot));
722
718
  rows.push(...compileSeedRow(path$1, content, { routeId, sourceId, createdAt }).blockIndex);
723
719
  }
724
720
  return rows;
@@ -770,10 +766,10 @@ function loadCorpusReferenceCatalog(markdownDir) {
770
766
  }
771
767
  return { efforts, equipment };
772
768
  }
773
- function discoverUncatalogedEfforts(markdownDir, corpusRoot) {
769
+ function discoverUncatalogedEfforts(markdownDir, corpusRoot, excludePaths = []) {
774
770
  const catalog = loadCorpusReferenceCatalog(markdownDir);
775
771
  const index = wodWikiLang.createReferenceIndex(catalog);
776
- const blocks = buildBlockIndexRows(markdownDir, corpusRoot);
772
+ const blocks = buildBlockIndexRows(markdownDir, corpusRoot, excludePaths);
777
773
  const discovered = /* @__PURE__ */ new Map();
778
774
  for (const block of blocks) {
779
775
  if (block.dataType !== "wod" || !block.rawContent) continue;
@@ -907,22 +903,18 @@ function generateSeed(options = {}) {
907
903
  const webRepositoryUrl = repositoryUrl?.replace(/^git\+/, "").replace(/\.git$/, "");
908
904
  const repositoryLink = webRepositoryUrl && URL.canParse(webRepositoryUrl) ? new URL(webRepositoryUrl) : void 0;
909
905
  if (options.scaffoldDiscoveredEfforts) {
910
- const discovered = discoverUncatalogedEfforts(markdownDir, corpusRoot);
906
+ const discovered = discoverUncatalogedEfforts(markdownDir, corpusRoot, options.excludePaths);
911
907
  if (discovered.length > 0) {
912
908
  scaffoldDiscoveredEfforts(discovered, markdownDir);
913
909
  }
914
910
  }
915
911
  const tScan = Date.now();
916
- const paths = collectCorpusMarkdown(markdownDir);
912
+ const paths = collectCorpusMarkdown(markdownDir, options.excludePaths);
917
913
  const groups = partitionIntoChunks(paths);
918
914
  gateDashboards(groups, corpusRoot);
919
- if (options.templateFile && fs.existsSync(options.templateFile)) {
920
- const templateRowPath = options.templateRowPath ?? path.relative(corpusRoot, options.templateFile).split("\\").join("/");
921
- groups.push({ id: TEMPLATE_CHUNK_ID, files: [templateRowPath] });
922
- }
923
915
  passMs.scan = Date.now() - tScan;
924
916
  const tBlockIndex = Date.now();
925
- const blockRows = buildBlockIndexRows(markdownDir, corpusRoot);
917
+ const blockRows = buildBlockIndexRows(markdownDir, corpusRoot, options.excludePaths);
926
918
  passMs.blockIndex = Date.now() - tBlockIndex;
927
919
  const tParseGate = Date.now();
928
920
  const syntaxProblems = validateWodBlockSyntax(blockRows);
@@ -964,11 +956,10 @@ ${shown}${more}`);
964
956
  const manifestNotebooks = [];
965
957
  const tWrite = Date.now();
966
958
  for (const { id, files } of groups) {
967
- const templateSource = id === TEMPLATE_CHUNK_ID ? options.templateFile : void 0;
968
959
  const records = [];
969
960
  const rows = files.map((p) => {
970
- const raw = fs.readFileSync(templateSource ?? path.join(corpusRoot, p), "utf8");
971
- const content = id === TEMPLATE_CHUNK_ID ? raw.replace(/\$CURSOR/g, "") : raw;
961
+ const raw = fs.readFileSync(path.join(corpusRoot, p), "utf8");
962
+ const content = raw;
972
963
  const compiled = compileSeedRow(p, content);
973
964
  compiled.blockIndex = blocksByPath.get(p) ?? compiled.blockIndex;
974
965
  compiled.blockEfforts = effortsByPath.get(p) ?? [];
@@ -1007,7 +998,7 @@ ${shown}${more}`);
1007
998
  const notebookIndex = {
1008
999
  notebookId: id,
1009
1000
  label: fileToDisplayName(id.split(".").at(-1) ?? id),
1010
- category: catalogForChunkId(id),
1001
+ category: notebookSlugForChunkId(id),
1011
1002
  indexPath: notebookIndexPath,
1012
1003
  commit: records.find((r) => r.commit)?.commit ?? gitVersion.commit,
1013
1004
  count: rows.length,
@@ -1103,35 +1094,35 @@ var init_compiler = __esm({
1103
1094
  var VERSION;
1104
1095
  var init_version = __esm({
1105
1096
  "src/version.ts"() {
1106
- VERSION = "0.44.2159";
1097
+ VERSION = "0.45.2166";
1107
1098
  }
1108
1099
  });
1109
1100
 
1110
- // src/cli/scaffoldCatalog.ts
1111
- var scaffoldCatalog_exports = {};
1112
- __export(scaffoldCatalog_exports, {
1113
- scaffoldCatalog: () => scaffoldCatalog,
1114
- validateCatalogName: () => validateCatalogName
1101
+ // src/cli/scaffoldFeed.ts
1102
+ var scaffoldFeed_exports = {};
1103
+ __export(scaffoldFeed_exports, {
1104
+ scaffoldFeed: () => scaffoldFeed,
1105
+ validateFeedName: () => validateFeedName
1115
1106
  });
1116
- function validateCatalogName(name) {
1107
+ function validateFeedName(name) {
1117
1108
  if (name.length === 0 || name === "." || name === "..") {
1118
- throw new Error("Catalog name must be a single non-empty directory name");
1109
+ throw new Error("Feed name must be a single non-empty directory name");
1119
1110
  }
1120
1111
  if (name.includes("/") || name.includes("\\") || name.includes("\0")) {
1121
- throw new Error(`Invalid catalog name '${name}': must be a single directory name (no path separators or traversal)`);
1112
+ throw new Error(`Invalid feed name '${name}': must be a single directory name (no path separators or traversal)`);
1122
1113
  }
1123
1114
  if (/^(?:[A-Za-z]:)?[/\\]/.test(name)) {
1124
- throw new Error(`Invalid catalog name '${name}': absolute paths are not allowed`);
1115
+ throw new Error(`Invalid feed name '${name}': absolute paths are not allowed`);
1125
1116
  }
1126
1117
  if (name.length > 214 || !/^[a-z0-9][a-z0-9._-]*$/.test(name)) {
1127
1118
  throw new Error(
1128
- `Invalid catalog name '${name}': must be a valid npm package name (lowercase letters, digits, dots, hyphens, underscores; no leading dot/hyphen)`
1119
+ `Invalid feed name '${name}': must be a valid npm package name (lowercase letters, digits, dots, hyphens, underscores; no leading dot/hyphen)`
1129
1120
  );
1130
1121
  }
1131
1122
  return name;
1132
1123
  }
1133
- function scaffoldCatalog(name, opts = {}) {
1134
- validateCatalogName(name);
1124
+ function scaffoldFeed(name, opts = {}) {
1125
+ validateFeedName(name);
1135
1126
  const dir = path.resolve(opts.cwd ?? process.cwd(), name);
1136
1127
  try {
1137
1128
  fs.mkdirSync(dir);
@@ -1149,7 +1140,7 @@ function scaffoldCatalog(name, opts = {}) {
1149
1140
  version: "0.1.0",
1150
1141
  private: true,
1151
1142
  type: "module",
1152
- description: `WOD Wiki workout catalog: ${name}`,
1143
+ description: `WOD Wiki workout feed: ${name}`,
1153
1144
  scripts: {
1154
1145
  build: "wod build . --output dist"
1155
1146
  },
@@ -1162,10 +1153,10 @@ function scaffoldCatalog(name, opts = {}) {
1162
1153
  )}
1163
1154
  `],
1164
1155
  [".gitignore", "node_modules/\ndist/\n"],
1165
- [".github/workflows/publish-catalog.yml", publishWorkflow()],
1166
- ["markdown/collections/example/README.md", collectionReadme(name)],
1167
- [`markdown/collections/example/morning-session.md`, exampleWorkout(date)],
1168
- ["README.md", catalogReadme(name)]
1156
+ [".github/workflows/publish-feed.yml", publishWorkflow()],
1157
+ ["markdown/notebooks/example/README.md", feedReadme(name)],
1158
+ [`markdown/notebooks/example/morning-session.md`, exampleWorkout(date)],
1159
+ ["README.md", repoReadme(name)]
1169
1160
  ];
1170
1161
  try {
1171
1162
  for (const [rel, content] of files) {
@@ -1179,13 +1170,13 @@ function scaffoldCatalog(name, opts = {}) {
1179
1170
  }
1180
1171
  return { dir, files: files.map(([rel]) => rel) };
1181
1172
  }
1182
- var publishWorkflow, collectionReadme, exampleWorkout, catalogReadme;
1183
- var init_scaffoldCatalog = __esm({
1184
- "src/cli/scaffoldCatalog.ts"() {
1173
+ var publishWorkflow, feedReadme, exampleWorkout, repoReadme;
1174
+ var init_scaffoldFeed = __esm({
1175
+ "src/cli/scaffoldFeed.ts"() {
1185
1176
  init_version();
1186
- publishWorkflow = () => `name: Publish catalog
1177
+ publishWorkflow = () => `name: Publish feed
1187
1178
 
1188
- # Compile the catalog with the wod CLI and deploy dist/ to GitHub Pages.
1179
+ # Compile the feed with the wod CLI and deploy dist/ to GitHub Pages.
1189
1180
  # Requires Pages enabled: repo Settings \u2192 Pages \u2192 Source: "GitHub Actions".
1190
1181
 
1191
1182
  on:
@@ -1235,10 +1226,10 @@ jobs:
1235
1226
  - id: deployment
1236
1227
  uses: actions/deploy-pages@v4
1237
1228
  `;
1238
- collectionReadme = (name) => `# ${name}
1229
+ feedReadme = (name) => `# ${name}
1239
1230
 
1240
- Example benchmark collection. Each \`.md\` file in this directory becomes part of
1241
- the \`example\` collection chunk; \`README.md\` is the collection's landing page.
1231
+ Example benchmark notebook. Each \`.md\` file in this directory becomes part of
1232
+ the \`example\` notebook chunk; \`README.md\` is the notebook's landing page.
1242
1233
 
1243
1234
  Add one file per workout:
1244
1235
 
@@ -1273,9 +1264,9 @@ date: ${date}
1273
1264
  Pull-ups
1274
1265
  \`\`\`
1275
1266
  `;
1276
- catalogReadme = (name) => `# ${name}
1267
+ repoReadme = (name) => `# ${name}
1277
1268
 
1278
- A [WOD Wiki](https://github.com/bitcobblers/wod-wiki) workout catalog: plain
1269
+ A [WOD Wiki](https://github.com/bitcobblers/wod-wiki) workout feed: plain
1279
1270
  Markdown workouts compiled to static, version-stamped seed chunks and published
1280
1271
  via GitHub Pages.
1281
1272
 
@@ -1287,25 +1278,25 @@ bunx wod build . --output dist
1287
1278
  \`\`\`
1288
1279
 
1289
1280
  Workouts live under \`markdown/\` \u2014 this scaffold starts with one example
1290
- collection. Validate everything with \`bunx wod build\`: it gates every file on
1281
+ feed. Validate everything with \`bunx wod build\`: it gates every file on
1291
1282
  the Whiteboard grammar and corpus layout before writing \`dist/\`.
1292
1283
 
1293
1284
  ## Publish
1294
1285
 
1295
1286
  Push to GitHub and enable Pages (**Settings \u2192 Pages \u2192 Source: GitHub
1296
- Actions**). The bundled workflow (\`.github/workflows/publish-catalog.yml\`)
1297
- builds the catalog on every push to \`main\` and deploys \`dist/\`.
1287
+ Actions**). The bundled workflow (\`.github/workflows/publish-feed.yml\`)
1288
+ builds the feed on every push to \`main\` and deploys \`dist/\`.
1298
1289
 
1299
1290
  ## Share
1300
1291
 
1301
- Once published, anyone can subscribe to this catalog from a WOD Wiki instance
1292
+ Once published, anyone can subscribe to this feed from a WOD Wiki instance
1302
1293
  at:
1303
1294
 
1304
1295
  \`\`\`
1305
- <app-url>/subscribe?source=<url-encoded published catalog URL>
1296
+ <app-url>/subscribe?source=<url-encoded published feed URL>
1306
1297
  \`\`\`
1307
1298
 
1308
- For \`owner\`/\`repo\` on GitHub Pages the catalog URL is the deployed
1299
+ For \`owner\`/\`repo\` on GitHub Pages the feed URL is the deployed
1309
1300
  directory, \`https://owner.github.io/repo/\`, e.g.
1310
1301
  \`/subscribe?source=https%3A%2F%2Fowner.github.io%2Frepo%2F\`.
1311
1302
  `;
@@ -3169,8 +3160,6 @@ async function saveSource(db, options, startTime) {
3169
3160
  sourceRevision++;
3170
3161
  for (const block of Object.values(blocks)) block.sourceRevision = sourceRevision;
3171
3162
  }
3172
- const fm = wodWikiEngine.readFrontmatterMeta(options.source);
3173
- const catalog = typeof fm["catalog"] === "string" && fm["catalog"].trim() || typeof fm["collection"] === "string" && fm["collection"].trim() || existing?.catalog;
3174
3163
  const note = {
3175
3164
  ...existing,
3176
3165
  id: noteId,
@@ -3180,8 +3169,7 @@ async function saveSource(db, options, startTime) {
3180
3169
  createdAt: existing?.createdAt ?? now,
3181
3170
  rawContent: options.source,
3182
3171
  sourceRevision,
3183
- blocks,
3184
- ...catalog ? { catalog } : {}
3172
+ blocks
3185
3173
  };
3186
3174
  const priorRows = await tx.readonly("block_index").getAllFromIndex("by-note", noteId);
3187
3175
  const priorEfforts = await tx.readonly("block_efforts").getAllFromIndex("by-note", noteId);
@@ -3219,7 +3207,6 @@ async function saveSource(db, options, startTime) {
3219
3207
  noteTitle: note.title,
3220
3208
  createdAt: prior?.createdAt ?? now,
3221
3209
  blockContentId: fingerprint,
3222
- ...catalog ? { catalog } : {},
3223
3210
  ...note.sourceId ? { sourceId: note.sourceId } : {}
3224
3211
  });
3225
3212
  if (block.kind === "wod") {
@@ -3390,16 +3377,46 @@ async function persistSessionBundle(db, session, events) {
3390
3377
  });
3391
3378
  return { events: events.length };
3392
3379
  }
3393
- async function persistEffort(db, effort) {
3394
- const sql = await loadSql();
3395
- await db.db.transaction(async (tx) => {
3396
- await sql.putRow(tx, sql.storeDefinition("efforts"), effort);
3397
- });
3398
- }
3399
- async function persistEquipment(db, equipment) {
3400
- const sql = await loadSql();
3401
- await db.db.transaction(async (tx) => {
3402
- await sql.putRow(tx, sql.storeDefinition("equipment"), equipment);
3380
+ async function persistDefinitionNote(db, kind, source) {
3381
+ const parsed = kind === "effort" ? wodWikiLang.parseEffortFile(source) : wodWikiLang.parseEquipmentFile(source);
3382
+ if (!parsed) {
3383
+ throw new Error(kind === "effort" ? "[wod import] Unparseable effort file (need frontmatter id/slug/label + numeric baseAttributes.met)" : "[wod import] Unparseable equipment file (need frontmatter type: equipment + id/slug/label)");
3384
+ }
3385
+ const family = kind === "effort" ? "efforts" : "equipment";
3386
+ const prior = await db.storage.readonly(family).get(parsed.slug);
3387
+ const stamped = wodWikiEngine.extractNoteIdentity(source)?.noteId;
3388
+ const noteId = stamped ?? prior?.ownerNoteId ?? `${kind}/${parsed.slug}`;
3389
+ const now = Date.now();
3390
+ return db.storage.transaction(["notes", family, "tags", "note_tags"], "readwrite", async (tx) => {
3391
+ const previous = await tx.readonly("notes").get(noteId);
3392
+ const sourceRevision = (previous?.sourceRevision ?? 0) + (previous?.rawContent === source ? 0 : 1);
3393
+ const blocks = wodWikiCore.reconcileNoteBlocks(source, { sourceRevision, registeredWidgets, blocks: previous?.blocks });
3394
+ wodWikiCore.validateNoteBlocks(source, blocks, sourceRevision, { registeredWidgets });
3395
+ const note = {
3396
+ ...previous,
3397
+ id: noteId,
3398
+ title: parsed.label,
3399
+ type: previous?.type ?? "note",
3400
+ createdAt: previous?.createdAt ?? now,
3401
+ rawContent: source,
3402
+ sourceRevision,
3403
+ blocks,
3404
+ sourceId: family,
3405
+ sourcePath: noteId
3406
+ };
3407
+ await tx.readwrite("notes").put(note);
3408
+ const isoNow = new Date(now).toISOString();
3409
+ await tx.readwrite(family).put({
3410
+ ...parsed,
3411
+ registrySource: prior?.registrySource ?? "user",
3412
+ ownerNoteId: noteId,
3413
+ sourceId: family,
3414
+ sourcePath: noteId,
3415
+ createdAt: prior?.createdAt ?? isoNow,
3416
+ updatedAt: isoNow
3417
+ });
3418
+ await saveTags(tx, noteId, wodWikiEngine.extractTypedTags(source), now);
3419
+ return { slug: parsed.slug, noteId, createdNote: !previous };
3403
3420
  });
3404
3421
  }
3405
3422
  async function persistTypedTags(db, labels, type) {
@@ -3477,7 +3494,7 @@ init_db();
3477
3494
  init_contract();
3478
3495
  init_compiler();
3479
3496
  init_report();
3480
- async function publishCatalogSeed(db, options) {
3497
+ async function publishNotebookSeed(db, options) {
3481
3498
  const t0 = Date.now();
3482
3499
  const fs = nodeFs();
3483
3500
  const path = nodePath();
@@ -3485,31 +3502,30 @@ async function publishCatalogSeed(db, options) {
3485
3502
  if (allNotes.length === 0) {
3486
3503
  throw new Error(`[wod publish] No notes found in database ${db.path}`);
3487
3504
  }
3488
- const notesByCatalog = /* @__PURE__ */ new Map();
3505
+ const notesByNotebook = /* @__PURE__ */ new Map();
3489
3506
  for (const note of allNotes) {
3490
- const fm = wodWikiEngine.readFrontmatterMeta(note.rawContent);
3491
- const cat = typeof fm["catalog"] === "string" && fm["catalog"].trim() || typeof fm["collection"] === "string" && fm["collection"].trim() || note.catalog || wodWikiWql.catalogOfItem(note);
3492
- const key = cat || "__uncataloged__";
3493
- const list = notesByCatalog.get(key) ?? [];
3507
+ const slug = wodWikiWql.notebookSlugOfSourceId(note.sourceId);
3508
+ const key = slug || "__unassigned__";
3509
+ const list = notesByNotebook.get(key) ?? [];
3494
3510
  list.push(note);
3495
- notesByCatalog.set(key, list);
3511
+ notesByNotebook.set(key, list);
3496
3512
  }
3497
- const targetCatalogs = /* @__PURE__ */ new Map();
3498
- if (options.catalog) {
3499
- const matching = notesByCatalog.get(options.catalog);
3513
+ const targetNotebooks = /* @__PURE__ */ new Map();
3514
+ if (options.notebook) {
3515
+ const matching = notesByNotebook.get(options.notebook);
3500
3516
  if (matching) {
3501
- targetCatalogs.set(options.catalog, matching);
3502
- } else if (notesByCatalog.has("__uncataloged__") && notesByCatalog.size === 1) {
3503
- targetCatalogs.set(options.catalog, notesByCatalog.get("__uncataloged__"));
3517
+ targetNotebooks.set(options.notebook, matching);
3518
+ } else if (notesByNotebook.has("__unassigned__") && notesByNotebook.size === 1) {
3519
+ targetNotebooks.set(options.notebook, notesByNotebook.get("__unassigned__"));
3504
3520
  } else {
3505
- const available = [...notesByCatalog.keys()].filter((k) => k !== "__uncataloged__");
3521
+ const available = [...notesByNotebook.keys()].filter((k) => k !== "__unassigned__");
3506
3522
  throw new Error(
3507
- `[wod publish] Catalog "${options.catalog}" not found in ${db.path}.` + (available.length > 0 ? ` Available catalogs: ${available.join(", ")}` : "")
3523
+ `[wod publish] Notebook "${options.notebook}" not found in ${db.path}.` + (available.length > 0 ? ` Available notebooks: ${available.join(", ")}` : "")
3508
3524
  );
3509
3525
  }
3510
3526
  } else {
3511
- for (const [cat, notes] of notesByCatalog.entries()) {
3512
- targetCatalogs.set(cat === "__uncataloged__" ? "default" : cat, notes);
3527
+ for (const [slug, notes] of notesByNotebook.entries()) {
3528
+ targetNotebooks.set(slug === "__unassigned__" ? "default" : slug, notes);
3513
3529
  }
3514
3530
  }
3515
3531
  const allIndexRows = await db.storage.readonly("block_index").getAll();
@@ -3538,25 +3554,24 @@ async function publishCatalogSeed(db, options) {
3538
3554
  fs.mkdirSync(chunksDir, { recursive: true });
3539
3555
  const manifestChunks = [];
3540
3556
  let totalNotes = 0;
3541
- const publishedCatalogs = [];
3542
- for (const [catalogName, notes] of targetCatalogs.entries()) {
3543
- publishedCatalogs.push(catalogName);
3557
+ const publishedNotebooks = [];
3558
+ for (const [notebookSlug, notes] of targetNotebooks.entries()) {
3559
+ publishedNotebooks.push(notebookSlug);
3544
3560
  const chunkRows = [];
3545
3561
  for (const note of notes) {
3546
3562
  const stem = (note.title || note.id).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") || "note";
3547
- const notePath = note.sourcePath ?? `markdown/collections/${catalogName}/${stem}.md`;
3563
+ const notePath = note.sourcePath ?? `markdown/notebooks/${notebookSlug}/${stem}.md`;
3548
3564
  const noteBlockIndex = indexByNote.get(note.id) ?? [];
3549
3565
  const noteBlockEfforts = effortsByNote.get(note.id) ?? [];
3550
3566
  const noteBlockEquipment = equipmentByNote.get(note.id) ?? [];
3551
3567
  const blockIndex = noteBlockIndex.length > 0 ? noteBlockIndex.map((b) => ({
3552
3568
  ...b,
3553
3569
  isStatic: true,
3554
- sourceId: b.sourceId ?? `collection:${catalogName}/${stem}`,
3555
- sourcePath: b.sourcePath ?? notePath,
3556
- catalog: catalogName
3570
+ sourceId: b.sourceId ?? `notebook:${notebookSlug}/${stem}`,
3571
+ sourcePath: b.sourcePath ?? notePath
3557
3572
  })) : compileSeedRow(notePath, note.rawContent, {
3558
- routeId: `${catalogName}/${stem}`,
3559
- sourceId: `collection:${catalogName}/${stem}`,
3573
+ routeId: `${notebookSlug}/${stem}`,
3574
+ sourceId: `notebook:${notebookSlug}/${stem}`,
3560
3575
  // Authored frontmatter date first — exports keep the post's own
3561
3576
  // day, never the import/publish time.
3562
3577
  createdAt: note.date ?? note.createdAt,
@@ -3581,7 +3596,7 @@ async function publishCatalogSeed(db, options) {
3581
3596
  blockEquipment
3582
3597
  });
3583
3598
  }
3584
- const chunkId = `collection.${catalogName}`;
3599
+ const chunkId = `notebook.${notebookSlug}`;
3585
3600
  const json2 = JSON.stringify(chunkRows);
3586
3601
  const digest = nodeCrypto().createHash("sha256").update(json2).digest();
3587
3602
  const sha = [...digest].map((b) => b.toString(16).padStart(2, "0")).join("");
@@ -3613,7 +3628,7 @@ async function publishCatalogSeed(db, options) {
3613
3628
  return {
3614
3629
  manifest,
3615
3630
  outDir,
3616
- catalogs: publishedCatalogs,
3631
+ notebooks: publishedNotebooks,
3617
3632
  totalNotes
3618
3633
  };
3619
3634
  }
@@ -4049,12 +4064,6 @@ function parseCliArgs(args) {
4049
4064
  } else if (arg === "--force") {
4050
4065
  result.force = true;
4051
4066
  i++;
4052
- } else if (arg === "--template") {
4053
- result.template = args[++i];
4054
- i++;
4055
- } else if (arg.startsWith("--template=")) {
4056
- result.template = arg.slice("--template=".length);
4057
- i++;
4058
4067
  } else if (arg === "--out") {
4059
4068
  result.output = args[++i];
4060
4069
  i++;
@@ -4075,7 +4084,7 @@ function parseCliArgs(args) {
4075
4084
  if (Number.isSafeInteger(v) && v >= 0) result.seedVersion = v;
4076
4085
  i++;
4077
4086
  } else if (!result.subcommand) {
4078
- if (arg === "parse" || arg === "run" || arg === "query" || arg === "download" || arg === "export" || arg === "import" || arg === "publish" || arg === "build" || arg === "seed" || arg === "reset" || arg === "init" || arg === "db" || arg === "server" || arg === "serve" || arg === "playground" || arg === "init-catalog" || arg === "skills" || arg === "help" || arg === "version") {
4087
+ if (arg === "parse" || arg === "run" || arg === "query" || arg === "download" || arg === "export" || arg === "import" || arg === "publish" || arg === "build" || arg === "seed" || arg === "reset" || arg === "init" || arg === "db" || arg === "server" || arg === "serve" || arg === "playground" || arg === "init-feed" || arg === "skills" || arg === "help" || arg === "version") {
4079
4088
  result.subcommand = arg;
4080
4089
  } else {
4081
4090
  result.target = arg;
@@ -4139,10 +4148,10 @@ USAGE:
4139
4148
  wod export <note|playground|session|effort|equipment> <id> [options]
4140
4149
  wod download <note|playground|session|effort|equipment> <id> [options]
4141
4150
  wod import <note|playground|session|effort|equipment> <file> [options]
4142
- wod publish [catalog] [options]
4151
+ wod publish [feed] [options]
4143
4152
  wod build [dir] [options]
4144
- wod init-catalog <name>
4145
- Scaffold a new catalog repository (package.json, example
4153
+ wod init-feed <name>
4154
+ Scaffold a new feed repository (package.json, example
4146
4155
  collection, GitHub Actions Pages workflow). Refuses an
4147
4156
  existing destination.
4148
4157
  wod skills <list | install> [options]
@@ -4235,10 +4244,10 @@ SUBCOMMANDS:
4235
4244
  Upsert an effort registry row from corpus-style markdown.
4236
4245
  import equipment <file>
4237
4246
  Create/upgrade equipment tags (CSV, one label per row).
4238
- publish [catalog] Publish catalog notes from the database into a configured
4247
+ publish [feed] Publish feed notes from the database into a configured
4239
4248
  seed directory (manifest.json, chunks/, report.html)
4240
4249
  compatible with 'wod seed --source <dir>'. Override target
4241
- with -o/--out/--output (defaults to ./dist/seed/<catalog>).
4250
+ with -o/--out/--output (defaults to ./dist/seed/<feed>).
4242
4251
  build [dir] Compile a seed corpus: validate every .md under
4243
4252
  <dir>/markdown (parity gate + dashboard format gate) and
4244
4253
  write manifest.json + content-hashed chunks/ +
@@ -4249,8 +4258,6 @@ SUBCOMMANDS:
4249
4258
  BUILD OPTIONS (for 'build'):
4250
4259
  --scaffold Also scaffold markdown/efforts/discovered/*.md stubs for
4251
4260
  workout effort labels missing from the registry.
4252
- --template <file> Compile an extra markdown file as the 'template' chunk
4253
- (the host's playground intake template).
4254
4261
 
4255
4262
  INPUT SOURCING (for 'query'; without these, the database is queried):
4256
4263
  -c, --corpus <path> Load historical corpus dataset from a versioned JSON file
@@ -4396,20 +4403,20 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
4396
4403
  }
4397
4404
  };
4398
4405
  try {
4399
- if (parsed.subcommand === "init-catalog") {
4406
+ if (parsed.subcommand === "init-feed") {
4400
4407
  if (!parsed.target) {
4401
- writeErr("[wod init-catalog] Error: Missing catalog name (a single new directory name)");
4408
+ writeErr("[wod init-feed] Error: Missing feed name (a single new directory name)");
4402
4409
  return 1;
4403
4410
  }
4404
- const { scaffoldCatalog: scaffoldCatalog2 } = await Promise.resolve().then(() => (init_scaffoldCatalog(), scaffoldCatalog_exports));
4411
+ const { scaffoldFeed: scaffoldFeed2 } = await Promise.resolve().then(() => (init_scaffoldFeed(), scaffoldFeed_exports));
4405
4412
  try {
4406
- const result = scaffoldCatalog2(parsed.target);
4407
- writeOut(`[wod init-catalog] Created ${result.dir} (${result.files.length} files)`);
4413
+ const result = scaffoldFeed2(parsed.target);
4414
+ writeOut(`[wod init-feed] Created ${result.dir} (${result.files.length} files)`);
4408
4415
  writeOut(`Next: cd ${parsed.target} && bun install && bunx wod build . --output dist`);
4409
4416
  writeOut(`Agents: wod skills install --dir ${parsed.target} (Whiteboard Script extraction rules \u2192 .agents/skills/)`);
4410
4417
  return 0;
4411
4418
  } catch (error) {
4412
- writeErr(`[wod init-catalog] ${error.message}`);
4419
+ writeErr(`[wod init-feed] ${error.message}`);
4413
4420
  return 1;
4414
4421
  }
4415
4422
  }
@@ -4722,30 +4729,22 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
4722
4729
  return 0;
4723
4730
  }
4724
4731
  if (kind === "effort") {
4725
- const effort = wodWikiLang.parseEffortFile(fs.readFileSync(file, "utf-8"));
4726
- if (!effort) {
4727
- writeErr(`[wod import] Unparseable effort file (need frontmatter id/slug/label + numeric baseAttributes.met): ${file}`);
4728
- return 1;
4729
- }
4732
+ const source = fs.readFileSync(file, "utf-8");
4730
4733
  const db2 = await openCliDb(cliDb());
4731
4734
  try {
4732
- await persistEffort(db2, { ...effort, registrySource: "user" });
4733
- writeOut(`[wod import] effort ${effort.slug} \u2014 ${effort.label} \u2192 ${db2.path}`);
4735
+ const result = await persistDefinitionNote(db2, "effort", source);
4736
+ writeOut(`[wod import] effort ${result.slug}${result.createdNote ? "" : " (updated)"} \u2014 note ${result.noteId} \u2192 ${db2.path}`);
4734
4737
  } finally {
4735
4738
  await db2.close();
4736
4739
  }
4737
4740
  return 0;
4738
4741
  }
4739
4742
  if (kind === "equipment" && /\.md$/i.test(file)) {
4740
- const equipment = wodWikiLang.parseEquipmentFile(fs.readFileSync(file, "utf-8"));
4741
- if (!equipment) {
4742
- writeErr(`[wod import] Unparseable equipment file (need frontmatter type: equipment + id/slug/label): ${file}`);
4743
- return 1;
4744
- }
4743
+ const source = fs.readFileSync(file, "utf-8");
4745
4744
  const db2 = await openCliDb(cliDb());
4746
4745
  try {
4747
- await persistEquipment(db2, { ...equipment, registrySource: "user" });
4748
- writeOut(`[wod import] equipment ${equipment.slug} \u2014 ${equipment.label} \u2192 ${db2.path}`);
4746
+ const result = await persistDefinitionNote(db2, "equipment", source);
4747
+ writeOut(`[wod import] equipment ${result.slug}${result.createdNote ? "" : " (updated)"} \u2014 note ${result.noteId} \u2192 ${db2.path}`);
4749
4748
  } finally {
4750
4749
  await db2.close();
4751
4750
  }
@@ -4780,18 +4779,18 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
4780
4779
  }
4781
4780
  if (parsed.subcommand === "publish") {
4782
4781
  const isDir = (s) => Boolean(s && (s.startsWith(".") || s.startsWith("/") || s.includes("/") || s.includes("\\")));
4783
- const catalog = isDir(parsed.target) ? void 0 : parsed.target;
4782
+ const notebook = isDir(parsed.target) ? void 0 : parsed.target;
4784
4783
  const targetDir = isDir(parsed.target) ? parsed.target : parsed.target2;
4785
- const outDir = parsed.output ?? targetDir ?? (catalog ? `./dist/seed/${catalog}` : "./dist/seed");
4784
+ const outDir = parsed.output ?? targetDir ?? (notebook ? `./dist/seed/${notebook}` : "./dist/seed");
4786
4785
  const db = await openCliDb(cliDb());
4787
4786
  try {
4788
- const result = await publishCatalogSeed(db, {
4789
- catalog,
4787
+ const result = await publishNotebookSeed(db, {
4788
+ notebook,
4790
4789
  outDir,
4791
4790
  version: parsed.seedVersion
4792
4791
  });
4793
4792
  writeOut(
4794
- `[wod publish] published ${result.catalogs.join(", ")} (${result.totalNotes} notes) \u2192 ${result.outDir} (manifest schema v${result.manifest.schema}, version ${result.manifest.version})`
4793
+ `[wod publish] published ${result.notebooks.join(", ")} (${result.totalNotes} notes) \u2192 ${result.outDir} (manifest schema v${result.manifest.schema}, version ${result.manifest.version})`
4795
4794
  );
4796
4795
  } finally {
4797
4796
  await db.close();
@@ -4810,7 +4809,6 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
4810
4809
  const result = generateSeed2({
4811
4810
  corpusRoot: root,
4812
4811
  ...parsed.output ? { outDir: nodePath().resolve(cwd, parsed.output) } : {},
4813
- ...parsed.template ? { templateFile: nodePath().resolve(cwd, parsed.template) } : {},
4814
4812
  scaffoldDiscoveredEfforts: parsed.scaffold === true
4815
4813
  });
4816
4814
  const kb = (n) => `${(n / 1024).toFixed(0)} KB`;