@bitcobblers/wod-wiki-tools 0.53.2204 → 0.55.2206

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 (647) hide show
  1. package/dist/agentCommands-O6WPIGLW.mjs +586 -0
  2. package/dist/agentCommands-O6WPIGLW.mjs.map +1 -0
  3. package/dist/bin/wod.cjs +1071 -29
  4. package/dist/bin/wod.cjs.map +1 -1
  5. package/dist/bin/wod.mjs +2 -2
  6. package/dist/chunk-67JAEWEF.mjs +144 -0
  7. package/dist/chunk-67JAEWEF.mjs.map +1 -0
  8. package/dist/{chunk-SLCRIGUR.mjs → chunk-76CB4MGO.mjs} +168 -28
  9. package/dist/chunk-76CB4MGO.mjs.map +1 -0
  10. package/dist/{chunk-2EWCEE6N.mjs → chunk-FNEN33GQ.mjs} +106 -6
  11. package/dist/chunk-FNEN33GQ.mjs.map +1 -0
  12. package/dist/{chunk-LNBKPHEP.mjs → chunk-RVQB3DYE.mjs} +9 -4
  13. package/dist/chunk-RVQB3DYE.mjs.map +1 -0
  14. package/dist/{chunk-5NNSHRMZ.mjs → chunk-WKU3MRQI.mjs} +3 -3
  15. package/dist/chunk-WKU3MRQI.mjs.map +1 -0
  16. package/dist/index.cjs +1075 -29
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +68 -3
  19. package/dist/index.d.ts +68 -3
  20. package/dist/index.mjs +5 -4
  21. package/dist/mcp-XCK6B5JA.mjs +73 -0
  22. package/dist/mcp-XCK6B5JA.mjs.map +1 -0
  23. package/dist/{scaffoldFeed-TCRNXYQU.mjs → scaffoldFeed-MC4UX4CO.mjs} +3 -3
  24. package/dist/{scaffoldFeed-TCRNXYQU.mjs.map → scaffoldFeed-MC4UX4CO.mjs.map} +1 -1
  25. package/dist/server/app.cjs +239 -2
  26. package/dist/server/app.cjs.map +1 -1
  27. package/dist/server/app.d.cts +2 -0
  28. package/dist/server/app.d.ts +2 -0
  29. package/dist/server/app.mjs +3 -1
  30. package/dist/server-HQJMA7BU.mjs +13 -0
  31. package/dist/{server-SHNWCIIM.mjs.map → server-HQJMA7BU.mjs.map} +1 -1
  32. package/dist/skills/README.md +3 -0
  33. package/dist/skills/wod-agent-parity/SKILL.md +41 -0
  34. package/dist/skills/wod-cli/SKILL.md +127 -0
  35. package/dist/skills/wod-wql/SKILL.md +63 -0
  36. package/dist/web/playground/ai-skills/agent-parity.md +41 -0
  37. package/dist/web/playground/ai-skills/cli.md +127 -0
  38. package/dist/web/playground/ai-skills/wql.md +63 -0
  39. package/dist/web/{server/assets/feedSync.worker-O4TGLEj3.js → playground/assets/feedSync.worker-CJyLPLAX.js} +2 -2
  40. package/dist/web/playground/assets/main-CmNfdWYO.js +1160 -0
  41. package/dist/web/playground/assets/main-DedlsEjf.css +2 -0
  42. package/dist/web/playground/assets/{statementBuilderFlow-CQWO7k9W.js → statementBuilderFlow-CtEe1EOX.js} +2 -2
  43. package/dist/web/playground/assets/vendor-BUlwHBNF.js +255 -0
  44. package/dist/web/{server/assets/vendor-codemirror-B4BeZarI.js → playground/assets/vendor-codemirror-Bh6hyz5v.js} +11 -11
  45. package/dist/web/playground/index.html +4 -4
  46. package/dist/web/playground/llms-full.txt +1444 -0
  47. package/dist/web/playground/llms.txt +67 -0
  48. package/dist/web/{server/seed/core/chunks/canvas.deac64e3.json → playground/seed/core/chunks/canvas.6cf875a1.json} +1 -1
  49. package/dist/web/playground/seed/core/chunks/{dashboards.08301ab4.json → dashboards.277192c5.json} +1 -1
  50. package/dist/web/playground/seed/core/chunks/{efforts.47f650fe.json → efforts.b943edc6.json} +1 -1
  51. package/dist/web/playground/seed/core/chunks/{equipment.79146d31.json → equipment.3cc3e02c.json} +1 -1
  52. package/dist/web/playground/seed/core/indexes/notebooks/canvas.json +180 -180
  53. package/dist/web/playground/seed/core/indexes/notebooks/dashboards.json +16 -16
  54. package/dist/web/playground/seed/core/indexes/notebooks/efforts.json +326 -326
  55. package/dist/web/playground/seed/core/indexes/notebooks/equipment.json +50 -50
  56. package/dist/web/playground/seed/core/manifest.json +27 -27
  57. package/dist/web/playground/seed/core/markdown/canvas/ai-first/README.json +1 -1
  58. package/dist/web/playground/seed/core/markdown/canvas/guide/README.json +4 -4
  59. package/dist/web/playground/seed/core/markdown/canvas/guide/clock.json +1 -1
  60. package/dist/web/playground/seed/core/markdown/canvas/guide/dashboards.json +1 -1
  61. package/dist/web/playground/seed/core/markdown/canvas/guide/metrics-summaries.json +2 -2
  62. package/dist/web/playground/seed/core/markdown/canvas/guide/metrics.json +12 -12
  63. package/dist/web/playground/seed/core/markdown/canvas/guide/protocols.json +20 -20
  64. package/dist/web/playground/seed/core/markdown/canvas/guide/sessions.json +33 -33
  65. package/dist/web/playground/seed/core/markdown/canvas/guide/start.json +11 -11
  66. package/dist/web/playground/seed/core/markdown/canvas/guide/structure.json +25 -25
  67. package/dist/web/playground/seed/core/markdown/canvas/guide/wql.json +5 -5
  68. package/dist/web/playground/seed/core/markdown/canvas/home/sample-script.json +4 -4
  69. package/dist/web/playground/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  70. package/dist/web/playground/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  71. package/dist/web/playground/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  72. package/dist/web/playground/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  73. package/dist/web/playground/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  74. package/dist/web/playground/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  75. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  76. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-full-session.json +10 -10
  77. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  78. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  79. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-swimming.json +5 -5
  80. package/dist/web/playground/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  81. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
  82. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  83. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  84. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  85. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-3.json +3 -3
  86. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  87. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  88. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  89. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  90. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  91. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  92. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  93. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  94. package/dist/web/playground/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  95. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  96. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  97. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  98. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-4.json +5 -5
  99. package/dist/web/playground/seed/core/markdown/canvas/syntax/effort-notes.json +5 -5
  100. package/dist/web/playground/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
  101. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  102. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  103. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  104. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  105. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  106. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  107. package/dist/web/playground/seed/core/markdown/canvas/syntax/measurements.json +7 -7
  108. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  109. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  110. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  111. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-4.json +6 -6
  112. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  113. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-sections.json +10 -10
  114. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  115. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  116. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  117. package/dist/web/playground/seed/core/markdown/canvas/syntax/named-groups.json +6 -6
  118. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  119. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  120. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  121. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  122. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  123. package/dist/web/playground/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  124. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  125. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  126. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  127. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  128. package/dist/web/playground/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  129. package/dist/web/playground/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  130. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  131. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  132. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-3.json +4 -4
  133. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  134. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  135. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  136. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
  137. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
  138. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
  139. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
  140. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
  141. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
  142. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
  143. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
  144. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
  145. package/dist/web/playground/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
  146. package/dist/web/playground/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
  147. package/dist/web/playground/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
  148. package/dist/web/playground/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
  149. package/dist/web/playground/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
  150. package/dist/web/playground/seed/core/markdown/dashboards/training-block-review.json +11 -11
  151. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  152. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  153. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  154. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  155. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  156. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  157. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  158. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  159. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  160. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  161. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  162. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  163. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  164. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  165. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  166. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  167. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  168. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  169. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  170. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  171. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  172. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  173. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  174. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  175. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  176. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  177. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  178. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  179. package/dist/web/playground/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  180. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  181. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  182. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  183. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  184. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  185. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  186. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  187. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  188. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  189. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  190. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  191. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  192. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  193. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  194. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  195. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  196. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  197. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  198. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  199. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  200. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  201. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  202. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  203. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  204. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  205. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  206. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  207. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  208. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  209. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  210. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  211. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  212. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  213. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  214. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  215. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  216. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  217. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  218. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  219. package/dist/web/playground/seed/core/markdown/efforts/recovery/rest.json +1 -1
  220. package/dist/web/playground/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  221. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  222. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  223. package/dist/web/playground/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  224. package/dist/web/playground/seed/core/markdown/efforts/running/backward-running.json +1 -1
  225. package/dist/web/playground/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  226. package/dist/web/playground/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  227. package/dist/web/playground/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  228. package/dist/web/playground/seed/core/markdown/efforts/snatch.json +2 -2
  229. package/dist/web/playground/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  230. package/dist/web/playground/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  231. package/dist/web/playground/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  232. package/dist/web/playground/seed/core/markdown/efforts/strength/carioca.json +1 -1
  233. package/dist/web/playground/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  234. package/dist/web/playground/seed/core/markdown/efforts/strength/cluster.json +1 -1
  235. package/dist/web/playground/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  236. package/dist/web/playground/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  237. package/dist/web/playground/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  238. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  239. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  240. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  241. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  242. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  243. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  244. package/dist/web/playground/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  245. package/dist/web/playground/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  246. package/dist/web/playground/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  247. package/dist/web/playground/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  248. package/dist/web/playground/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  249. package/dist/web/playground/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  250. package/dist/web/playground/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  251. package/dist/web/playground/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  252. package/dist/web/playground/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  253. package/dist/web/playground/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  254. package/dist/web/playground/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  255. package/dist/web/playground/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  256. package/dist/web/playground/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  257. package/dist/web/playground/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  258. package/dist/web/playground/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  259. package/dist/web/playground/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  260. package/dist/web/playground/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  261. package/dist/web/playground/seed/core/markdown/efforts/strength/push-press.json +1 -1
  262. package/dist/web/playground/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  263. package/dist/web/playground/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  264. package/dist/web/playground/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  265. package/dist/web/playground/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  266. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  267. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  268. package/dist/web/playground/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  269. package/dist/web/playground/seed/core/markdown/efforts/strength/thruster.json +1 -1
  270. package/dist/web/playground/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  271. package/dist/web/playground/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  272. package/dist/web/playground/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  273. package/dist/web/playground/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  274. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  275. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  276. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  277. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  278. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  279. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  280. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  281. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  282. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  283. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  284. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  285. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  286. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  287. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  288. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  289. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  290. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  291. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  292. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  293. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  294. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  295. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  296. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  297. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  298. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  299. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  300. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  301. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  302. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  303. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  304. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  305. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  306. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  307. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  308. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  309. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  310. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  311. package/dist/web/playground/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  312. package/dist/web/playground/seed/core/markdown/equipment/air-bike.json +1 -1
  313. package/dist/web/playground/seed/core/markdown/equipment/barbell.json +1 -1
  314. package/dist/web/playground/seed/core/markdown/equipment/bench.json +1 -1
  315. package/dist/web/playground/seed/core/markdown/equipment/bike-erg.json +1 -1
  316. package/dist/web/playground/seed/core/markdown/equipment/climbing-rope.json +1 -1
  317. package/dist/web/playground/seed/core/markdown/equipment/clubs.json +1 -1
  318. package/dist/web/playground/seed/core/markdown/equipment/dumbbell.json +1 -1
  319. package/dist/web/playground/seed/core/markdown/equipment/ghd.json +1 -1
  320. package/dist/web/playground/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  321. package/dist/web/playground/seed/core/markdown/equipment/jump-rope.json +1 -1
  322. package/dist/web/playground/seed/core/markdown/equipment/kettlebell.json +1 -1
  323. package/dist/web/playground/seed/core/markdown/equipment/macebell.json +1 -1
  324. package/dist/web/playground/seed/core/markdown/equipment/medicine-ball.json +1 -1
  325. package/dist/web/playground/seed/core/markdown/equipment/parallettes.json +1 -1
  326. package/dist/web/playground/seed/core/markdown/equipment/plyo-box.json +1 -1
  327. package/dist/web/playground/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  328. package/dist/web/playground/seed/core/markdown/equipment/rower.json +1 -1
  329. package/dist/web/playground/seed/core/markdown/equipment/sandbag.json +1 -1
  330. package/dist/web/playground/seed/core/markdown/equipment/ski-erg.json +1 -1
  331. package/dist/web/playground/seed/core/markdown/equipment/slam-ball.json +1 -1
  332. package/dist/web/playground/seed/core/markdown/equipment/sled.json +1 -1
  333. package/dist/web/playground/seed/core/markdown/equipment/sledgehammer.json +1 -1
  334. package/dist/web/playground/seed/core/markdown/equipment/weight-vest.json +1 -1
  335. package/dist/web/playground/seed/core/report.html +13 -13
  336. package/dist/web/server/ai-skills/agent-parity.md +41 -0
  337. package/dist/web/server/ai-skills/cli.md +127 -0
  338. package/dist/web/server/ai-skills/wql.md +63 -0
  339. package/dist/web/{playground/assets/feedSync.worker-O4TGLEj3.js → server/assets/feedSync.worker-CJyLPLAX.js} +2 -2
  340. package/dist/web/server/assets/main-DJQ7VwVX.js +1160 -0
  341. package/dist/web/server/assets/main-DedlsEjf.css +2 -0
  342. package/dist/web/server/assets/{statementBuilderFlow-C7x-7JGx.js → statementBuilderFlow-4p9d-7VX.js} +2 -2
  343. package/dist/web/server/assets/vendor-BUlwHBNF.js +255 -0
  344. package/dist/web/{playground/assets/vendor-codemirror-B4BeZarI.js → server/assets/vendor-codemirror-Bh6hyz5v.js} +11 -11
  345. package/dist/web/server/index.html +4 -4
  346. package/dist/web/server/llms-full.txt +1444 -0
  347. package/dist/web/server/llms.txt +67 -0
  348. package/dist/web/{playground/seed/core/chunks/canvas.deac64e3.json → server/seed/core/chunks/canvas.6cf875a1.json} +1 -1
  349. package/dist/web/server/seed/core/chunks/{dashboards.08301ab4.json → dashboards.277192c5.json} +1 -1
  350. package/dist/web/server/seed/core/chunks/{efforts.47f650fe.json → efforts.b943edc6.json} +1 -1
  351. package/dist/web/server/seed/core/chunks/{equipment.79146d31.json → equipment.3cc3e02c.json} +1 -1
  352. package/dist/web/server/seed/core/indexes/notebooks/canvas.json +180 -180
  353. package/dist/web/server/seed/core/indexes/notebooks/dashboards.json +16 -16
  354. package/dist/web/server/seed/core/indexes/notebooks/efforts.json +326 -326
  355. package/dist/web/server/seed/core/indexes/notebooks/equipment.json +50 -50
  356. package/dist/web/server/seed/core/manifest.json +27 -27
  357. package/dist/web/server/seed/core/markdown/canvas/ai-first/README.json +1 -1
  358. package/dist/web/server/seed/core/markdown/canvas/guide/README.json +4 -4
  359. package/dist/web/server/seed/core/markdown/canvas/guide/clock.json +1 -1
  360. package/dist/web/server/seed/core/markdown/canvas/guide/dashboards.json +1 -1
  361. package/dist/web/server/seed/core/markdown/canvas/guide/metrics-summaries.json +2 -2
  362. package/dist/web/server/seed/core/markdown/canvas/guide/metrics.json +12 -12
  363. package/dist/web/server/seed/core/markdown/canvas/guide/protocols.json +20 -20
  364. package/dist/web/server/seed/core/markdown/canvas/guide/sessions.json +33 -33
  365. package/dist/web/server/seed/core/markdown/canvas/guide/start.json +11 -11
  366. package/dist/web/server/seed/core/markdown/canvas/guide/structure.json +25 -25
  367. package/dist/web/server/seed/core/markdown/canvas/guide/wql.json +5 -5
  368. package/dist/web/server/seed/core/markdown/canvas/home/sample-script.json +4 -4
  369. package/dist/web/server/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  370. package/dist/web/server/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  371. package/dist/web/server/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  372. package/dist/web/server/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  373. package/dist/web/server/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  374. package/dist/web/server/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  375. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  376. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-full-session.json +10 -10
  377. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  378. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  379. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-swimming.json +5 -5
  380. package/dist/web/server/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  381. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
  382. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  383. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  384. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  385. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-3.json +3 -3
  386. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  387. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  388. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  389. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  390. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  391. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  392. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  393. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  394. package/dist/web/server/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  395. package/dist/web/server/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  396. package/dist/web/server/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  397. package/dist/web/server/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  398. package/dist/web/server/seed/core/markdown/canvas/syntax/document-4.json +5 -5
  399. package/dist/web/server/seed/core/markdown/canvas/syntax/effort-notes.json +5 -5
  400. package/dist/web/server/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
  401. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  402. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  403. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  404. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  405. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  406. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  407. package/dist/web/server/seed/core/markdown/canvas/syntax/measurements.json +7 -7
  408. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  409. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  410. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  411. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-4.json +6 -6
  412. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  413. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-sections.json +10 -10
  414. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  415. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  416. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  417. package/dist/web/server/seed/core/markdown/canvas/syntax/named-groups.json +6 -6
  418. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  419. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  420. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  421. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  422. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  423. package/dist/web/server/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  424. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  425. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  426. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  427. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  428. package/dist/web/server/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  429. package/dist/web/server/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  430. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  431. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  432. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-3.json +4 -4
  433. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  434. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  435. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  436. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
  437. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
  438. package/dist/web/server/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
  439. package/dist/web/server/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
  440. package/dist/web/server/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
  441. package/dist/web/server/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
  442. package/dist/web/server/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
  443. package/dist/web/server/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
  444. package/dist/web/server/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
  445. package/dist/web/server/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
  446. package/dist/web/server/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
  447. package/dist/web/server/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
  448. package/dist/web/server/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
  449. package/dist/web/server/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
  450. package/dist/web/server/seed/core/markdown/dashboards/training-block-review.json +11 -11
  451. package/dist/web/server/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  452. package/dist/web/server/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  453. package/dist/web/server/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  454. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  455. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  456. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  457. package/dist/web/server/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  458. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  459. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  460. package/dist/web/server/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  461. package/dist/web/server/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  462. package/dist/web/server/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  463. package/dist/web/server/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  464. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  465. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  466. package/dist/web/server/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  467. package/dist/web/server/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  468. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  469. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  470. package/dist/web/server/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  471. package/dist/web/server/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  472. package/dist/web/server/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  473. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  474. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  475. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  476. package/dist/web/server/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  477. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  478. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  479. package/dist/web/server/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  480. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  481. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  482. package/dist/web/server/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  483. package/dist/web/server/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  484. package/dist/web/server/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  485. package/dist/web/server/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  486. package/dist/web/server/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  487. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  488. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  489. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  490. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  491. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  492. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  493. package/dist/web/server/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  494. package/dist/web/server/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  495. package/dist/web/server/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  496. package/dist/web/server/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  497. package/dist/web/server/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  498. package/dist/web/server/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  499. package/dist/web/server/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  500. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  501. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  502. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  503. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  504. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  505. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  506. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  507. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  508. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  509. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  510. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  511. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  512. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  513. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  514. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  515. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  516. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  517. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  518. package/dist/web/server/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  519. package/dist/web/server/seed/core/markdown/efforts/recovery/rest.json +1 -1
  520. package/dist/web/server/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  521. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  522. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  523. package/dist/web/server/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  524. package/dist/web/server/seed/core/markdown/efforts/running/backward-running.json +1 -1
  525. package/dist/web/server/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  526. package/dist/web/server/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  527. package/dist/web/server/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  528. package/dist/web/server/seed/core/markdown/efforts/snatch.json +2 -2
  529. package/dist/web/server/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  530. package/dist/web/server/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  531. package/dist/web/server/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  532. package/dist/web/server/seed/core/markdown/efforts/strength/carioca.json +1 -1
  533. package/dist/web/server/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  534. package/dist/web/server/seed/core/markdown/efforts/strength/cluster.json +1 -1
  535. package/dist/web/server/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  536. package/dist/web/server/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  537. package/dist/web/server/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  538. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  539. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  540. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  541. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  542. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  543. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  544. package/dist/web/server/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  545. package/dist/web/server/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  546. package/dist/web/server/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  547. package/dist/web/server/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  548. package/dist/web/server/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  549. package/dist/web/server/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  550. package/dist/web/server/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  551. package/dist/web/server/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  552. package/dist/web/server/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  553. package/dist/web/server/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  554. package/dist/web/server/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  555. package/dist/web/server/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  556. package/dist/web/server/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  557. package/dist/web/server/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  558. package/dist/web/server/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  559. package/dist/web/server/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  560. package/dist/web/server/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  561. package/dist/web/server/seed/core/markdown/efforts/strength/push-press.json +1 -1
  562. package/dist/web/server/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  563. package/dist/web/server/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  564. package/dist/web/server/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  565. package/dist/web/server/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  566. package/dist/web/server/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  567. package/dist/web/server/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  568. package/dist/web/server/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  569. package/dist/web/server/seed/core/markdown/efforts/strength/thruster.json +1 -1
  570. package/dist/web/server/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  571. package/dist/web/server/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  572. package/dist/web/server/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  573. package/dist/web/server/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  574. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  575. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  576. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  577. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  578. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  579. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  580. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  581. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  582. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  583. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  584. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  585. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  586. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  587. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  588. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  589. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  590. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  591. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  592. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  593. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  594. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  595. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  596. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  597. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  598. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  599. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  600. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  601. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  602. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  603. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  604. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  605. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  606. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  607. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  608. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  609. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  610. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  611. package/dist/web/server/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  612. package/dist/web/server/seed/core/markdown/equipment/air-bike.json +1 -1
  613. package/dist/web/server/seed/core/markdown/equipment/barbell.json +1 -1
  614. package/dist/web/server/seed/core/markdown/equipment/bench.json +1 -1
  615. package/dist/web/server/seed/core/markdown/equipment/bike-erg.json +1 -1
  616. package/dist/web/server/seed/core/markdown/equipment/climbing-rope.json +1 -1
  617. package/dist/web/server/seed/core/markdown/equipment/clubs.json +1 -1
  618. package/dist/web/server/seed/core/markdown/equipment/dumbbell.json +1 -1
  619. package/dist/web/server/seed/core/markdown/equipment/ghd.json +1 -1
  620. package/dist/web/server/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  621. package/dist/web/server/seed/core/markdown/equipment/jump-rope.json +1 -1
  622. package/dist/web/server/seed/core/markdown/equipment/kettlebell.json +1 -1
  623. package/dist/web/server/seed/core/markdown/equipment/macebell.json +1 -1
  624. package/dist/web/server/seed/core/markdown/equipment/medicine-ball.json +1 -1
  625. package/dist/web/server/seed/core/markdown/equipment/parallettes.json +1 -1
  626. package/dist/web/server/seed/core/markdown/equipment/plyo-box.json +1 -1
  627. package/dist/web/server/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  628. package/dist/web/server/seed/core/markdown/equipment/rower.json +1 -1
  629. package/dist/web/server/seed/core/markdown/equipment/sandbag.json +1 -1
  630. package/dist/web/server/seed/core/markdown/equipment/ski-erg.json +1 -1
  631. package/dist/web/server/seed/core/markdown/equipment/slam-ball.json +1 -1
  632. package/dist/web/server/seed/core/markdown/equipment/sled.json +1 -1
  633. package/dist/web/server/seed/core/markdown/equipment/sledgehammer.json +1 -1
  634. package/dist/web/server/seed/core/markdown/equipment/weight-vest.json +1 -1
  635. package/dist/web/server/seed/core/report.html +13 -13
  636. package/package.json +10 -8
  637. package/dist/chunk-2EWCEE6N.mjs.map +0 -1
  638. package/dist/chunk-5NNSHRMZ.mjs.map +0 -1
  639. package/dist/chunk-LNBKPHEP.mjs.map +0 -1
  640. package/dist/chunk-SLCRIGUR.mjs.map +0 -1
  641. package/dist/server-SHNWCIIM.mjs +0 -11
  642. package/dist/web/playground/assets/main-DGz9PHS_.css +0 -2
  643. package/dist/web/playground/assets/main-DfHqNhwO.js +0 -1149
  644. package/dist/web/playground/assets/vendor-Dz-Azkoq.js +0 -198
  645. package/dist/web/server/assets/main-DGz9PHS_.css +0 -2
  646. package/dist/web/server/assets/main-VXFEU44Q.js +0 -1149
  647. package/dist/web/server/assets/vendor-Dz-Azkoq.js +0 -198
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "84034d68-a313-53a8-8f0b-dd755e70311e",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "8191ab0d-1911-5b57-a841-989d34368416",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "3626f1a0-5ac0-5f6b-b479-4ce716ab206d",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "4089fb14-36aa-5019-a98e-a2666cb42b36",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "bfe01d2f-d415-51b5-809e-5d786b54898f",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "eace3f75-7a60-5e59-a873-91e1317b9d79",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "829da3e1-5f20-53d4-8a54-cdb94db4c951",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "ced86efd-b1fc-50aa-b734-bf9501d52160",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "721e31d9-2b44-5d6d-959c-5473aefe808d",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "eb26361e-fd14-50e5-94dc-5b860051203d",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "9278cedb-7465-5085-8703-920cee21d84f",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "a1bfcd6f-74d0-52d8-8afd-108fd6b34d48",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "b724b3cd-e1eb-52aa-a8d9-cf48718b0068",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "5ffcaf13-95d6-5efb-84ce-168f60b8bf52",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "2a8fcae8-8e2f-5bd1-aa0e-6e0c6e577111",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "297503ce-a9a0-5fcf-9016-2b5820bd5b25",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "7d8d6ef9-22d6-5145-9d63-55f4ed0cd1df",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "71f9f6d5-fb47-596a-bca2-3c648bb8aad1",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "f991b73a-f466-59e5-b318-e2362953b635",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "4a4ab1ea-9510-5a11-b113-764b1d799d2c",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "87fb4da5-0bec-58b8-b969-9caf3a991c7e",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "3300c680-ceff-5020-8594-272f6d13739e",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "cf1e38ba-2ef4-57e8-ba5e-3e69c2ebfeb4",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "9c2dcbca-4ece-5198-9a30-54cd5020ec0a",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "9eabd205-7f75-5c5c-af83-a96b2fad8e48",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "83c1db35-42f3-5fd2-aabc-79450b6326ee",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "37619ae9-d203-5a1c-b7a1-49598febd056",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "bd36b2b4-30da-516b-9e9a-8084b995d602",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "52785555-85fd-55bb-b102-8b99648c7a99",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "fa15a47a-f3d1-59bb-a36d-2081d0c79f3c",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "e866df40-1523-56a0-a8d3-b16e3eccd7b6",
10
10
  "version": 1
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "blockIndex": [],
6
6
  "blockEfforts": [],
