@bitcobblers/wod-wiki-tools 0.44.2159 → 0.45.2166
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/wod.cjs +151 -153
- package/dist/bin/wod.cjs.map +1 -1
- package/dist/bin/wod.mjs +4 -4
- package/dist/{chunk-BQ6HTRH3.mjs → chunk-EAFF2GVB.mjs} +29 -38
- package/dist/chunk-EAFF2GVB.mjs.map +1 -0
- package/dist/{chunk-IWT7U3WX.mjs → chunk-F7IXIJ4I.mjs} +3 -3
- package/dist/{chunk-IWT7U3WX.mjs.map → chunk-F7IXIJ4I.mjs.map} +1 -1
- package/dist/{chunk-RWNL6APX.mjs → chunk-FSOBPDUC.mjs} +3 -3
- package/dist/{chunk-RWNL6APX.mjs.map → chunk-FSOBPDUC.mjs.map} +1 -1
- package/dist/{chunk-SOGZC3TL.mjs → chunk-O5ZCOUQE.mjs} +3 -3
- package/dist/chunk-O5ZCOUQE.mjs.map +1 -0
- package/dist/{chunk-LGEZVB44.mjs → chunk-PF5BTGWZ.mjs} +99 -92
- package/dist/chunk-PF5BTGWZ.mjs.map +1 -0
- package/dist/compiler-ZMG22VH4.mjs +9 -0
- package/dist/{compiler-V2BLOB2B.mjs.map → compiler-ZMG22VH4.mjs.map} +1 -1
- package/dist/index.cjs +151 -153
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -3
- package/dist/index.d.ts +1 -3
- package/dist/index.mjs +5 -5
- package/dist/{scaffoldCatalog-WNAHHEL2.mjs → scaffoldFeed-UXH3L5HM.mjs} +29 -29
- package/dist/scaffoldFeed-UXH3L5HM.mjs.map +1 -0
- package/dist/{server-2DVBA35J.mjs → server-5XDT7ITA.mjs} +4 -4
- package/dist/{server-2DVBA35J.mjs.map → server-5XDT7ITA.mjs.map} +1 -1
- package/dist/web/playground/assets/feedSync.worker-CEbxagtY.js +16 -0
- package/dist/web/playground/assets/main-BKDG9P36.css +2 -0
- package/dist/web/playground/assets/main-DAHoAykp.js +491 -0
- package/dist/web/playground/assets/{statementBuilderFlow-CFMsgRLA.js → statementBuilderFlow-DHSfYrHi.js} +2 -2
- package/dist/web/playground/assets/{vendor-BmgUyVmX.js → vendor-DKhA8bPd.js} +59 -59
- package/dist/web/{server/assets/vendor-codemirror-CFcn3kQd.js → playground/assets/vendor-codemirror-CnY0iCTs.js} +2 -2
- package/dist/web/playground/index.html +5 -5
- package/dist/web/playground/seed/core/chunks/canvas.9ad327d4.json +1 -0
- package/dist/web/playground/seed/core/chunks/{dashboards.302c4388.json → dashboards.f4196444.json} +1 -1
- package/dist/web/playground/seed/core/chunks/{efforts.835c18aa.json → efforts.7f0d2160.json} +1 -1
- package/dist/web/playground/seed/core/chunks/{equipment.5091d784.json → equipment.e7531ab5.json} +1 -1
- package/dist/web/playground/seed/core/indexes/notebooks/canvas.json +174 -183
- package/dist/web/playground/seed/core/indexes/notebooks/dashboards.json +13 -13
- package/dist/web/playground/seed/core/indexes/notebooks/efforts.json +323 -323
- package/dist/web/playground/seed/core/indexes/notebooks/equipment.json +47 -47
- package/dist/web/playground/seed/core/manifest.json +570 -604
- package/dist/web/playground/seed/core/markdown/canvas/ai-first/README.json +1 -1
- package/dist/web/playground/seed/core/markdown/canvas/guide/README.json +9 -9
- package/dist/web/playground/seed/core/markdown/canvas/guide/clock.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/guide/dashboards.json +11 -11
- package/dist/web/playground/seed/core/markdown/canvas/guide/metrics.json +59 -59
- package/dist/web/playground/seed/core/markdown/canvas/guide/protocols.json +95 -95
- package/dist/web/playground/seed/core/markdown/canvas/guide/sessions.json +131 -131
- package/dist/web/playground/seed/core/markdown/canvas/guide/start.json +53 -53
- package/dist/web/playground/seed/core/markdown/canvas/guide/structure.json +101 -101
- package/dist/web/playground/seed/core/markdown/canvas/guide/wql.json +39 -39
- package/dist/web/playground/seed/core/markdown/canvas/home/sample-script.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/home/welcome-1.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-full-session.json +9 -9
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-swimming.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +8 -8
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-3.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/document-1.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/document-2.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/document-3.json +10 -10
- package/dist/web/playground/seed/core/markdown/canvas/syntax/document-4.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/effort-notes.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/measurements.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-4.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-sections.json +8 -8
- package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
- package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/named-groups.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-3.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
- package/dist/web/playground/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
- package/dist/web/playground/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
- package/dist/web/playground/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
- package/dist/web/playground/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
- package/dist/web/playground/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
- package/dist/web/playground/seed/core/markdown/dashboards/training-block-review.json +11 -11
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/recovery/rest.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/recovery/stretching.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/running/backward-running.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/running/running-sprint.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/snatch.json +2 -2
- package/dist/web/playground/seed/core/markdown/efforts/strength/back-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/bench-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/carioca.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/cluster.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/devils-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/front-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/good-morning.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/l-sit.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/man-maker.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/power-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/push-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/sled-push.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/thruster.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/air-bike.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/barbell.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/bench.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/bike-erg.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/climbing-rope.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/clubs.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/dumbbell.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/ghd.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/jump-rope.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/kettlebell.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/macebell.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/medicine-ball.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/parallettes.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/plyo-box.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/pull-up-bar.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/rower.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/sandbag.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/ski-erg.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/slam-ball.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/sled.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/sledgehammer.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/weight-vest.json +1 -1
- package/dist/web/playground/seed/core/report.html +14 -15
- package/dist/web/server/assets/feedSync.worker-CEbxagtY.js +16 -0
- package/dist/web/server/assets/main-BKDG9P36.css +2 -0
- package/dist/web/server/assets/main-C_b1CczJ.js +491 -0
- package/dist/web/server/assets/{statementBuilderFlow-CQ3x0D5F.js → statementBuilderFlow-BPmNsGND.js} +2 -2
- package/dist/web/server/assets/{vendor-BmgUyVmX.js → vendor-DKhA8bPd.js} +59 -59
- package/dist/web/{playground/assets/vendor-codemirror-CFcn3kQd.js → server/assets/vendor-codemirror-CnY0iCTs.js} +2 -2
- package/dist/web/server/index.html +5 -5
- package/dist/web/server/seed/core/chunks/canvas.9ad327d4.json +1 -0
- package/dist/web/server/seed/core/chunks/{dashboards.302c4388.json → dashboards.f4196444.json} +1 -1
- package/dist/web/server/seed/core/chunks/{efforts.835c18aa.json → efforts.7f0d2160.json} +1 -1
- package/dist/web/server/seed/core/chunks/{equipment.5091d784.json → equipment.e7531ab5.json} +1 -1
- package/dist/web/server/seed/core/indexes/notebooks/canvas.json +174 -183
- package/dist/web/server/seed/core/indexes/notebooks/dashboards.json +13 -13
- package/dist/web/server/seed/core/indexes/notebooks/efforts.json +323 -323
- package/dist/web/server/seed/core/indexes/notebooks/equipment.json +47 -47
- package/dist/web/server/seed/core/manifest.json +570 -604
- package/dist/web/server/seed/core/markdown/canvas/ai-first/README.json +1 -1
- package/dist/web/server/seed/core/markdown/canvas/guide/README.json +9 -9
- package/dist/web/server/seed/core/markdown/canvas/guide/clock.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/guide/dashboards.json +11 -11
- package/dist/web/server/seed/core/markdown/canvas/guide/metrics.json +59 -59
- package/dist/web/server/seed/core/markdown/canvas/guide/protocols.json +95 -95
- package/dist/web/server/seed/core/markdown/canvas/guide/sessions.json +131 -131
- package/dist/web/server/seed/core/markdown/canvas/guide/start.json +53 -53
- package/dist/web/server/seed/core/markdown/canvas/guide/structure.json +101 -101
- package/dist/web/server/seed/core/markdown/canvas/guide/wql.json +39 -39
- package/dist/web/server/seed/core/markdown/canvas/home/sample-script.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/home/welcome-1.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-full-session.json +9 -9
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-swimming.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +8 -8
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-3.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/document-1.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/document-2.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/document-3.json +10 -10
- package/dist/web/server/seed/core/markdown/canvas/syntax/document-4.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/effort-notes.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/measurements.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-4.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-sections.json +8 -8
- package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
- package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/named-groups.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-3.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
- package/dist/web/server/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
- package/dist/web/server/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
- package/dist/web/server/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
- package/dist/web/server/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
- package/dist/web/server/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
- package/dist/web/server/seed/core/markdown/dashboards/training-block-review.json +11 -11
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/recovery/rest.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/recovery/stretching.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/rowing/rowing.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/running/backward-running.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/running/running-sprint.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/snatch.json +2 -2
- package/dist/web/server/seed/core/markdown/efforts/strength/back-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/bench-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/carioca.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/cluster.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/devils-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/front-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/good-morning.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/l-sit.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/man-maker.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/power-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/push-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/sled-push.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/thruster.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/air-bike.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/barbell.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/bench.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/bike-erg.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/climbing-rope.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/clubs.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/dumbbell.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/ghd.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/jump-rope.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/kettlebell.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/macebell.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/medicine-ball.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/parallettes.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/plyo-box.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/pull-up-bar.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/rower.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/sandbag.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/ski-erg.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/slam-ball.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/sled.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/sledgehammer.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/weight-vest.json +1 -1
- package/dist/web/server/seed/core/report.html +14 -15
- package/package.json +6 -6
- package/dist/chunk-BQ6HTRH3.mjs.map +0 -1
- package/dist/chunk-LGEZVB44.mjs.map +0 -1
- package/dist/chunk-SOGZC3TL.mjs.map +0 -1
- package/dist/compiler-V2BLOB2B.mjs +0 -9
- package/dist/scaffoldCatalog-WNAHHEL2.mjs.map +0 -1
- package/dist/web/playground/assets/main-Ba8fwabQ.js +0 -209
- package/dist/web/playground/assets/main-bpDz6cBb.css +0 -2
- package/dist/web/playground/assets/seedSync.worker-CXyhCqQv.js +0 -16
- package/dist/web/playground/seed/core/apps/playground/app/templates/new-playground.json +0 -39
- package/dist/web/playground/seed/core/chunks/canvas.4ae0f2d2.json +0 -1
- package/dist/web/playground/seed/core/chunks/template.2d38f4df.json +0 -1
- package/dist/web/playground/seed/core/indexes/notebooks/template.json +0 -18
- package/dist/web/playground/seed/core/markdown/canvas/home/README.json +0 -11
- package/dist/web/server/assets/main-CESv8JYf.js +0 -209
- package/dist/web/server/assets/main-bpDz6cBb.css +0 -2
- package/dist/web/server/assets/seedSync.worker-CXyhCqQv.js +0 -16
- package/dist/web/server/seed/core/apps/playground/app/templates/new-playground.json +0 -39
- package/dist/web/server/seed/core/chunks/canvas.4ae0f2d2.json +0 -1
- package/dist/web/server/seed/core/chunks/template.2d38f4df.json +0 -1
- package/dist/web/server/seed/core/indexes/notebooks/template.json +0 -18
- package/dist/web/server/seed/core/markdown/canvas/home/README.json +0 -11
package/dist/index.cjs
CHANGED
|
@@ -285,8 +285,8 @@ var init_db = __esm({
|
|
|
285
285
|
CLI_UUID_NAMESPACE = "c0ffee00-8b1a-4e2c-9d3f-5a6b7c8d9e0f";
|
|
286
286
|
}
|
|
287
287
|
});
|
|
288
|
-
function
|
|
289
|
-
const value = /^
|
|
288
|
+
function notebookSlugForChunkId(chunkId) {
|
|
289
|
+
const value = /^notebook\.(.+)$/.exec(chunkId)?.[1];
|
|
290
290
|
return value && value !== "_root" ? value : void 0;
|
|
291
291
|
}
|
|
292
292
|
function canvasRouteSlug(content) {
|
|
@@ -302,15 +302,13 @@ function seedNoteSourceId(path, content, chunkId) {
|
|
|
302
302
|
if (chunkId === DASHBOARDS_CHUNK_ID) return "dashboards";
|
|
303
303
|
if (chunkId === EFFORTS_CHUNK_ID) return "efforts";
|
|
304
304
|
if (chunkId === EQUIPMENT_CHUNK_ID) return "equipment";
|
|
305
|
-
if (chunkId
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
return !catalog ? "collection:_root" : stem.toLowerCase() === "readme" ? `collection:${catalog}` : `collection:${catalog}/${stem}`;
|
|
305
|
+
if (chunkId.startsWith("notebook.")) {
|
|
306
|
+
const slug = notebookSlugForChunkId(chunkId);
|
|
307
|
+
return !slug ? "notebook:_root" : stem.toLowerCase() === "readme" ? `notebook:${slug}` : `notebook:${under}`;
|
|
309
308
|
}
|
|
310
|
-
if (chunkId.startsWith("feed.")) return `feed:feeds/${under}`;
|
|
311
309
|
return void 0;
|
|
312
310
|
}
|
|
313
|
-
var SEED_SCHEMA2, SEED_REGISTERED_WIDGETS, SEED_NAMESPACE, EFFORTS_CHUNK_ID, EQUIPMENT_CHUNK_ID, CANVAS_CHUNK_ID2, DASHBOARDS_CHUNK_ID
|
|
311
|
+
var SEED_SCHEMA2, SEED_REGISTERED_WIDGETS, SEED_NAMESPACE, EFFORTS_CHUNK_ID, EQUIPMENT_CHUNK_ID, CANVAS_CHUNK_ID2, DASHBOARDS_CHUNK_ID;
|
|
314
312
|
var init_contract = __esm({
|
|
315
313
|
"src/seedbuild/contract.ts"() {
|
|
316
314
|
SEED_SCHEMA2 = 9;
|
|
@@ -320,7 +318,6 @@ var init_contract = __esm({
|
|
|
320
318
|
EQUIPMENT_CHUNK_ID = "equipment";
|
|
321
319
|
CANVAS_CHUNK_ID2 = "canvas";
|
|
322
320
|
DASHBOARDS_CHUNK_ID = "dashboards";
|
|
323
|
-
TEMPLATE_CHUNK_ID = "template";
|
|
324
321
|
}
|
|
325
322
|
});
|
|
326
323
|
|
|
@@ -547,8 +544,8 @@ __export(compiler_exports, {
|
|
|
547
544
|
chunkIdFor: () => chunkIdFor,
|
|
548
545
|
collectCorpusMarkdown: () => collectCorpusMarkdown,
|
|
549
546
|
compileSeedRow: () => compileSeedRow,
|
|
547
|
+
dateKeyToCreatedAt: () => dateKeyToCreatedAt,
|
|
550
548
|
discoverUncatalogedEfforts: () => discoverUncatalogedEfforts,
|
|
551
|
-
feedDateToCreatedAt: () => feedDateToCreatedAt,
|
|
552
549
|
frontmatterDateToCreatedAt: () => frontmatterDateToCreatedAt,
|
|
553
550
|
generateSeed: () => generateSeed,
|
|
554
551
|
getFileCommit: () => getFileCommit,
|
|
@@ -582,16 +579,15 @@ function chunkIdFor(relPath) {
|
|
|
582
579
|
case "efforts":
|
|
583
580
|
case "equipment":
|
|
584
581
|
return corpus;
|
|
585
|
-
case "
|
|
586
|
-
return parts.length === 3 ? `
|
|
587
|
-
case "feeds":
|
|
588
|
-
return parts.length === 3 ? `feed._root` : `feed.${slug}`;
|
|
582
|
+
case "notebooks":
|
|
583
|
+
return parts.length === 3 ? `notebook._root` : `notebook.${slug}`;
|
|
589
584
|
default:
|
|
590
585
|
return null;
|
|
591
586
|
}
|
|
592
587
|
}
|
|
593
|
-
function collectCorpusMarkdown(markdownDir) {
|
|
594
|
-
|
|
588
|
+
function collectCorpusMarkdown(markdownDir, excludePaths = []) {
|
|
589
|
+
const excluded = new Set(excludePaths);
|
|
590
|
+
return listMarkdownFiles(markdownDir).map((p) => `markdown/${p}`).filter((path) => !excluded.has(path));
|
|
595
591
|
}
|
|
596
592
|
function partitionIntoChunks(paths) {
|
|
597
593
|
const byId = /* @__PURE__ */ new Map();
|
|
@@ -599,7 +595,7 @@ function partitionIntoChunks(paths) {
|
|
|
599
595
|
const id = chunkIdFor(p);
|
|
600
596
|
if (id === null) {
|
|
601
597
|
throw new Error(
|
|
602
|
-
`[generate-seed] Parity failure: '${p}' is not part of any known corpus (canvas | dashboards | efforts | equipment |
|
|
598
|
+
`[generate-seed] Parity failure: '${p}' is not part of any known corpus (canvas | dashboards | efforts | equipment | notebooks). Extend chunkIdFor() if this is a new corpus.`
|
|
603
599
|
);
|
|
604
600
|
}
|
|
605
601
|
const list = byId.get(id);
|
|
@@ -690,7 +686,7 @@ function frontmatterDateToCreatedAt(raw, path) {
|
|
|
690
686
|
}
|
|
691
687
|
return ts;
|
|
692
688
|
}
|
|
693
|
-
function
|
|
689
|
+
function dateKeyToCreatedAt(dateKey) {
|
|
694
690
|
if (!/^\d{4}-\d{2}-\d{2}$/.test(dateKey)) return 0;
|
|
695
691
|
const ts = Date.parse(`${dateKey}T00:00:00Z`);
|
|
696
692
|
return Number.isNaN(ts) ? 0 : ts;
|
|
@@ -706,18 +702,18 @@ function compileSeedRow(path, content, metadata = {}) {
|
|
|
706
702
|
});
|
|
707
703
|
return { path, content, blocks, blockIndex, blockEfforts: [], blockEquipment: [] };
|
|
708
704
|
}
|
|
709
|
-
function buildBlockIndexRows(markdownDir, corpusRoot) {
|
|
705
|
+
function buildBlockIndexRows(markdownDir, corpusRoot, excludePaths = []) {
|
|
710
706
|
const rows = [];
|
|
711
|
-
for (const path$1 of collectCorpusMarkdown(markdownDir)) {
|
|
707
|
+
for (const path$1 of collectCorpusMarkdown(markdownDir, excludePaths)) {
|
|
712
708
|
const chunkId = chunkIdFor(path$1);
|
|
713
709
|
if (!chunkId) continue;
|
|
714
710
|
const content = fs.readFileSync(path.join(corpusRoot, path$1), "utf8");
|
|
715
711
|
const parts = path$1.split("/");
|
|
716
712
|
const stem = (parts.at(-1) ?? "").replace(/\.md$/, "");
|
|
717
|
-
const
|
|
718
|
-
const routeId = chunkId === "canvas" ? canvasRouteSlug(content) ?? void 0 : chunkId.startsWith("
|
|
713
|
+
const slug = parts[2];
|
|
714
|
+
const routeId = chunkId === "canvas" ? canvasRouteSlug(content) ?? void 0 : chunkId.startsWith("notebook.") ? stem.toLowerCase() === "readme" ? slug : parts.slice(2).join("/").replace(/\.md$/, "") : void 0;
|
|
719
715
|
const sourceId = seedNoteSourceId(path$1, content, chunkId);
|
|
720
|
-
const createdAt = frontmatterDateToCreatedAt(content, path$1) ?? (chunkId.startsWith("
|
|
716
|
+
const createdAt = frontmatterDateToCreatedAt(content, path$1) ?? (chunkId.startsWith("notebook.") && /^\d{4}-\d{2}-\d{2}$/.test(parts.at(-2) ?? "") ? dateKeyToCreatedAt(parts.at(-2) ?? "") : getFileCreatedAt(path$1, corpusRoot));
|
|
721
717
|
rows.push(...compileSeedRow(path$1, content, { routeId, sourceId, createdAt }).blockIndex);
|
|
722
718
|
}
|
|
723
719
|
return rows;
|
|
@@ -769,10 +765,10 @@ function loadCorpusReferenceCatalog(markdownDir) {
|
|
|
769
765
|
}
|
|
770
766
|
return { efforts, equipment };
|
|
771
767
|
}
|
|
772
|
-
function discoverUncatalogedEfforts(markdownDir, corpusRoot) {
|
|
768
|
+
function discoverUncatalogedEfforts(markdownDir, corpusRoot, excludePaths = []) {
|
|
773
769
|
const catalog = loadCorpusReferenceCatalog(markdownDir);
|
|
774
770
|
const index = wodWikiLang.createReferenceIndex(catalog);
|
|
775
|
-
const blocks = buildBlockIndexRows(markdownDir, corpusRoot);
|
|
771
|
+
const blocks = buildBlockIndexRows(markdownDir, corpusRoot, excludePaths);
|
|
776
772
|
const discovered = /* @__PURE__ */ new Map();
|
|
777
773
|
for (const block of blocks) {
|
|
778
774
|
if (block.dataType !== "wod" || !block.rawContent) continue;
|
|
@@ -906,22 +902,18 @@ function generateSeed(options = {}) {
|
|
|
906
902
|
const webRepositoryUrl = repositoryUrl?.replace(/^git\+/, "").replace(/\.git$/, "");
|
|
907
903
|
const repositoryLink = webRepositoryUrl && URL.canParse(webRepositoryUrl) ? new URL(webRepositoryUrl) : void 0;
|
|
908
904
|
if (options.scaffoldDiscoveredEfforts) {
|
|
909
|
-
const discovered = discoverUncatalogedEfforts(markdownDir, corpusRoot);
|
|
905
|
+
const discovered = discoverUncatalogedEfforts(markdownDir, corpusRoot, options.excludePaths);
|
|
910
906
|
if (discovered.length > 0) {
|
|
911
907
|
scaffoldDiscoveredEfforts(discovered, markdownDir);
|
|
912
908
|
}
|
|
913
909
|
}
|
|
914
910
|
const tScan = Date.now();
|
|
915
|
-
const paths = collectCorpusMarkdown(markdownDir);
|
|
911
|
+
const paths = collectCorpusMarkdown(markdownDir, options.excludePaths);
|
|
916
912
|
const groups = partitionIntoChunks(paths);
|
|
917
913
|
gateDashboards(groups, corpusRoot);
|
|
918
|
-
if (options.templateFile && fs.existsSync(options.templateFile)) {
|
|
919
|
-
const templateRowPath = options.templateRowPath ?? path.relative(corpusRoot, options.templateFile).split("\\").join("/");
|
|
920
|
-
groups.push({ id: TEMPLATE_CHUNK_ID, files: [templateRowPath] });
|
|
921
|
-
}
|
|
922
914
|
passMs.scan = Date.now() - tScan;
|
|
923
915
|
const tBlockIndex = Date.now();
|
|
924
|
-
const blockRows = buildBlockIndexRows(markdownDir, corpusRoot);
|
|
916
|
+
const blockRows = buildBlockIndexRows(markdownDir, corpusRoot, options.excludePaths);
|
|
925
917
|
passMs.blockIndex = Date.now() - tBlockIndex;
|
|
926
918
|
const tParseGate = Date.now();
|
|
927
919
|
const syntaxProblems = validateWodBlockSyntax(blockRows);
|
|
@@ -963,11 +955,10 @@ ${shown}${more}`);
|
|
|
963
955
|
const manifestNotebooks = [];
|
|
964
956
|
const tWrite = Date.now();
|
|
965
957
|
for (const { id, files } of groups) {
|
|
966
|
-
const templateSource = id === TEMPLATE_CHUNK_ID ? options.templateFile : void 0;
|
|
967
958
|
const records = [];
|
|
968
959
|
const rows = files.map((p) => {
|
|
969
|
-
const raw = fs.readFileSync(
|
|
970
|
-
const content =
|
|
960
|
+
const raw = fs.readFileSync(path.join(corpusRoot, p), "utf8");
|
|
961
|
+
const content = raw;
|
|
971
962
|
const compiled = compileSeedRow(p, content);
|
|
972
963
|
compiled.blockIndex = blocksByPath.get(p) ?? compiled.blockIndex;
|
|
973
964
|
compiled.blockEfforts = effortsByPath.get(p) ?? [];
|
|
@@ -1006,7 +997,7 @@ ${shown}${more}`);
|
|
|
1006
997
|
const notebookIndex = {
|
|
1007
998
|
notebookId: id,
|
|
1008
999
|
label: fileToDisplayName(id.split(".").at(-1) ?? id),
|
|
1009
|
-
category:
|
|
1000
|
+
category: notebookSlugForChunkId(id),
|
|
1010
1001
|
indexPath: notebookIndexPath,
|
|
1011
1002
|
commit: records.find((r) => r.commit)?.commit ?? gitVersion.commit,
|
|
1012
1003
|
count: rows.length,
|
|
@@ -1102,35 +1093,35 @@ var init_compiler = __esm({
|
|
|
1102
1093
|
var VERSION;
|
|
1103
1094
|
var init_version = __esm({
|
|
1104
1095
|
"src/version.ts"() {
|
|
1105
|
-
VERSION = "0.
|
|
1096
|
+
VERSION = "0.45.2166";
|
|
1106
1097
|
}
|
|
1107
1098
|
});
|
|
1108
1099
|
|
|
1109
|
-
// src/cli/
|
|
1110
|
-
var
|
|
1111
|
-
__export(
|
|
1112
|
-
|
|
1113
|
-
|
|
1100
|
+
// src/cli/scaffoldFeed.ts
|
|
1101
|
+
var scaffoldFeed_exports = {};
|
|
1102
|
+
__export(scaffoldFeed_exports, {
|
|
1103
|
+
scaffoldFeed: () => scaffoldFeed,
|
|
1104
|
+
validateFeedName: () => validateFeedName
|
|
1114
1105
|
});
|
|
1115
|
-
function
|
|
1106
|
+
function validateFeedName(name) {
|
|
1116
1107
|
if (name.length === 0 || name === "." || name === "..") {
|
|
1117
|
-
throw new Error("
|
|
1108
|
+
throw new Error("Feed name must be a single non-empty directory name");
|
|
1118
1109
|
}
|
|
1119
1110
|
if (name.includes("/") || name.includes("\\") || name.includes("\0")) {
|
|
1120
|
-
throw new Error(`Invalid
|
|
1111
|
+
throw new Error(`Invalid feed name '${name}': must be a single directory name (no path separators or traversal)`);
|
|
1121
1112
|
}
|
|
1122
1113
|
if (/^(?:[A-Za-z]:)?[/\\]/.test(name)) {
|
|
1123
|
-
throw new Error(`Invalid
|
|
1114
|
+
throw new Error(`Invalid feed name '${name}': absolute paths are not allowed`);
|
|
1124
1115
|
}
|
|
1125
1116
|
if (name.length > 214 || !/^[a-z0-9][a-z0-9._-]*$/.test(name)) {
|
|
1126
1117
|
throw new Error(
|
|
1127
|
-
`Invalid
|
|
1118
|
+
`Invalid feed name '${name}': must be a valid npm package name (lowercase letters, digits, dots, hyphens, underscores; no leading dot/hyphen)`
|
|
1128
1119
|
);
|
|
1129
1120
|
}
|
|
1130
1121
|
return name;
|
|
1131
1122
|
}
|
|
1132
|
-
function
|
|
1133
|
-
|
|
1123
|
+
function scaffoldFeed(name, opts = {}) {
|
|
1124
|
+
validateFeedName(name);
|
|
1134
1125
|
const dir = path.resolve(opts.cwd ?? process.cwd(), name);
|
|
1135
1126
|
try {
|
|
1136
1127
|
fs.mkdirSync(dir);
|
|
@@ -1148,7 +1139,7 @@ function scaffoldCatalog(name, opts = {}) {
|
|
|
1148
1139
|
version: "0.1.0",
|
|
1149
1140
|
private: true,
|
|
1150
1141
|
type: "module",
|
|
1151
|
-
description: `WOD Wiki workout
|
|
1142
|
+
description: `WOD Wiki workout feed: ${name}`,
|
|
1152
1143
|
scripts: {
|
|
1153
1144
|
build: "wod build . --output dist"
|
|
1154
1145
|
},
|
|
@@ -1161,10 +1152,10 @@ function scaffoldCatalog(name, opts = {}) {
|
|
|
1161
1152
|
)}
|
|
1162
1153
|
`],
|
|
1163
1154
|
[".gitignore", "node_modules/\ndist/\n"],
|
|
1164
|
-
[".github/workflows/publish-
|
|
1165
|
-
["markdown/
|
|
1166
|
-
[`markdown/
|
|
1167
|
-
["README.md",
|
|
1155
|
+
[".github/workflows/publish-feed.yml", publishWorkflow()],
|
|
1156
|
+
["markdown/notebooks/example/README.md", feedReadme(name)],
|
|
1157
|
+
[`markdown/notebooks/example/morning-session.md`, exampleWorkout(date)],
|
|
1158
|
+
["README.md", repoReadme(name)]
|
|
1168
1159
|
];
|
|
1169
1160
|
try {
|
|
1170
1161
|
for (const [rel, content] of files) {
|
|
@@ -1178,13 +1169,13 @@ function scaffoldCatalog(name, opts = {}) {
|
|
|
1178
1169
|
}
|
|
1179
1170
|
return { dir, files: files.map(([rel]) => rel) };
|
|
1180
1171
|
}
|
|
1181
|
-
var publishWorkflow,
|
|
1182
|
-
var
|
|
1183
|
-
"src/cli/
|
|
1172
|
+
var publishWorkflow, feedReadme, exampleWorkout, repoReadme;
|
|
1173
|
+
var init_scaffoldFeed = __esm({
|
|
1174
|
+
"src/cli/scaffoldFeed.ts"() {
|
|
1184
1175
|
init_version();
|
|
1185
|
-
publishWorkflow = () => `name: Publish
|
|
1176
|
+
publishWorkflow = () => `name: Publish feed
|
|
1186
1177
|
|
|
1187
|
-
# Compile the
|
|
1178
|
+
# Compile the feed with the wod CLI and deploy dist/ to GitHub Pages.
|
|
1188
1179
|
# Requires Pages enabled: repo Settings \u2192 Pages \u2192 Source: "GitHub Actions".
|
|
1189
1180
|
|
|
1190
1181
|
on:
|
|
@@ -1234,10 +1225,10 @@ jobs:
|
|
|
1234
1225
|
- id: deployment
|
|
1235
1226
|
uses: actions/deploy-pages@v4
|
|
1236
1227
|
`;
|
|
1237
|
-
|
|
1228
|
+
feedReadme = (name) => `# ${name}
|
|
1238
1229
|
|
|
1239
|
-
Example benchmark
|
|
1240
|
-
the \`example\`
|
|
1230
|
+
Example benchmark notebook. Each \`.md\` file in this directory becomes part of
|
|
1231
|
+
the \`example\` notebook chunk; \`README.md\` is the notebook's landing page.
|
|
1241
1232
|
|
|
1242
1233
|
Add one file per workout:
|
|
1243
1234
|
|
|
@@ -1272,9 +1263,9 @@ date: ${date}
|
|
|
1272
1263
|
Pull-ups
|
|
1273
1264
|
\`\`\`
|
|
1274
1265
|
`;
|
|
1275
|
-
|
|
1266
|
+
repoReadme = (name) => `# ${name}
|
|
1276
1267
|
|
|
1277
|
-
A [WOD Wiki](https://github.com/bitcobblers/wod-wiki) workout
|
|
1268
|
+
A [WOD Wiki](https://github.com/bitcobblers/wod-wiki) workout feed: plain
|
|
1278
1269
|
Markdown workouts compiled to static, version-stamped seed chunks and published
|
|
1279
1270
|
via GitHub Pages.
|
|
1280
1271
|
|
|
@@ -1286,25 +1277,25 @@ bunx wod build . --output dist
|
|
|
1286
1277
|
\`\`\`
|
|
1287
1278
|
|
|
1288
1279
|
Workouts live under \`markdown/\` \u2014 this scaffold starts with one example
|
|
1289
|
-
|
|
1280
|
+
feed. Validate everything with \`bunx wod build\`: it gates every file on
|
|
1290
1281
|
the Whiteboard grammar and corpus layout before writing \`dist/\`.
|
|
1291
1282
|
|
|
1292
1283
|
## Publish
|
|
1293
1284
|
|
|
1294
1285
|
Push to GitHub and enable Pages (**Settings \u2192 Pages \u2192 Source: GitHub
|
|
1295
|
-
Actions**). The bundled workflow (\`.github/workflows/publish-
|
|
1296
|
-
builds the
|
|
1286
|
+
Actions**). The bundled workflow (\`.github/workflows/publish-feed.yml\`)
|
|
1287
|
+
builds the feed on every push to \`main\` and deploys \`dist/\`.
|
|
1297
1288
|
|
|
1298
1289
|
## Share
|
|
1299
1290
|
|
|
1300
|
-
Once published, anyone can subscribe to this
|
|
1291
|
+
Once published, anyone can subscribe to this feed from a WOD Wiki instance
|
|
1301
1292
|
at:
|
|
1302
1293
|
|
|
1303
1294
|
\`\`\`
|
|
1304
|
-
<app-url>/subscribe?source=<url-encoded published
|
|
1295
|
+
<app-url>/subscribe?source=<url-encoded published feed URL>
|
|
1305
1296
|
\`\`\`
|
|
1306
1297
|
|
|
1307
|
-
For \`owner\`/\`repo\` on GitHub Pages the
|
|
1298
|
+
For \`owner\`/\`repo\` on GitHub Pages the feed URL is the deployed
|
|
1308
1299
|
directory, \`https://owner.github.io/repo/\`, e.g.
|
|
1309
1300
|
\`/subscribe?source=https%3A%2F%2Fowner.github.io%2Frepo%2F\`.
|
|
1310
1301
|
`;
|
|
@@ -3168,8 +3159,6 @@ async function saveSource(db, options, startTime) {
|
|
|
3168
3159
|
sourceRevision++;
|
|
3169
3160
|
for (const block of Object.values(blocks)) block.sourceRevision = sourceRevision;
|
|
3170
3161
|
}
|
|
3171
|
-
const fm = wodWikiEngine.readFrontmatterMeta(options.source);
|
|
3172
|
-
const catalog = typeof fm["catalog"] === "string" && fm["catalog"].trim() || typeof fm["collection"] === "string" && fm["collection"].trim() || existing?.catalog;
|
|
3173
3162
|
const note = {
|
|
3174
3163
|
...existing,
|
|
3175
3164
|
id: noteId,
|
|
@@ -3179,8 +3168,7 @@ async function saveSource(db, options, startTime) {
|
|
|
3179
3168
|
createdAt: existing?.createdAt ?? now,
|
|
3180
3169
|
rawContent: options.source,
|
|
3181
3170
|
sourceRevision,
|
|
3182
|
-
blocks
|
|
3183
|
-
...catalog ? { catalog } : {}
|
|
3171
|
+
blocks
|
|
3184
3172
|
};
|
|
3185
3173
|
const priorRows = await tx.readonly("block_index").getAllFromIndex("by-note", noteId);
|
|
3186
3174
|
const priorEfforts = await tx.readonly("block_efforts").getAllFromIndex("by-note", noteId);
|
|
@@ -3218,7 +3206,6 @@ async function saveSource(db, options, startTime) {
|
|
|
3218
3206
|
noteTitle: note.title,
|
|
3219
3207
|
createdAt: prior?.createdAt ?? now,
|
|
3220
3208
|
blockContentId: fingerprint,
|
|
3221
|
-
...catalog ? { catalog } : {},
|
|
3222
3209
|
...note.sourceId ? { sourceId: note.sourceId } : {}
|
|
3223
3210
|
});
|
|
3224
3211
|
if (block.kind === "wod") {
|
|
@@ -3389,16 +3376,46 @@ async function persistSessionBundle(db, session, events) {
|
|
|
3389
3376
|
});
|
|
3390
3377
|
return { events: events.length };
|
|
3391
3378
|
}
|
|
3392
|
-
async function
|
|
3393
|
-
const
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
}
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
const
|
|
3400
|
-
|
|
3401
|
-
|
|
3379
|
+
async function persistDefinitionNote(db, kind, source) {
|
|
3380
|
+
const parsed = kind === "effort" ? wodWikiLang.parseEffortFile(source) : wodWikiLang.parseEquipmentFile(source);
|
|
3381
|
+
if (!parsed) {
|
|
3382
|
+
throw new Error(kind === "effort" ? "[wod import] Unparseable effort file (need frontmatter id/slug/label + numeric baseAttributes.met)" : "[wod import] Unparseable equipment file (need frontmatter type: equipment + id/slug/label)");
|
|
3383
|
+
}
|
|
3384
|
+
const family = kind === "effort" ? "efforts" : "equipment";
|
|
3385
|
+
const prior = await db.storage.readonly(family).get(parsed.slug);
|
|
3386
|
+
const stamped = wodWikiEngine.extractNoteIdentity(source)?.noteId;
|
|
3387
|
+
const noteId = stamped ?? prior?.ownerNoteId ?? `${kind}/${parsed.slug}`;
|
|
3388
|
+
const now = Date.now();
|
|
3389
|
+
return db.storage.transaction(["notes", family, "tags", "note_tags"], "readwrite", async (tx) => {
|
|
3390
|
+
const previous = await tx.readonly("notes").get(noteId);
|
|
3391
|
+
const sourceRevision = (previous?.sourceRevision ?? 0) + (previous?.rawContent === source ? 0 : 1);
|
|
3392
|
+
const blocks = wodWikiCore.reconcileNoteBlocks(source, { sourceRevision, registeredWidgets, blocks: previous?.blocks });
|
|
3393
|
+
wodWikiCore.validateNoteBlocks(source, blocks, sourceRevision, { registeredWidgets });
|
|
3394
|
+
const note = {
|
|
3395
|
+
...previous,
|
|
3396
|
+
id: noteId,
|
|
3397
|
+
title: parsed.label,
|
|
3398
|
+
type: previous?.type ?? "note",
|
|
3399
|
+
createdAt: previous?.createdAt ?? now,
|
|
3400
|
+
rawContent: source,
|
|
3401
|
+
sourceRevision,
|
|
3402
|
+
blocks,
|
|
3403
|
+
sourceId: family,
|
|
3404
|
+
sourcePath: noteId
|
|
3405
|
+
};
|
|
3406
|
+
await tx.readwrite("notes").put(note);
|
|
3407
|
+
const isoNow = new Date(now).toISOString();
|
|
3408
|
+
await tx.readwrite(family).put({
|
|
3409
|
+
...parsed,
|
|
3410
|
+
registrySource: prior?.registrySource ?? "user",
|
|
3411
|
+
ownerNoteId: noteId,
|
|
3412
|
+
sourceId: family,
|
|
3413
|
+
sourcePath: noteId,
|
|
3414
|
+
createdAt: prior?.createdAt ?? isoNow,
|
|
3415
|
+
updatedAt: isoNow
|
|
3416
|
+
});
|
|
3417
|
+
await saveTags(tx, noteId, wodWikiEngine.extractTypedTags(source), now);
|
|
3418
|
+
return { slug: parsed.slug, noteId, createdNote: !previous };
|
|
3402
3419
|
});
|
|
3403
3420
|
}
|
|
3404
3421
|
async function persistTypedTags(db, labels, type) {
|
|
@@ -3476,7 +3493,7 @@ init_db();
|
|
|
3476
3493
|
init_contract();
|
|
3477
3494
|
init_compiler();
|
|
3478
3495
|
init_report();
|
|
3479
|
-
async function
|
|
3496
|
+
async function publishNotebookSeed(db, options) {
|
|
3480
3497
|
const t0 = Date.now();
|
|
3481
3498
|
const fs = nodeFs();
|
|
3482
3499
|
const path = nodePath();
|
|
@@ -3484,31 +3501,30 @@ async function publishCatalogSeed(db, options) {
|
|
|
3484
3501
|
if (allNotes.length === 0) {
|
|
3485
3502
|
throw new Error(`[wod publish] No notes found in database ${db.path}`);
|
|
3486
3503
|
}
|
|
3487
|
-
const
|
|
3504
|
+
const notesByNotebook = /* @__PURE__ */ new Map();
|
|
3488
3505
|
for (const note of allNotes) {
|
|
3489
|
-
const
|
|
3490
|
-
const
|
|
3491
|
-
const
|
|
3492
|
-
const list = notesByCatalog.get(key) ?? [];
|
|
3506
|
+
const slug = wodWikiWql.notebookSlugOfSourceId(note.sourceId);
|
|
3507
|
+
const key = slug || "__unassigned__";
|
|
3508
|
+
const list = notesByNotebook.get(key) ?? [];
|
|
3493
3509
|
list.push(note);
|
|
3494
|
-
|
|
3510
|
+
notesByNotebook.set(key, list);
|
|
3495
3511
|
}
|
|
3496
|
-
const
|
|
3497
|
-
if (options.
|
|
3498
|
-
const matching =
|
|
3512
|
+
const targetNotebooks = /* @__PURE__ */ new Map();
|
|
3513
|
+
if (options.notebook) {
|
|
3514
|
+
const matching = notesByNotebook.get(options.notebook);
|
|
3499
3515
|
if (matching) {
|
|
3500
|
-
|
|
3501
|
-
} else if (
|
|
3502
|
-
|
|
3516
|
+
targetNotebooks.set(options.notebook, matching);
|
|
3517
|
+
} else if (notesByNotebook.has("__unassigned__") && notesByNotebook.size === 1) {
|
|
3518
|
+
targetNotebooks.set(options.notebook, notesByNotebook.get("__unassigned__"));
|
|
3503
3519
|
} else {
|
|
3504
|
-
const available = [...
|
|
3520
|
+
const available = [...notesByNotebook.keys()].filter((k) => k !== "__unassigned__");
|
|
3505
3521
|
throw new Error(
|
|
3506
|
-
`[wod publish]
|
|
3522
|
+
`[wod publish] Notebook "${options.notebook}" not found in ${db.path}.` + (available.length > 0 ? ` Available notebooks: ${available.join(", ")}` : "")
|
|
3507
3523
|
);
|
|
3508
3524
|
}
|
|
3509
3525
|
} else {
|
|
3510
|
-
for (const [
|
|
3511
|
-
|
|
3526
|
+
for (const [slug, notes] of notesByNotebook.entries()) {
|
|
3527
|
+
targetNotebooks.set(slug === "__unassigned__" ? "default" : slug, notes);
|
|
3512
3528
|
}
|
|
3513
3529
|
}
|
|
3514
3530
|
const allIndexRows = await db.storage.readonly("block_index").getAll();
|
|
@@ -3537,25 +3553,24 @@ async function publishCatalogSeed(db, options) {
|
|
|
3537
3553
|
fs.mkdirSync(chunksDir, { recursive: true });
|
|
3538
3554
|
const manifestChunks = [];
|
|
3539
3555
|
let totalNotes = 0;
|
|
3540
|
-
const
|
|
3541
|
-
for (const [
|
|
3542
|
-
|
|
3556
|
+
const publishedNotebooks = [];
|
|
3557
|
+
for (const [notebookSlug, notes] of targetNotebooks.entries()) {
|
|
3558
|
+
publishedNotebooks.push(notebookSlug);
|
|
3543
3559
|
const chunkRows = [];
|
|
3544
3560
|
for (const note of notes) {
|
|
3545
3561
|
const stem = (note.title || note.id).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") || "note";
|
|
3546
|
-
const notePath = note.sourcePath ?? `markdown/
|
|
3562
|
+
const notePath = note.sourcePath ?? `markdown/notebooks/${notebookSlug}/${stem}.md`;
|
|
3547
3563
|
const noteBlockIndex = indexByNote.get(note.id) ?? [];
|
|
3548
3564
|
const noteBlockEfforts = effortsByNote.get(note.id) ?? [];
|
|
3549
3565
|
const noteBlockEquipment = equipmentByNote.get(note.id) ?? [];
|
|
3550
3566
|
const blockIndex = noteBlockIndex.length > 0 ? noteBlockIndex.map((b) => ({
|
|
3551
3567
|
...b,
|
|
3552
3568
|
isStatic: true,
|
|
3553
|
-
sourceId: b.sourceId ?? `
|
|
3554
|
-
sourcePath: b.sourcePath ?? notePath
|
|
3555
|
-
catalog: catalogName
|
|
3569
|
+
sourceId: b.sourceId ?? `notebook:${notebookSlug}/${stem}`,
|
|
3570
|
+
sourcePath: b.sourcePath ?? notePath
|
|
3556
3571
|
})) : compileSeedRow(notePath, note.rawContent, {
|
|
3557
|
-
routeId: `${
|
|
3558
|
-
sourceId: `
|
|
3572
|
+
routeId: `${notebookSlug}/${stem}`,
|
|
3573
|
+
sourceId: `notebook:${notebookSlug}/${stem}`,
|
|
3559
3574
|
// Authored frontmatter date first — exports keep the post's own
|
|
3560
3575
|
// day, never the import/publish time.
|
|
3561
3576
|
createdAt: note.date ?? note.createdAt,
|
|
@@ -3580,7 +3595,7 @@ async function publishCatalogSeed(db, options) {
|
|
|
3580
3595
|
blockEquipment
|
|
3581
3596
|
});
|
|
3582
3597
|
}
|
|
3583
|
-
const chunkId = `
|
|
3598
|
+
const chunkId = `notebook.${notebookSlug}`;
|
|
3584
3599
|
const json2 = JSON.stringify(chunkRows);
|
|
3585
3600
|
const digest = nodeCrypto().createHash("sha256").update(json2).digest();
|
|
3586
3601
|
const sha = [...digest].map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
@@ -3612,7 +3627,7 @@ async function publishCatalogSeed(db, options) {
|
|
|
3612
3627
|
return {
|
|
3613
3628
|
manifest,
|
|
3614
3629
|
outDir,
|
|
3615
|
-
|
|
3630
|
+
notebooks: publishedNotebooks,
|
|
3616
3631
|
totalNotes
|
|
3617
3632
|
};
|
|
3618
3633
|
}
|
|
@@ -4048,12 +4063,6 @@ function parseCliArgs(args) {
|
|
|
4048
4063
|
} else if (arg === "--force") {
|
|
4049
4064
|
result.force = true;
|
|
4050
4065
|
i++;
|
|
4051
|
-
} else if (arg === "--template") {
|
|
4052
|
-
result.template = args[++i];
|
|
4053
|
-
i++;
|
|
4054
|
-
} else if (arg.startsWith("--template=")) {
|
|
4055
|
-
result.template = arg.slice("--template=".length);
|
|
4056
|
-
i++;
|
|
4057
4066
|
} else if (arg === "--out") {
|
|
4058
4067
|
result.output = args[++i];
|
|
4059
4068
|
i++;
|
|
@@ -4074,7 +4083,7 @@ function parseCliArgs(args) {
|
|
|
4074
4083
|
if (Number.isSafeInteger(v) && v >= 0) result.seedVersion = v;
|
|
4075
4084
|
i++;
|
|
4076
4085
|
} else if (!result.subcommand) {
|
|
4077
|
-
if (arg === "parse" || arg === "run" || arg === "query" || arg === "download" || arg === "export" || arg === "import" || arg === "publish" || arg === "build" || arg === "seed" || arg === "reset" || arg === "init" || arg === "db" || arg === "server" || arg === "serve" || arg === "playground" || arg === "init-
|
|
4086
|
+
if (arg === "parse" || arg === "run" || arg === "query" || arg === "download" || arg === "export" || arg === "import" || arg === "publish" || arg === "build" || arg === "seed" || arg === "reset" || arg === "init" || arg === "db" || arg === "server" || arg === "serve" || arg === "playground" || arg === "init-feed" || arg === "skills" || arg === "help" || arg === "version") {
|
|
4078
4087
|
result.subcommand = arg;
|
|
4079
4088
|
} else {
|
|
4080
4089
|
result.target = arg;
|
|
@@ -4138,10 +4147,10 @@ USAGE:
|
|
|
4138
4147
|
wod export <note|playground|session|effort|equipment> <id> [options]
|
|
4139
4148
|
wod download <note|playground|session|effort|equipment> <id> [options]
|
|
4140
4149
|
wod import <note|playground|session|effort|equipment> <file> [options]
|
|
4141
|
-
wod publish [
|
|
4150
|
+
wod publish [feed] [options]
|
|
4142
4151
|
wod build [dir] [options]
|
|
4143
|
-
wod init-
|
|
4144
|
-
Scaffold a new
|
|
4152
|
+
wod init-feed <name>
|
|
4153
|
+
Scaffold a new feed repository (package.json, example
|
|
4145
4154
|
collection, GitHub Actions Pages workflow). Refuses an
|
|
4146
4155
|
existing destination.
|
|
4147
4156
|
wod skills <list | install> [options]
|
|
@@ -4234,10 +4243,10 @@ SUBCOMMANDS:
|
|
|
4234
4243
|
Upsert an effort registry row from corpus-style markdown.
|
|
4235
4244
|
import equipment <file>
|
|
4236
4245
|
Create/upgrade equipment tags (CSV, one label per row).
|
|
4237
|
-
publish [
|
|
4246
|
+
publish [feed] Publish feed notes from the database into a configured
|
|
4238
4247
|
seed directory (manifest.json, chunks/, report.html)
|
|
4239
4248
|
compatible with 'wod seed --source <dir>'. Override target
|
|
4240
|
-
with -o/--out/--output (defaults to ./dist/seed/<
|
|
4249
|
+
with -o/--out/--output (defaults to ./dist/seed/<feed>).
|
|
4241
4250
|
build [dir] Compile a seed corpus: validate every .md under
|
|
4242
4251
|
<dir>/markdown (parity gate + dashboard format gate) and
|
|
4243
4252
|
write manifest.json + content-hashed chunks/ +
|
|
@@ -4248,8 +4257,6 @@ SUBCOMMANDS:
|
|
|
4248
4257
|
BUILD OPTIONS (for 'build'):
|
|
4249
4258
|
--scaffold Also scaffold markdown/efforts/discovered/*.md stubs for
|
|
4250
4259
|
workout effort labels missing from the registry.
|
|
4251
|
-
--template <file> Compile an extra markdown file as the 'template' chunk
|
|
4252
|
-
(the host's playground intake template).
|
|
4253
4260
|
|
|
4254
4261
|
INPUT SOURCING (for 'query'; without these, the database is queried):
|
|
4255
4262
|
-c, --corpus <path> Load historical corpus dataset from a versioned JSON file
|
|
@@ -4395,20 +4402,20 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
|
|
|
4395
4402
|
}
|
|
4396
4403
|
};
|
|
4397
4404
|
try {
|
|
4398
|
-
if (parsed.subcommand === "init-
|
|
4405
|
+
if (parsed.subcommand === "init-feed") {
|
|
4399
4406
|
if (!parsed.target) {
|
|
4400
|
-
writeErr("[wod init-
|
|
4407
|
+
writeErr("[wod init-feed] Error: Missing feed name (a single new directory name)");
|
|
4401
4408
|
return 1;
|
|
4402
4409
|
}
|
|
4403
|
-
const {
|
|
4410
|
+
const { scaffoldFeed: scaffoldFeed2 } = await Promise.resolve().then(() => (init_scaffoldFeed(), scaffoldFeed_exports));
|
|
4404
4411
|
try {
|
|
4405
|
-
const result =
|
|
4406
|
-
writeOut(`[wod init-
|
|
4412
|
+
const result = scaffoldFeed2(parsed.target);
|
|
4413
|
+
writeOut(`[wod init-feed] Created ${result.dir} (${result.files.length} files)`);
|
|
4407
4414
|
writeOut(`Next: cd ${parsed.target} && bun install && bunx wod build . --output dist`);
|
|
4408
4415
|
writeOut(`Agents: wod skills install --dir ${parsed.target} (Whiteboard Script extraction rules \u2192 .agents/skills/)`);
|
|
4409
4416
|
return 0;
|
|
4410
4417
|
} catch (error) {
|
|
4411
|
-
writeErr(`[wod init-
|
|
4418
|
+
writeErr(`[wod init-feed] ${error.message}`);
|
|
4412
4419
|
return 1;
|
|
4413
4420
|
}
|
|
4414
4421
|
}
|
|
@@ -4721,30 +4728,22 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
|
|
|
4721
4728
|
return 0;
|
|
4722
4729
|
}
|
|
4723
4730
|
if (kind === "effort") {
|
|
4724
|
-
const
|
|
4725
|
-
if (!effort) {
|
|
4726
|
-
writeErr(`[wod import] Unparseable effort file (need frontmatter id/slug/label + numeric baseAttributes.met): ${file}`);
|
|
4727
|
-
return 1;
|
|
4728
|
-
}
|
|
4731
|
+
const source = fs.readFileSync(file, "utf-8");
|
|
4729
4732
|
const db2 = await openCliDb(cliDb());
|
|
4730
4733
|
try {
|
|
4731
|
-
await
|
|
4732
|
-
writeOut(`[wod import] effort ${
|
|
4734
|
+
const result = await persistDefinitionNote(db2, "effort", source);
|
|
4735
|
+
writeOut(`[wod import] effort ${result.slug}${result.createdNote ? "" : " (updated)"} \u2014 note ${result.noteId} \u2192 ${db2.path}`);
|
|
4733
4736
|
} finally {
|
|
4734
4737
|
await db2.close();
|
|
4735
4738
|
}
|
|
4736
4739
|
return 0;
|
|
4737
4740
|
}
|
|
4738
4741
|
if (kind === "equipment" && /\.md$/i.test(file)) {
|
|
4739
|
-
const
|
|
4740
|
-
if (!equipment) {
|
|
4741
|
-
writeErr(`[wod import] Unparseable equipment file (need frontmatter type: equipment + id/slug/label): ${file}`);
|
|
4742
|
-
return 1;
|
|
4743
|
-
}
|
|
4742
|
+
const source = fs.readFileSync(file, "utf-8");
|
|
4744
4743
|
const db2 = await openCliDb(cliDb());
|
|
4745
4744
|
try {
|
|
4746
|
-
await
|
|
4747
|
-
writeOut(`[wod import] equipment ${
|
|
4745
|
+
const result = await persistDefinitionNote(db2, "equipment", source);
|
|
4746
|
+
writeOut(`[wod import] equipment ${result.slug}${result.createdNote ? "" : " (updated)"} \u2014 note ${result.noteId} \u2192 ${db2.path}`);
|
|
4748
4747
|
} finally {
|
|
4749
4748
|
await db2.close();
|
|
4750
4749
|
}
|
|
@@ -4779,18 +4778,18 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
|
|
|
4779
4778
|
}
|
|
4780
4779
|
if (parsed.subcommand === "publish") {
|
|
4781
4780
|
const isDir = (s) => Boolean(s && (s.startsWith(".") || s.startsWith("/") || s.includes("/") || s.includes("\\")));
|
|
4782
|
-
const
|
|
4781
|
+
const notebook = isDir(parsed.target) ? void 0 : parsed.target;
|
|
4783
4782
|
const targetDir = isDir(parsed.target) ? parsed.target : parsed.target2;
|
|
4784
|
-
const outDir = parsed.output ?? targetDir ?? (
|
|
4783
|
+
const outDir = parsed.output ?? targetDir ?? (notebook ? `./dist/seed/${notebook}` : "./dist/seed");
|
|
4785
4784
|
const db = await openCliDb(cliDb());
|
|
4786
4785
|
try {
|
|
4787
|
-
const result = await
|
|
4788
|
-
|
|
4786
|
+
const result = await publishNotebookSeed(db, {
|
|
4787
|
+
notebook,
|
|
4789
4788
|
outDir,
|
|
4790
4789
|
version: parsed.seedVersion
|
|
4791
4790
|
});
|
|
4792
4791
|
writeOut(
|
|
4793
|
-
`[wod publish] published ${result.
|
|
4792
|
+
`[wod publish] published ${result.notebooks.join(", ")} (${result.totalNotes} notes) \u2192 ${result.outDir} (manifest schema v${result.manifest.schema}, version ${result.manifest.version})`
|
|
4794
4793
|
);
|
|
4795
4794
|
} finally {
|
|
4796
4795
|
await db.close();
|
|
@@ -4809,7 +4808,6 @@ async function cliMain(argv = process.argv.slice(2), io = {}) {
|
|
|
4809
4808
|
const result = generateSeed2({
|
|
4810
4809
|
corpusRoot: root,
|
|
4811
4810
|
...parsed.output ? { outDir: nodePath().resolve(cwd, parsed.output) } : {},
|
|
4812
|
-
...parsed.template ? { templateFile: nodePath().resolve(cwd, parsed.template) } : {},
|
|
4813
4811
|
scaffoldDiscoveredEfforts: parsed.scaffold === true
|
|
4814
4812
|
});
|
|
4815
4813
|
const kb = (n) => `${(n / 1024).toFixed(0)} KB`;
|