@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
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/server.ts"],"names":["dist"],"mappings":"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","file":"chunk-RWNL6APX.mjs","sourcesContent":["/**\n * server.ts — `wod server` (alias `serve`) / `wod playground` (Bun-only front\n * door).\n *\n * Serves the packaged engine stack: the shared fetch handler shipped in this\n * package (the same code the Docker image serves) plus the frontend build\n * packaged under the engine's dist/web/ — no repository checkout, no runtime\n * build.\n *\n * server probes the configured database first (never creates schema —\n * that's `wod init`), then serves API + SPA.\n * playground serves the browser-storage SPA build and never opens a database\n * (every /api request answers 404).\n *\n * Retains the event loop until SIGINT/SIGTERM; shutdown drains in-flight\n * requests before closing the database.\n */\n\nimport http from 'node:http';\nimport { Readable } from 'node:stream';\nimport { openCliDb, nodeFs, nodePath } from './db';\nimport type { CliDatabaseConfig } from './config';\nimport type { CliDb } from './db';\nimport { createHandler } from '../server/app';\ntype WriteOut = (text: string) => void;\n\nexport type CliServerMode = 'server' | 'playground';\n\nexport interface CliServerOptions {\n /** Resolved database configuration. REQUIRED for 'server'; ignored — never\n * opened or validated — for 'playground'. */\n database?: CliDatabaseConfig;\n host?: string;\n port?: string;\n /** Explicit dist directory (flag or PLAYGROUND_DIST); must already exist. */\n dist?: string;\n /** Merged CLI environment (process env + .env). */\n env: Record<string, string | undefined>;\n}\n\ninterface HttpServerLike {\n stop(): Promise<void>;\n}\n\nfunction withResolvers<T>() {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: unknown) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n\nfunction startHttpServer(\n handler: (request: Request) => Promise<Response>,\n host: string,\n port: number,\n): Promise<HttpServerLike> {\n const b = (globalThis as { Bun?: { serve(opts: { port: number; hostname: string; fetch: (req: Request) => Promise<Response> }): { stop(): Promise<void> } } }).Bun;\n if (b?.serve) {\n const s = b.serve({ port, hostname: host, fetch: handler });\n return Promise.resolve({ stop: () => s.stop() });\n }\n\n // ponytail: node:http adapter streams Web Request/Response in pure Node (v18+) without express/fastify dependencies\n const { promise, resolve, reject } = withResolvers<HttpServerLike>();\n const server = http.createServer(async (req, res) => {\n try {\n const url = new URL(req.url || '/', `http://${req.headers.host || `${host}:${port}`}`);\n const hasBody = req.method !== 'GET' && req.method !== 'HEAD';\n const webReq = new Request(url, {\n method: req.method,\n headers: req.headers as Record<string, string>,\n body: hasBody ? (Readable.toWeb(req) as unknown as BodyInit) : null,\n ...(hasBody ? { duplex: 'half' } : {}),\n } as RequestInit);\n const webRes = await handler(webReq);\n res.writeHead(webRes.status, Object.fromEntries(webRes.headers.entries()));\n if (webRes.body) {\n Readable.fromWeb(webRes.body as any).pipe(res);\n } else {\n res.end();\n }\n } catch {\n res.statusCode = 500;\n res.end('internal server error');\n }\n });\n\n server.once('error', reject);\n server.listen(port, host, () => {\n resolve({\n stop: () => {\n const close = withResolvers<void>();\n server.close(() => close.resolve());\n return close.promise;\n },\n });\n });\n return promise;\n}\n\n/**\n * This module's directory, robust across shipped layouts: ESM via\n * import.meta.url (works under node and Bun; esbuild shims it in CJS too) and\n * Bun's import.meta.dir. ESM code splitting may relocate this module to a\n * chunk at dist/ root, so never assume dist/cli.\n */\nfunction moduleDir(): string {\n const p = nodePath();\n const meta: { dir?: unknown; url?: unknown } = import.meta; // Bun adds `dir`; the TS lib knows neither.\n if (typeof meta.dir === 'string') return p.resolve(meta.dir);\n if (typeof meta.url === 'string' && meta.url.startsWith('file:')) {\n return p.resolve(p.dirname(decodeURIComponent(new URL('.', meta.url).pathname)));\n }\n throw new Error('wod server/playground: cannot determine the installed engine module directory');\n}\n\n/**\n * The installed engine package root: nearest enclosing package.json belonging\n * to this package, walking up from the executing module (dist/cli, a split\n * chunk at dist/ root, dist/bin, or src/cli in a checkout).\n */\nfunction engineRoot(): string {\n const p = nodePath();\n const fs = nodeFs();\n for (let dir = moduleDir(); ; dir = p.dirname(dir)) {\n try {\n if (JSON.parse(fs.readFileSync(p.resolve(dir, 'package.json'), 'utf8')).name === '@bitcobblers/wod-wiki-tools') return dir;\n } catch { /* no manifest here — keep walking */ }\n const parent = p.dirname(dir);\n if (parent === dir) break;\n }\n throw new Error('wod server/playground: cannot locate the installed @bitcobblers/wod-wiki-tools package');\n}\n\n/**\n * Resolve the frontend dist directory. The packaged default lives inside the\n * installed engine module (dist/web/server or dist/web/playground); an\n * explicit --dist/PLAYGROUND_DIST is cwd-relative and must already contain a\n * built SPA (index.html). Nothing is built at runtime.\n */\nfunction resolveDist(mode: CliServerMode, options: CliServerOptions): string {\n const p = nodePath();\n const explicit = options.dist?.trim() || options.env.PLAYGROUND_DIST?.trim() || undefined;\n if (explicit) {\n const dist = p.resolve(explicit); // cwd-relative override\n if (!nodeFs().existsSync(p.resolve(dist, 'index.html'))) {\n throw new Error(\n `wod ${mode}: no built frontend (index.html) at ${dist} — --dist/PLAYGROUND_DIST must `\n + 'point at an already-built directory (the CLI never builds frontends at runtime)',\n );\n }\n return dist;\n }\n const dist = p.resolve(engineRoot(), 'dist', 'web', mode === 'playground' ? 'playground' : 'server');\n if (!nodeFs().existsSync(p.resolve(dist, 'index.html'))) {\n throw new Error(\n `wod ${mode}: packaged frontend missing — expected ${dist}/index.html. `\n + 'Reinstall @bitcobblers/wod-wiki-tools (bun add @bitcobblers/wod-wiki-tools), '\n + 'or rebuild the release assets from a checkout (bun run build:cli) and reinstall the package.',\n );\n }\n return dist;\n}\n\n/** Validate bind address first: flag > HOST/PORT env > loopback:3000. */\nfunction resolveBind(mode: CliServerMode, options: CliServerOptions): { host: string; port: number } {\n const host = options.host?.trim() || options.env.HOST?.trim() || '127.0.0.1';\n const rawPort = options.port?.trim() || options.env.PORT?.trim() || '3000';\n const port = Number(rawPort);\n if (!Number.isInteger(port) || port < 1 || port > 65535) {\n throw new Error(`wod ${mode}: invalid port ${JSON.stringify(rawPort)} (need integer 1..65535)`);\n }\n return { host, port };\n}\n\n/**\n * Start the shared server for `wod server` / `wod playground`. Throws on any\n * startup failure; on success it never returns until SIGINT/SIGTERM (drain,\n * close database, exit 0).\n */\nexport async function runCliServer(\n mode: CliServerMode,\n options: CliServerOptions,\n writeOut: WriteOut,\n): Promise<void> {\n const { host, port } = resolveBind(mode, options); // Validate bind before opening anything.\n\n // Server probes the database BEFORE binding a socket: a missing/uninitialized\n // database refuses with `wod init` guidance.\n let db: CliDb | undefined;\n let dbLabel = 'no database';\n if (mode === 'server') {\n const database = options.database; // hoisted so the guard's narrowing sticks\n if (!database) {\n throw new Error('wod server: no database configuration resolved — this is a runner bug (expected resolveDatabaseConfig output)');\n }\n try {\n db = await openCliDb(database, { initialize: false });\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n throw new Error(`wod server: database not ready — run \\`wod init\\` first. ${message}`, { cause: e });\n }\n dbLabel = db.path;\n }\n\n let server: HttpServerLike;\n try {\n const dist = resolveDist(mode, options);\n // Bundled server handler\n const handler = createHandler(db?.db ?? null, { playgroundDist: dist });\n // Playground: no database exists to close — createHandler(null) answers\n server = await startHttpServer(handler, host, port);\n if (mode === 'server') {\n writeOut(`wod server: http://${host}:${port} — ${dbLabel} · dist ${dist}`);\n } else {\n writeOut(`wod playground: http://${host}:${port} — in-browser storage (no database) · dist ${dist}`);\n }\n } catch (e) {\n if (db) await db.close(); // never leak the probe connection when startup fails\n throw e;\n }\n\n let closing = false;\n const shutdown = async (): Promise<void> => {\n if (closing) process.exit(0); // second signal forces the exit\n closing = true;\n try {\n await server.stop();\n } finally {\n if (db) await db.close();\n process.exit(0);\n }\n };\n process.on('SIGINT', () => { void shutdown(); });\n process.on('SIGTERM', () => { void shutdown(); });\n\n // Park until a signal handler exits the process.\n await new Promise<never>(() => {});\n}\n"]}
1
+ {"version":3,"sources":["../src/cli/server.ts"],"names":["dist"],"mappings":"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","file":"chunk-FSOBPDUC.mjs","sourcesContent":["/**\n * server.ts — `wod server` (alias `serve`) / `wod playground` (Bun-only front\n * door).\n *\n * Serves the packaged engine stack: the shared fetch handler shipped in this\n * package (the same code the Docker image serves) plus the frontend build\n * packaged under the engine's dist/web/ — no repository checkout, no runtime\n * build.\n *\n * server probes the configured database first (never creates schema —\n * that's `wod init`), then serves API + SPA.\n * playground serves the browser-storage SPA build and never opens a database\n * (every /api request answers 404).\n *\n * Retains the event loop until SIGINT/SIGTERM; shutdown drains in-flight\n * requests before closing the database.\n */\n\nimport http from 'node:http';\nimport { Readable } from 'node:stream';\nimport { openCliDb, nodeFs, nodePath } from './db';\nimport type { CliDatabaseConfig } from './config';\nimport type { CliDb } from './db';\nimport { createHandler } from '../server/app';\ntype WriteOut = (text: string) => void;\n\nexport type CliServerMode = 'server' | 'playground';\n\nexport interface CliServerOptions {\n /** Resolved database configuration. REQUIRED for 'server'; ignored — never\n * opened or validated — for 'playground'. */\n database?: CliDatabaseConfig;\n host?: string;\n port?: string;\n /** Explicit dist directory (flag or PLAYGROUND_DIST); must already exist. */\n dist?: string;\n /** Merged CLI environment (process env + .env). */\n env: Record<string, string | undefined>;\n}\n\ninterface HttpServerLike {\n stop(): Promise<void>;\n}\n\nfunction withResolvers<T>() {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: unknown) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n\nfunction startHttpServer(\n handler: (request: Request) => Promise<Response>,\n host: string,\n port: number,\n): Promise<HttpServerLike> {\n const b = (globalThis as { Bun?: { serve(opts: { port: number; hostname: string; fetch: (req: Request) => Promise<Response> }): { stop(): Promise<void> } } }).Bun;\n if (b?.serve) {\n const s = b.serve({ port, hostname: host, fetch: handler });\n return Promise.resolve({ stop: () => s.stop() });\n }\n\n // ponytail: node:http adapter streams Web Request/Response in pure Node (v18+) without express/fastify dependencies\n const { promise, resolve, reject } = withResolvers<HttpServerLike>();\n const server = http.createServer(async (req, res) => {\n try {\n const url = new URL(req.url || '/', `http://${req.headers.host || `${host}:${port}`}`);\n const hasBody = req.method !== 'GET' && req.method !== 'HEAD';\n const webReq = new Request(url, {\n method: req.method,\n headers: req.headers as Record<string, string>,\n body: hasBody ? (Readable.toWeb(req) as unknown as BodyInit) : null,\n ...(hasBody ? { duplex: 'half' } : {}),\n } as RequestInit);\n const webRes = await handler(webReq);\n res.writeHead(webRes.status, Object.fromEntries(webRes.headers.entries()));\n if (webRes.body) {\n Readable.fromWeb(webRes.body as any).pipe(res);\n } else {\n res.end();\n }\n } catch {\n res.statusCode = 500;\n res.end('internal server error');\n }\n });\n\n server.once('error', reject);\n server.listen(port, host, () => {\n resolve({\n stop: () => {\n const close = withResolvers<void>();\n server.close(() => close.resolve());\n return close.promise;\n },\n });\n });\n return promise;\n}\n\n/**\n * This module's directory, robust across shipped layouts: ESM via\n * import.meta.url (works under node and Bun; esbuild shims it in CJS too) and\n * Bun's import.meta.dir. ESM code splitting may relocate this module to a\n * chunk at dist/ root, so never assume dist/cli.\n */\nfunction moduleDir(): string {\n const p = nodePath();\n const meta: { dir?: unknown; url?: unknown } = import.meta; // Bun adds `dir`; the TS lib knows neither.\n if (typeof meta.dir === 'string') return p.resolve(meta.dir);\n if (typeof meta.url === 'string' && meta.url.startsWith('file:')) {\n return p.resolve(p.dirname(decodeURIComponent(new URL('.', meta.url).pathname)));\n }\n throw new Error('wod server/playground: cannot determine the installed engine module directory');\n}\n\n/**\n * The installed engine package root: nearest enclosing package.json belonging\n * to this package, walking up from the executing module (dist/cli, a split\n * chunk at dist/ root, dist/bin, or src/cli in a checkout).\n */\nfunction engineRoot(): string {\n const p = nodePath();\n const fs = nodeFs();\n for (let dir = moduleDir(); ; dir = p.dirname(dir)) {\n try {\n if (JSON.parse(fs.readFileSync(p.resolve(dir, 'package.json'), 'utf8')).name === '@bitcobblers/wod-wiki-tools') return dir;\n } catch { /* no manifest here — keep walking */ }\n const parent = p.dirname(dir);\n if (parent === dir) break;\n }\n throw new Error('wod server/playground: cannot locate the installed @bitcobblers/wod-wiki-tools package');\n}\n\n/**\n * Resolve the frontend dist directory. The packaged default lives inside the\n * installed engine module (dist/web/server or dist/web/playground); an\n * explicit --dist/PLAYGROUND_DIST is cwd-relative and must already contain a\n * built SPA (index.html). Nothing is built at runtime.\n */\nfunction resolveDist(mode: CliServerMode, options: CliServerOptions): string {\n const p = nodePath();\n const explicit = options.dist?.trim() || options.env.PLAYGROUND_DIST?.trim() || undefined;\n if (explicit) {\n const dist = p.resolve(explicit); // cwd-relative override\n if (!nodeFs().existsSync(p.resolve(dist, 'index.html'))) {\n throw new Error(\n `wod ${mode}: no built frontend (index.html) at ${dist} — --dist/PLAYGROUND_DIST must `\n + 'point at an already-built directory (the CLI never builds frontends at runtime)',\n );\n }\n return dist;\n }\n const dist = p.resolve(engineRoot(), 'dist', 'web', mode === 'playground' ? 'playground' : 'server');\n if (!nodeFs().existsSync(p.resolve(dist, 'index.html'))) {\n throw new Error(\n `wod ${mode}: packaged frontend missing — expected ${dist}/index.html. `\n + 'Reinstall @bitcobblers/wod-wiki-tools (bun add @bitcobblers/wod-wiki-tools), '\n + 'or rebuild the release assets from a checkout (bun run build:cli) and reinstall the package.',\n );\n }\n return dist;\n}\n\n/** Validate bind address first: flag > HOST/PORT env > loopback:3000. */\nfunction resolveBind(mode: CliServerMode, options: CliServerOptions): { host: string; port: number } {\n const host = options.host?.trim() || options.env.HOST?.trim() || '127.0.0.1';\n const rawPort = options.port?.trim() || options.env.PORT?.trim() || '3000';\n const port = Number(rawPort);\n if (!Number.isInteger(port) || port < 1 || port > 65535) {\n throw new Error(`wod ${mode}: invalid port ${JSON.stringify(rawPort)} (need integer 1..65535)`);\n }\n return { host, port };\n}\n\n/**\n * Start the shared server for `wod server` / `wod playground`. Throws on any\n * startup failure; on success it never returns until SIGINT/SIGTERM (drain,\n * close database, exit 0).\n */\nexport async function runCliServer(\n mode: CliServerMode,\n options: CliServerOptions,\n writeOut: WriteOut,\n): Promise<void> {\n const { host, port } = resolveBind(mode, options); // Validate bind before opening anything.\n\n // Server probes the database BEFORE binding a socket: a missing/uninitialized\n // database refuses with `wod init` guidance.\n let db: CliDb | undefined;\n let dbLabel = 'no database';\n if (mode === 'server') {\n const database = options.database; // hoisted so the guard's narrowing sticks\n if (!database) {\n throw new Error('wod server: no database configuration resolved — this is a runner bug (expected resolveDatabaseConfig output)');\n }\n try {\n db = await openCliDb(database, { initialize: false });\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n throw new Error(`wod server: database not ready — run \\`wod init\\` first. ${message}`, { cause: e });\n }\n dbLabel = db.path;\n }\n\n let server: HttpServerLike;\n try {\n const dist = resolveDist(mode, options);\n // Bundled server handler\n const handler = createHandler(db?.db ?? null, { playgroundDist: dist });\n // Playground: no database exists to close — createHandler(null) answers\n server = await startHttpServer(handler, host, port);\n if (mode === 'server') {\n writeOut(`wod server: http://${host}:${port} — ${dbLabel} · dist ${dist}`);\n } else {\n writeOut(`wod playground: http://${host}:${port} — in-browser storage (no database) · dist ${dist}`);\n }\n } catch (e) {\n if (db) await db.close(); // never leak the probe connection when startup fails\n throw e;\n }\n\n let closing = false;\n const shutdown = async (): Promise<void> => {\n if (closing) process.exit(0); // second signal forces the exit\n closing = true;\n try {\n await server.stop();\n } finally {\n if (db) await db.close();\n process.exit(0);\n }\n };\n process.on('SIGINT', () => { void shutdown(); });\n process.on('SIGTERM', () => { void shutdown(); });\n\n // Park until a signal handler exits the process.\n await new Promise<never>(() => {});\n}\n"]}
@@ -5,8 +5,8 @@ if (typeof globalThis.require === 'undefined') {
5
5
  }
6
6
 
7
7
  // src/version.ts
8
- var VERSION = "0.44.2159";
8
+ var VERSION = "0.45.2166";
9
9
 
10
10
  export { VERSION };
11
- //# sourceMappingURL=chunk-SOGZC3TL.mjs.map
12
- //# sourceMappingURL=chunk-SOGZC3TL.mjs.map
11
+ //# sourceMappingURL=chunk-O5ZCOUQE.mjs.map
12
+ //# sourceMappingURL=chunk-O5ZCOUQE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/version.ts"],"names":[],"mappings":";;;;;;;AAIO,IAAM,OAAA,GAAU","file":"chunk-O5ZCOUQE.mjs","sourcesContent":["/**\n * Auto-generated build version metadata.\n * Do not edit directly; updated by scripts/stamp-version.ts\n */\nexport const VERSION = '0.45.2166';\nexport const GIT_SHA = '32bda10';\nexport const BUILD_TIME = '2026-10-26T20:01:09.868Z';\nexport const SEMVER = {\n version: '0.45.2166',\n gitSha: '32bda10',\n buildTime: '2026-10-26T20:01:09.868Z',\n} as const;\n"]}
@@ -1,11 +1,11 @@
1
1
  import { createRequire } from 'module';
2
- import { compileSeedRow, SEED_SCHEMA, writeBuildReport } from './chunk-BQ6HTRH3.mjs';
3
- import { VERSION } from './chunk-SOGZC3TL.mjs';
4
- import { nodePath, openCliDb, nodeFs, sqliteIndexStore, sqliteEffortStore, sqliteBlockStore, sqliteNoteStore, sqliteEventStore, getNoteBundle, getSessionBundle, getEffortBySlug, getEquipmentBySlug, listTagsByType, loadSql, uuid5, CLI_UUID_NAMESPACE, nodeCrypto, stableNoteId, randomId } from './chunk-IWT7U3WX.mjs';
2
+ import { compileSeedRow, SEED_SCHEMA, writeBuildReport } from './chunk-EAFF2GVB.mjs';
3
+ import { VERSION } from './chunk-O5ZCOUQE.mjs';
4
+ import { nodePath, openCliDb, nodeFs, sqliteIndexStore, sqliteEffortStore, sqliteBlockStore, sqliteNoteStore, sqliteEventStore, getNoteBundle, getSessionBundle, getEffortBySlug, getEquipmentBySlug, listTagsByType, uuid5, CLI_UUID_NAMESPACE, nodeCrypto, stableNoteId, randomId } from './chunk-F7IXIJ4I.mjs';
5
5
  import { __require } from './chunk-6L5ZDZJ7.mjs';
6
6
  import { createParser, frozenNow, createCompiler, createMockClock, RuntimeStack, EventBus, ScriptRuntime, createAnalyticsEngineForBlock, StartSessionAction, NextEvent, toStoredOutputStatement, bundledEfforts, parseEffortFile, parseEquipmentFile, createReferenceIndex, parseScript, extractStatementRefs } from '@bitcobblers/wod-wiki-lang';
7
- import { buildStatementTree, createIRFile, registerLanguagePack, extractNoteIdentity, extractTypedTags, composeNoteMarkdown, sessionToCsv, effortToMarkdown, equipmentToMarkdown, equipmentToCsv, csvToEquipmentLabels, csvToSessionRows, isIRFile, inMemoryEventStore, readFrontmatterMeta, assertSeedManifest, seedMetaKey, SEED_SCHEMA as SEED_SCHEMA$1, emptySeedMeta, CANVAS_CHUNK_ID, assertSeedRows, seedNoteId, applySeedChunk } from '@bitcobblers/wod-wiki-engine';
8
- import { toEventRows, toSummaryEventRows, parseQuery, QueryService, isPipelineQuery, isFindQuery, catalogOfItem } from '@bitcobblers/wod-wiki-wql';
7
+ import { buildStatementTree, createIRFile, registerLanguagePack, extractNoteIdentity, extractTypedTags, composeNoteMarkdown, sessionToCsv, effortToMarkdown, equipmentToMarkdown, equipmentToCsv, csvToEquipmentLabels, csvToSessionRows, isIRFile, inMemoryEventStore, assertSeedManifest, seedMetaKey, SEED_SCHEMA as SEED_SCHEMA$1, emptySeedMeta, CANVAS_CHUNK_ID, assertSeedRows, seedNoteId, applySeedChunk } from '@bitcobblers/wod-wiki-engine';
8
+ import { toEventRows, toSummaryEventRows, parseQuery, QueryService, isPipelineQuery, isFindQuery, notebookSlugOfSourceId } from '@bitcobblers/wod-wiki-wql';
9
9
  import { validateNoteBlocks, parseDocumentSections, blockContentId, reconcileNoteBlocks, KNOWN_SECTION_WIDGETS, MetricType } from '@bitcobblers/wod-wiki-core';
10
10
  import { rowsEqual, DB_VERSION } from '@bitcobblers/wod-wiki-storage';
11
11
 
@@ -1632,8 +1632,6 @@ async function saveSource(db, options, startTime) {
1632
1632
  sourceRevision++;
1633
1633
  for (const block of Object.values(blocks)) block.sourceRevision = sourceRevision;
1634
1634
  }
1635
- const fm = readFrontmatterMeta(options.source);
1636
- const catalog = typeof fm["catalog"] === "string" && fm["catalog"].trim() || typeof fm["collection"] === "string" && fm["collection"].trim() || existing?.catalog;
1637
1635
  const note = {
1638
1636
  ...existing,
1639
1637
  id: noteId,
@@ -1643,8 +1641,7 @@ async function saveSource(db, options, startTime) {
1643
1641
  createdAt: existing?.createdAt ?? now,
1644
1642
  rawContent: options.source,
1645
1643
  sourceRevision,
1646
- blocks,
1647
- ...catalog ? { catalog } : {}
1644
+ blocks
1648
1645
  };
1649
1646
  const priorRows = await tx.readonly("block_index").getAllFromIndex("by-note", noteId);
1650
1647
  const priorEfforts = await tx.readonly("block_efforts").getAllFromIndex("by-note", noteId);
@@ -1682,7 +1679,6 @@ async function saveSource(db, options, startTime) {
1682
1679
  noteTitle: note.title,
1683
1680
  createdAt: prior?.createdAt ?? now,
1684
1681
  blockContentId: fingerprint,
1685
- ...catalog ? { catalog } : {},
1686
1682
  ...note.sourceId ? { sourceId: note.sourceId } : {}
1687
1683
  });
1688
1684
  if (block.kind === "wod") {
@@ -1853,16 +1849,46 @@ async function persistSessionBundle(db, session, events) {
1853
1849
  });
1854
1850
  return { events: events.length };
1855
1851
  }