7
7
  "blockEquipment": [],
8
- "commit": "5497f334eaeb0230ab730ba472c1e9b598b6a312",
8
+ "commit": "5735d1cd1e273eb15f36ba23efe7eb9e38a888e5",
9
9
  "uuid": "4684877b-8752-582d-a45c-fff8982e8a0d",
10
10
  "version": 1
11
11
  }
@@ -17,28 +17,28 @@
17
17
  <h1>Seed build report</h1>
18
18
  <h2>Version</h2>
19
19
  <dl>
20
- <dt>version</dt><dd>1 <code>5497f33-dirty</code> <strong style="color:#b45309">(dirty working tree — not reproducible from <code>5497f334eaeb0230ab730ba472c1e9b598b6a312</code>)</strong></dd>
21
- <dt>commit</dt><dd><code>5497f334eaeb0230ab730ba472c1e9b598b6a312</code></dd>
22
- <dt>built at</dt><dd>2026-11-11T22:38:18.651Z</dd>
20
+ <dt>version</dt><dd>1 <code>5735d1c-dirty</code> <strong style="color:#b45309">(dirty working tree — not reproducible from <code>5735d1cd1e273eb15f36ba23efe7eb9e38a888e5</code>)</strong></dd>
21
+ <dt>commit</dt><dd><code>5735d1cd1e273eb15f36ba23efe7eb9e38a888e5</code></dd>
22
+ <dt>built at</dt><dd>2026-11-12T04:22:18.289Z</dd>
23
23
  <dt>schema</dt><dd>v9</dd>
