@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/index.cjs CHANGED
@@ -285,8 +285,8 @@ var init_db = __esm({
285
285
  CLI_UUID_NAMESPACE = "c0ffee00-8b1a-4e2c-9d3f-5a6b7c8d9e0f";
286
286
  }
287
287
  });
288
- function catalogForChunkId(chunkId) {
289
- const value = /^(?:collection|feed)\.(.+)$/.exec(chunkId)?.[1];
288
+ function notebookSlugForChunkId(chunkId) {
289
+ const value = /^notebook\.(.+)$/.exec(chunkId)?.[1];
290
290
  return value && value !== "_root" ? value : void 0;
291
291
  }
292
292
  function canvasRouteSlug(content) {
@@ -302,15 +302,13 @@ function seedNoteSourceId(path, content, chunkId) {
302
302
  if (chunkId === DASHBOARDS_CHUNK_ID) return "dashboards";
303
303
  if (chunkId === EFFORTS_CHUNK_ID) return "efforts";
304
304
  if (chunkId === EQUIPMENT_CHUNK_ID) return "equipment";
305
- if (chunkId === TEMPLATE_CHUNK_ID) return "playground";
306
- if (chunkId.startsWith("collection.")) {
307
- const catalog = catalogForChunkId(chunkId);
308
- return !catalog ? "collection:_root" : stem.toLowerCase() === "readme" ? `collection:${catalog}` : `collection:${catalog}/${stem}`;
305
+ if (chunkId.startsWith("notebook.")) {
306
+ const slug = notebookSlugForChunkId(chunkId);
307
+ return !slug ? "notebook:_root" : stem.toLowerCase() === "readme" ? `notebook:${slug}` : `notebook:${under}`;
309
308
  }
310
- if (chunkId.startsWith("feed.")) return `feed:feeds/${under}`;
311
309
  return void 0;
312
310
  }
313
- var SEED_SCHEMA2, SEED_REGISTERED_WIDGETS, SEED_NAMESPACE, EFFORTS_CHUNK_ID, EQUIPMENT_CHUNK_ID, CANVAS_CHUNK_ID2, DASHBOARDS_CHUNK_ID, TEMPLATE_CHUNK_ID;
311
+ var SEED_SCHEMA2, SEED_REGISTERED_WIDGETS, SEED_NAMESPACE, EFFORTS_CHUNK_ID, EQUIPMENT_CHUNK_ID, CANVAS_CHUNK_ID2, DASHBOARDS_CHUNK_ID;
314
312
  var init_contract = __esm({
315
313
  "src/seedbuild/contract.ts"() {
316
314
  SEED_SCHEMA2 = 9;
@@ -320,7 +318,6 @@ var init_contract = __esm({
320
318
  EQUIPMENT_CHUNK_ID = "equipment";
321
319
  CANVAS_CHUNK_ID2 = "canvas";
322
320
  DASHBOARDS_CHUNK_ID = "dashboards";
323
- TEMPLATE_CHUNK_ID = "template";
324
321
  }
325
322
  });
326
323
 
@@ -547,8 +544,8 @@ __export(compiler_exports, {
547
544
  chunkIdFor: () => chunkIdFor,
548
545
  collectCorpusMarkdown: () => collectCorpusMarkdown,
549
546
  compileSeedRow: () => compileSeedRow,
547
+ dateKeyToCreatedAt: () => dateKeyToCreatedAt,
550
548
  discoverUncatalogedEfforts: () => discoverUncatalogedEfforts,
551
- feedDateToCreatedAt: () => feedDateToCreatedAt,
552
549
  frontmatterDateToCreatedAt: () => frontmatterDateToCreatedAt,
553
550
  generateSeed: () => generateSeed,
554
551
  getFileCommit: () => getFileCommit,
@@ -582,16 +579,15 @@ function chunkIdFor(relPath) {
582
579
  case "efforts":
583
580
  case "equipment":
584
581
  return corpus;
585
- case "collections":
586
- return parts.length === 3 ? `collection._root` : `collection.${slug}`;
587
- case "feeds":
588
- return parts.length === 3 ? `feed._root` : `feed.${slug}`;
582
+ case "notebooks":
583
+ return parts.length === 3 ? `notebook._root` : `notebook.${slug}`;
589
584
  default:
590
585
  return null;
591
586
  }
592
587
  }
593
- function collectCorpusMarkdown(markdownDir) {
594
- return listMarkdownFiles(markdownDir).map((p) => `markdown/${p}`);
588
+ function collectCorpusMarkdown(markdownDir, excludePaths = []) {
589
+ const excluded = new Set(excludePaths);
590
+ return listMarkdownFiles(markdownDir).map((p) => `markdown/${p}`).filter((path) => !excluded.has(path));
595
591
  }
596
592
  function partitionIntoChunks(paths) {
597
593
  const byId = /* @__PURE__ */ new Map();
@@ -599,7 +595,7 @@ function partitionIntoChunks(paths) {
599
595
  const id = chunkIdFor(p);
600
596
  if (id === null) {
601
597
  throw new Error(
602
- `[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.`
598
+ `[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.`
603
599
  );
604
600
  }
605
601
  const list = byId.get(id);
@@ -690,7 +686,7 @@ function frontmatterDateToCreatedAt(raw, path) {
690
686
  }
691
687
  return ts;
692
688
  }
693
- function feedDateToCreatedAt(dateKey) {
689
+ function dateKeyToCreatedAt(dateKey) {
694
690
  if (!/^\d{4}-\d{2}-\d{2}$/.test(dateKey)) return 0;
695
691
  const ts = Date.parse(`${dateKey}T00:00:00Z`);
696
692
  return Number.isNaN(ts) ? 0 : ts;
@@ -706,18 +702,18 @@ function compileSeedRow(path, content, metadata = {}) {
706
702
  });
707
703
  return { path, content, blocks, blockIndex, blockEfforts: [], blockEquipment: [] };
708
704
  }
709
- function buildBlockIndexRows(markdownDir, corpusRoot) {
705
+ function buildBlockIndexRows(markdownDir, corpusRoot, excludePaths = []) {
710
706
  const rows = [];
711
- for (const path$1 of collectCorpusMarkdown(markdownDir)) {
707
+ for (const path$1 of collectCorpusMarkdown(markdownDir, excludePaths)) {
712
708
  const chunkId = chunkIdFor(path$1);
713
709
  if (!chunkId) continue;
714
710
  const content = fs.readFileSync(path.join(corpusRoot, path$1), "utf8");
715
711
  const parts = path$1.split("/");
716
712
  const stem = (parts.at(-1) ?? "").replace(/\.md$/, "");
717
- const catalog = parts[2];
718
- 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;
713
+ const slug = parts[2];
714
+ const routeId = chunkId === "canvas" ? canvasRouteSlug(content) ?? void 0 : chunkId.startsWith("notebook.") ? stem.toLowerCase() === "readme" ? slug : parts.slice(2).join("/").replace(/\.md$/, "") : void 0;
719
715
  const sourceId = seedNoteSourceId(path$1, content, chunkId);
720
- const createdAt = frontmatterDateToCreatedAt(content, path$1) ?? (chunkId.startsWith("feed.") ? feedDateToCreatedAt(parts.at(-2) ?? "") : getFileCreatedAt(path$1, corpusRoot));
716
+ 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));
721
717
  rows.push(...compileSeedRow(path$1, content, { routeId, sourceId, createdAt }).blockIndex);
722
718
  }
723
719
  return rows;
@@ -769,10 +765,10 @@ function loadCorpusReferenceCatalog(markdownDir) {
769
765
  }
770
766
  return { efforts, equipment };
771
767
  }
772
- function discoverUncatalogedEfforts(markdownDir, corpusRoot) {
768
+ function discoverUncatalogedEfforts(markdownDir, corpusRoot, excludePaths = []) {
773
769
  const catalog = loadCorpusReferenceCatalog(markdownDir);
774
770
  const index = wodWikiLang.createReferenceIndex(catalog);
775
- const blocks = buildBlockIndexRows(markdownDir, corpusRoot);
771
+ const blocks = buildBlockIndexRows(markdownDir, corpusRoot, excludePaths);
776
772
  const discovered = /* @__PURE__ */ new Map();
777
773
  for (const block of blocks) {
778
774
  if (block.dataType !== "wod" || !block.rawContent) continue;
@@ -906,22 +902,18 @@ function generateSeed(options = {}) {
906
902
  const webRepositoryUrl = repositoryUrl?.replace(/^git\+/, "").replace(/\.git$/, "");
907
903
  const repositoryLink = webRepositoryUrl && URL.canParse(webRepositoryUrl) ? new URL(webRepositoryUrl) : void 0;
908
904
  if (options.scaffoldDiscoveredEfforts) {
909
- const discovered = discoverUncatalogedEfforts(markdownDir, corpusRoot);
905
+ const discovered = discoverUncatalogedEfforts(markdownDir, corpusRoot, options.excludePaths);
910
906
  if (discovered.length > 0) {
911
907
  scaffoldDiscoveredEfforts(discovered, markdownDir);
912
908
  }
913
909
  }
914
910
  const tScan = Date.now();
915
- const paths = collectCorpusMarkdown(markdownDir);
911
+ const paths = collectCorpusMarkdown(markdownDir, options.excludePaths);
916
912
  const groups = partitionIntoChunks(paths);
917
913
  gateDashboards(groups, corpusRoot);
918
- if (options.templateFile && fs.existsSync(options.templateFile)) {
919
- const templateRowPath = options.templateRowPath ?? path.relative(corpusRoot, options.templateFile).split("\\").join("/");
920
- groups.push({ id: TEMPLATE_CHUNK_ID, files: [templateRowPath] });
921
- }
922
914
  passMs.scan = Date.now() - tScan;
923
915
  const tBlockIndex = Date.now();
924
- const blockRows = buildBlockIndexRows(markdownDir, corpusRoot);
916
+ const blockRows = buildBlockIndexRows(markdownDir, corpusRoot, options.excludePaths);
925
917
  passMs.blockIndex = Date.now() - tBlockIndex;
926
918
  const tParseGate = Date.now();
927
919
  const syntaxProblems = validateWodBlockSyntax(blockRows);
@@ -963,11 +955,10 @@ ${shown}${more}`);
963
955
  const manifestNotebooks = [];
964
956
  const tWrite = Date.now();
965
957
  for (const { id, files } of groups) {
966
- const templateSource = id === TEMPLATE_CHUNK_ID ? options.templateFile : void 0;
967
958
  const records = [];
968
959
  const rows = files.map((p) => {
969
- const raw = fs.readFileSync(templateSource ?? path.join(corpusRoot, p), "utf8");
970
- const content = id === TEMPLATE_CHUNK_ID ? raw.replace(/\$CURSOR/g, "") : raw;
960
+ const raw = fs.readFileSync(path.join(corpusRoot, p), "utf8");
961
+ const content = raw;
971
962
  const compiled = compileSeedRow(p, content);
972
963
  compiled.blockIndex = blocksByPath.get(p) ?? compiled.blockIndex;
973
964
  compiled.blockEfforts = effortsByPath.get(p) ?? [];
@@ -1006,7 +997,7 @@ ${shown}${more}`);
1006
997
  const notebookIndex = {
1007
998
  notebookId: id,
1008
999
  label: fileToDisplayName(id.split(".").at(-1) ?? id),
1009
- category: catalogForChunkId(id),
1000
+ category: notebookSlugForChunkId(id),
1010
1001
  indexPath: notebookIndexPath,
1011
1002
  commit: records.find((r) => r.commit)?.commit ?? gitVersion.commit,
1012
1003
  count: rows.length,
@@ -1102,35 +1093,35 @@ var init_compiler = __esm({
1102
1093
  var VERSION;
1103
1094
  var init_version = __esm({
1104
1095
  "src/version.ts"() {
1105
- VERSION = "0.44.2159";
1096
+ VERSION = "0.45.2166";
1106
1097
  }
1107
1098
  });
1108
1099
 
1109
- // src/cli/scaffoldCatalog.ts
1110
- var scaffoldCatalog_exports = {};
1111
- __export(scaffoldCatalog_exports, {
1112
- scaffoldCatalog: () => scaffoldCatalog,
1113
- validateCatalogName: () => validateCatalogName
1100
+ // src/cli/scaffoldFeed.ts
1101
+ var scaffoldFeed_exports = {};
1102
+ __export(scaffoldFeed_exports, {
1103
+ scaffoldFeed: () => scaffoldFeed,
1104
+ validateFeedName: () => validateFeedName
1114
1105
  });
1115
- function validateCatalogName(name) {
1106
+ function validateFeedName(name) {
1116
1107
  if (name.length === 0 || name === "." || name === "..") {
1117
- throw new Error("Catalog name must be a single non-empty directory name");
1108
+ throw new Error("Feed name must be a single non-empty directory name");
1118
1109
  }
1119
1110
  if (name.includes("/") || name.includes("\\") || name.includes("\0")) {
1120
- throw new Error(`Invalid catalog name '${name}': must be a single directory name (no path separators or traversal)`);
1111
+ throw new Error(`Invalid feed name '${name}': must be a single directory name (no path separators or traversal)`);
1121
1112
  }
1122
1113
  if (/^(?:[A-Za-z]:)?[/\\]/.test(name)) {
1123
- throw new Error(`Invalid catalog name '${name}': absolute paths are not allowed`);
1114
+ throw new Error(`Invalid feed name '${name}': absolute paths are not allowed`);
1124
1115
  }
1125
1116
  if (name.length > 214 || !/^[a-z0-9][a-z0-9._-]*$/.test(name)) {
1126
1117
  throw new Error(
1127
- `Invalid catalog name '${name}': must be a valid npm package name (lowercase letters, digits, dots, hyphens, underscores; no leading dot/hyphen)`
1118
+ `Invalid feed name '${name}': must be a valid npm package name (lowercase letters, digits, dots, hyphens, underscores; no leading dot/hyphen)`
1128
1119
  );
1129
1120
  }
1130
1121
  return name;
1131
1122
  }
1132
- function scaffoldCatalog(name, opts = {}) {
1133
- validateCatalogName(name);
1123
+ function scaffoldFeed(name, opts = {}) {
1124
+ validateFeedName(name);
1134
1125
  const dir = path.resolve(opts.cwd ?? process.cwd(), name);
1135
1126
  try {
1136
1127
  fs.mkdirSync(dir);
@@ -1148,7 +1139,7 @@ function scaffoldCatalog(name, opts = {}) {
1148
1139
  version: "0.1.0",
1149
1140
  private: true,
1150
1141
  type: "module",
1151
- description: `WOD Wiki workout catalog: ${name}`,
1142
+ description: `WOD Wiki workout feed: ${name}`,
1152
1143
  scripts: {
1153
1144
  build: "wod build . --output dist"
1154
1145
  },
@@ -1161,10 +1152,10 @@ function scaffoldCatalog(name, opts = {}) {
1161
1152
  )}
1162
1153
  `],
1163
1154
  [".gitignore", "node_modules/\ndist/\n"],
1164
- [".github/workflows/publish-catalog.yml", publishWorkflow()],
1165
- ["markdown/collections/example/README.md", collectionReadme(name)],
1166
- [`markdown/collections/example/morning-session.md`, exampleWorkout(date)],
1167
- ["README.md", catalogReadme(name)]
1155
+ [".github/workflows/publish-feed.yml", publishWorkflow()],
1156
+ ["markdown/notebooks/example/README.md", feedReadme(name)],
1157
+ [`markdown/notebooks/example/morning-session.md`, exampleWorkout(date)],
1158
+ ["README.md", repoReadme(name)]
1168
1159
  ];
1169
1160
  try {
1170
1161
  for (const [rel, content] of files) {
@@ -1178,13 +1169,13 @@ function scaffoldCatalog(name, opts = {}) {
1178
1169
  }
1179
1170
  return { dir, files: files.map(([rel]) => rel) };
1180
1171
  }
1181
- var publishWorkflow, collectionReadme, exampleWorkout, catalogReadme;
1182
- var init_scaffoldCatalog = __esm({
1183
- "src/cli/scaffoldCatalog.ts"() {
1172
+ var publishWorkflow, feedReadme, exampleWorkout, repoReadme;
1173
+ var init_scaffoldFeed = __esm({
1174
+ "src/cli/scaffoldFeed.ts"() {
1184
1175
  init_version();
1185
- publishWorkflow = () => `name: Publish catalog
1176
+ publishWorkflow = () => `name: Publish feed
1186
1177
 
1187
- # Compile the catalog with the wod CLI and deploy dist/ to GitHub Pages.
1178
+ # Compile the feed with the wod CLI and deploy dist/ to GitHub Pages.
1188
1179
  # Requires Pages enabled: repo Settings \u2192 Pages \u2192 Source: "GitHub Actions".
1189
1180
 
1190
1181
  on:
@@ -1234,10 +1225,10 @@ jobs:
1234
1225
  - id: deployment
1235
1226
  uses: actions/deploy-pages@v4
1236
1227
  `;
1237
- collectionReadme = (name) => `# ${name}
1228
+ feedReadme = (name) => `# ${name}
1238
1229
 
1239
- Example benchmark collection. Each \`.md\` file in this directory becomes part of
1240
- the \`example\` collection chunk; \`README.md\` is the collection's landing page.
1230
+ Example benchmark notebook. Each \`.md\` file in this directory becomes part of
1231
+ the \`example\` notebook chunk; \`README.md\` is the notebook's landing page.
1241
1232
 
1242
1233
  Add one file per workout:
1243
1234
 
@@ -1272,9 +1263,9 @@ date: ${date}
1272
1263
  Pull-ups
1273
1264
  \`\`\`
1274
1265
  `;
1275
- catalogReadme = (name) => `# ${name}
1266
+ repoReadme = (name) => `# ${name}
1276
1267
 
1277
- A [WOD Wiki](https://github.com/bitcobblers/wod-wiki) workout catalog: plain
1268
+ A [WOD Wiki](https://github.com/bitcobblers/wod-wiki) workout feed: plain
1278
1269
  Markdown workouts compiled to static, version-stamped seed chunks and published
1279
1270
  via GitHub Pages.
1280
1271
 
@@ -1286,25 +1277,25 @@ bunx wod build . --output dist
1286
1277
  \`\`\`
1287
1278
 
1288
1279
  Workouts live under \`markdown/\` \u2014 this scaffold starts with one example
1289
- collection. Validate everything with \`bunx wod build\`: it gates every file on
1280
+ feed. Validate everything with \`bunx wod build\`: it gates every file on
1290
1281
  the Whiteboard grammar and corpus layout before writing \`dist/\`.
1291
1282
 
1292
1283
  ## Publish
1293
1284
 
1294
1285
  Push to GitHub and enable Pages (**Settings \u2192 Pages \u2192 Source: GitHub
1295
- Actions**). The bundled workflow (\`.github/workflows/publish-catalog.yml\`)
1296
- builds the catalog on every push to \`main\` and deploys \`dist/\`.
1286
+ Actions**). The bundled workflow (\`.github/workflows/publish-feed.yml\`)
1287
+ builds the feed on every push to \`main\` and deploys \`dist/\`.
1297
1288
 
1298
1289
  ## Share
1299
1290
 
1300
- Once published, anyone can subscribe to this catalog from a WOD Wiki instance
1291
+ Once published, anyone can subscribe to this feed from a WOD Wiki instance
1301
1292
  at:
1302
1293
 
1303
1294
  \`\`\`
1304
- <app-url>/subscribe?source=<url-encoded published catalog URL>
1295
+ <app-url>/subscribe?source=<url-encoded published feed URL>
1305
1296
  \`\`\`
1306
1297
 
1307
- For \`owner\`/\`repo\` on GitHub Pages the catalog URL is the deployed
1298
+ For \`owner\`/\`repo\` on GitHub Pages the feed URL is the deployed
1308
1299
  directory, \`https://owner.github.io/repo/\`, e.g.
1309
1300
  \`/subscribe?source=https%3A%2F%2Fowner.github.io%2Frepo%2F\`.
1310
1301
  `;
@@ -3168,8 +3159,6 @@ async function saveSource(db, options, startTime) {
3168
3159
  sourceRevision++;
3169
3160
  for (const block of Object.values(blocks)) block.sourceRevision = sourceRevision;
3170
3161
  }
3171
- const fm = wodWikiEngine.readFrontmatterMeta(options.source);
3172
- const catalog = typeof fm["catalog"] === "string" && fm["catalog"].trim() || typeof fm["collection"] === "string" && fm["collection"].trim() || existing?.catalog;
3173
3162
  const note = {
3174
3163
  ...existing,
3175
3164
  id: noteId,
@@ -3179,8 +3168,7 @@ async function saveSource(db, options, startTime) {
3179
3168
  createdAt: existing?.createdAt ?? now,
3180
3169
  rawContent: options.source,
3181
3170
  sourceRevision,
3182
- blocks,
3183
- ...catalog ? { catalog } : {}
3171
+ blocks
3184
3172
  };
3185
3173
  const priorRows = await tx.readonly("block_index").getAllFromIndex("by-note", noteId);
3186
3174
  const priorEfforts = await tx.readonly("block_efforts").getAllFromIndex("by-note", noteId);
@@ -3218,7 +3206,6 @@ async function saveSource(db, options, startTime) {
3218
3206
  noteTitle: note.title,
3219
3207
  createdAt: prior?.createdAt ?? now,
3220
3208
  blockContentId: fingerprint,
3221
- ...catalog ? { catalog } : {},
3222
3209
  ...note.sourceId ? { sourceId: note.sourceId } : {}
3223
3210
  });
3224
3211
  if (block.kind === "wod") {
@@ -3389,16 +3376,46 @@ async function persistSessionBundle(db, session, events) {
3389
3376
  });
3390
3377
  return { events: events.length };
3391
3378
  }
3392
- async function persistEffort(db, effort) {
3393
- const sql = await loadSql();
3394
- await db.db.transaction(async (tx) => {
3395
- await sql.putRow(tx, sql.storeDefinition("efforts"), effort);
3396
- });
3397
- }
3398
- async function persistEquipment(db, equipment) {
3399
- const sql = await loadSql();
3400
- await db.db.transaction(async (tx) => {
3401
- await sql.putRow(tx, sql.storeDefinition("equipment"), equipment);
3379
+ async function persistDefinitionNote(db, kind, source) {
3380
+ const parsed = kind === "effort" ? wodWikiLang.parseEffortFile(source) : wodWikiLang.parseEquipmentFile(source);
3381
+ if (!parsed) {
3382
+ 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)");
3383
+ }
3384
+ const family = kind === "effort" ? "efforts" : "equipment";
3385
+ const prior = await db.storage.readonly(family).get(parsed.slug);
3386
+ const stamped = wodWikiEngine.extractNoteIdentity(source)?.noteId;
3387
+ const noteId = stamped ?? prior?.ownerNoteId ?? `${kind}/${parsed.slug}`;
3388
+ const now = Date.now();
3389
+ return db.storage.transaction(["notes", family, "tags", "note_tags"], "readwrite", async (tx) => {
3390
+ const previous = await tx.readonly("notes").get(noteId);
3391
+ const sourceRevision = (previous?.sourceRevision ?? 0) + (previous?.rawContent === source ? 0 : 1);
3392
+ const blocks = wodWikiCore.reconcileNoteBlocks(source, { sourceRevision, registeredWidgets, blocks: previous?.blocks });
3393
+ wodWikiCore.validateNoteBlocks(source, blocks, sourceRevision, { registeredWidgets });
3394
+ const note = {
3395
+ ...previous,
3396
+ id: noteId,
3397
+ title: parsed.label,
3398
+ type: previous?.type ?? "note",
3399
+ createdAt: previous?.createdAt ?? now,
3400
+ rawContent: source,
3401
+ sourceRevision,
3402
+ blocks,
3403
+ sourceId: family,
3404
+ sourcePath: noteId
3405
+ };
3406
+ await tx.readwrite("notes").put(note);
3407
+ const isoNow = new Date(now).toISOString();
3408
+ await tx.readwrite(family).put({
3409
+ ...parsed,
3410
+ registrySource: prior?.registrySource ?? "user",
3411
+ ownerNoteId: noteId,
3412
+ sourceId: family,
3413
+ sourcePath: noteId,
3414
+ createdAt: prior?.createdAt ?? isoNow,
3415
+ updatedAt: isoNow
3416
+ });
3417
+ await saveTags(tx, noteId, wodWikiEngine.extractTypedTags(source), now);
3418
+ return { slug: parsed.slug, noteId, createdNote: !previous };
3402
3419
  });
3403
3420
  }
3404
3421
  async function persistTypedTags(db, labels, type) {
@@ -3476,7 +3493,7 @@ init_db();
3476
3493
  init_contract();
3477
3494
  init_compiler();
3478
3495
  init_report();
3479
- async function publishCatalogSeed(db, options) {
3496
+ async function publishNotebookSeed(db, options) {
3480
3497
  const t0 = Date.now();
3481
3498
  const fs = nodeFs();
3482
3499
  const path = nodePath();
@@ -3484,31 +3501,30 @@ async function publishCatalogSeed(db, options) {
3484
3501
  if (allNotes.length === 0) {
3485
3502
  throw new Error(`[wod publish] No notes found in database ${db.path}`);
3486
3503
  }
3487
- const notesByCatalog = /* @__PURE__ */ new Map();
3504
+ const notesByNotebook = /* @__PURE__ */ new Map();
3488
3505
  for (const note of allNotes) {
3489
- const fm = wodWikiEngine.readFrontmatterMeta(note.rawContent);
3490
- const cat = typeof fm["catalog"] === "string" && fm["catalog"].trim() || typeof fm["collection"] === "string" && fm["collection"].trim() || note.catalog || wodWikiWql.catalogOfItem(note);
3491
- const key = cat || "__uncataloged__";
3492
- const list = notesByCatalog.get(key) ?? [];
3506
+ const slug = wodWikiWql.notebookSlugOfSourceId(note.sourceId);
3507
+ const key = slug || "__unassigned__";
3508
+ const list = notesByNotebook.get(key) ?? [];
3493
3509
  list.push(note);
3494
- notesByCatalog.set(key, list);
3510
+ notesByNotebook.set(key, list);
3495
3511
  }
3496
- const targetCatalogs = /* @__PURE__ */ new Map();
3497
- if (options.catalog) {
3498
- const matching = notesByCatalog.get(options.catalog);
3512
+ const targetNotebooks = /* @__PURE__ */ new Map();
3513
+ if (options.notebook) {
3514
+ const matching = notesByNotebook.get(options.notebook);
3499
3515
  if (matching) {
3500
- targetCatalogs.set(options.catalog, matching);
3501
- } else if (notesByCatalog.has("__uncataloged__") && notesByCatalog.size === 1) {
3502
- targetCatalogs.set(options.catalog, notesByCatalog.get("__uncataloged__"));
3516
+ targetNotebooks.set(options.notebook, matching);
3517
+ } else if (notesByNotebook.has("__unassigned__") && notesByNotebook.size === 1) {
3518
+ targetNotebooks.set(options.notebook, notesByNotebook.get("__unassigned__"));
3503
3519
  } else {
3504
- const available = [...notesByCatalog.keys()].filter((k) => k !== "__uncataloged__");
3520
+ const available = [...notesByNotebook.keys()].filter((k) => k !== "__unassigned__");
3505
3521
  throw new Error(
3506
- `[wod publish] Catalog "${options.catalog}" not found in ${db.path}.` + (available.length > 0 ? ` Available catalogs: ${available.join(", ")}` : "")
3522
+ `[wod publish] Notebook "${options.notebook}" not found in ${db.path}.` + (available.length > 0 ? ` Available notebooks: ${available.join(", ")}` : "")
3507
3523
  );
3508
3524
  }
3509
3525
  } else {
3510
- for (const [cat, notes] of notesByCatalog.entries()) {
3511
- targetCatalogs.set(cat === "__uncataloged__" ? "default" : cat, notes);
3526
+ for (const [slug, notes] of notesByNotebook.entries()) {
3527
+ targetNotebooks.set(slug === "__unassigned__" ? "default" : slug, notes);
3512
3528
  }
3513
3529
  }
3514
3530
  const allIndexRows = await db.storage.readonly("block_index").getAll();
@@ -3537,25 +3553,24 @@ async function publishCatalogSeed(db, options) {
3537
3553
  fs.mkdirSync(chunksDir, { recursive: true });
3538
3554
  const manifestChunks = [];
3539
3555
  let totalNotes = 0;
3540
- const publishedCatalogs = [];
3541
- for (const [catalogName, notes] of targetCatalogs.entries()) {
3542
- publishedCatalogs.push(catalogName);
3556
+ const publishedNotebooks = [];
3557
+ for (const [notebookSlug, notes] of targetNotebooks.entries()) {
3558
+ publishedNotebooks.push(notebookSlug);
3543
3559
  const chunkRows = [];
3544
3560
  for (const note of notes) {
3545
3561
  const stem = (note.title || note.id).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") || "note";
3546
- const notePath = note.sourcePath ?? `markdown/collections/${catalogName}/${stem}.md`;
3562
+ const notePath = note.sourcePath ?? `markdown/notebooks/${notebookSlug}/${stem}.md`;
3547
3563
  const noteBlockIndex = indexByNote.get(note.id) ?? [];
3548
3564
  const noteBlockEfforts = effortsByNote.get(note.id) ?? [];
3549
3565
  const noteBlockEquipment = equipmentByNote.get(note.id) ?? [];
3550
3566
  const blockIndex = noteBlockIndex.length > 0 ? noteBlockIndex.map((b) => ({
3551
3567
  ...b,
3552
3568
  isStatic: true,
3553
- sourceId: b.sourceId ?? `collection:${catalogName}/${stem}`,
3554
- sourcePath: b.sourcePath ?? notePath,
3555
- catalog: catalogName
3569
+ sourceId: b.sourceId ?? `notebook:${notebookSlug}/${stem}`,
3570
+ sourcePath: b.sourcePath ?? notePath
3556
3571
  })) : compileSeedRow(notePath, note.rawContent, {
3557
- routeId: `${catalogName}/${stem}`,
3558
- sourceId: `collection:${catalogName}/${stem}`,
3572
+ routeId: `${notebookSlug}/${stem}`,
3573
+ sourceId: `notebook:${notebookSlug}/${stem}`,
3559
3574
  // Authored frontmatter date first — exports keep the post's own
3560
3575
  // day, never the import/publish time.
3561
3576
  createdAt: note.date ?? note.createdAt,
@@ -3580,7 +3595,7 @@ async function publishCatalogSeed(db, options) {
3580
3595
  blockEquipment
3581
3596
  });
3582
3597
  }
3583
- const chunkId = `collection.${catalogName}`;
3598
+ const chunkId = `notebook.${notebookSlug}`;
3584
3599
  const json2 = JSON.stringify(chunkRows);
3585
3600
  const digest = nodeCrypto().createHash("sha256").update(json2).digest();
3586
3601
  const sha = [...digest].map((b) => b.toString(16).padStart(2, "0")).join("");
@@ -3612,7 +3627,7 @@ async function publishCatalogSeed(db, options) {
3612
3627
  return {
3613
3628
  manifest,
3614
3629
  outDir,
3615
- catalogs: publishedCatalogs,
3630
+ notebooks: publishedNotebooks,
3616
3631
  totalNotes
3617
3632
  };
3618
3633
  }
@@ -4048,12 +4063,6 @@ function parseCliArgs(args) {
4048
4063
  } else if (arg === "--force") {
4049
4064
  result.force = true;
4050
4065
  i++;
4051
- } else if (arg === "--template") {
4052
- result.template = args[++i];
4053
- i++;
4054
- } else if (arg.startsWith("--template=")) {
4055
- result.template = arg.slice("--template=".length);
4056
- i++;
4057
4066
  } else if (arg === "--out") {
4058
4067
  result.output = args[++i];
4059
4068
  i++;
@@ -4074,7 +4083,7 @@ function parseCliArgs(args) {
4074
4083
  if (Number.isSafeInteger(v) && v >= 0) result.seedVersion = v;
4075
4084
  i++;
4076
4085
  } else if (!result.subcommand) {
4077
- 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") {
4086
+ 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") {
4078
4087
  result.subcommand = arg;
4079
4088
  } else {
4080
4089
  result.target = arg;
@@ -4138,10 +4147,10 @@ USAGE:
4138
4147
  wod export <note|playground|session|effort|equipment> <id> [options]
4139
4148
  wod download <note|playground|session|effort|equipment> <id> [options]
4140
4149
  wod import <note|playground|session|effort|equipment> <file> [options]
4141
- wod publish [catalog] [options]
4150
+ wod publish [feed] [options]
4142
4151
  wod build [dir] [options]
4143
- wod init-catalog <name>
4144
- Scaffold a new catalog repository (package.json, example
4152
+ wod init-feed <name>
4153
+ Scaffold a new feed repository (package.json, example
4145
4154
  collection, GitHub Actions Pages workflow). Refuses an
4146
4155
  existing destination.
4147
4156
  wod skills <list | install> [options]
@@ -4234,10 +4243,10 @@ SUBCOMMANDS:
4234
4243
  Upsert an effort registry row from corpus-style markdown.
4235
4244
  import equipment <file>
4236
4245
  Create/upgrade equipment tags (CSV, one label per row).
4237
- publish [catalog] Publish catalog notes from the database into a configured
4246
+ publish [feed] Publish feed notes from the database into a configured
4238
4247
  seed directory (manifest.json, chunks/, report.html)
4239
4248
  compatible with 'wod seed --source <dir>'. Override target
4240
- with -o/--out/--output (defaults to ./dist/seed/<catalog>).
4249
+ with -o/--out/--output (defaults to ./dist/seed/<feed>).
4241
4250
  build [dir] Compile a seed corpus: validate every .md under
4242
4251
  <dir>/markdown (parity gate + dashboard format gate) and
4243
4252
  write manifest.json + content-hashed chunks/ +
@@ -4248,8 +4257,6 @@ SUBCOMMANDS:
4248
4257
  BUILD OPTIONS (for 'build'):
4249
4258
  --scaffold Also scaffold markdown/efforts/discovered/*.md stubs for
4250
4259
  workout effort labels missing from the registry.
4251
- --template <file> Compile an extra markdown file as the 'template' chunk
4252
- (the host's playground intake template).
4253
4260
 
4254
4261
  INPUT SOURCING (for 'query'; without these, the database is queried):
4255
4262
  -c, --corpus <path> Load historical corpus dataset from a versioned JSON file
@@ -4395,20 +4402,20 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
4395
4402
  }
4396
4403
  };
4397
4404
  try {
4398
- if (parsed.subcommand === "init-catalog") {
4405
+ if (parsed.subcommand === "init-feed") {
4399
4406
  if (!parsed.target) {
4400
- writeErr("[wod init-catalog] Error: Missing catalog name (a single new directory name)");
4407
+ writeErr("[wod init-feed] Error: Missing feed name (a single new directory name)");
4401
4408
  return 1;
4402
4409
  }
4403
- const { scaffoldCatalog: scaffoldCatalog2 } = await Promise.resolve().then(() => (init_scaffoldCatalog(), scaffoldCatalog_exports));
4410
+ const { scaffoldFeed: scaffoldFeed2 } = await Promise.resolve().then(() => (init_scaffoldFeed(), scaffoldFeed_exports));
4404
4411
  try {
4405
- const result = scaffoldCatalog2(parsed.target);
4406
- writeOut(`[wod init-catalog] Created ${result.dir} (${result.files.length} files)`);
4412
+ const result = scaffoldFeed2(parsed.target);
4413
+ writeOut(`[wod init-feed] Created ${result.dir} (${result.files.length} files)`);
4407
4414
  writeOut(`Next: cd ${parsed.target} && bun install && bunx wod build . --output dist`);
4408
4415
  writeOut(`Agents: wod skills install --dir ${parsed.target} (Whiteboard Script extraction rules \u2192 .agents/skills/)`);
4409
4416
  return 0;
4410
4417
  } catch (error) {
4411
- writeErr(`[wod init-catalog] ${error.message}`);
4418
+ writeErr(`[wod init-feed] ${error.message}`);
4412
4419
  return 1;
4413
4420
  }
4414
4421
  }
@@ -4721,30 +4728,22 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
4721
4728
  return 0;
4722
4729
  }
4723
4730
  if (kind === "effort") {
4724
- const effort = wodWikiLang.parseEffortFile(fs.readFileSync(file, "utf-8"));
4725
- if (!effort) {
4726
- writeErr(`[wod import] Unparseable effort file (need frontmatter id/slug/label + numeric baseAttributes.met): ${file}`);
4727
- return 1;
4728
- }
4731
+ const source = fs.readFileSync(file, "utf-8");
4729
4732
  const db2 = await openCliDb(cliDb());
4730
4733
  try {
4731
- await persistEffort(db2, { ...effort, registrySource: "user" });
4732
- writeOut(`[wod import] effort ${effort.slug} \u2014 ${effort.label} \u2192 ${db2.path}`);
4734
+ const result = await persistDefinitionNote(db2, "effort", source);
4735
+ writeOut(`[wod import] effort ${result.slug}${result.createdNote ? "" : " (updated)"} \u2014 note ${result.noteId} \u2192 ${db2.path}`);
4733
4736
  } finally {
4734
4737
  await db2.close();
4735
4738
  }
4736
4739
  return 0;
4737
4740
  }
4738
4741
  if (kind === "equipment" && /\.md$/i.test(file)) {
4739
- const equipment = wodWikiLang.parseEquipmentFile(fs.readFileSync(file, "utf-8"));
4740
- if (!equipment) {
4741
- writeErr(`[wod import] Unparseable equipment file (need frontmatter type: equipment + id/slug/label): ${file}`);
4742
- return 1;
4743
- }
4742
+ const source = fs.readFileSync(file, "utf-8");
4744
4743
  const db2 = await openCliDb(cliDb());
4745
4744
  try {
4746
- await persistEquipment(db2, { ...equipment, registrySource: "user" });
4747
- writeOut(`[wod import] equipment ${equipment.slug} \u2014 ${equipment.label} \u2192 ${db2.path}`);
4745
+ const result = await persistDefinitionNote(db2, "equipment", source);
4746
+ writeOut(`[wod import] equipment ${result.slug}${result.createdNote ? "" : " (updated)"} \u2014 note ${result.noteId} \u2192 ${db2.path}`);
4748
4747
  } finally {
4749
4748
  await db2.close();
4750
4749
  }
@@ -4779,18 +4778,18 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
4779
4778
  }
4780
4779
  if (parsed.subcommand === "publish") {
4781
4780
  const isDir = (s) => Boolean(s && (s.startsWith(".") || s.startsWith("/") || s.includes("/") || s.includes("\\")));
4782
- const catalog = isDir(parsed.target) ? void 0 : parsed.target;
4781
+ const notebook = isDir(parsed.target) ? void 0 : parsed.target;
4783
4782
  const targetDir = isDir(parsed.target) ? parsed.target : parsed.target2;
4784
- const outDir = parsed.output ?? targetDir ?? (catalog ? `./dist/seed/${catalog}` : "./dist/seed");
4783
+ const outDir = parsed.output ?? targetDir ?? (notebook ? `./dist/seed/${notebook}` : "./dist/seed");
4785
4784
  const db = await openCliDb(cliDb());
4786
4785
  try {
4787
- const result = await publishCatalogSeed(db, {
4788
- catalog,
4786
+ const result = await publishNotebookSeed(db, {
4787
+ notebook,
4789
4788
  outDir,
4790
4789
  version: parsed.seedVersion
4791
4790
  });
4792
4791
  writeOut(
4793
- `[wod publish] published ${result.catalogs.join(", ")} (${result.totalNotes} notes) \u2192 ${result.outDir} (manifest schema v${result.manifest.schema}, version ${result.manifest.version})`
4792
+ `[wod publish] published ${result.notebooks.join(", ")} (${result.totalNotes} notes) \u2192 ${result.outDir} (manifest schema v${result.manifest.schema}, version ${result.manifest.version})`
4794
4793
  );
4795
4794
  } finally {
4796
4795
  await db.close();
@@ -4809,7 +4808,6 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
4809
4808
  const result = generateSeed2({
4810
4809
  corpusRoot: root,
4811
4810
  ...parsed.output ? { outDir: nodePath().resolve(cwd, parsed.output) } : {},
4812
- ...parsed.template ? { templateFile: nodePath().resolve(cwd, parsed.template) } : {},
4813
4811
  scaffoldDiscoveredEfforts: parsed.scaffold === true
4814
4812
  });
4815
4813
  const kb = (n) => `${(n / 1024).toFixed(0)} KB`;