1856
- async function persistEffort(db, effort) {
1857
- const sql = await loadSql();
1858
- await db.db.transaction(async (tx) => {
1859
- await sql.putRow(tx, sql.storeDefinition("efforts"), effort);
1860
- });
1861
- }
1862
- async function persistEquipment(db, equipment) {
1863
- const sql = await loadSql();
1864
- await db.db.transaction(async (tx) => {
1865
- await sql.putRow(tx, sql.storeDefinition("equipment"), equipment);
1852
+ async function persistDefinitionNote(db, kind, source) {
1853
+ const parsed = kind === "effort" ? parseEffortFile(source) : parseEquipmentFile(source);
1854
+ if (!parsed) {
1855
+ 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)");
1856
+ }
1857
+ const family = kind === "effort" ? "efforts" : "equipment";
1858
+ const prior = await db.storage.readonly(family).get(parsed.slug);
1859
+ const stamped = extractNoteIdentity(source)?.noteId;
1860
+ const noteId = stamped ?? prior?.ownerNoteId ?? `${kind}/${parsed.slug}`;
1861
+ const now = Date.now();
1862
+ return db.storage.transaction(["notes", family, "tags", "note_tags"], "readwrite", async (tx) => {
1863
+ const previous = await tx.readonly("notes").get(noteId);
1864
+ const sourceRevision = (previous?.sourceRevision ?? 0) + (previous?.rawContent === source ? 0 : 1);
1865
+ const blocks = reconcileNoteBlocks(source, { sourceRevision, registeredWidgets, blocks: previous?.blocks });
1866
+ validateNoteBlocks(source, blocks, sourceRevision, { registeredWidgets });
1867
+ const note = {
1868
+ ...previous,
1869
+ id: noteId,
1870
+ title: parsed.label,
1871
+ type: previous?.type ?? "note",
1872
+ createdAt: previous?.createdAt ?? now,
1873
+ rawContent: source,
1874
+ sourceRevision,
1875
+ blocks,
1876
+ sourceId: family,
1877
+ sourcePath: noteId
1878
+ };
1879
+ await tx.readwrite("notes").put(note);
1880
+ const isoNow = new Date(now).toISOString();
1881
+ await tx.readwrite(family).put({
1882
+ ...parsed,
1883
+ registrySource: prior?.registrySource ?? "user",
1884
+ ownerNoteId: noteId,
1885
+ sourceId: family,
1886
+ sourcePath: noteId,
1887
+ createdAt: prior?.createdAt ?? isoNow,
1888
+ updatedAt: isoNow
1889
+ });
1890
+ await saveTags(tx, noteId, extractTypedTags(source), now);
1891
+ return { slug: parsed.slug, noteId, createdNote: !previous };
1866
1892
  });
1867
1893
  }
1868
1894
  async function persistTypedTags(db, labels, type) {
@@ -1931,7 +1957,7 @@ function defaultSeedDirs(cwd) {
1931
1957
  const base = nodePath().resolve(cwd, "apps", "playground", "public", "seed");
1932
1958
  return ["core", "community"].map((id) => nodePath().resolve(base, id)).filter((dir) => nodeFs().existsSync(nodePath().resolve(dir, "manifest.json")));
1933
1959
  }
1934
- async function publishCatalogSeed(db, options) {
1960
+ async function publishNotebookSeed(db, options) {
1935
1961
  const t0 = Date.now();
1936
1962
  const fs = nodeFs();
1937
1963
  const path = nodePath();
@@ -1939,31 +1965,30 @@ async function publishCatalogSeed(db, options) {
1939
1965
  if (allNotes.length === 0) {
1940
1966
  throw new Error(`[wod publish] No notes found in database ${db.path}`);
1941
1967
  }
1942
- const notesByCatalog = /* @__PURE__ */ new Map();
1968
+ const notesByNotebook = /* @__PURE__ */ new Map();
1943
1969
  for (const note of allNotes) {
1944
- const fm = readFrontmatterMeta(note.rawContent);
1945
- const cat = typeof fm["catalog"] === "string" && fm["catalog"].trim() || typeof fm["collection"] === "string" && fm["collection"].trim() || note.catalog || catalogOfItem(note);
1946
- const key = cat || "__uncataloged__";
1947
- const list = notesByCatalog.get(key) ?? [];
1970
+ const slug = notebookSlugOfSourceId(note.sourceId);
1971
+ const key = slug || "__unassigned__";
1972
+ const list = notesByNotebook.get(key) ?? [];
1948
1973
  list.push(note);
1949
- notesByCatalog.set(key, list);
1974
+ notesByNotebook.set(key, list);
1950
1975
  }
1951
- const targetCatalogs = /* @__PURE__ */ new Map();
1952
- if (options.catalog) {
1953
- const matching = notesByCatalog.get(options.catalog);
1976
+ const targetNotebooks = /* @__PURE__ */ new Map();
1977
+ if (options.notebook) {
1978
+ const matching = notesByNotebook.get(options.notebook);
1954
1979
  if (matching) {
1955
- targetCatalogs.set(options.catalog, matching);
1956
- } else if (notesByCatalog.has("__uncataloged__") && notesByCatalog.size === 1) {
1957
- targetCatalogs.set(options.catalog, notesByCatalog.get("__uncataloged__"));
1980
+ targetNotebooks.set(options.notebook, matching);
1981
+ } else if (notesByNotebook.has("__unassigned__") && notesByNotebook.size === 1) {
1982
+ targetNotebooks.set(options.notebook, notesByNotebook.get("__unassigned__"));
1958
1983
  } else {
1959
- const available = [...notesByCatalog.keys()].filter((k) => k !== "__uncataloged__");
1984
+ const available = [...notesByNotebook.keys()].filter((k) => k !== "__unassigned__");
1960
1985
  throw new Error(
1961
- `[wod publish] Catalog "${options.catalog}" not found in ${db.path}.` + (available.length > 0 ? ` Available catalogs: ${available.join(", ")}` : "")
1986
+ `[wod publish] Notebook "${options.notebook}" not found in ${db.path}.` + (available.length > 0 ? ` Available notebooks: ${available.join(", ")}` : "")
1962
1987
  );
1963
1988
  }
1964
1989
  } else {
1965
- for (const [cat, notes] of notesByCatalog.entries()) {
1966
- targetCatalogs.set(cat === "__uncataloged__" ? "default" : cat, notes);
1990
+ for (const [slug, notes] of notesByNotebook.entries()) {
1991
+ targetNotebooks.set(slug === "__unassigned__" ? "default" : slug, notes);
1967
1992
  }
1968
1993
  }
1969
1994
  const allIndexRows = await db.storage.readonly("block_index").getAll();
@@ -1992,25 +2017,24 @@ async function publishCatalogSeed(db, options) {
1992
2017
  fs.mkdirSync(chunksDir, { recursive: true });
1993
2018
  const manifestChunks = [];
1994
2019
  let totalNotes = 0;
1995
- const publishedCatalogs = [];
1996
- for (const [catalogName, notes] of targetCatalogs.entries()) {
1997
- publishedCatalogs.push(catalogName);
2020
+ const publishedNotebooks = [];
2021
+ for (const [notebookSlug, notes] of targetNotebooks.entries()) {
2022
+ publishedNotebooks.push(notebookSlug);
1998
2023
  const chunkRows = [];
1999
2024
  for (const note of notes) {
2000
2025
  const stem = (note.title || note.id).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") || "note";
2001
- const notePath = note.sourcePath ?? `markdown/collections/${catalogName}/${stem}.md`;
2026
+ const notePath = note.sourcePath ?? `markdown/notebooks/${notebookSlug}/${stem}.md`;
2002
2027
  const noteBlockIndex = indexByNote.get(note.id) ?? [];
2003
2028
  const noteBlockEfforts = effortsByNote.get(note.id) ?? [];
2004
2029
  const noteBlockEquipment = equipmentByNote.get(note.id) ?? [];
2005
2030
  const blockIndex = noteBlockIndex.length > 0 ? noteBlockIndex.map((b) => ({
2006
2031
  ...b,
2007
2032
  isStatic: true,
2008
- sourceId: b.sourceId ?? `collection:${catalogName}/${stem}`,
2009
- sourcePath: b.sourcePath ?? notePath,
2010
- catalog: catalogName
2033
+ sourceId: b.sourceId ?? `notebook:${notebookSlug}/${stem}`,
2034
+ sourcePath: b.sourcePath ?? notePath
2011
2035
  })) : compileSeedRow(notePath, note.rawContent, {
2012
- routeId: `${catalogName}/${stem}`,
2013
- sourceId: `collection:${catalogName}/${stem}`,
2036
+ routeId: `${notebookSlug}/${stem}`,
2037
+ sourceId: `notebook:${notebookSlug}/${stem}`,
2014
2038
  // Authored frontmatter date first — exports keep the post's own
2015
2039
  // day, never the import/publish time.
2016
2040
  createdAt: note.date ?? note.createdAt,
@@ -2035,7 +2059,7 @@ async function publishCatalogSeed(db, options) {
2035
2059
  blockEquipment
2036
2060
  });
2037
2061
  }
2038
- const chunkId = `collection.${catalogName}`;
2062
+ const chunkId = `notebook.${notebookSlug}`;
2039
2063
  const json = JSON.stringify(chunkRows);
2040
2064
  const digest = nodeCrypto().createHash("sha256").update(json).digest();
2041
2065
  const sha = [...digest].map((b) => b.toString(16).padStart(2, "0")).join("");
@@ -2069,7 +2093,7 @@ async function publishCatalogSeed(db, options) {
2069
2093
  return {
2070
2094
  manifest,
2071
2095
  outDir,
2072
- catalogs: publishedCatalogs,
2096
+ notebooks: publishedNotebooks,
2073
2097
  totalNotes
2074
2098
  };
2075
2099
  }
@@ -2213,12 +2237,6 @@ function parseCliArgs(args) {
2213
2237
  } else if (arg === "--force") {
2214
2238
  result.force = true;
2215
2239
  i++;
2216
- } else if (arg === "--template") {
2217
- result.template = args[++i];
2218
- i++;
2219
- } else if (arg.startsWith("--template=")) {
2220
- result.template = arg.slice("--template=".length);
2221
- i++;
2222
2240
  } else if (arg === "--out") {
2223
2241
  result.output = args[++i];
2224
2242
  i++;
@@ -2239,7 +2257,7 @@ function parseCliArgs(args) {
2239
2257
  if (Number.isSafeInteger(v) && v >= 0) result.seedVersion = v;
2240
2258
  i++;
2241
2259
  } else if (!result.subcommand) {
2242
- 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") {
2260
+ 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") {
2243
2261
  result.subcommand = arg;
2244
2262
  } else {
2245
2263
  result.target = arg;
@@ -2303,10 +2321,10 @@ USAGE:
2303
2321
  wod export <note|playground|session|effort|equipment> <id> [options]
2304
2322
  wod download <note|playground|session|effort|equipment> <id> [options]
2305
2323
  wod import <note|playground|session|effort|equipment> <file> [options]
2306
- wod publish [catalog] [options]
2324
+ wod publish [feed] [options]
2307
2325
  wod build [dir] [options]
2308
- wod init-catalog <name>
2309
- Scaffold a new catalog repository (package.json, example
2326
+ wod init-feed <name>
2327
+ Scaffold a new feed repository (package.json, example
2310
2328
  collection, GitHub Actions Pages workflow). Refuses an
2311
2329
  existing destination.
2312
2330
  wod skills <list | install> [options]
@@ -2399,10 +2417,10 @@ SUBCOMMANDS:
2399
2417
  Upsert an effort registry row from corpus-style markdown.
2400
2418
  import equipment <file>
2401
2419
  Create/upgrade equipment tags (CSV, one label per row).
2402
- publish [catalog] Publish catalog notes from the database into a configured
2420
+ publish [feed] Publish feed notes from the database into a configured
2403
2421
  seed directory (manifest.json, chunks/, report.html)
2404
2422
  compatible with 'wod seed --source <dir>'. Override target
2405
- with -o/--out/--output (defaults to ./dist/seed/<catalog>).
2423
+ with -o/--out/--output (defaults to ./dist/seed/<feed>).
2406
2424
  build [dir] Compile a seed corpus: validate every .md under
2407
2425
  <dir>/markdown (parity gate + dashboard format gate) and
2408
2426
  write manifest.json + content-hashed chunks/ +
@@ -2413,8 +2431,6 @@ SUBCOMMANDS:
2413
2431
  BUILD OPTIONS (for 'build'):
2414
2432
  --scaffold Also scaffold markdown/efforts/discovered/*.md stubs for
2415
2433
  workout effort labels missing from the registry.
2416
- --template <file> Compile an extra markdown file as the 'template' chunk
2417
- (the host's playground intake template).
2418
2434
 
2419
2435
  INPUT SOURCING (for 'query'; without these, the database is queried):
2420
2436
  -c, --corpus <path> Load historical corpus dataset from a versioned JSON file
@@ -2560,20 +2576,20 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
2560
2576
  }
2561
2577
  };
2562
2578
  try {
2563
- if (parsed.subcommand === "init-catalog") {
2579
+ if (parsed.subcommand === "init-feed") {
2564
2580
  if (!parsed.target) {
2565
- writeErr("[wod init-catalog] Error: Missing catalog name (a single new directory name)");
2581
+ writeErr("[wod init-feed] Error: Missing feed name (a single new directory name)");
2566
2582
  return 1;
2567
2583
  }
2568
- const { scaffoldCatalog } = await import('./scaffoldCatalog-WNAHHEL2.mjs');
2584
+ const { scaffoldFeed } = await import('./scaffoldFeed-UXH3L5HM.mjs');
2569
2585
  try {
2570
- const result = scaffoldCatalog(parsed.target);
2571
- writeOut(`[wod init-catalog] Created ${result.dir} (${result.files.length} files)`);
2586
+ const result = scaffoldFeed(parsed.target);
2587
+ writeOut(`[wod init-feed] Created ${result.dir} (${result.files.length} files)`);
2572
2588
  writeOut(`Next: cd ${parsed.target} && bun install && bunx wod build . --output dist`);
2573
2589
  writeOut(`Agents: wod skills install --dir ${parsed.target} (Whiteboard Script extraction rules \u2192 .agents/skills/)`);
2574
2590
  return 0;
2575
2591
  } catch (error) {
2576
- writeErr(`[wod init-catalog] ${error.message}`);
2592
+ writeErr(`[wod init-feed] ${error.message}`);
2577
2593
  return 1;
2578
2594
  }
2579
2595
  }
@@ -2886,30 +2902,22 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
2886
2902
  return 0;
2887
2903
  }
2888
2904
  if (kind === "effort") {
2889
- const effort = parseEffortFile(fs.readFileSync(file, "utf-8"));
2890
- if (!effort) {
2891
- writeErr(`[wod import] Unparseable effort file (need frontmatter id/slug/label + numeric baseAttributes.met): ${file}`);
2892
- return 1;
2893
- }
2905
+ const source = fs.readFileSync(file, "utf-8");
2894
2906
  const db2 = await openCliDb(cliDb());
2895
2907
  try {
2896
- await persistEffort(db2, { ...effort, registrySource: "user" });
2897
- writeOut(`[wod import] effort ${effort.slug} \u2014 ${effort.label} \u2192 ${db2.path}`);
2908
+ const result = await persistDefinitionNote(db2, "effort", source);
2909
+ writeOut(`[wod import] effort ${result.slug}${result.createdNote ? "" : " (updated)"} \u2014 note ${result.noteId} \u2192 ${db2.path}`);
2898
2910
  } finally {
2899
2911
  await db2.close();
2900
2912
  }
2901
2913
  return 0;
2902
2914
  }
2903
2915
  if (kind === "equipment" && /\.md$/i.test(file)) {
2904
- const equipment = parseEquipmentFile(fs.readFileSync(file, "utf-8"));
2905
- if (!equipment) {
2906
- writeErr(`[wod import] Unparseable equipment file (need frontmatter type: equipment + id/slug/label): ${file}`);
2907
- return 1;
2908
- }
2916
+ const source = fs.readFileSync(file, "utf-8");
2909
2917
  const db2 = await openCliDb(cliDb());
2910
2918
  try {
2911
- await persistEquipment(db2, { ...equipment, registrySource: "user" });
2912
- writeOut(`[wod import] equipment ${equipment.slug} \u2014 ${equipment.label} \u2192 ${db2.path}`);
2919
+ const result = await persistDefinitionNote(db2, "equipment", source);
2920
+ writeOut(`[wod import] equipment ${result.slug}${result.createdNote ? "" : " (updated)"} \u2014 note ${result.noteId} \u2192 ${db2.path}`);
2913
2921
  } finally {
2914
2922
  await db2.close();
2915
2923
  }
@@ -2944,18 +2952,18 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
2944
2952
  }
2945
2953
  if (parsed.subcommand === "publish") {
2946
2954
  const isDir = (s) => Boolean(s && (s.startsWith(".") || s.startsWith("/") || s.includes("/") || s.includes("\\")));
2947
- const catalog = isDir(parsed.target) ? void 0 : parsed.target;
2955
+ const notebook = isDir(parsed.target) ? void 0 : parsed.target;
2948
2956
  const targetDir = isDir(parsed.target) ? parsed.target : parsed.target2;
2949
- const outDir = parsed.output ?? targetDir ?? (catalog ? `./dist/seed/${catalog}` : "./dist/seed");
2957
+ const outDir = parsed.output ?? targetDir ?? (notebook ? `./dist/seed/${notebook}` : "./dist/seed");
2950
2958
  const db = await openCliDb(cliDb());
2951
2959
  try {
2952
- const result = await publishCatalogSeed(db, {
2953
- catalog,
2960
+ const result = await publishNotebookSeed(db, {
2961
+ notebook,
2954
2962
  outDir,
2955
2963
  version: parsed.seedVersion
2956
2964
  });
2957
2965
  writeOut(
2958
- `[wod publish] published ${result.catalogs.join(", ")} (${result.totalNotes} notes) \u2192 ${result.outDir} (manifest schema v${result.manifest.schema}, version ${result.manifest.version})`
2966
+ `[wod publish] published ${result.notebooks.join(", ")} (${result.totalNotes} notes) \u2192 ${result.outDir} (manifest schema v${result.manifest.schema}, version ${result.manifest.version})`
2959
2967
  );
2960
2968
  } finally {
2961
2969
  await db.close();
@@ -2969,12 +2977,11 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
2969
2977
  writeErr(`[wod build] No markdown/ corpus under ${root} \u2014 run from the content repo root (or pass its directory).`);
2970
2978
  return 1;
2971
2979
  }
2972
- const { generateSeed } = await import('./compiler-V2BLOB2B.mjs');
2980
+ const { generateSeed } = await import('./compiler-ZMG22VH4.mjs');
2973
2981
  try {
2974
2982
  const result = generateSeed({
2975
2983
  corpusRoot: root,
2976
2984
  ...parsed.output ? { outDir: nodePath().resolve(cwd, parsed.output) } : {},
2977
- ...parsed.template ? { templateFile: nodePath().resolve(cwd, parsed.template) } : {},
2978
2985
  scaffoldDiscoveredEfforts: parsed.scaffold === true
2979
2986
  });
2980
2987
  const kb = (n) => `${(n / 1024).toFixed(0)} KB`;
@@ -3061,7 +3068,7 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
3061
3068
  }
3062
3069
  if (parsed.subcommand === "server" || parsed.subcommand === "serve" || parsed.subcommand === "playground") {
3063
3070
  const mode = parsed.subcommand === "playground" ? "playground" : "server";
3064
- const { runCliServer } = await import('./server-2DVBA35J.mjs');
3071
+ const { runCliServer } = await import('./server-5XDT7ITA.mjs');
3065
3072
  const options = { env: cliEnv() };
3066
3073
  if (mode === "server") options.database = cliDb();
3067
3074
  if (parsed.host !== void 0) options.host = parsed.host;
@@ -3087,5 +3094,5 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
3087
3094
  }
3088
3095
 
3089
3096
  export { PackLoadError, ParseSyntaxError, WqlSyntaxError, cliMain, formatExecutionOutput, formatParseOutput, formatQueryOutput, loadCliEnvironment, loadLanguagePack, loadQueryData, parseCliArgs, readStdin, resolveDatabaseConfig, runExecution, runParse, runQueryCli };
3090
- //# sourceMappingURL=chunk-LGEZVB44.mjs.map
3091
- //# sourceMappingURL=chunk-LGEZVB44.mjs.map
3097
+ //# sourceMappingURL=chunk-PF5BTGWZ.mjs.map
3098
+ //# sourceMappingURL=chunk-PF5BTGWZ.mjs.map