24
24
  </dl>
25
25
  <h2>Benchmarks</h2>
26
26
  <dl>
27
- <dt>total</dt><dd>706 ms</dd>
28
- <dt>corpus scan + partition</dt><dd>12 ms (278 files)</dd>
29
- <dt>block-index derivation</dt><dd>189 ms</dd>
30
- <dt>block syntax gate</dt><dd>13 ms</dd>
31
- <dt>block-efforts derivation</dt><dd>60 ms</dd>
32
- <dt>chunk writes</dt><dd>363 ms</dd>
27
+ <dt>total</dt><dd>1357 ms</dd>
28
+ <dt>corpus scan + partition</dt><dd>22 ms (278 files)</dd>
29
+ <dt>block-index derivation</dt><dd>364 ms</dd>
30
+ <dt>block syntax gate</dt><dd>23 ms</dd>
31
+ <dt>block-efforts derivation</dt><dd>109 ms</dd>
32
+ <dt>chunk writes</dt><dd>720 ms</dd>
33
33
  </dl>
34
34
  <h2>Chunks (4, 447 KB total)</h2>
35
35
  <table>
36
36
  <thead><tr><th>id</th><th>kind</th><th>rows</th><th>size</th><th>sha256</th></tr></thead>
37
37
  <tbody>
