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