38
- <tr><td>canvas</td><td>notes</td><td>88</td><td>303.9 KB</td><td><code>deac64e3</code></td></tr>
39
- <tr><td>dashboards</td><td>notes</td><td>6</td><td>41.7 KB</td><td><code>08301ab4</code></td></tr>
40
- <tr><td>efforts</td><td>notes</td><td>161</td><td>86.5 KB</td><td><code>47f650fe</code></td></tr>
41
- <tr><td>equipment</td><td>notes</td><td>23</td><td>15.2 KB</td><td><code>79146d31</code></td></tr>
38
+ <tr><td>canvas</td><td>notes</td><td>88</td><td>303.9 KB</td><td><code>6cf875a1</code></td></tr>
39
+ <tr><td>dashboards</td><td>notes</td><td>6</td><td>41.7 KB</td><td><code>277192c5</code></td></tr>
40
+ <tr><td>efforts</td><td>notes</td><td>161</td><td>86.5 KB</td><td><code>b943edc6</code></td></tr>
41
+ <tr><td>equipment</td><td>notes</td><td>23</td><td>15.2 KB</td><td><code>3cc3e02c</code></td></tr>
42
42
  </tbody>
43
43
  </table>
44
44
  </body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitcobblers/wod-wiki-tools",
3
- "version": "0.53.2204",
3
+ "version": "0.55.2206",
4
4
  "description": "CLI tools and server runner for Whiteboard Language & WQL engine",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -29,16 +29,18 @@
29
29
  "access": "public"
30
30
  },
31
31
  "dependencies": {
32
- "@bitcobblers/wod-wiki-core": "^0.53.2204",
33
- "@bitcobblers/wod-wiki-engine": "^0.53.2204",
34
- "@bitcobblers/wod-wiki-lang": "^0.53.2204",
35
- "@bitcobblers/wod-wiki-storage": "^0.53.2204",
36
- "@bitcobblers/wod-wiki-wql": "^0.53.2204",
32
+ "@bitcobblers/wod-wiki-core": "^0.55.2206",
33
+ "@bitcobblers/wod-wiki-engine": "^0.55.2206",
34
+ "@bitcobblers/wod-wiki-lang": "^0.55.2206",
35
+ "@bitcobblers/wod-wiki-storage": "^0.55.2206",
36
+ "@bitcobblers/wod-wiki-wql": "^0.55.2206",
37
37
  "@libsql/client": "^0.18.0",
38
- "fake-indexeddb": "^6.2.5"
38
+ "@modelcontextprotocol/sdk": "^1.32.2",
39
+ "fake-indexeddb": "^6.2.5",
40
+ "zod": "^4.6.7"
39
41
  },
40
42
  "scripts": {
41
- "prepack": "node -e \"const fs=require('fs');const missing=['dist/bin/wod.mjs','dist/server/app.mjs','dist/server/app.cjs','dist/server/app.d.ts','dist/web/server/index.html','dist/web/playground/index.html','dist/skills/wod-extraction/SKILL.md'].filter(f=>!fs.existsSync(f));if(missing.length){console.error('prepack: refusing to publish broken package, missing build outputs:\\n '+missing.join('\\n ')+'\\nBuild first: bun run build:cli (repo root)');process.exit(1)}\"",
43
+ "prepack": "node -e \"const fs=require('fs');const missing=['dist/bin/wod.mjs','dist/server/app.mjs','dist/server/app.cjs','dist/server/app.d.ts','dist/web/server/index.html','dist/web/playground/index.html','dist/skills/wod-extraction/SKILL.md','dist/skills/wod-cli/SKILL.md','dist/skills/wod-wql/SKILL.md','dist/skills/wod-agent-parity/SKILL.md'].filter(f=>!fs.existsSync(f));if(missing.length){console.error('prepack: refusing to publish broken package, missing build outputs:\\n '+missing.join('\\n ')+'\\nBuild first: bun run build:cli (repo root)');process.exit(1)}\"",
42
44
  "build": "tsup",
43
45
  "clean": "rm -rf dist",
44
46
  "typecheck": "tsc --noEmit",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/errors.ts","../src/server/app.ts"],"names":[],"mappings":"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","file":"chunk-2EWCEE6N.mjs","sourcesContent":["/**\n * errors.ts — the single HTTP error type every layer throws; app.ts maps it\n * to the wire's { error, code? } JSON with the matching status.\n */\nexport class HttpError extends Error {\n constructor(readonly status: number, message: string, readonly code?: string) {\n super(message);\n this.name = 'HttpError';\n }\n}\n","/**\n * app.ts — one native fetch handler for the whole surface:\n * GET /api/health\n * GET /api/v1/:store/get?key= GET /api/v1/:store/all?range=&count=\n * GET /api/v1/:store/index/:idx?range=&count=\n * GET /api/v1/:store/count?range=&index=\n * PUT /api/v1/:store {value} DELETE /api/v1/:store?key=\n * POST /api/v1/:store/clear POST /api/v1/tx {ops}\n * POST /api/v1/wipe POST /api/v1/query\n * everything else: static SPA serving from playgroundDist (asset miss with an\n * extension → 404; extensionless → index.html; traversal/symlink escapes →\n * 403; /api never falls through to the SPA).\n *\n * `db` may be null for the CLI playground mode: static SPA serving only, every\n * /api request answers 404 — the playground never touches a server database.\n */\n\nimport { join, resolve, sep } from 'node:path';\nimport { stat, realpath } from 'node:fs/promises';\nimport { realpathSync, createReadStream } from 'node:fs';\nimport { Readable } from 'node:stream';\nimport { HttpError } from './errors';\nimport {\n SqlStorage,\n handleDomainQuery,\n refreshDomain,\n wipeDomain,\n MAX_BODY,\n StorageError,\n storeDefinition,\n getRow,\n listRows,\n countRows,\n wipeRows,\n type Database,\n} from '@bitcobblers/wod-wiki-storage/sql';\nimport { keyFromValue, type KeyDTO, type RangeDTO, type TxOp } from '@bitcobblers/wod-wiki-storage';\nimport {\n FeedTreeError,\n MemoryFeedTree,\n checkUnpublishedFeedChanges,\n publishFeedFromStorage,\n type FeedTree,\n} from '@bitcobblers/wod-wiki-engine';\nimport { NodeFsFeedTree } from '../cli/nodeFeedTree';\nconst json = (value: unknown, status: number): Response =>\n new Response(JSON.stringify(value), { status, headers: { 'content-type': 'application/json' } });\n\nfunction streamFile(path: string): BodyInit {\n const bun = (globalThis as { Bun?: { file(p: string): BodyInit } }).Bun;\n if (bun?.file) return bun.file(path);\n // ponytail: node:fs Readable.toWeb streams files in pure Node.js (v18+) without dependencies\n return Readable.toWeb(createReadStream(path)) as unknown as BodyInit;\n}\n\nconst plain = (body: string, status: number): Response =>\n new Response(body, { status, headers: { 'content-type': 'text/plain; charset=utf-8' } });\n\nconst notFound = (): Response => json({ error: 'not found' }, 404);\nconst methodNotAllowed = (): Response => json({ error: 'method not allowed' }, 405);\n\nconst noContent = (): Response => new Response(null, { status: 204 });\n\n/** URLSearchParams already applies the form-urlencoded '+' → space then %XX\n * decoding the wire contract relies on. */\nconst qget = (url: URL, name: string): string | undefined => url.searchParams.get(name) ?? undefined;\n\nfunction jsonParam(url: URL, name: string): unknown {\n const raw = qget(url, name);\n if (raw === undefined) return undefined;\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n throw new HttpError(400, `invalid JSON in ?${name}`);\n }\n}\n\n/** ?range accepts a RangeDTO object or a bare key (scalar/tuple → {only}). */\nfunction rangeParam(url: URL): RangeDTO | undefined {\n const v = jsonParam(url, 'range');\n if (v === undefined) return undefined;\n if (v !== null && typeof v === 'object' && !Array.isArray(v)) return v as RangeDTO;\n return { only: v as KeyDTO };\n}\n\nfunction countParam(url: URL): number | undefined {\n const raw = qget(url, 'count');\n if (raw === undefined) return undefined;\n const n = Number(raw); // Number('') === 0, matching the wire contract\n if (!Number.isFinite(n) || n < 0) throw new HttpError(400, 'invalid ?count');\n return Math.trunc(n);\n}\n\nasync function readJsonBody(req: Request, maxBytes?: number): Promise<unknown> {\n const body = await req.text();\n if (maxBytes !== undefined && body.length > maxBytes) {\n throw new HttpError(413, `domain query body exceeds ${maxBytes} bytes`);\n }\n try {\n return JSON.parse(body) as unknown;\n } catch {\n throw new HttpError(400, 'body must be valid JSON');\n }\n}\n\nfunction txOps(value: unknown): TxOp[] {\n if (!Array.isArray(value)) throw new HttpError(400, 'tx body must be {ops: []}');\n return value.map((op: unknown): TxOp => {\n if (op === null || typeof op !== 'object' || Array.isArray(op) || !('store' in op) || typeof op.store !== 'string' || !('op' in op)) {\n throw new HttpError(400, 'tx op must have a store and operation');\n }\n const def = storeDefinition(op.store);\n const store = def.name;\n switch (op.op) {\n case 'put':\n if (!('value' in op)) throw new HttpError(400, 'put requires value');\n return { op: 'put', store, value: op.value };\n case 'delete':\n if (!('key' in op)) throw new HttpError(400, 'delete requires key');\n return { op: 'delete', store, key: op.key as KeyDTO };\n case 'clear':\n return { op: 'clear', store };\n case 'check': {\n if (!('key' in op) || !('value' in op)) throw new HttpError(400, 'check requires key and value');\n const scalar = (key: unknown): key is string | number => typeof key === 'string' || (typeof key === 'number' && Number.isFinite(key));\n if (!scalar(op.key) && !(Array.isArray(op.key) && op.key.length > 0 && op.key.every(scalar))) {\n throw new HttpError(400, 'check requires a scalar key or non-empty scalar tuple');\n }\n if (op.value !== null && (typeof op.value !== 'object' || Array.isArray(op.value))) {\n throw new HttpError(400, 'check value must be a row or null');\n }\n const parts = Array.isArray(op.key) ? op.key : [op.key];\n if (parts.length !== def.keyPath.length) throw new HttpError(400, 'check key arity must match the store');\n if (op.value !== null) {\n let rowKey: KeyDTO;\n try { rowKey = keyFromValue(def, op.value); }\n catch { throw new HttpError(400, 'check row must have its primary key'); }\n if (JSON.stringify(rowKey) !== JSON.stringify(op.key)) throw new HttpError(400, 'check row primary key must match key');\n }\n return { op: 'check', store, key: op.key, value: op.value };\n }\n default:\n throw new HttpError(400, 'tx op must be put | delete | clear | check');\n }\n });\n}\n\n// ── Static SPA serving ───────────────────────────────────────────────────────\n\nconst MIME: Record<string, string> = {\n html: 'text/html; charset=utf-8',\n js: 'text/javascript; charset=utf-8',\n mjs: 'text/javascript; charset=utf-8',\n css: 'text/css; charset=utf-8',\n json: 'application/json; charset=utf-8',\n map: 'application/json; charset=utf-8',\n svg: 'image/svg+xml',\n png: 'image/png',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n webp: 'image/webp',\n ico: 'image/x-icon',\n woff: 'font/woff',\n woff2: 'font/woff2',\n ttf: 'font/ttf',\n mp3: 'audio/mpeg',\n wav: 'audio/wav',\n webmanifest: 'application/manifest+json',\n xml: 'application/xml',\n txt: 'text/plain; charset=utf-8',\n md: 'text/markdown; charset=utf-8',\n jsonl: 'application/x-ndjson; charset=utf-8',\n csv: 'text/csv; charset=utf-8',\n};\n\nasync function realpathSafe(path: string): Promise<string | undefined> {\n try {\n return await realpath(path);\n } catch {\n return undefined;\n }\n}\n\nasync function serveFile(real: string, rel: string): Promise<Response> {\n // Seed chunks are content-hashed; everything else revalidates.\n const cache = rel.includes('seed/chunks/')\n ? 'public, max-age=31536000, immutable'\n : 'no-cache';\n const ext = rel.slice(rel.lastIndexOf('.') + 1).toLowerCase();\n return new Response(streamFile(real), {\n headers: { 'content-type': MIME[ext] ?? 'application/octet-stream', 'cache-control': cache },\n });\n}\n\nasync function serveSpaShell(distRoot: string): Promise<Response | undefined> {\n const index = await realpathSafe(join(distRoot, 'index.html'));\n // Same symlink confinement as assets: a dist/index.html symlink pointing\n // outside must not become the shell.\n if (index && (index === distRoot || index.startsWith(distRoot + sep))\n && (await stat(index).then((s) => s.isFile(), () => false))) {\n return new Response(streamFile(index), {\n headers: { 'content-type': MIME.html, 'cache-control': 'no-cache' },\n });\n }\n return undefined;\n}\n\nasync function staticResponse(distRoot: string | undefined, method: string, pathname: string): Promise<Response> {\n if (method !== 'GET') return plain('method not allowed', 405);\n if (!distRoot) {\n return plain('wod-wiki-api: playground dist not found. Set PLAYGROUND_DIST or run the playground server build.', 503);\n }\n let rel: string;\n try {\n rel = decodeURIComponent(pathname).replace(/^\\/+/, '');\n } catch {\n return plain('bad request', 400);\n }\n if (rel === '') rel = 'index.html';\n const parts = rel.split('/');\n if (parts.some((p) => p === '..')) return plain('forbidden', 403);\n const base = parts[parts.length - 1] ?? '';\n const hasExtension = base.includes('.');\n\n const abs = resolve(distRoot, ...parts);\n const real = await realpathSafe(abs);\n // Symlink confinement: serve only paths that really live under the dist root.\n if (real && (real === distRoot || real.startsWith(distRoot + sep))) {\n const info = await stat(real).then((s) => s.isFile(), () => false);\n if (info) return serveFile(real, rel);\n }\n // SPA fallback: extensionless paths render the app shell.\n if (!hasExtension) {\n const shell = await serveSpaShell(distRoot);\n if (shell) return shell;\n }\n return plain('not found', 404);\n}\n\n// ── API routing ──────────────────────────────────────────────────────────────\n\nasync function storeRoutes(db: Database, method: string, sub: string, url: URL, req: Request): Promise<Response> {\n let inner = sub.slice('/v1/'.length);\n if (inner.endsWith('/')) inner = inner.slice(0, -1);\n if (inner === '') return notFound();\n const segments = inner.split('/');\n let name: string;\n let action: string | undefined;\n if (segments.length === 1) {\n name = segments[0];\n } else if (segments.length === 2) {\n [name, action] = segments;\n } else if (segments.length === 3 && segments[1] === 'index' && segments[2] !== '') {\n [name, , action] = segments;\n action = `index/${action}`;\n } else {\n return notFound();\n }\n const def = storeDefinition(name); // 404 for unknown stores\n\n const range = rangeParam(url);\n const count = countParam(url);\n\n if (action === 'get' && method === 'GET') {\n const key = jsonParam(url, 'key');\n if (key === undefined) throw new HttpError(400, 'missing ?key');\n const row = await getRow(db, def, key as KeyDTO);\n return row === undefined ? notFound() : json(row, 200);\n }\n if (action === 'all' && method === 'GET') {\n return json(await listRows(db, def, range, count), 200);\n }\n if (action === 'count' && method === 'GET') {\n const indexName = qget(url, 'index');\n const n = indexName\n ? await countRows(db, def, range, indexName)\n : await countRows(db, def, range);\n return json({ count: Number(n) }, 200);\n }\n if (action === 'clear' && method === 'POST') {\n await db.transaction((tx) => refreshDomain(tx, [{ op: 'clear', store: def.name }]));\n return noContent();\n }\n if (action?.startsWith('index/') && method === 'GET') {\n return json(await listRows(db, def, range, count, action.slice('index/'.length)), 200);\n }\n if (action === undefined && method === 'PUT') {\n const parsed = await readJsonBody(req);\n const value = typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed) && 'value' in parsed\n ? parsed.value\n : undefined;\n if (value === undefined) throw new HttpError(400, 'body must be {value: ...}');\n const [key] = await db.transaction((tx) => refreshDomain(tx, [{ op: 'put', store: def.name, value }]));\n return json({ key }, 200);\n }\n if (action === undefined && method === 'DELETE') {\n const keyParam = jsonParam(url, 'key');\n const target = keyParam !== undefined ? keyParam : range;\n if (target === undefined || target === null) throw new HttpError(400, 'DELETE requires ?key or ?range');\n // Wire DELETE accepts a key or a range; the TxOp delete variant types the\n // narrower KeyDTO even though deleteRows honours both.\n await db.transaction((tx) => refreshDomain(tx, [{ op: 'delete', store: def.name, key: target as KeyDTO }]));\n return noContent();\n }\n return methodNotAllowed();\n}\n\nfunction isPublishedFeedAssetPath(pathname: string): string | null {\n if (pathname === '/feed' || pathname === '/feed/') return 'index.html';\n if (!pathname.startsWith('/feed/')) return null;\n const sub = pathname.slice('/feed/'.length);\n if (\n sub === 'index.html' ||\n sub === 'manifest.json' ||\n sub === 'report.html' ||\n sub.startsWith('chunks/') ||\n sub.startsWith('indexes/') ||\n sub.startsWith('markdown/')\n ) {\n return sub;\n }\n return null;\n}\n\nasync function servePublishedFeed(feedTree: FeedTree, method: string, relPath: string): Promise<Response> {\n if (method === 'OPTIONS') {\n return new Response(null, {\n status: 204,\n headers: {\n 'access-control-allow-origin': '*',\n 'access-control-allow-methods': 'GET, HEAD, OPTIONS',\n },\n });\n }\n if (method !== 'GET') return methodNotAllowed();\n try {\n const decoded = decodeURIComponent(relPath);\n const bytes = await feedTree.read(decoded);\n const ext = decoded.includes('.') ? decoded.slice(decoded.lastIndexOf('.') + 1).toLowerCase() : 'html';\n const cache = decoded.startsWith('chunks/')\n ? 'public, max-age=31536000, immutable'\n : 'no-cache';\n const copy = new Uint8Array(bytes.byteLength);\n copy.set(bytes);\n return new Response(copy.buffer, {\n status: 200,\n headers: {\n 'content-type': MIME[ext] ?? 'application/octet-stream',\n 'cache-control': cache,\n 'access-control-allow-origin': '*',\n },\n });\n } catch (err) {\n if (err instanceof FeedTreeError && err.code === 'not-found') return notFound();\n if (err instanceof FeedTreeError && err.code === 'layout') return plain('forbidden', 403);\n throw err;\n }\n}\n\nasync function apiRoutes(\n db: Database,\n feedTree: FeedTree,\n req: Request,\n method: string,\n sub: string,\n url: URL,\n): Promise<Response> {\n if (sub === '/health') {\n return json({ ok: true, driver: db.dialect }, 200);\n }\n if (sub === '/v1/feed/status' && method === 'GET') {\n const storage = new SqlStorage(db);\n const status = await checkUnpublishedFeedChanges(storage, feedTree);\n return json({ ...status, feedUrl: `${url.origin}/feed/` }, 200);\n }\n if (sub === '/v1/feed/publish' && method === 'POST') {\n const body = req.headers.get('content-length') === '0' ? {} : await readJsonBody(req).catch(() => ({}));\n const opts = typeof body === 'object' && body !== null ? (body as Record<string, unknown>) : {};\n const storage = new SqlStorage(db);\n const report = await publishFeedFromStorage(storage, feedTree, {\n layout: 'feed',\n ...(typeof opts.name === 'string' ? { name: opts.name } : {}),\n ...(typeof opts.description === 'string' ? { description: opts.description } : {}),\n ...(typeof opts.repositoryUrl === 'string' ? { repositoryUrl: opts.repositoryUrl } : {}),\n ...(typeof opts.notebookSlug === 'string' ? { notebookSlug: opts.notebookSlug } : {}),\n });\n return json({\n manifest: report.manifest,\n notebooks: report.notebooks,\n totalNotes: report.totalNotes,\n totalPublicSessions: report.totalPublicSessions,\n feedUrl: `${url.origin}/feed/`,\n }, 200);\n }\n if (sub === '/v1/wipe' && method === 'POST') {\n await db.transaction(async (tx) => {\n // System memberships survive; derived projections follow (empty is consistent).\n await wipeRows(tx);\n await wipeDomain(tx);\n });\n return noContent();\n }\n if (sub === '/v1/tx' && method === 'POST') {\n const parsed = await readJsonBody(req);\n const ops = typeof parsed === 'object' && parsed !== null && 'ops' in parsed ? parsed.ops : undefined;\n const parsedOps = txOps(ops);\n const results = await db.transaction((tx) => refreshDomain(tx, parsedOps));\n return json({ results }, 200);\n }\n if (sub === '/v1/query') {\n if (method !== 'POST') return methodNotAllowed();\n const body = await readJsonBody(req, MAX_BODY);\n return json(await handleDomainQuery(db, body), 200);\n }\n if (sub.startsWith('/v1/')) return storeRoutes(db, method, sub, url, req);\n return notFound();\n}\n\n// ── Handler factory ──────────────────────────────────────────────────────────\n\nfunction distRootOf(playgroundDist: string | undefined): string | undefined {\n if (!playgroundDist) return undefined;\n try {\n return realpathSync(playgroundDist);\n } catch {\n return undefined;\n }\n}\n\nexport function createHandler(\n db: Database | null,\n options: { playgroundDist: string; feedDir?: string; feedTree?: FeedTree },\n): (request: Request) => Promise<Response> {\n const distRoot = distRootOf(options.playgroundDist);\n const feedTree: FeedTree =\n options.feedTree ??\n (options.feedDir ? new NodeFsFeedTree(options.feedDir) : new MemoryFeedTree());\n return async (request: Request): Promise<Response> => {\n try {\n const url = new URL(request.url);\n const method = request.method === 'HEAD' ? 'GET' : request.method; // Bun strips HEAD bodies\n const path = url.pathname;\n if (path === '/api' || path.startsWith('/api/')) {\n return db\n ? await apiRoutes(db, feedTree, request, method, path.slice('/api'.length) || '/', url)\n : notFound();\n }\n if (db) {\n const feedAsset = isPublishedFeedAssetPath(path);\n if (feedAsset !== null) {\n return await servePublishedFeed(feedTree, request.method === 'OPTIONS' ? 'OPTIONS' : method, feedAsset);\n }\n }\n return await staticResponse(distRoot, method, path);\n } catch (e) {\n if (e instanceof HttpError || e instanceof StorageError) {\n const status = e.status;\n if (status >= 500) console.error('[wod-wiki-api]', e.message);\n const body: { error: string; code?: string } = { error: status >= 500 ? 'internal error' : e.message };\n if (e.code) body.code = e.code;\n return json(body, status);\n }\n console.error('[wod-wiki-api]', e);\n return json({ error: 'internal error' }, 500);\n }\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/version.ts"],"names":[],"mappings":";;;;;;;AAIO,IAAM,OAAA,GAAU","file":"chunk-5NNSHRMZ.mjs","sourcesContent":["/**\n * Auto-generated build version metadata.\n * Do not edit directly; updated by scripts/stamp-version.ts\n */\nexport const VERSION = '0.53.2204';\nexport const GIT_SHA = '5497f33';\nexport const BUILD_TIME = '2026-11-11T22:37:09.862Z';\nexport const SEMVER = {\n version: '0.53.2204',\n gitSha: '5497f33',\n buildTime: '2026-11-11T22:37:09.862Z',\n} as const;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/server.ts"],"names":["dist"],"mappings":"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","file":"chunk-LNBKPHEP.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; persist self-hosted published feed next to local SQLite DB when applicable\n const feedDir =\n mode === 'server' && options.database?.kind === 'sqlite'\n ? `${options.database.path}.feed`\n : undefined;\n const handler = createHandler(db?.db ?? null, { playgroundDist: dist, feedDir });\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"]}